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 defcfbd3f..7713e10e2 100644 --- a/src/video_core/engines/maxwell_3d.cpp +++ b/src/video_core/engines/maxwell_3d.cpp | |||
| @@ -250,6 +250,10 @@ void Maxwell3D::CallMethod(const GPU::MethodCall& method_call) { | |||
| 250 | ProcessQueryGet(); | 250 | ProcessQueryGet(); |
| 251 | break; | 251 | break; |
| 252 | } | 252 | } |
| 253 | case MAXWELL3D_REG_INDEX(sync_info): { | ||
| 254 | ProcessSyncPoint(); | ||
| 255 | break; | ||
| 256 | } | ||
| 253 | default: | 257 | default: |
| 254 | break; | 258 | break; |
| 255 | } | 259 | } |
| @@ -327,6 +331,14 @@ void Maxwell3D::ProcessQueryGet() { | |||
| 327 | } | 331 | } |
| 328 | } | 332 | } |
| 329 | 333 | ||
| 334 | void Maxwell3D::ProcessSyncPoint() { | ||
| 335 | const u32 sync_point = regs.sync_info.sync_point.Value(); | ||
| 336 | const u32 increment = regs.sync_info.increment.Value(); | ||
| 337 | const u32 cache_flush = regs.sync_info.unknown.Value(); | ||
| 338 | UNIMPLEMENTED_MSG("Syncpoint Set {}, increment: {}, unk: {}", sync_point, increment, | ||
| 339 | cache_flush); | ||
| 340 | } | ||
| 341 | |||
| 330 | void Maxwell3D::DrawArrays() { | 342 | void Maxwell3D::DrawArrays() { |
| 331 | LOG_DEBUG(HW_GPU, "called, topology={}, count={}", static_cast<u32>(regs.draw.topology.Value()), | 343 | LOG_DEBUG(HW_GPU, "called, topology={}, count={}", static_cast<u32>(regs.draw.topology.Value()), |
| 332 | regs.vertex_buffer.count); | 344 | regs.vertex_buffer.count); |
diff --git a/src/video_core/engines/maxwell_3d.h b/src/video_core/engines/maxwell_3d.h index 7fbf1026e..f7ecee254 100644 --- a/src/video_core/engines/maxwell_3d.h +++ b/src/video_core/engines/maxwell_3d.h | |||
| @@ -576,7 +576,17 @@ public: | |||
| 576 | u32 bind; | 576 | u32 bind; |
| 577 | } macros; | 577 | } macros; |
| 578 | 578 | ||
| 579 | INSERT_PADDING_WORDS(0x188); | 579 | INSERT_PADDING_WORDS(0x69); |
| 580 | |||
| 581 | struct { | ||
| 582 | union { | ||
| 583 | BitField<0, 16, u32> sync_point; | ||
| 584 | BitField<16, 1, u32> unknown; | ||
| 585 | BitField<20, 1, u32> increment; | ||
| 586 | }; | ||
| 587 | } sync_info; | ||
| 588 | |||
| 589 | INSERT_PADDING_WORDS(0x11E); | ||
| 580 | 590 | ||
| 581 | u32 tfb_enabled; | 591 | u32 tfb_enabled; |
| 582 | 592 | ||
| @@ -1180,6 +1190,9 @@ private: | |||
| 1180 | /// Handles a write to the QUERY_GET register. | 1190 | /// Handles a write to the QUERY_GET register. |
| 1181 | void ProcessQueryGet(); | 1191 | void ProcessQueryGet(); |
| 1182 | 1192 | ||
| 1193 | /// Handles writes to syncing register. | ||
| 1194 | void ProcessSyncPoint(); | ||
| 1195 | |||
| 1183 | /// Handles a write to the CB_DATA[i] register. | 1196 | /// Handles a write to the CB_DATA[i] register. |
| 1184 | void ProcessCBData(u32 value); | 1197 | void ProcessCBData(u32 value); |
| 1185 | 1198 | ||
| @@ -1195,6 +1208,7 @@ private: | |||
| 1195 | "Field " #field_name " has invalid position") | 1208 | "Field " #field_name " has invalid position") |
| 1196 | 1209 | ||
| 1197 | ASSERT_REG_POSITION(macros, 0x45); | 1210 | ASSERT_REG_POSITION(macros, 0x45); |
| 1211 | ASSERT_REG_POSITION(sync_info, 0xB2); | ||
| 1198 | ASSERT_REG_POSITION(tfb_enabled, 0x1D1); | 1212 | ASSERT_REG_POSITION(tfb_enabled, 0x1D1); |
| 1199 | ASSERT_REG_POSITION(rt, 0x200); | 1213 | ASSERT_REG_POSITION(rt, 0x200); |
| 1200 | ASSERT_REG_POSITION(viewport_transform, 0x280); | 1214 | ASSERT_REG_POSITION(viewport_transform, 0x280); |