GPU: Add missing puller methods.
This adds some missing puller methods. We don't assert them as these are nop operations for us.
This commit is contained in:
parent
3a3fee5abf
commit
43f57d668c
|
@ -143,12 +143,12 @@ enum class BufferMethods {
|
||||||
NotifyIntr = 0x8,
|
NotifyIntr = 0x8,
|
||||||
WrcacheFlush = 0x9,
|
WrcacheFlush = 0x9,
|
||||||
Unk28 = 0xA,
|
Unk28 = 0xA,
|
||||||
Unk2c = 0xB,
|
UnkCacheFlush = 0xB,
|
||||||
RefCnt = 0x14,
|
RefCnt = 0x14,
|
||||||
SemaphoreAcquire = 0x1A,
|
SemaphoreAcquire = 0x1A,
|
||||||
SemaphoreRelease = 0x1B,
|
SemaphoreRelease = 0x1B,
|
||||||
Unk70 = 0x1C,
|
FenceValue = 0x1C,
|
||||||
Unk74 = 0x1D,
|
FenceAction = 0x1D,
|
||||||
Unk78 = 0x1E,
|
Unk78 = 0x1E,
|
||||||
Unk7c = 0x1F,
|
Unk7c = 0x1F,
|
||||||
Yield = 0x20,
|
Yield = 0x20,
|
||||||
|
@ -194,6 +194,10 @@ void GPU::CallPullerMethod(const MethodCall& method_call) {
|
||||||
case BufferMethods::SemaphoreAddressLow:
|
case BufferMethods::SemaphoreAddressLow:
|
||||||
case BufferMethods::SemaphoreSequence:
|
case BufferMethods::SemaphoreSequence:
|
||||||
case BufferMethods::RefCnt:
|
case BufferMethods::RefCnt:
|
||||||
|
case BufferMethods::UnkCacheFlush:
|
||||||
|
case BufferMethods::WrcacheFlush:
|
||||||
|
case BufferMethods::FenceValue:
|
||||||
|
case BufferMethods::FenceAction:
|
||||||
break;
|
break;
|
||||||
case BufferMethods::SemaphoreTrigger: {
|
case BufferMethods::SemaphoreTrigger: {
|
||||||
ProcessSemaphoreTriggerMethod();
|
ProcessSemaphoreTriggerMethod();
|
||||||
|
@ -204,21 +208,11 @@ void GPU::CallPullerMethod(const MethodCall& method_call) {
|
||||||
LOG_ERROR(HW_GPU, "Special puller engine method NotifyIntr not implemented");
|
LOG_ERROR(HW_GPU, "Special puller engine method NotifyIntr not implemented");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case BufferMethods::WrcacheFlush: {
|
|
||||||
// TODO(Kmather73): Research and implement this method.
|
|
||||||
LOG_ERROR(HW_GPU, "Special puller engine method WrcacheFlush not implemented");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case BufferMethods::Unk28: {
|
case BufferMethods::Unk28: {
|
||||||
// TODO(Kmather73): Research and implement this method.
|
// TODO(Kmather73): Research and implement this method.
|
||||||
LOG_ERROR(HW_GPU, "Special puller engine method Unk28 not implemented");
|
LOG_ERROR(HW_GPU, "Special puller engine method Unk28 not implemented");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case BufferMethods::Unk2c: {
|
|
||||||
// TODO(Kmather73): Research and implement this method.
|
|
||||||
LOG_ERROR(HW_GPU, "Special puller engine method Unk2c not implemented");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case BufferMethods::SemaphoreAcquire: {
|
case BufferMethods::SemaphoreAcquire: {
|
||||||
ProcessSemaphoreAcquire();
|
ProcessSemaphoreAcquire();
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -194,7 +194,12 @@ public:
|
||||||
|
|
||||||
u32 semaphore_acquire;
|
u32 semaphore_acquire;
|
||||||
u32 semaphore_release;
|
u32 semaphore_release;
|
||||||
INSERT_PADDING_WORDS(0xE4);
|
u32 fence_value;
|
||||||
|
union {
|
||||||
|
BitField<4, 4, u32> operation;
|
||||||
|
BitField<8, 8, u32> id;
|
||||||
|
} fence_action;
|
||||||
|
INSERT_PADDING_WORDS(0xE2);
|
||||||
|
|
||||||
// Puller state
|
// Puller state
|
||||||
u32 acquire_mode;
|
u32 acquire_mode;
|
||||||
|
@ -274,6 +279,8 @@ ASSERT_REG_POSITION(semaphore_trigger, 0x7);
|
||||||
ASSERT_REG_POSITION(reference_count, 0x14);
|
ASSERT_REG_POSITION(reference_count, 0x14);
|
||||||
ASSERT_REG_POSITION(semaphore_acquire, 0x1A);
|
ASSERT_REG_POSITION(semaphore_acquire, 0x1A);
|
||||||
ASSERT_REG_POSITION(semaphore_release, 0x1B);
|
ASSERT_REG_POSITION(semaphore_release, 0x1B);
|
||||||
|
ASSERT_REG_POSITION(fence_value, 0x1C);
|
||||||
|
ASSERT_REG_POSITION(fence_action, 0x1D);
|
||||||
|
|
||||||
ASSERT_REG_POSITION(acquire_mode, 0x100);
|
ASSERT_REG_POSITION(acquire_mode, 0x100);
|
||||||
ASSERT_REG_POSITION(acquire_source, 0x101);
|
ASSERT_REG_POSITION(acquire_source, 0x101);
|
||||||
|
|
Reference in New Issue