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_vulkan/vk_rasterizer.cpp | 28 +++++++++++++++--------- 1 file changed, 18 insertions(+), 10 deletions(-) (limited to 'src/video_core/renderer_vulkan/vk_rasterizer.cpp') diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 58c69b786..0ca72eb45 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -495,20 +495,28 @@ void RasterizerVulkan::Query(GPUVAddr gpu_addr, VideoCore::QueryType type, void RasterizerVulkan::FlushAll() {} -void RasterizerVulkan::FlushRegion(CacheAddr addr, u64 size) { - texture_cache.FlushRegion(addr, size); - buffer_cache.FlushRegion(addr, size); - query_cache.FlushRegion(addr, size); +void RasterizerVulkan::FlushRegion(VAddr addr, u64 size) { + if (!addr || !size) { + return; + } + 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 RasterizerVulkan::InvalidateRegion(CacheAddr addr, u64 size) { - texture_cache.InvalidateRegion(addr, size); - pipeline_cache.InvalidateRegion(addr, size); - buffer_cache.InvalidateRegion(addr, size); - query_cache.InvalidateRegion(addr, size); +void RasterizerVulkan::InvalidateRegion(VAddr addr, u64 size) { + if (!addr || !size) { + return; + } + CacheAddr cache_addr = ToCacheAddr(system.Memory().GetPointer(addr)); + texture_cache.InvalidateRegion(cache_addr, size); + pipeline_cache.InvalidateRegion(cache_addr, size); + buffer_cache.InvalidateRegion(cache_addr, size); + query_cache.InvalidateRegion(cache_addr, size); } -void RasterizerVulkan::FlushAndInvalidateRegion(CacheAddr addr, u64 size) { +void RasterizerVulkan::FlushAndInvalidateRegion(VAddr addr, u64 size) { FlushRegion(addr, size); InvalidateRegion(addr, size); } -- cgit v1.2.3 From 6ee316cb8f4d6f28b4dcad7a8a3d447fdf70d3bb Mon Sep 17 00:00:00 2001 From: Fernando Sahmkow Date: Sun, 5 Apr 2020 15:26:16 -0400 Subject: Texture Cache: Use vAddr instead of physical memory for caching. --- src/video_core/renderer_vulkan/vk_rasterizer.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'src/video_core/renderer_vulkan/vk_rasterizer.cpp') diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 0ca72eb45..cc76d96ea 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -500,7 +500,7 @@ void RasterizerVulkan::FlushRegion(VAddr addr, u64 size) { return; } CacheAddr cache_addr = ToCacheAddr(system.Memory().GetPointer(addr)); - texture_cache.FlushRegion(cache_addr, size); + texture_cache.FlushRegion(addr, size); buffer_cache.FlushRegion(cache_addr, size); query_cache.FlushRegion(cache_addr, size); } @@ -510,7 +510,7 @@ void RasterizerVulkan::InvalidateRegion(VAddr addr, u64 size) { return; } CacheAddr cache_addr = ToCacheAddr(system.Memory().GetPointer(addr)); - texture_cache.InvalidateRegion(cache_addr, size); + texture_cache.InvalidateRegion(addr, size); pipeline_cache.InvalidateRegion(cache_addr, size); buffer_cache.InvalidateRegion(cache_addr, size); query_cache.InvalidateRegion(cache_addr, size); @@ -548,8 +548,7 @@ bool RasterizerVulkan::AccelerateDisplay(const Tegra::FramebufferConfig& config, return false; } - const u8* host_ptr{system.Memory().GetPointer(framebuffer_addr)}; - const auto surface{texture_cache.TryFindFramebufferSurface(host_ptr)}; + const auto surface{texture_cache.TryFindFramebufferSurface(framebuffer_addr)}; if (!surface) { return false; } -- cgit v1.2.3 From 7fcd0fee6d580a381fdc4a4ec5b77687e4857b5b Mon Sep 17 00:00:00 2001 From: Fernando Sahmkow Date: Sun, 5 Apr 2020 17:23:49 -0400 Subject: Buffer Cache: Use vAddr instead of physical memory. --- src/video_core/renderer_vulkan/vk_rasterizer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/video_core/renderer_vulkan/vk_rasterizer.cpp') diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index cc76d96ea..b6ba5de12 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -501,7 +501,7 @@ void RasterizerVulkan::FlushRegion(VAddr addr, u64 size) { } CacheAddr cache_addr = ToCacheAddr(system.Memory().GetPointer(addr)); texture_cache.FlushRegion(addr, size); - buffer_cache.FlushRegion(cache_addr, size); + buffer_cache.FlushRegion(addr, size); query_cache.FlushRegion(cache_addr, size); } @@ -512,7 +512,7 @@ void RasterizerVulkan::InvalidateRegion(VAddr addr, u64 size) { CacheAddr cache_addr = ToCacheAddr(system.Memory().GetPointer(addr)); texture_cache.InvalidateRegion(addr, size); pipeline_cache.InvalidateRegion(cache_addr, size); - buffer_cache.InvalidateRegion(cache_addr, size); + buffer_cache.InvalidateRegion(addr, size); query_cache.InvalidateRegion(cache_addr, size); } -- cgit v1.2.3 From 3dd5c07454bda0518b965f941399d64aabac5629 Mon Sep 17 00:00:00 2001 From: Fernando Sahmkow Date: Sun, 5 Apr 2020 18:39:24 -0400 Subject: Query Cache: Use VAddr instead of physical memory for adressing. --- src/video_core/renderer_vulkan/vk_rasterizer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/video_core/renderer_vulkan/vk_rasterizer.cpp') diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index b6ba5de12..199533517 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -502,7 +502,7 @@ void RasterizerVulkan::FlushRegion(VAddr addr, u64 size) { CacheAddr cache_addr = ToCacheAddr(system.Memory().GetPointer(addr)); texture_cache.FlushRegion(addr, size); buffer_cache.FlushRegion(addr, size); - query_cache.FlushRegion(cache_addr, size); + query_cache.FlushRegion(addr, size); } void RasterizerVulkan::InvalidateRegion(VAddr addr, u64 size) { @@ -513,7 +513,7 @@ void RasterizerVulkan::InvalidateRegion(VAddr addr, u64 size) { texture_cache.InvalidateRegion(addr, size); pipeline_cache.InvalidateRegion(cache_addr, size); buffer_cache.InvalidateRegion(addr, size); - query_cache.InvalidateRegion(cache_addr, size); + query_cache.InvalidateRegion(addr, size); } void RasterizerVulkan::FlushAndInvalidateRegion(VAddr addr, u64 size) { -- cgit v1.2.3 From ea535d9470fb86f274304f76fd02300618b3500e Mon Sep 17 00:00:00 2001 From: Fernando Sahmkow Date: Sun, 5 Apr 2020 19:18:00 -0400 Subject: Shader/Pipeline Cache: Use VAddr instead of physical memory for addressing. --- src/video_core/renderer_vulkan/vk_rasterizer.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src/video_core/renderer_vulkan/vk_rasterizer.cpp') diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 199533517..1466018fa 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -509,9 +509,8 @@ void RasterizerVulkan::InvalidateRegion(VAddr addr, u64 size) { if (!addr || !size) { return; } - CacheAddr cache_addr = ToCacheAddr(system.Memory().GetPointer(addr)); texture_cache.InvalidateRegion(addr, size); - pipeline_cache.InvalidateRegion(cache_addr, size); + pipeline_cache.InvalidateRegion(addr, size); buffer_cache.InvalidateRegion(addr, size); query_cache.InvalidateRegion(addr, size); } -- cgit v1.2.3 From 913f42a3a70d716fa65d639dc4a6dfc9687eec61 Mon Sep 17 00:00:00 2001 From: Fernando Sahmkow Date: Wed, 8 Apr 2020 13:34:59 -0400 Subject: Memory: Address Feedback. --- src/video_core/renderer_vulkan/vk_rasterizer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/video_core/renderer_vulkan/vk_rasterizer.cpp') diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 1466018fa..30eaeba6c 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -496,7 +496,7 @@ void RasterizerVulkan::Query(GPUVAddr gpu_addr, VideoCore::QueryType type, void RasterizerVulkan::FlushAll() {} void RasterizerVulkan::FlushRegion(VAddr addr, u64 size) { - if (!addr || !size) { + if (addr == 0 || size == 0) { return; } CacheAddr cache_addr = ToCacheAddr(system.Memory().GetPointer(addr)); @@ -506,7 +506,7 @@ void RasterizerVulkan::FlushRegion(VAddr addr, u64 size) { } void RasterizerVulkan::InvalidateRegion(VAddr addr, u64 size) { - if (!addr || !size) { + if (addr == 0 || size == 0) { return; } texture_cache.InvalidateRegion(addr, size); -- cgit v1.2.3 From 7cd6daf11524268afad1fc51af849d91cf7df01b Mon Sep 17 00:00:00 2001 From: Fernando Sahmkow Date: Wed, 8 Apr 2020 18:59:09 -0400 Subject: VkRasterizer: Eliminate Legacy code. --- src/video_core/renderer_vulkan/vk_rasterizer.cpp | 1 - 1 file changed, 1 deletion(-) (limited to 'src/video_core/renderer_vulkan/vk_rasterizer.cpp') diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 30eaeba6c..0a2ea4fd4 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -499,7 +499,6 @@ void RasterizerVulkan::FlushRegion(VAddr addr, u64 size) { if (addr == 0 || size == 0) { return; } - CacheAddr cache_addr = ToCacheAddr(system.Memory().GetPointer(addr)); texture_cache.FlushRegion(addr, size); buffer_cache.FlushRegion(addr, size); query_cache.FlushRegion(addr, size); -- cgit v1.2.3