Browse Source

maxwell_3d: Initialize rasterizer color mask registers as enabled.

- Fixes rendering regression with Sonic Mania.
bunnei 7 years ago
parent
commit
1a543723ab
1 changed files with 9 additions and 0 deletions
  1. 9 0
      src/video_core/engines/maxwell_3d.cpp

+ 9 - 0
src/video_core/engines/maxwell_3d.cpp

@@ -69,6 +69,15 @@ void Maxwell3D::InitializeRegisterDefaults() {
     // TODO(Rodrigo): Most games do not set a point size. I think this is a case of a
     // register carrying a default value. Assume it's OpenGL's default (1).
     regs.point_size = 1.0f;
+
+    // TODO(bunnei): Some games do not initialize the color masks (e.g. Sonic Mania). Assuming a
+    // default of enabled fixes rendering here.
+    for (std::size_t color_mask = 0; color_mask < Regs::NumRenderTargets; color_mask++) {
+        regs.color_mask[color_mask].R.Assign(1);
+        regs.color_mask[color_mask].G.Assign(1);
+        regs.color_mask[color_mask].B.Assign(1);
+        regs.color_mask[color_mask].A.Assign(1);
+    }
 }
 
 void Maxwell3D::CallMacroMethod(u32 method, std::vector<u32> parameters) {