From 78e0a7424f2313af5704a2b9dfefeac9899af04a Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 8 Jan 2018 15:56:02 +0000 Subject: [PATCH] Add SPIRVIterator comparisons and SPIRVId stringification --- renderdoc/driver/shaders/spirv/spirv_editor.cpp | 7 +++++++ renderdoc/driver/shaders/spirv/spirv_editor.h | 8 ++++++++ 2 files changed, 15 insertions(+) diff --git a/renderdoc/driver/shaders/spirv/spirv_editor.cpp b/renderdoc/driver/shaders/spirv/spirv_editor.cpp index d22088859..0ee4d593b 100644 --- a/renderdoc/driver/shaders/spirv/spirv_editor.cpp +++ b/renderdoc/driver/shaders/spirv/spirv_editor.cpp @@ -25,6 +25,13 @@ #include "spirv_editor.h" #include #include "common/common.h" +#include "serialise/serialiser.h" + +template <> +std::string DoStringise(const SPIRVId &el) +{ + return StringFormat::Fmt("%u", el.id); +} SPIRVScalar::SPIRVScalar(SPIRVIterator it) { diff --git a/renderdoc/driver/shaders/spirv/spirv_editor.h b/renderdoc/driver/shaders/spirv/spirv_editor.h index 0db1b9b19..5321c52e4 100644 --- a/renderdoc/driver/shaders/spirv/spirv_editor.h +++ b/renderdoc/driver/shaders/spirv/spirv_editor.h @@ -29,6 +29,7 @@ #include #include #include "3rdparty/glslang/SPIRV/spirv.hpp" +#include "api/replay/renderdoc_replay.h" class SPIRVOperation; class SPIRVEditor; @@ -44,6 +45,8 @@ struct SPIRVId uint32_t id; }; +DECLARE_STRINGISE_TYPE(SPIRVId); + // length of 1 word in the top 16-bits, OpNop = 0 in the lower 16-bits #define SPV_NOP (0x00010000) @@ -70,6 +73,11 @@ public: return *this; } + bool operator==(const SPIRVIterator &it) const + { + return words == it.words && offset == it.offset; + } + bool operator!=(const SPIRVIterator &it) const { return !(*this == it); } // utility functions explicit operator bool() const { return words != NULL && offset < words->size(); } uint32_t &operator*() { return cur(); }