Browse Source

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

pull/15/merge
Liam 4 years ago
parent
commit
56c646d82c
  1. 5
      src/video_core/engines/maxwell_3d.cpp
  2. 1
      src/video_core/engines/maxwell_3d.h

5
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; regs.index_array.first = regs.small_index.first;
dirty.flags[VideoCommon::Dirty::IndexBuffer] = true; dirty.flags[VideoCommon::Dirty::IndexBuffer] = true;
return DrawArrays(); return DrawArrays();
case MAXWELL3D_REG_INDEX(topology_override):
use_topology_override = true;
return;
case MAXWELL3D_REG_INDEX(clear_buffers): case MAXWELL3D_REG_INDEX(clear_buffers):
return ProcessClearBuffers(); return ProcessClearBuffers();
case MAXWELL3D_REG_INDEX(query.query_get): case MAXWELL3D_REG_INDEX(query.query_get):
@ -367,7 +370,7 @@ void Maxwell3D::CallMethodFromMME(u32 method, u32 method_argument) {
} }
void Maxwell3D::ProcessTopologyOverride() { void Maxwell3D::ProcessTopologyOverride() {
if (regs.draw.topology != regs.topology_override) {
if (use_topology_override) {
regs.draw.topology.Assign(regs.topology_override); regs.draw.topology.Assign(regs.topology_override);
} }
} }

1
src/video_core/engines/maxwell_3d.h

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

Loading…
Cancel
Save