diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/engines/maxwell_3d.cpp | 12 | ||||
| -rw-r--r-- | src/video_core/engines/maxwell_3d.h | 16 |
2 files changed, 27 insertions, 1 deletions
diff --git a/src/video_core/engines/maxwell_3d.cpp b/src/video_core/engines/maxwell_3d.cpp index 3c3ac8f81..8194a4b4a 100644 --- a/src/video_core/engines/maxwell_3d.cpp +++ b/src/video_core/engines/maxwell_3d.cpp | |||
| @@ -249,6 +249,10 @@ void Maxwell3D::CallMethod(const GPU::MethodCall& method_call) { | |||
| 249 | ProcessQueryGet(); | 249 | ProcessQueryGet(); |
| 250 | break; | 250 | break; |
| 251 | } | 251 | } |
| 252 | case MAXWELL3D_REG_INDEX(sync_info): { | ||
| 253 | ProcessSyncPoint(); | ||
| 254 | break; | ||
| 255 | } | ||
| 252 | default: | 256 | default: |
| 253 | break; | 257 | break; |
| 254 | } | 258 | } |
| @@ -326,6 +330,14 @@ void Maxwell3D::ProcessQueryGet() { | |||
| 326 | } | 330 | } |
| 327 | } | 331 | } |
| 328 | 332 | ||
| 333 | void Maxwell3D::ProcessSyncPoint() { | ||
| 334 | const u32 sync_point = regs.sync_info.sync_point.Value(); | ||
| 335 | const u32 increment = regs.sync_info.increment.Value(); | ||
| 336 | const u32 cache_flush = regs.sync_info.unknown.Value(); | ||
| 337 | UNIMPLEMENTED_MSG("Syncpoint Set {}, increment: {}, unk: {}", sync_point, increment, | ||
| 338 | cache_flush); | ||
| 339 | } | ||
| 340 | |||
| 329 | void Maxwell3D::DrawArrays() { | 341 | void Maxwell3D::DrawArrays() { |
| 330 | LOG_DEBUG(HW_GPU, "called, topology={}, count={}", static_cast<u32>(regs.draw.topology.Value()), | 342 | LOG_DEBUG(HW_GPU, "called, topology={}, count={}", static_cast<u32>(regs.draw.topology.Value()), |
| 331 | regs.vertex_buffer.count); | 343 | regs.vertex_buffer.count); |
diff --git a/src/video_core/engines/maxwell_3d.h b/src/video_core/engines/maxwell_3d.h index b352060a1..321af3297 100644 --- a/src/video_core/engines/maxwell_3d.h +++ b/src/video_core/engines/maxwell_3d.h | |||
| @@ -579,7 +579,17 @@ public: | |||
| 579 | u32 bind; | 579 | u32 bind; |
| 580 | } macros; | 580 | } macros; |
| 581 | 581 | ||
| 582 | INSERT_PADDING_WORDS(0x188); | 582 | INSERT_PADDING_WORDS(0x69); |
| 583 | |||
| 584 | struct { | ||
| 585 | union { | ||
| 586 | BitField<0, 16, u32> sync_point; | ||
| 587 | BitField<16, 1, u32> unknown; | ||
| 588 | BitField<20, 1, u32> increment; | ||
| 589 | }; | ||
| 590 | } sync_info; | ||
| 591 | |||
| 592 | INSERT_PADDING_WORDS(0x11E); | ||
| 583 | 593 | ||
| 584 | u32 tfb_enabled; | 594 | u32 tfb_enabled; |
| 585 | 595 | ||
| @@ -1184,6 +1194,9 @@ private: | |||
| 1184 | /// Handles a write to the QUERY_GET register. | 1194 | /// Handles a write to the QUERY_GET register. |
| 1185 | void ProcessQueryGet(); | 1195 | void ProcessQueryGet(); |
| 1186 | 1196 | ||
| 1197 | /// Handles writes to syncing register. | ||
| 1198 | void ProcessSyncPoint(); | ||
| 1199 | |||
| 1187 | /// Handles a write to the CB_DATA[i] register. | 1200 | /// Handles a write to the CB_DATA[i] register. |
| 1188 | void ProcessCBData(u32 value); | 1201 | void ProcessCBData(u32 value); |
| 1189 | 1202 | ||
| @@ -1199,6 +1212,7 @@ private: | |||
| 1199 | "Field " #field_name " has invalid position") | 1212 | "Field " #field_name " has invalid position") |
| 1200 | 1213 | ||
| 1201 | ASSERT_REG_POSITION(macros, 0x45); | 1214 | ASSERT_REG_POSITION(macros, 0x45); |
| 1215 | ASSERT_REG_POSITION(sync_info, 0xB2); | ||
| 1202 | ASSERT_REG_POSITION(tfb_enabled, 0x1D1); | 1216 | ASSERT_REG_POSITION(tfb_enabled, 0x1D1); |
| 1203 | ASSERT_REG_POSITION(rt, 0x200); | 1217 | ASSERT_REG_POSITION(rt, 0x200); |
| 1204 | ASSERT_REG_POSITION(viewport_transform, 0x280); | 1218 | ASSERT_REG_POSITION(viewport_transform, 0x280); |