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 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
334void 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
330void Maxwell3D::DrawArrays() { 342void 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
1197ASSERT_REG_POSITION(macros, 0x45); 1210ASSERT_REG_POSITION(macros, 0x45);
1211ASSERT_REG_POSITION(sync_info, 0xB2);
1198ASSERT_REG_POSITION(tfb_enabled, 0x1D1); 1212ASSERT_REG_POSITION(tfb_enabled, 0x1D1);
1199ASSERT_REG_POSITION(rt, 0x200); 1213ASSERT_REG_POSITION(rt, 0x200);
1200ASSERT_REG_POSITION(viewport_transform, 0x280); 1214ASSERT_REG_POSITION(viewport_transform, 0x280);