summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl/gl_rasterizer.cpp
diff options
context:
space:
mode:
authorFernandoS27 <fsahmkow27@gmail.com>2018-10-09 03:21:22 +0200
committerFernandoS27 <fsahmkow27@gmail.com>2018-10-09 03:36:23 +0200
commitbe97fc884df62d18aa488be7f019e6db6696636b (patch)
treeddfc22404ac38eeb27447c9552a356fd09916351 /src/video_core/renderer_opengl/gl_rasterizer.cpp
parentAssert Scissor tests (diff)
downloadyuzu-be97fc884df62d18aa488be7f019e6db6696636b.tar
yuzu-be97fc884df62d18aa488be7f019e6db6696636b.tar.gz
yuzu-be97fc884df62d18aa488be7f019e6db6696636b.tar.bz2
yuzu-be97fc884df62d18aa488be7f019e6db6696636b.tar.lz
yuzu-be97fc884df62d18aa488be7f019e6db6696636b.tar.xz
yuzu-be97fc884df62d18aa488be7f019e6db6696636b.tar.zst
yuzu-be97fc884df62d18aa488be7f019e6db6696636b.zip
Diffstat (limited to '')
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp
index 41e59a457..daae67121 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp
@@ -976,11 +976,16 @@ void RasterizerOpenGL::SyncAlphaTest() {
void RasterizerOpenGL::SyncScissorTest() {
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.
+ state.scissor.enabled = (regs.scissor_test.enable != 0);
+ // TODO(Blinkhawk): Figure if the hardware supports scissor testing per viewport and how it's
+ // implemented.
if (regs.scissor_test.enable != 0) {
- LOG_CRITICAL(Render_OpenGL, "Scissor testing is not implemented");
- UNREACHABLE();
+ const u32 width = regs.scissor_test.max_x - regs.scissor_test.min_x;
+ const u32 height = regs.scissor_test.max_y - regs.scissor_test.min_y;
+ state.scissor.x = regs.scissor_test.min_x;
+ state.scissor.y = regs.scissor_test.min_y;
+ state.scissor.width = width;
+ state.scissor.height = height;
}
}