diff options
| author | 2020-02-16 09:51:37 -0400 | |
|---|---|---|
| committer | 2020-04-22 11:36:06 -0400 | |
| commit | da8f17715dbdc7eec92f5f0c11c968a51b86cab4 (patch) | |
| tree | a1604f3cf9abe9128d26834f9c68161ecab6e204 /src/video_core/renderer_opengl | |
| parent | Texture Cache: Implement OnCPUWrite and SyncGuestHost (diff) | |
| download | yuzu-da8f17715dbdc7eec92f5f0c11c968a51b86cab4.tar.gz yuzu-da8f17715dbdc7eec92f5f0c11c968a51b86cab4.tar.xz yuzu-da8f17715dbdc7eec92f5f0c11c968a51b86cab4.zip | |
GPU: Refactor synchronization on Async GPU
Diffstat (limited to 'src/video_core/renderer_opengl')
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.cpp | 16 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.h | 2 |
2 files changed, 18 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index ac4485a18..537912745 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp | |||
| @@ -660,6 +660,22 @@ void RasterizerOpenGL::InvalidateRegion(VAddr addr, u64 size) { | |||
| 660 | query_cache.InvalidateRegion(addr, size); | 660 | query_cache.InvalidateRegion(addr, size); |
| 661 | } | 661 | } |
| 662 | 662 | ||
| 663 | void RasterizerOpenGL::OnCPUWrite(VAddr addr, u64 size) { | ||
| 664 | MICROPROFILE_SCOPE(OpenGL_CacheManagement); | ||
| 665 | if (!addr || !size) { | ||
| 666 | return; | ||
| 667 | } | ||
| 668 | texture_cache.OnCPUWrite(addr, size); | ||
| 669 | shader_cache.InvalidateRegion(addr, size); | ||
| 670 | buffer_cache.InvalidateRegion(addr, size); | ||
| 671 | } | ||
| 672 | |||
| 673 | void RasterizerOpenGL::SyncGuestHost() { | ||
| 674 | MICROPROFILE_SCOPE(OpenGL_CacheManagement); | ||
| 675 | texture_cache.SyncGuestHost(); | ||
| 676 | // buffer_cache.SyncGuestHost(); | ||
| 677 | } | ||
| 678 | |||
| 663 | void RasterizerOpenGL::FlushAndInvalidateRegion(VAddr addr, u64 size) { | 679 | void RasterizerOpenGL::FlushAndInvalidateRegion(VAddr addr, u64 size) { |
| 664 | if (Settings::IsGPULevelExtreme()) { | 680 | if (Settings::IsGPULevelExtreme()) { |
| 665 | FlushRegion(addr, size); | 681 | FlushRegion(addr, size); |
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.h b/src/video_core/renderer_opengl/gl_rasterizer.h index caea174d2..a870024c6 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.h +++ b/src/video_core/renderer_opengl/gl_rasterizer.h | |||
| @@ -67,6 +67,8 @@ public: | |||
| 67 | void FlushAll() override; | 67 | void FlushAll() override; |
| 68 | void FlushRegion(VAddr addr, u64 size) override; | 68 | void FlushRegion(VAddr addr, u64 size) override; |
| 69 | void InvalidateRegion(VAddr addr, u64 size) override; | 69 | void InvalidateRegion(VAddr addr, u64 size) override; |
| 70 | void OnCPUWrite(VAddr addr, u64 size) override; | ||
| 71 | void SyncGuestHost() override; | ||
| 70 | void FlushAndInvalidateRegion(VAddr addr, u64 size) override; | 72 | void FlushAndInvalidateRegion(VAddr addr, u64 size) override; |
| 71 | void FlushCommands() override; | 73 | void FlushCommands() override; |
| 72 | void TickFrame() override; | 74 | void TickFrame() override; |