From 8252d1ccd50a5b47dc6d64921c000fa402afd433 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Tue, 19 Nov 2019 12:17:11 +0100 Subject: [PATCH] [spirv] Add method to erase data from code buffer --- src/spirv/spirv_code_buffer.cpp | 7 +++++++ src/spirv/spirv_code_buffer.h | 9 +++++++++ 2 files changed, 16 insertions(+) diff --git a/src/spirv/spirv_code_buffer.cpp b/src/spirv/spirv_code_buffer.cpp index 5a936ba86..9c6ae2cc6 100644 --- a/src/spirv/spirv_code_buffer.cpp +++ b/src/spirv/spirv_code_buffer.cpp @@ -132,6 +132,13 @@ namespace dxvk { } + void SpirvCodeBuffer::erase(size_t size) { + m_code.erase( + m_code.begin() + m_ptr, + m_code.begin() + m_ptr + size); + } + + uint32_t SpirvCodeBuffer::strLen(const char* str) { // Null-termination plus padding return (std::strlen(str) + 4) / 4; diff --git a/src/spirv/spirv_code_buffer.h b/src/spirv/spirv_code_buffer.h index ab080ceb2..0daf2891a 100644 --- a/src/spirv/spirv_code_buffer.h +++ b/src/spirv/spirv_code_buffer.h @@ -148,6 +148,15 @@ namespace dxvk { * \param [in] boundIds Number of bound IDs */ void putHeader(uint32_t boundIds); + + /** + * \brief Erases given number of dwords + * + * Removes data from the code buffer, starting + * at the current insertion offset. + * \param [in] size Number of words to remove + */ + void erase(size_t size); /** * \brief Computes length of a literal string