Browse Source
VideoCore: Unify interface to OpenGL and SW rasterizers
VideoCore: Unify interface to OpenGL and SW rasterizers
This removes explicit checks sprinkled all over the codebase to instead just have the SW rasterizer expose an implementation with no-ops for most operations.pull/15/merge
16 changed files with 116 additions and 78 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
-
27src/video_core/command_processor.cpp
-
6src/video_core/debug_utils/debug_utils.cpp
-
9src/video_core/rasterizer_interface.h
-
28src/video_core/renderer_base.cpp
-
8src/video_core/renderer_base.h
-
9src/video_core/renderer_opengl/gl_rasterizer.cpp
-
19src/video_core/renderer_opengl/gl_rasterizer.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