mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-06 01:50:38 +00:00
Add functions for adding declared constants
This commit is contained in:
@@ -269,6 +269,13 @@ void SPIRVEditor::AddVariable(const SPIRVOperation &op)
|
||||
addWords(typeVarSection.endOffset, op.size());
|
||||
}
|
||||
|
||||
void SPIRVEditor::AddConstant(const SPIRVOperation &op)
|
||||
{
|
||||
idOffsets[op[2]] = typeVarSection.endOffset;
|
||||
spirv.insert(spirv.begin() + typeVarSection.endOffset, op.begin(), op.end());
|
||||
addWords(typeVarSection.endOffset, op.size());
|
||||
}
|
||||
|
||||
void SPIRVEditor::AddFunction(const SPIRVOperation *ops, size_t count)
|
||||
{
|
||||
idOffsets[ops[0][2]] = spirv.size();
|
||||
|
||||
@@ -319,6 +319,7 @@ public:
|
||||
void AddDecoration(const SPIRVOperation &op);
|
||||
void AddType(const SPIRVOperation &op);
|
||||
void AddVariable(const SPIRVOperation &op);
|
||||
void AddConstant(const SPIRVOperation &op);
|
||||
void AddFunction(const SPIRVOperation *ops, size_t count);
|
||||
|
||||
SPIRVIterator GetID(SPIRVId id);
|
||||
@@ -340,6 +341,22 @@ public:
|
||||
|
||||
SPIRVId DeclareStructType(std::vector<uint32_t> members);
|
||||
|
||||
// helper for AddConstant
|
||||
template <typename T>
|
||||
SPIRVId AddConstantImmediate(T t)
|
||||
{
|
||||
SPIRVId typeId = DeclareType(scalar<T>());
|
||||
SPIRVId retId = MakeId();
|
||||
std::vector<uint32_t> words = {typeId, retId};
|
||||
|
||||
words.insert(words.end(), sizeof(T) / 4, 0U);
|
||||
|
||||
memcpy(&words[2], &t, sizeof(T));
|
||||
|
||||
AddConstant(SPIRVOperation(spv::OpConstant, words));
|
||||
return retId;
|
||||
}
|
||||
|
||||
// simple properties that are public.
|
||||
struct
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user