Просмотр исходного кода

Maxwell3D: Restrict topology override effect to after the register is set

Liam 4 лет назад
Родитель
Сommit
56c646d82c
2 измененных файлов с 5 добавлено и 1 удалено
  1. 4 1
      src/video_core/engines/maxwell_3d.cpp
  2. 1 0
      src/video_core/engines/maxwell_3d.h

+ 4 - 1
src/video_core/engines/maxwell_3d.cpp

@@ -214,6 +214,9 @@ void Maxwell3D::ProcessMethodCall(u32 method, u32 argument, u32 nonshadow_argume
         regs.index_array.first = regs.small_index.first;
         dirty.flags[VideoCommon::Dirty::IndexBuffer] = true;
         return DrawArrays();
+    case MAXWELL3D_REG_INDEX(topology_override):
+        use_topology_override = true;
+        return;
     case MAXWELL3D_REG_INDEX(clear_buffers):
         return ProcessClearBuffers();
     case MAXWELL3D_REG_INDEX(query.query_get):
@@ -367,7 +370,7 @@ void Maxwell3D::CallMethodFromMME(u32 method, u32 method_argument) {
 }
 
 void Maxwell3D::ProcessTopologyOverride() {
-    if (regs.draw.topology != regs.topology_override) {
+    if (use_topology_override) {
         regs.draw.topology.Assign(regs.topology_override);
     }
 }

+ 1 - 0
src/video_core/engines/maxwell_3d.h

@@ -1581,6 +1581,7 @@ private:
     Upload::State upload_state;
 
     bool execute_on{true};
+    bool use_topology_override{false};
 };
 
 #define ASSERT_REG_POSITION(field_name, position)                                                  \