mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-01-19 05:52:11 +01:00
[spirv] Track currently active block ID
This commit is contained in:
parent
a178c57aea
commit
779f8b39cd
@ -2986,6 +2986,8 @@ namespace dxvk {
|
|||||||
void SpirvModule::opLabel(uint32_t labelId) {
|
void SpirvModule::opLabel(uint32_t labelId) {
|
||||||
m_code.putIns (spv::OpLabel, 2);
|
m_code.putIns (spv::OpLabel, 2);
|
||||||
m_code.putWord(labelId);
|
m_code.putWord(labelId);
|
||||||
|
|
||||||
|
m_blockId = labelId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -3533,6 +3535,8 @@ namespace dxvk {
|
|||||||
uint32_t label) {
|
uint32_t label) {
|
||||||
m_code.putIns (spv::OpBranch, 2);
|
m_code.putIns (spv::OpBranch, 2);
|
||||||
m_code.putWord(label);
|
m_code.putWord(label);
|
||||||
|
|
||||||
|
m_blockId = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -3544,6 +3548,8 @@ namespace dxvk {
|
|||||||
m_code.putWord(condition);
|
m_code.putWord(condition);
|
||||||
m_code.putWord(trueLabel);
|
m_code.putWord(trueLabel);
|
||||||
m_code.putWord(falseLabel);
|
m_code.putWord(falseLabel);
|
||||||
|
|
||||||
|
m_blockId = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -3560,6 +3566,8 @@ namespace dxvk {
|
|||||||
m_code.putWord(caseLabels[i].literal);
|
m_code.putWord(caseLabels[i].literal);
|
||||||
m_code.putWord(caseLabels[i].labelId);
|
m_code.putWord(caseLabels[i].labelId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_blockId = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -3584,11 +3592,13 @@ namespace dxvk {
|
|||||||
|
|
||||||
void SpirvModule::opReturn() {
|
void SpirvModule::opReturn() {
|
||||||
m_code.putIns (spv::OpReturn, 1);
|
m_code.putIns (spv::OpReturn, 1);
|
||||||
|
m_blockId = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SpirvModule::opKill() {
|
void SpirvModule::opKill() {
|
||||||
m_code.putIns (spv::OpKill, 1);
|
m_code.putIns (spv::OpKill, 1);
|
||||||
|
m_blockId = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ namespace dxvk {
|
|||||||
~SpirvModule();
|
~SpirvModule();
|
||||||
|
|
||||||
SpirvCodeBuffer compile() const;
|
SpirvCodeBuffer compile() const;
|
||||||
|
|
||||||
size_t getInsertionPtr() {
|
size_t getInsertionPtr() {
|
||||||
return m_code.getInsertionPtr();
|
return m_code.getInsertionPtr();
|
||||||
}
|
}
|
||||||
@ -63,6 +63,10 @@ namespace dxvk {
|
|||||||
m_code.endInsertion();
|
m_code.endInsertion();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t getBlockId() const {
|
||||||
|
return m_blockId;
|
||||||
|
}
|
||||||
|
|
||||||
uint32_t allocateId();
|
uint32_t allocateId();
|
||||||
|
|
||||||
bool hasCapability(
|
bool hasCapability(
|
||||||
@ -1239,6 +1243,7 @@ namespace dxvk {
|
|||||||
uint32_t m_version;
|
uint32_t m_version;
|
||||||
uint32_t m_id = 1;
|
uint32_t m_id = 1;
|
||||||
uint32_t m_instExtGlsl450 = 0;
|
uint32_t m_instExtGlsl450 = 0;
|
||||||
|
uint32_t m_blockId = 0;
|
||||||
|
|
||||||
SpirvCodeBuffer m_capabilities;
|
SpirvCodeBuffer m_capabilities;
|
||||||
SpirvCodeBuffer m_extensions;
|
SpirvCodeBuffer m_extensions;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user