From a430f9d42e1aec47a2c1ecad18194887eca01707 Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 20 Nov 2019 12:02:18 +0000 Subject: [PATCH] Account for format-based checks when displaying casted typeless textures --- renderdoc/driver/d3d11/d3d11_debug.h | 4 ++-- renderdoc/driver/d3d11/d3d11_rendertexture.cpp | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/renderdoc/driver/d3d11/d3d11_debug.h b/renderdoc/driver/d3d11/d3d11_debug.h index 428ed1c68..ae09c76b4 100644 --- a/renderdoc/driver/d3d11/d3d11_debug.h +++ b/renderdoc/driver/d3d11/d3d11_debug.h @@ -57,7 +57,7 @@ struct TextureShaderDetails { TextureShaderDetails() { - texFmt = DXGI_FORMAT_UNKNOWN; + texFmt = srvFormat = DXGI_FORMAT_UNKNOWN; texWidth = 0; texHeight = 0; texDepth = 0; @@ -75,7 +75,7 @@ struct TextureShaderDetails RDCEraseEl(srv); } - DXGI_FORMAT texFmt; + DXGI_FORMAT texFmt, srvFormat; UINT texWidth; UINT texHeight; UINT texDepth; diff --git a/renderdoc/driver/d3d11/d3d11_rendertexture.cpp b/renderdoc/driver/d3d11/d3d11_rendertexture.cpp index 80b583799..7f400894a 100644 --- a/renderdoc/driver/d3d11/d3d11_rendertexture.cpp +++ b/renderdoc/driver/d3d11/d3d11_rendertexture.cpp @@ -151,7 +151,8 @@ TextureShaderDetails D3D11DebugManager::GetShaderDetails(ResourceId id, CompType details.texType = eTexType_2DMS; } - if(mode == TEXDISPLAY_DEPTH_TARGET || IsDepthFormat(details.texFmt)) + if(mode == TEXDISPLAY_DEPTH_TARGET || IsDepthFormat(details.texFmt) || + IsDepthFormat(GetTypedFormat(details.texFmt, typeHint))) { details.texType = eTexType_Depth; details.texFmt = GetTypedFormat(details.texFmt, typeHint); @@ -390,6 +391,7 @@ TextureShaderDetails D3D11DebugManager::GetShaderDetails(ResourceId id, CompType RDCERR("Failed to create cache SRV 0, type %d HRESULT: %s", details.texType, ToStr(hr).c_str()); } + details.srvFormat = srvFormat; details.srv[details.texType] = cache.srv[0]; if(IsYUVFormat(srvFormat)) @@ -759,7 +761,7 @@ bool D3D11Replay::RenderTextureInternal(TextureDisplay cfg, bool blendAlpha) pixelData.OutputDisplayFormat |= TEXDISPLAY_SINT_TEX; srvOffset = 20; } - if(!IsSRGBFormat(details.texFmt) && cfg.linearDisplayAsGamma) + if(!IsSRGBFormat(details.texFmt) && !IsSRGBFormat(details.srvFormat) && cfg.linearDisplayAsGamma) { pixelData.OutputDisplayFormat |= TEXDISPLAY_GAMMA_CURVE; }