diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2018-09-26 00:41:21 +0200 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2018-09-26 02:07:00 +0200 |
commit | ab65fde9f489ca32aa7bd3a7e7bcd1f92a61c0d1 (patch) | |
tree | ae8fd84ba5c5c3beeed1b9e3f6c4ff425f1a3d46 /src/video_core/renderer_opengl | |
parent | Merge pull request #1365 from DarkLordZach/lfs (diff) | |
download | yuzu-ab65fde9f489ca32aa7bd3a7e7bcd1f92a61c0d1.tar yuzu-ab65fde9f489ca32aa7bd3a7e7bcd1f92a61c0d1.tar.gz yuzu-ab65fde9f489ca32aa7bd3a7e7bcd1f92a61c0d1.tar.bz2 yuzu-ab65fde9f489ca32aa7bd3a7e7bcd1f92a61c0d1.tar.lz yuzu-ab65fde9f489ca32aa7bd3a7e7bcd1f92a61c0d1.tar.xz yuzu-ab65fde9f489ca32aa7bd3a7e7bcd1f92a61c0d1.tar.zst yuzu-ab65fde9f489ca32aa7bd3a7e7bcd1f92a61c0d1.zip |
Diffstat (limited to 'src/video_core/renderer_opengl')
-rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.cpp | 22 | ||||
-rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.h | 6 |
2 files changed, 28 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index 70fb54507..44850d193 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp @@ -450,6 +450,8 @@ void RasterizerOpenGL::DrawArrays() { SyncBlendState(); SyncLogicOpState(); SyncCullMode(); + SyncAlphaTest(); + SyncTransformFeedback(); // TODO(bunnei): Sync framebuffer_scale uniform here // TODO(bunnei): Sync scissorbox uniform(s) here @@ -883,4 +885,24 @@ void RasterizerOpenGL::SyncLogicOpState() { state.logic_op.operation = MaxwellToGL::LogicOp(regs.logic_op.operation); } +void RasterizerOpenGL::SyncAlphaTest() { + const auto& regs = Core::System::GetInstance().GPU().Maxwell3D().regs; + + // TODO(Rodrigo): Alpha testing is a legacy OpenGL feature, but it can be + // implemented with a test+discard in fragment shaders. + if (regs.alpha_test_enabled != 0) { + LOG_CRITICAL(Render_OpenGL, "Alpha testing is not implemented"); + UNREACHABLE(); + } +} + +void RasterizerOpenGL::SyncTransformFeedback() { + const auto& regs = Core::System::GetInstance().GPU().Maxwell3D().regs; + + if (regs.tfb_enabled != 0) { + LOG_CRITICAL(Render_OpenGL, "Transform feedbacks are not implemented"); + UNREACHABLE(); + } +} + } // namespace OpenGL diff --git a/src/video_core/renderer_opengl/gl_rasterizer.h b/src/video_core/renderer_opengl/gl_rasterizer.h index bf9560bdc..c3f1e14bf 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.h +++ b/src/video_core/renderer_opengl/gl_rasterizer.h @@ -158,6 +158,12 @@ private: /// Syncs the LogicOp state to match the guest state void SyncLogicOpState(); + /// Syncs the alpha test state to match the guest state + void SyncAlphaTest(); + + /// Syncs the transform feedback state to match the guest state + void SyncTransformFeedback(); + bool has_ARB_direct_state_access = false; bool has_ARB_multi_bind = false; bool has_ARB_separate_shader_objects = false; |