From d322f176954ca9d35d8d6d108660ebd1c5c57f67 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 6 Oct 2016 12:12:53 +0200 Subject: [PATCH] Cache textures in GL GetTexture if they weren't seen before. Refs #386 * When saving the result of a custom shader visualisation, we need to get the texture details of a live-created (ie. not from the capture) texture. --- renderdoc/driver/gl/gl_replay.cpp | 12 ++++++++++++ renderdoc/driver/gl/gl_replay.h | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/renderdoc/driver/gl/gl_replay.cpp b/renderdoc/driver/gl/gl_replay.cpp index 16842c6db..09bb9ed0c 100644 --- a/renderdoc/driver/gl/gl_replay.cpp +++ b/renderdoc/driver/gl/gl_replay.cpp @@ -421,6 +421,18 @@ bool GLReplay::IsRenderOutput(ResourceId id) return false; } +FetchTexture GLReplay::GetTexture(ResourceId id) +{ + auto it = m_CachedTextures.find(id); + if(it == m_CachedTextures.end()) + { + CacheTexture(id); + return m_CachedTextures[id]; + } + + return it->second; +} + void GLReplay::CacheTexture(ResourceId id) { FetchTexture tex; diff --git a/renderdoc/driver/gl/gl_replay.h b/renderdoc/driver/gl/gl_replay.h index 87da35c1e..bdde19039 100644 --- a/renderdoc/driver/gl/gl_replay.h +++ b/renderdoc/driver/gl/gl_replay.h @@ -94,7 +94,7 @@ public: FetchBuffer GetBuffer(ResourceId id); vector GetTextures(); - FetchTexture GetTexture(ResourceId id) { return m_CachedTextures[id]; } + FetchTexture GetTexture(ResourceId id); ShaderReflection *GetShader(ResourceId shader, string entryPoint); vector GetDebugMessages();