Browse Source
Merge pull request #1272 from yuriks/merge-rasterizer
Merge pull request #1272 from yuriks/merge-rasterizer
VideoCore: Unify interface to OpenGL and SW rasterizersnce_cpp
18 changed files with 138 additions and 101 deletions
-
8src/core/hle/service/gsp_gpu.cpp
-
2src/core/hle/service/y2r_u.cpp
-
12src/core/hw/gpu.cpp
-
5src/video_core/CMakeLists.txt
-
2src/video_core/clipper.cpp
-
2src/video_core/clipper.h
-
23src/video_core/command_processor.cpp
-
4src/video_core/debug_utils/debug_utils.cpp
-
19src/video_core/rasterizer_interface.h
-
28src/video_core/renderer_base.cpp
-
8src/video_core/renderer_base.h
-
23src/video_core/renderer_opengl/gl_rasterizer.cpp
-
25src/video_core/renderer_opengl/gl_rasterizer.h
-
7src/video_core/renderer_opengl/gl_rasterizer_cache.cpp
-
8src/video_core/renderer_opengl/gl_rasterizer_cache.h
-
15src/video_core/renderer_opengl/renderer_opengl.cpp
-
16src/video_core/swrasterizer.cpp
-
26src/video_core/swrasterizer.h
@ -0,0 +1,28 @@ |
|||||
|
// Copyright 2015 Citra Emulator Project
|
||||
|
// Licensed under GPLv2 or any later version
|
||||
|
// Refer to the license.txt file included.
|
||||
|
|
||||
|
#include <memory>
|
||||
|
|
||||
|
#include "common/make_unique.h"
|
||||
|
|
||||
|
#include "core/settings.h"
|
||||
|
|
||||
|
#include "video_core/renderer_base.h"
|
||||
|
#include "video_core/video_core.h"
|
||||
|
#include "video_core/swrasterizer.h"
|
||||
|
#include "video_core/renderer_opengl/gl_rasterizer.h"
|
||||
|
|
||||
|
void RendererBase::RefreshRasterizerSetting() { |
||||
|
bool hw_renderer_enabled = VideoCore::g_hw_renderer_enabled; |
||||
|
if (rasterizer == nullptr || opengl_rasterizer_active != hw_renderer_enabled) { |
||||
|
opengl_rasterizer_active = hw_renderer_enabled; |
||||
|
|
||||
|
if (hw_renderer_enabled) { |
||||
|
rasterizer = Common::make_unique<RasterizerOpenGL>(); |
||||
|
} else { |
||||
|
rasterizer = Common::make_unique<VideoCore::SWRasterizer>(); |
||||
|
} |
||||
|
rasterizer->InitObjects(); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,16 @@ |
|||||
|
// Copyright 2015 Citra Emulator Project
|
||||
|
// Licensed under GPLv2 or any later version
|
||||
|
// Refer to the license.txt file included.
|
||||
|
|
||||
|
#include "video_core/clipper.h"
|
||||
|
#include "video_core/swrasterizer.h"
|
||||
|
|
||||
|
namespace VideoCore { |
||||
|
|
||||
|
void SWRasterizer::AddTriangle(const Pica::Shader::OutputVertex& v0, |
||||
|
const Pica::Shader::OutputVertex& v1, |
||||
|
const Pica::Shader::OutputVertex& v2) { |
||||
|
Pica::Clipper::ProcessTriangle(v0, v1, v2); |
||||
|
} |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,26 @@ |
|||||
|
// Copyright 2015 Citra Emulator Project |
||||
|
// Licensed under GPLv2 or any later version |
||||
|
// Refer to the license.txt file included. |
||||
|
|
||||
|
#pragma once |
||||
|
|
||||
|
#include "common/common_types.h" |
||||
|
|
||||
|
#include "video_core/rasterizer_interface.h" |
||||
|
|
||||
|
namespace VideoCore { |
||||
|
|
||||
|
class SWRasterizer : public RasterizerInterface { |
||||
|
void InitObjects() override {} |
||||
|
void Reset() override {} |
||||
|
void AddTriangle(const Pica::Shader::OutputVertex& v0, |
||||
|
const Pica::Shader::OutputVertex& v1, |
||||
|
const Pica::Shader::OutputVertex& v2); |
||||
|
void DrawTriangles() override {} |
||||
|
void FlushFramebuffer() override {} |
||||
|
void NotifyPicaRegisterChanged(u32 id) override {} |
||||
|
void FlushRegion(PAddr addr, u32 size) override {} |
||||
|
void InvalidateRegion(PAddr addr, u32 size) override {} |
||||
|
}; |
||||
|
|
||||
|
} |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue