diff options
| author | 2017-04-16 21:50:56 -0700 | |
|---|---|---|
| committer | 2017-04-17 10:34:45 -0700 | |
| commit | 52a4489d6508388de50c34b27cd5f646ccd6f24f (patch) | |
| tree | 32f4900c9f5e14e690cd7683644f51c08275c3d5 /src | |
| parent | OpenGL: Move PicaShaderConfig to gl_shader_gen.h (diff) | |
| download | yuzu-52a4489d6508388de50c34b27cd5f646ccd6f24f.tar.gz yuzu-52a4489d6508388de50c34b27cd5f646ccd6f24f.tar.xz yuzu-52a4489d6508388de50c34b27cd5f646ccd6f24f.zip | |
OpenGL: Pass Pica regs via parameter
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.cpp | 2 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_shader_gen.cpp | 4 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_shader_gen.h | 6 |
3 files changed, 5 insertions, 7 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index 150bb5e3c..a47307099 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp | |||
| @@ -1004,7 +1004,7 @@ void RasterizerOpenGL::SamplerInfo::SyncWithConfig( | |||
| 1004 | } | 1004 | } |
| 1005 | 1005 | ||
| 1006 | void RasterizerOpenGL::SetShader() { | 1006 | void RasterizerOpenGL::SetShader() { |
| 1007 | GLShader::PicaShaderConfig config = GLShader::PicaShaderConfig::CurrentConfig(); | 1007 | auto config = GLShader::PicaShaderConfig::BuildFromRegs(Pica::g_state.regs); |
| 1008 | std::unique_ptr<PicaShader> shader = std::make_unique<PicaShader>(); | 1008 | std::unique_ptr<PicaShader> shader = std::make_unique<PicaShader>(); |
| 1009 | 1009 | ||
| 1010 | // Find (or generate) the GLSL shader for the current TEV state | 1010 | // Find (or generate) the GLSL shader for the current TEV state |
diff --git a/src/video_core/renderer_opengl/gl_shader_gen.cpp b/src/video_core/renderer_opengl/gl_shader_gen.cpp index 3b2a50f02..54a8dde15 100644 --- a/src/video_core/renderer_opengl/gl_shader_gen.cpp +++ b/src/video_core/renderer_opengl/gl_shader_gen.cpp | |||
| @@ -24,14 +24,12 @@ using TevStageConfig = TexturingRegs::TevStageConfig; | |||
| 24 | 24 | ||
| 25 | namespace GLShader { | 25 | namespace GLShader { |
| 26 | 26 | ||
| 27 | PicaShaderConfig PicaShaderConfig::CurrentConfig() { | 27 | PicaShaderConfig PicaShaderConfig::BuildFromRegs(const Pica::Regs& regs) { |
| 28 | PicaShaderConfig res; | 28 | PicaShaderConfig res; |
| 29 | 29 | ||
| 30 | auto& state = res.state; | 30 | auto& state = res.state; |
| 31 | std::memset(&state, 0, sizeof(PicaShaderConfig::State)); | 31 | std::memset(&state, 0, sizeof(PicaShaderConfig::State)); |
| 32 | 32 | ||
| 33 | const auto& regs = Pica::g_state.regs; | ||
| 34 | |||
| 35 | state.scissor_test_mode = regs.rasterizer.scissor_test.mode; | 33 | state.scissor_test_mode = regs.rasterizer.scissor_test.mode; |
| 36 | 34 | ||
| 37 | state.depthmap_enable = regs.rasterizer.depthmap_enable; | 35 | state.depthmap_enable = regs.rasterizer.depthmap_enable; |
diff --git a/src/video_core/renderer_opengl/gl_shader_gen.h b/src/video_core/renderer_opengl/gl_shader_gen.h index e01bd34f9..921d976a1 100644 --- a/src/video_core/renderer_opengl/gl_shader_gen.h +++ b/src/video_core/renderer_opengl/gl_shader_gen.h | |||
| @@ -39,8 +39,8 @@ enum Attributes { | |||
| 39 | */ | 39 | */ |
| 40 | union PicaShaderConfig { | 40 | union PicaShaderConfig { |
| 41 | 41 | ||
| 42 | /// Construct a PicaShaderConfig with the current Pica register configuration. | 42 | /// Construct a PicaShaderConfig with the given Pica register configuration. |
| 43 | static PicaShaderConfig CurrentConfig(); | 43 | static PicaShaderConfig BuildFromRegs(const Pica::Regs& regs); |
| 44 | 44 | ||
| 45 | bool TevStageUpdatesCombinerBufferColor(unsigned stage_index) const { | 45 | bool TevStageUpdatesCombinerBufferColor(unsigned stage_index) const { |
| 46 | return (stage_index < 4) && (state.combiner_buffer_input & (1 << stage_index)); | 46 | return (stage_index < 4) && (state.combiner_buffer_input & (1 << stage_index)); |
| @@ -58,7 +58,7 @@ union PicaShaderConfig { | |||
| 58 | // This makes BitField not TC when used in a union or struct so we have to resort | 58 | // This makes BitField not TC when used in a union or struct so we have to resort |
| 59 | // to this ugly hack. | 59 | // to this ugly hack. |
| 60 | // Once that bug is fixed we can use Pica::Regs::TevStageConfig here. | 60 | // Once that bug is fixed we can use Pica::Regs::TevStageConfig here. |
| 61 | // Doesn't include const_color because we don't sync it, see comment in CurrentConfig() | 61 | // Doesn't include const_color because we don't sync it, see comment in BuildFromRegs() |
| 62 | struct TevStageConfigRaw { | 62 | struct TevStageConfigRaw { |
| 63 | u32 sources_raw; | 63 | u32 sources_raw; |
| 64 | u32 modifiers_raw; | 64 | u32 modifiers_raw; |