From 6cc925c2d3ee15dae8f63e85b4ed65eae5edab76 Mon Sep 17 00:00:00 2001 From: Billy Laws Date: Tue, 31 May 2022 17:49:16 +0100 Subject: [PATCH] Reset RT mappings on dimension and format changes --- .../main/cpp/skyline/gpu/interconnect/graphics_context.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/src/main/cpp/skyline/gpu/interconnect/graphics_context.h b/app/src/main/cpp/skyline/gpu/interconnect/graphics_context.h index f9de9e25..d67c38d1 100644 --- a/app/src/main/cpp/skyline/gpu/interconnect/graphics_context.h +++ b/app/src/main/cpp/skyline/gpu/interconnect/graphics_context.h @@ -152,6 +152,7 @@ namespace skyline::gpu::interconnect { value /= renderTarget.guest.format->bpb; // Width is in bytes rather than format units for linear textures renderTarget.guest.dimensions.width = value; renderTarget.view.reset(); + renderTarget.guest.mappings.clear(); } void SetColorRenderTargetWidth(size_t index, u32 value) { @@ -165,6 +166,7 @@ namespace skyline::gpu::interconnect { void SetRenderTargetHeight(RenderTarget &renderTarget, u32 value) { renderTarget.guest.dimensions.height = value; renderTarget.view.reset(); + renderTarget.guest.mappings.clear(); } void SetColorRenderTargetHeight(size_t index, u32 value) { @@ -268,6 +270,7 @@ namespace skyline::gpu::interconnect { renderTarget.disabled = !renderTarget.guest.format; renderTarget.view.reset(); + renderTarget.guest.mappings.clear(); } void SetDepthRenderTargetFormat(maxwell3d::DepthRtFormat format) { @@ -296,6 +299,7 @@ namespace skyline::gpu::interconnect { depthRenderTarget.guest.dimensions.width = depthRenderTarget.widthBytes / depthRenderTarget.guest.format->bpb; depthRenderTarget.view.reset(); + depthRenderTarget.guest.mappings.clear(); } void SetRenderTargetTileMode(RenderTarget &renderTarget, maxwell3d::RenderTargetTileMode mode) { @@ -325,6 +329,7 @@ namespace skyline::gpu::interconnect { } renderTarget.view.reset(); + renderTarget.guest.mappings.clear(); } void SetColorRenderTargetTileMode(size_t index, maxwell3d::RenderTargetTileMode mode) { @@ -341,6 +346,7 @@ namespace skyline::gpu::interconnect { else renderTarget.guest.layerCount = mode.depthOrlayerCount; renderTarget.view.reset(); + renderTarget.guest.mappings.clear(); } void SetColorRenderTargetArrayMode(size_t index, maxwell3d::RenderTargetArrayMode mode) { @@ -357,6 +363,7 @@ namespace skyline::gpu::interconnect { void SetRenderTargetLayerStride(RenderTarget &renderTarget, u32 layerStrideLsr2) { renderTarget.layerStride = layerStrideLsr2 << 2; renderTarget.view.reset(); + renderTarget.guest.mappings.clear(); } void SetColorRenderTargetLayerStride(size_t index, u32 layerStrideLsr2) { @@ -374,6 +381,7 @@ namespace skyline::gpu::interconnect { renderTarget.guest.baseArrayLayer = static_cast(baseArrayLayer); renderTarget.view.reset(); + renderTarget.guest.mappings.clear(); } TextureView *GetRenderTarget(RenderTarget &renderTarget) {