summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/video_core/gpu.cpp20
-rw-r--r--src/video_core/gpu.h9
2 files changed, 15 insertions, 14 deletions
diff --git a/src/video_core/gpu.cpp b/src/video_core/gpu.cpp
index 1b4975498..6cb5fd4e1 100644
--- a/src/video_core/gpu.cpp
+++ b/src/video_core/gpu.cpp
@@ -143,12 +143,12 @@ enum class BufferMethods {
143 NotifyIntr = 0x8, 143 NotifyIntr = 0x8,
144 WrcacheFlush = 0x9, 144 WrcacheFlush = 0x9,
145 Unk28 = 0xA, 145 Unk28 = 0xA,
146 Unk2c = 0xB, 146 UnkCacheFlush = 0xB,
147 RefCnt = 0x14, 147 RefCnt = 0x14,
148 SemaphoreAcquire = 0x1A, 148 SemaphoreAcquire = 0x1A,
149 SemaphoreRelease = 0x1B, 149 SemaphoreRelease = 0x1B,
150 Unk70 = 0x1C, 150 FenceValue = 0x1C,
151 Unk74 = 0x1D, 151 FenceAction = 0x1D,
152 Unk78 = 0x1E, 152 Unk78 = 0x1E,
153 Unk7c = 0x1F, 153 Unk7c = 0x1F,
154 Yield = 0x20, 154 Yield = 0x20,
@@ -194,6 +194,10 @@ void GPU::CallPullerMethod(const MethodCall& method_call) {
194 case BufferMethods::SemaphoreAddressLow: 194 case BufferMethods::SemaphoreAddressLow:
195 case BufferMethods::SemaphoreSequence: 195 case BufferMethods::SemaphoreSequence:
196 case BufferMethods::RefCnt: 196 case BufferMethods::RefCnt:
197 case BufferMethods::UnkCacheFlush:
198 case BufferMethods::WrcacheFlush:
199 case BufferMethods::FenceValue:
200 case BufferMethods::FenceAction:
197 break; 201 break;
198 case BufferMethods::SemaphoreTrigger: { 202 case BufferMethods::SemaphoreTrigger: {
199 ProcessSemaphoreTriggerMethod(); 203 ProcessSemaphoreTriggerMethod();
@@ -204,21 +208,11 @@ void GPU::CallPullerMethod(const MethodCall& method_call) {
204 LOG_ERROR(HW_GPU, "Special puller engine method NotifyIntr not implemented"); 208 LOG_ERROR(HW_GPU, "Special puller engine method NotifyIntr not implemented");
205 break; 209 break;
206 } 210 }
207 case BufferMethods::WrcacheFlush: {
208 // TODO(Kmather73): Research and implement this method.
209 LOG_ERROR(HW_GPU, "Special puller engine method WrcacheFlush not implemented");
210 break;
211 }
212 case BufferMethods::Unk28: { 211 case BufferMethods::Unk28: {
213 // TODO(Kmather73): Research and implement this method. 212 // TODO(Kmather73): Research and implement this method.
214 LOG_ERROR(HW_GPU, "Special puller engine method Unk28 not implemented"); 213 LOG_ERROR(HW_GPU, "Special puller engine method Unk28 not implemented");
215 break; 214 break;
216 } 215 }
217 case BufferMethods::Unk2c: {
218 // TODO(Kmather73): Research and implement this method.
219 LOG_ERROR(HW_GPU, "Special puller engine method Unk2c not implemented");
220 break;
221 }
222 case BufferMethods::SemaphoreAcquire: { 216 case BufferMethods::SemaphoreAcquire: {
223 ProcessSemaphoreAcquire(); 217 ProcessSemaphoreAcquire();
224 break; 218 break;
diff --git a/src/video_core/gpu.h b/src/video_core/gpu.h
index fe6628923..5a8b1c74a 100644
--- a/src/video_core/gpu.h
+++ b/src/video_core/gpu.h
@@ -194,7 +194,12 @@ public:
194 194
195 u32 semaphore_acquire; 195 u32 semaphore_acquire;
196 u32 semaphore_release; 196 u32 semaphore_release;
197 INSERT_PADDING_WORDS(0xE4); 197 u32 fence_value;
198 union {
199 BitField<4, 4, u32> operation;
200 BitField<8, 8, u32> id;
201 } fence_action;
202 INSERT_PADDING_WORDS(0xE2);
198 203
199 // Puller state 204 // Puller state
200 u32 acquire_mode; 205 u32 acquire_mode;
@@ -274,6 +279,8 @@ ASSERT_REG_POSITION(semaphore_trigger, 0x7);
274ASSERT_REG_POSITION(reference_count, 0x14); 279ASSERT_REG_POSITION(reference_count, 0x14);
275ASSERT_REG_POSITION(semaphore_acquire, 0x1A); 280ASSERT_REG_POSITION(semaphore_acquire, 0x1A);
276ASSERT_REG_POSITION(semaphore_release, 0x1B); 281ASSERT_REG_POSITION(semaphore_release, 0x1B);
282ASSERT_REG_POSITION(fence_value, 0x1C);
283ASSERT_REG_POSITION(fence_action, 0x1D);
277 284
278ASSERT_REG_POSITION(acquire_mode, 0x100); 285ASSERT_REG_POSITION(acquire_mode, 0x100);
279ASSERT_REG_POSITION(acquire_source, 0x101); 286ASSERT_REG_POSITION(acquire_source, 0x101);