diff options
| author | 2019-06-12 07:52:49 -0400 | |
|---|---|---|
| committer | 2019-07-05 15:49:26 -0400 | |
| commit | 7d1b974bcaf72c32910dcf4ff2d435f91cf40609 (patch) | |
| tree | 64c69a14a9135b0027dea0d7e832e52710d7d8a8 /src/video_core/gpu.h | |
| parent | nvflinger: Make the force 30 fps still force 30 fps (diff) | |
| download | yuzu-7d1b974bcaf72c32910dcf4ff2d435f91cf40609.tar.gz yuzu-7d1b974bcaf72c32910dcf4ff2d435f91cf40609.tar.xz yuzu-7d1b974bcaf72c32910dcf4ff2d435f91cf40609.zip | |
GPU: Correct Interrupts to interrupt on syncpt/value instead of event, mirroring hardware
Diffstat (limited to 'src/video_core/gpu.h')
| -rw-r--r-- | src/video_core/gpu.h | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/src/video_core/gpu.h b/src/video_core/gpu.h index 18ac3237e..9bd618941 100644 --- a/src/video_core/gpu.h +++ b/src/video_core/gpu.h | |||
| @@ -172,9 +172,9 @@ public: | |||
| 172 | 172 | ||
| 173 | u32 GetSyncpointValue(const u32 syncpoint_id) const; | 173 | u32 GetSyncpointValue(const u32 syncpoint_id) const; |
| 174 | 174 | ||
| 175 | void RegisterEvent(const u32 event_id, const u32 syncpoint_id, const u32 value); | 175 | void RegisterSyncptInterrupt(const u32 syncpoint_id, const u32 value); |
| 176 | 176 | ||
| 177 | void CancelEvent(const u32 event_id, const u32 syncpoint_id, const u32 value); | 177 | void CancelSyncptInterrupt(const u32 syncpoint_id, const u32 value); |
| 178 | 178 | ||
| 179 | void Guard(bool guard_set) { | 179 | void Guard(bool guard_set) { |
| 180 | if (guard_set) { | 180 | if (guard_set) { |
| @@ -253,7 +253,7 @@ public: | |||
| 253 | virtual void FlushAndInvalidateRegion(CacheAddr addr, u64 size) = 0; | 253 | virtual void FlushAndInvalidateRegion(CacheAddr addr, u64 size) = 0; |
| 254 | 254 | ||
| 255 | protected: | 255 | protected: |
| 256 | virtual void TriggerCpuInterrupt(const u32 event_id) const = 0; | 256 | virtual void TriggerCpuInterrupt(const u32 syncpoint_id, const u32 value) const = 0; |
| 257 | 257 | ||
| 258 | private: | 258 | private: |
| 259 | void ProcessBindMethod(const MethodCall& method_call); | 259 | void ProcessBindMethod(const MethodCall& method_call); |
| @@ -293,13 +293,7 @@ private: | |||
| 293 | 293 | ||
| 294 | std::array<std::atomic<u32>, Service::Nvidia::MaxSyncPoints> syncpoints{}; | 294 | std::array<std::atomic<u32>, Service::Nvidia::MaxSyncPoints> syncpoints{}; |
| 295 | 295 | ||
| 296 | struct Event { | 296 | std::array<std::list<u32>, Service::Nvidia::MaxSyncPoints> syncpt_interrupts; |
| 297 | Event(const u32 event_id, const u32 value) : event_id(event_id), value(value) {} | ||
| 298 | u32 event_id; | ||
| 299 | u32 value; | ||
| 300 | }; | ||
| 301 | |||
| 302 | std::array<std::list<Event>, Service::Nvidia::MaxSyncPoints> events; | ||
| 303 | 297 | ||
| 304 | std::mutex sync_mutex; | 298 | std::mutex sync_mutex; |
| 305 | 299 | ||