From 9c0f40a1f5bea37b87a31e9f957c4d2a14a8e421 Mon Sep 17 00:00:00 2001 From: Fernando Sahmkow Date: Sun, 5 Apr 2020 12:58:23 -0400 Subject: GPU: Setup Flush/Invalidate to use VAddr instead of CacheAddr --- src/video_core/renderer_opengl/gl_rasterizer.cpp | 22 ++++++++++++---------- src/video_core/renderer_opengl/gl_rasterizer.h | 6 +++--- 2 files changed, 15 insertions(+), 13 deletions(-) (limited to 'src/video_core/renderer_opengl') diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index 346feeb2f..261738830 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp @@ -656,28 +656,30 @@ void RasterizerOpenGL::Query(GPUVAddr gpu_addr, VideoCore::QueryType type, void RasterizerOpenGL::FlushAll() {} -void RasterizerOpenGL::FlushRegion(CacheAddr addr, u64 size) { +void RasterizerOpenGL::FlushRegion(VAddr addr, u64 size) { MICROPROFILE_SCOPE(OpenGL_CacheManagement); if (!addr || !size) { return; } - texture_cache.FlushRegion(addr, size); - buffer_cache.FlushRegion(addr, size); - query_cache.FlushRegion(addr, size); + CacheAddr cache_addr = ToCacheAddr(system.Memory().GetPointer(addr)); + texture_cache.FlushRegion(cache_addr, size); + buffer_cache.FlushRegion(cache_addr, size); + query_cache.FlushRegion(cache_addr, size); } -void RasterizerOpenGL::InvalidateRegion(CacheAddr addr, u64 size) { +void RasterizerOpenGL::InvalidateRegion(VAddr addr, u64 size) { MICROPROFILE_SCOPE(OpenGL_CacheManagement); if (!addr || !size) { return; } - texture_cache.InvalidateRegion(addr, size); - shader_cache.InvalidateRegion(addr, size); - buffer_cache.InvalidateRegion(addr, size); - query_cache.InvalidateRegion(addr, size); + CacheAddr cache_addr = ToCacheAddr(system.Memory().GetPointer(addr)); + texture_cache.InvalidateRegion(cache_addr, size); + shader_cache.InvalidateRegion(cache_addr, size); + buffer_cache.InvalidateRegion(cache_addr, size); + query_cache.InvalidateRegion(cache_addr, size); } -void RasterizerOpenGL::FlushAndInvalidateRegion(CacheAddr addr, u64 size) { +void RasterizerOpenGL::FlushAndInvalidateRegion(VAddr addr, u64 size) { if (Settings::values.use_accurate_gpu_emulation) { FlushRegion(addr, size); } diff --git a/src/video_core/renderer_opengl/gl_rasterizer.h b/src/video_core/renderer_opengl/gl_rasterizer.h index 2d3be2437..212dad852 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.h +++ b/src/video_core/renderer_opengl/gl_rasterizer.h @@ -65,9 +65,9 @@ public: void ResetCounter(VideoCore::QueryType type) override; void Query(GPUVAddr gpu_addr, VideoCore::QueryType type, std::optional timestamp) override; void FlushAll() override; - void FlushRegion(CacheAddr addr, u64 size) override; - void InvalidateRegion(CacheAddr addr, u64 size) override; - void FlushAndInvalidateRegion(CacheAddr addr, u64 size) override; + void FlushRegion(VAddr addr, u64 size) override; + void InvalidateRegion(VAddr addr, u64 size) override; + void FlushAndInvalidateRegion(VAddr addr, u64 size) override; void FlushCommands() override; void TickFrame() override; bool AccelerateSurfaceCopy(const Tegra::Engines::Fermi2D::Regs::Surface& src, -- cgit v1.2.3