diff --git a/src/video_core/engines/maxwell_3d.h b/src/video_core/engines/maxwell_3d.h index 5a11229b92..d4fcedace5 100644 --- a/src/video_core/engines/maxwell_3d.h +++ b/src/video_core/engines/maxwell_3d.h @@ -319,14 +319,15 @@ public: } } rt[NumRenderTargets]; - f32 viewport_scale_x; - f32 viewport_scale_y; - f32 viewport_scale_z; - u32 viewport_translate_x; - u32 viewport_translate_y; - u32 viewport_translate_z; - - INSERT_PADDING_WORDS(0x7A); + struct { + f32 scale_x; + f32 scale_y; + f32 scale_z; + u32 translate_x; + u32 translate_y; + u32 translate_z; + INSERT_PADDING_WORDS(2); + } viewport_transform[NumViewports]; struct { union { @@ -656,12 +657,7 @@ private: "Field " #field_name " has invalid position") ASSERT_REG_POSITION(rt, 0x200); -ASSERT_REG_POSITION(viewport_scale_x, 0x280); -ASSERT_REG_POSITION(viewport_scale_y, 0x281); -ASSERT_REG_POSITION(viewport_scale_z, 0x282); -ASSERT_REG_POSITION(viewport_translate_x, 0x283); -ASSERT_REG_POSITION(viewport_translate_y, 0x284); -ASSERT_REG_POSITION(viewport_translate_z, 0x285); +ASSERT_REG_POSITION(viewport_transform[0], 0x280); ASSERT_REG_POSITION(viewport, 0x300); ASSERT_REG_POSITION(vertex_buffer, 0x35D); ASSERT_REG_POSITION(zeta, 0x3F8); diff --git a/src/video_core/renderer_opengl/gl_shader_manager.cpp b/src/video_core/renderer_opengl/gl_shader_manager.cpp index 1d5365de99..17b3925a0d 100644 --- a/src/video_core/renderer_opengl/gl_shader_manager.cpp +++ b/src/video_core/renderer_opengl/gl_shader_manager.cpp @@ -55,8 +55,10 @@ void SetShaderSamplerBindings(GLuint shader) { void MaxwellUniformData::SetFromRegs(const Maxwell3D::State::ShaderStageInfo& shader_stage) { const auto& regs = Core::System().GetInstance().GPU().Maxwell3D().regs; - viewport_flip[0] = regs.viewport_scale_x < 0.0 ? -1.0 : 1.0; - viewport_flip[1] = regs.viewport_scale_y < 0.0 ? -1.0 : 1.0; + + // TODO(bunnei): Support more than one viewport + viewport_flip[0] = regs.viewport_transform[0].scale_x < 0.0 ? -1.0 : 1.0; + viewport_flip[1] = regs.viewport_transform[0].scale_y < 0.0 ? -1.0 : 1.0; } } // namespace GLShader