From c5b0cd242309bd2f555ddc23e38cd9d93a395f81 Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 29 Jan 2025 17:54:26 +0000 Subject: [PATCH] Add development-only checks of SPIR-V edits for valid IDs --- renderdoc/driver/shaders/spirv/spirv_editor.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/renderdoc/driver/shaders/spirv/spirv_editor.cpp b/renderdoc/driver/shaders/spirv/spirv_editor.cpp index 27709bcd0..cbbb24f2e 100644 --- a/renderdoc/driver/shaders/spirv/spirv_editor.cpp +++ b/renderdoc/driver/shaders/spirv/spirv_editor.cpp @@ -62,6 +62,11 @@ Scalar::Scalar(Iter it) Id OperationList::add(const rdcspv::Operation &op) { push_back(op); + +#if ENABLED(RDOC_DEVEL) + OpDecoder::ForEachID(op.AsIter(), [](rdcspv::Id id, bool) { RDCASSERT(id != rdcspv::Id()); }); +#endif + return OpDecoder(op.AsIter()).result; } @@ -587,6 +592,10 @@ Id Editor::AddOperation(Iter iter, const Operation &op) // update offsets addWords(iter.offs(), op.size()); +#if ENABLED(RDOC_DEVEL) + OpDecoder::ForEachID(iter, [](rdcspv::Id id, bool) { RDCASSERT(id != rdcspv::Id()); }); +#endif + return OpDecoder(iter).result; } @@ -603,6 +612,10 @@ Iter Editor::AddOperations(Iter iter, const OperationList &ops) void Editor::RegisterOp(Iter it) { +#if ENABLED(RDOC_DEVEL) + OpDecoder::ForEachID(it, [](rdcspv::Id id, bool) { RDCASSERT(id != rdcspv::Id()); }); +#endif + Processor::RegisterOp(it); OpDecoder opdata(it);