From 48fa6034ce4c769819187cbd6aea863adfe86dc7 Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 12 Jul 2021 17:51:48 +0100 Subject: [PATCH] Re-hash container after modifying program --- renderdoc/driver/shaders/dxbc/dxbc_container.cpp | 6 +++--- renderdoc/driver/shaders/dxbc/dxbc_container.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/renderdoc/driver/shaders/dxbc/dxbc_container.cpp b/renderdoc/driver/shaders/dxbc/dxbc_container.cpp index 0ed016955..caa92d702 100644 --- a/renderdoc/driver/shaders/dxbc/dxbc_container.cpp +++ b/renderdoc/driver/shaders/dxbc/dxbc_container.cpp @@ -652,7 +652,7 @@ void DXBCContainer::FillStateInstructionInfo(ShaderDebugState &state) const } } -void DXBCContainer::ReplaceProgram(bytebuf &ByteCode, DXBCBytecode::Program *program) +void DXBCContainer::ReplaceDXBCBytecode(bytebuf &ByteCode, const rdcarray &replacement) { FileHeader *header = (FileHeader *)ByteCode.data(); @@ -665,8 +665,6 @@ void DXBCContainer::ReplaceProgram(bytebuf &ByteCode, DXBCBytecode::Program *pro uint32_t *chunkOffsets = (uint32_t *)(ByteCode.data() + sizeof(FileHeader)); // right after the header - rdcarray replacement = program->EncodeProgram(); - for(uint32_t chunkIdx = 0; chunkIdx < header->numChunks; chunkIdx++) { uint32_t offs = chunkOffsets[chunkIdx]; @@ -710,6 +708,8 @@ void DXBCContainer::ReplaceProgram(bytebuf &ByteCode, DXBCBytecode::Program *pro break; } } + + HashContainer(ByteCode.data(), ByteCode.size()); } void DXBCContainer::GetHash(uint32_t hash[4], const void *ByteCode, size_t BytecodeLength) diff --git a/renderdoc/driver/shaders/dxbc/dxbc_container.h b/renderdoc/driver/shaders/dxbc/dxbc_container.h index b47af4a75..f694fea36 100644 --- a/renderdoc/driver/shaders/dxbc/dxbc_container.h +++ b/renderdoc/driver/shaders/dxbc/dxbc_container.h @@ -163,7 +163,7 @@ public: void FillTraceLineInfo(ShaderDebugTrace &trace) const; void FillStateInstructionInfo(ShaderDebugState &state) const; - static void ReplaceProgram(bytebuf &ByteCode, DXBCBytecode::Program *program); + static void ReplaceDXBCBytecode(bytebuf &ByteCode, const rdcarray &replacement); const DXBCBytecode::Program *GetDXBCByteCode() const { return m_DXBCByteCode; } DXBCBytecode::Program *GetDXBCByteCode() { return m_DXBCByteCode; }