fixup! gl_shader_gen: Support vertical/horizontal viewport flipping.

This commit is contained in:
bunnei
2018-04-18 15:43:32 -04:00
parent ec0bd1cf3e
commit 9433f202ee
2 changed files with 14 additions and 16 deletions

View File

@@ -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);

View File

@@ -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