Implement SyncPoint Register in the GPU.
This commit is contained in:
parent
f770c17d01
commit
fc91e21206
|
@ -250,6 +250,10 @@ void Maxwell3D::CallMethod(const GPU::MethodCall& method_call) {
|
||||||
ProcessQueryGet();
|
ProcessQueryGet();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case MAXWELL3D_REG_INDEX(sync_info): {
|
||||||
|
ProcessSyncPoint();
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -327,6 +331,14 @@ void Maxwell3D::ProcessQueryGet() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Maxwell3D::ProcessSyncPoint() {
|
||||||
|
const u32 sync_point = regs.sync_info.sync_point.Value();
|
||||||
|
const u32 increment = regs.sync_info.increment.Value();
|
||||||
|
const u32 cache_flush = regs.sync_info.unknown.Value();
|
||||||
|
UNIMPLEMENTED_MSG("Syncpoint Set {}, increment: {}, unk: {}", sync_point, increment,
|
||||||
|
cache_flush);
|
||||||
|
}
|
||||||
|
|
||||||
void Maxwell3D::DrawArrays() {
|
void Maxwell3D::DrawArrays() {
|
||||||
LOG_DEBUG(HW_GPU, "called, topology={}, count={}", static_cast<u32>(regs.draw.topology.Value()),
|
LOG_DEBUG(HW_GPU, "called, topology={}, count={}", static_cast<u32>(regs.draw.topology.Value()),
|
||||||
regs.vertex_buffer.count);
|
regs.vertex_buffer.count);
|
||||||
|
|
|
@ -576,7 +576,17 @@ public:
|
||||||
u32 bind;
|
u32 bind;
|
||||||
} macros;
|
} macros;
|
||||||
|
|
||||||
INSERT_PADDING_WORDS(0x188);
|
INSERT_PADDING_WORDS(0x69);
|
||||||
|
|
||||||
|
struct {
|
||||||
|
union {
|
||||||
|
BitField<0, 16, u32> sync_point;
|
||||||
|
BitField<16, 1, u32> unknown;
|
||||||
|
BitField<20, 1, u32> increment;
|
||||||
|
};
|
||||||
|
} sync_info;
|
||||||
|
|
||||||
|
INSERT_PADDING_WORDS(0x11E);
|
||||||
|
|
||||||
u32 tfb_enabled;
|
u32 tfb_enabled;
|
||||||
|
|
||||||
|
@ -1180,6 +1190,9 @@ private:
|
||||||
/// Handles a write to the QUERY_GET register.
|
/// Handles a write to the QUERY_GET register.
|
||||||
void ProcessQueryGet();
|
void ProcessQueryGet();
|
||||||
|
|
||||||
|
/// Handles writes to syncing register.
|
||||||
|
void ProcessSyncPoint();
|
||||||
|
|
||||||
/// Handles a write to the CB_DATA[i] register.
|
/// Handles a write to the CB_DATA[i] register.
|
||||||
void ProcessCBData(u32 value);
|
void ProcessCBData(u32 value);
|
||||||
|
|
||||||
|
@ -1195,6 +1208,7 @@ private:
|
||||||
"Field " #field_name " has invalid position")
|
"Field " #field_name " has invalid position")
|
||||||
|
|
||||||
ASSERT_REG_POSITION(macros, 0x45);
|
ASSERT_REG_POSITION(macros, 0x45);
|
||||||
|
ASSERT_REG_POSITION(sync_info, 0xB2);
|
||||||
ASSERT_REG_POSITION(tfb_enabled, 0x1D1);
|
ASSERT_REG_POSITION(tfb_enabled, 0x1D1);
|
||||||
ASSERT_REG_POSITION(rt, 0x200);
|
ASSERT_REG_POSITION(rt, 0x200);
|
||||||
ASSERT_REG_POSITION(viewport_transform, 0x280);
|
ASSERT_REG_POSITION(viewport_transform, 0x280);
|
||||||
|
|
Reference in New Issue