1
0
Fork 0
forked from suyu/suyu

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:
Fernando Sahmkow 2019-07-18 08:54:42 -04:00
parent 3a3fee5abf
commit 43f57d668c
2 changed files with 15 additions and 14 deletions

View file

@ -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;

View file

@ -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);