diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-12-29 22:14:40 +0100 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2020-02-28 21:56:42 +0100 |
commit | b01dd7d1c86265dd19508ea15e4ff4db31681470 (patch) | |
tree | 90cf54950dce4a5fd280336c57bc98e627b09d3d /src/video_core/renderer_opengl/gl_state_tracker.cpp | |
parent | gl_state_tracker: Implement dirty flags for clip distances and shaders (diff) | |
download | yuzu-b01dd7d1c86265dd19508ea15e4ff4db31681470.tar yuzu-b01dd7d1c86265dd19508ea15e4ff4db31681470.tar.gz yuzu-b01dd7d1c86265dd19508ea15e4ff4db31681470.tar.bz2 yuzu-b01dd7d1c86265dd19508ea15e4ff4db31681470.tar.lz yuzu-b01dd7d1c86265dd19508ea15e4ff4db31681470.tar.xz yuzu-b01dd7d1c86265dd19508ea15e4ff4db31681470.tar.zst yuzu-b01dd7d1c86265dd19508ea15e4ff4db31681470.zip |
Diffstat (limited to '')
-rw-r--r-- | src/video_core/renderer_opengl/gl_state_tracker.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/gl_state_tracker.cpp b/src/video_core/renderer_opengl/gl_state_tracker.cpp index bc5942a7f..2da1b65fc 100644 --- a/src/video_core/renderer_opengl/gl_state_tracker.cpp +++ b/src/video_core/renderer_opengl/gl_state_tracker.cpp @@ -129,6 +129,21 @@ void SetupDirtyShaders(Tables& tables) { Shaders); } +void SetupDirtyBlend(Tables& tables) { + FillBlock(tables[0], OFF(blend_color), NUM(blend_color), BlendColor); + + tables[0][OFF(independent_blend_enable)] = BlendIndependentEnabled; + + for (std::size_t i = 0; i < Regs::NumRenderTargets; ++i) { + const std::size_t offset = OFF(independent_blend) + i * NUM(independent_blend[0]); + FillBlock(tables[0], offset, NUM(independent_blend[0]), BlendState0 + i); + + tables[0][OFF(blend.enable) + i] = static_cast<u8>(BlendState0 + i); + } + FillBlock(tables[1], OFF(independent_blend), NUM(independent_blend), BlendStates); + FillBlock(tables[1], OFF(blend), NUM(blend), BlendStates); +} + void SetupDirtyMisc(Tables& tables) { tables[0][OFF(clip_distance_enabled)] = ClipDistances; } @@ -147,6 +162,7 @@ void StateTracker::Initialize() { SetupDirtyVertexArrays(tables); SetupDirtyVertexFormat(tables); SetupDirtyShaders(tables); + SetupDirtyBlend(tables); SetupDirtyMisc(tables); auto& store = dirty.on_write_stores; |