From bf310a41b8bd1618c45040aaf039b9d44cb2c45f Mon Sep 17 00:00:00 2001 From: Subv Date: Fri, 16 Mar 2018 19:24:41 -0500 Subject: GPU: Assert that we get a 0 CODE_ADDRESS register in the 3D engine. Shader address calculation depends on this value to some extent, we do not currently know what it being 0 entails. --- src/video_core/engines/maxwell_3d.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/video_core/engines') diff --git a/src/video_core/engines/maxwell_3d.cpp b/src/video_core/engines/maxwell_3d.cpp index 842c5a014..8c6d1172c 100644 --- a/src/video_core/engines/maxwell_3d.cpp +++ b/src/video_core/engines/maxwell_3d.cpp @@ -19,6 +19,14 @@ void Maxwell3D::WriteReg(u32 method, u32 value) { #define MAXWELL3D_REG_INDEX(field_name) (offsetof(Regs, field_name) / sizeof(u32)) switch (method) { + case MAXWELL3D_REG_INDEX(code_address.code_address_high): + case MAXWELL3D_REG_INDEX(code_address.code_address_low): { + // Note: For some reason games (like Puyo Puyo Tetris) seem to write 0 to the CODE_ADDRESS + // register, we do not currently know if that's intended or a bug, so we assert it lest + // stuff breaks in other places (like the shader address calculation). + ASSERT_MSG(regs.code_address.CodeAddress() == 0, "Unexpected CODE_ADDRESS register value."); + break; + } case MAXWELL3D_REG_INDEX(draw.vertex_end_gl): { DrawArrays(); break; -- cgit v1.2.3