Return SPIRVId from Add*() functions for convenience's sake

This commit is contained in:
baldurk
2018-01-08 16:59:37 +00:00
parent 8fc56df0e0
commit 30bf276ae8
2 changed files with 17 additions and 13 deletions
@@ -255,25 +255,31 @@ void SPIRVEditor::AddDecoration(const SPIRVOperation &op)
addWords(decorationSection.endOffset, op.size());
}
void SPIRVEditor::AddType(const SPIRVOperation &op)
SPIRVId SPIRVEditor::AddType(const SPIRVOperation &op)
{
idOffsets[op[1]] = typeVarSection.endOffset;
SPIRVId id = op[1];
idOffsets[id] = typeVarSection.endOffset;
spirv.insert(spirv.begin() + typeVarSection.endOffset, op.begin(), op.end());
addWords(typeVarSection.endOffset, op.size());
return id;
}
void SPIRVEditor::AddVariable(const SPIRVOperation &op)
SPIRVId SPIRVEditor::AddVariable(const SPIRVOperation &op)
{
idOffsets[op[2]] = typeVarSection.endOffset;
SPIRVId id = op[2];
idOffsets[id] = typeVarSection.endOffset;
spirv.insert(spirv.begin() + typeVarSection.endOffset, op.begin(), op.end());
addWords(typeVarSection.endOffset, op.size());
return id;
}
void SPIRVEditor::AddConstant(const SPIRVOperation &op)
SPIRVId SPIRVEditor::AddConstant(const SPIRVOperation &op)
{
idOffsets[op[2]] = typeVarSection.endOffset;
SPIRVId id = op[2];
idOffsets[id] = typeVarSection.endOffset;
spirv.insert(spirv.begin() + typeVarSection.endOffset, op.begin(), op.end());
addWords(typeVarSection.endOffset, op.size());
return id;
}
void SPIRVEditor::AddFunction(const SPIRVOperation *ops, size_t count)
@@ -319,9 +319,9 @@ public:
void SetName(uint32_t id, const char *name);
void AddDecoration(const SPIRVOperation &op);
void AddType(const SPIRVOperation &op);
void AddVariable(const SPIRVOperation &op);
void AddConstant(const SPIRVOperation &op);
SPIRVId AddType(const SPIRVOperation &op);
SPIRVId AddVariable(const SPIRVOperation &op);
SPIRVId AddConstant(const SPIRVOperation &op);
void AddFunction(const SPIRVOperation *ops, size_t count);
SPIRVIterator GetID(SPIRVId id);
@@ -351,15 +351,13 @@ public:
SPIRVId AddConstantImmediate(T t)
{
SPIRVId typeId = DeclareType(scalar<T>());
SPIRVId retId = MakeId();
std::vector<uint32_t> words = {typeId, retId};
std::vector<uint32_t> words = {typeId, MakeId()};
words.insert(words.end(), sizeof(T) / 4, 0U);
memcpy(&words[2], &t, sizeof(T));
AddConstant(SPIRVOperation(spv::OpConstant, words));
return retId;
return AddConstant(SPIRVOperation(spv::OpConstant, words));
}
// simple properties that are public.