summaryrefslogtreecommitdiff
path: root/src/video_core/renderer_opengl
diff options
context:
space:
mode:
authorGravatar Fernando Sahmkow2020-02-16 09:51:37 -0400
committerGravatar Fernando Sahmkow2020-04-22 11:36:06 -0400
commitda8f17715dbdc7eec92f5f0c11c968a51b86cab4 (patch)
treea1604f3cf9abe9128d26834f9c68161ecab6e204 /src/video_core/renderer_opengl
parentTexture Cache: Implement OnCPUWrite and SyncGuestHost (diff)
downloadyuzu-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.cpp16
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.h2
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
663void 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
673void RasterizerOpenGL::SyncGuestHost() {
674 MICROPROFILE_SCOPE(OpenGL_CacheManagement);
675 texture_cache.SyncGuestHost();
676 // buffer_cache.SyncGuestHost();
677}
678
663void RasterizerOpenGL::FlushAndInvalidateRegion(VAddr addr, u64 size) { 679void 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;