From 45144ed478882e7ba1794f2e57bee3443697dd1a Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 20 Nov 2019 11:55:38 +0000 Subject: [PATCH] Don't rely on proxy renderer for texture description in image viewer --- renderdoc/core/image_viewer.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/renderdoc/core/image_viewer.cpp b/renderdoc/core/image_viewer.cpp index 3dc2a01ee..2680ba98c 100644 --- a/renderdoc/core/image_viewer.cpp +++ b/renderdoc/core/image_viewer.cpp @@ -60,6 +60,7 @@ public: m_PipelineState.outputMerger.renderTargets.resize(1); m_PipelineState.outputMerger.renderTargets[0].resourceResourceId = m_TextureID; + m_PipelineState.outputMerger.renderTargets[0].viewFormat = m_TexDetails.format; } virtual ~ImageViewer() @@ -170,7 +171,7 @@ public: } const std::vector &GetResources() { return m_Resources; } std::vector GetTextures() { return {m_TextureID}; } - TextureDescription GetTexture(ResourceId id) { return m_Proxy->GetTexture(m_TextureID); } + TextureDescription GetTexture(ResourceId id) { return m_TexDetails; } void GetTextureData(ResourceId tex, const Subresource &sub, const GetTextureDataParams ¶ms, bytebuf &data) { @@ -524,16 +525,18 @@ void ImageViewer::RefreshFile() bool dds = false; + FileIO::fseek64(f, 0, SEEK_END); + uint64_t fileSize = FileIO::ftell64(f); + FileIO::fseek64(f, 0, SEEK_SET); + if(is_exr_file(f)) { texDetails.format = rgba32_float; - FileIO::fseek64(f, 0, SEEK_END); - uint64_t size = FileIO::ftell64(f); FileIO::fseek64(f, 0, SEEK_SET); std::vector buffer; - buffer.resize((size_t)size); + buffer.resize((size_t)fileSize); FileIO::fread(buffer.data(), 1, buffer.size(), f); @@ -747,6 +750,10 @@ void ImageViewer::RefreshFile() if(m_TextureID == ResourceId()) RDCERR("Couldn't create proxy texture for image file"); + m_TexDetails = texDetails; + m_TexDetails.resourceId = m_TextureID; + m_TexDetails.byteSize = fileSize; + if(!dds) { m_Proxy->SetProxyTextureData(m_TextureID, Subresource(), data, datasize);