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