diff options
| author | 2022-03-11 17:16:56 -0500 | |
|---|---|---|
| committer | 2022-03-11 19:42:12 -0500 | |
| commit | 56c646d82cdb78557cac7a527247bb46c6028e97 (patch) | |
| tree | 3f43e2861450343ee07b93a30931bc332621ed06 /src | |
| parent | Maxwell3D: mark index buffers as dirty after updating counts (diff) | |
| download | yuzu-56c646d82cdb78557cac7a527247bb46c6028e97.tar.gz yuzu-56c646d82cdb78557cac7a527247bb46c6028e97.tar.xz yuzu-56c646d82cdb78557cac7a527247bb46c6028e97.zip | |
Maxwell3D: Restrict topology override effect to after the register is set
Diffstat (limited to '')
| -rw-r--r-- | src/video_core/engines/maxwell_3d.cpp | 5 | ||||
| -rw-r--r-- | src/video_core/engines/maxwell_3d.h | 1 |
2 files changed, 5 insertions, 1 deletions
diff --git a/src/video_core/engines/maxwell_3d.cpp b/src/video_core/engines/maxwell_3d.cpp index 94711ad6b..92baba4e8 100644 --- a/src/video_core/engines/maxwell_3d.cpp +++ b/src/video_core/engines/maxwell_3d.cpp | |||
| @@ -214,6 +214,9 @@ void Maxwell3D::ProcessMethodCall(u32 method, u32 argument, u32 nonshadow_argume | |||
| 214 | regs.index_array.first = regs.small_index.first; | 214 | regs.index_array.first = regs.small_index.first; |
| 215 | dirty.flags[VideoCommon::Dirty::IndexBuffer] = true; | 215 | dirty.flags[VideoCommon::Dirty::IndexBuffer] = true; |
| 216 | return DrawArrays(); | 216 | return DrawArrays(); |
| 217 | case MAXWELL3D_REG_INDEX(topology_override): | ||
| 218 | use_topology_override = true; | ||
| 219 | return; | ||
| 217 | case MAXWELL3D_REG_INDEX(clear_buffers): | 220 | case MAXWELL3D_REG_INDEX(clear_buffers): |
| 218 | return ProcessClearBuffers(); | 221 | return ProcessClearBuffers(); |
| 219 | case MAXWELL3D_REG_INDEX(query.query_get): | 222 | case MAXWELL3D_REG_INDEX(query.query_get): |
| @@ -367,7 +370,7 @@ void Maxwell3D::CallMethodFromMME(u32 method, u32 method_argument) { | |||
| 367 | } | 370 | } |
| 368 | 371 | ||
| 369 | void Maxwell3D::ProcessTopologyOverride() { | 372 | void Maxwell3D::ProcessTopologyOverride() { |
| 370 | if (regs.draw.topology != regs.topology_override) { | 373 | if (use_topology_override) { |
| 371 | regs.draw.topology.Assign(regs.topology_override); | 374 | regs.draw.topology.Assign(regs.topology_override); |
| 372 | } | 375 | } |
| 373 | } | 376 | } |
diff --git a/src/video_core/engines/maxwell_3d.h b/src/video_core/engines/maxwell_3d.h index e28937b01..eefb7a4dd 100644 --- a/src/video_core/engines/maxwell_3d.h +++ b/src/video_core/engines/maxwell_3d.h | |||
| @@ -1581,6 +1581,7 @@ private: | |||
| 1581 | Upload::State upload_state; | 1581 | Upload::State upload_state; |
| 1582 | 1582 | ||
| 1583 | bool execute_on{true}; | 1583 | bool execute_on{true}; |
| 1584 | bool use_topology_override{false}; | ||
| 1584 | }; | 1585 | }; |
| 1585 | 1586 | ||
| 1586 | #define ASSERT_REG_POSITION(field_name, position) \ | 1587 | #define ASSERT_REG_POSITION(field_name, position) \ |