summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/video_core/engines/maxwell_3d.cpp12
-rw-r--r--src/video_core/engines/maxwell_3d.h16
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
333void 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
329void Maxwell3D::DrawArrays() { 341void 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
1201ASSERT_REG_POSITION(macros, 0x45); 1214ASSERT_REG_POSITION(macros, 0x45);
1215ASSERT_REG_POSITION(sync_info, 0xB2);
1202ASSERT_REG_POSITION(tfb_enabled, 0x1D1); 1216ASSERT_REG_POSITION(tfb_enabled, 0x1D1);
1203ASSERT_REG_POSITION(rt, 0x200); 1217ASSERT_REG_POSITION(rt, 0x200);
1204ASSERT_REG_POSITION(viewport_transform, 0x280); 1218ASSERT_REG_POSITION(viewport_transform, 0x280);