mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-03-15 07:29:17 +01:00
[spirv] Add non-uniform group instructions
This commit is contained in:
parent
c8e44085c5
commit
59d0ad4413
@ -109,7 +109,7 @@ namespace dxvk {
|
|||||||
|
|
||||||
void SpirvCodeBuffer::putHeader(uint32_t boundIds) {
|
void SpirvCodeBuffer::putHeader(uint32_t boundIds) {
|
||||||
this->putWord(spv::MagicNumber);
|
this->putWord(spv::MagicNumber);
|
||||||
this->putWord(0x00010000); // v1.0
|
this->putWord(0x00010300); // v1.3
|
||||||
this->putWord(0); // Generator
|
this->putWord(0); // Generator
|
||||||
this->putWord(boundIds);
|
this->putWord(boundIds);
|
||||||
this->putWord(0); // Schema
|
this->putWord(0); // Schema
|
||||||
|
@ -2872,6 +2872,28 @@ namespace dxvk {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
uint32_t SpirvModule::opGroupNonUniformLogicalAnd(
|
||||||
|
uint32_t resultType,
|
||||||
|
uint32_t execution,
|
||||||
|
uint32_t operation,
|
||||||
|
uint32_t value,
|
||||||
|
uint32_t clusterSize) {
|
||||||
|
uint32_t resultId = this->allocateId();
|
||||||
|
|
||||||
|
m_code.putIns(spv::OpGroupNonUniformLogicalAnd,
|
||||||
|
6 + (clusterSize ? 1 : 0));
|
||||||
|
m_code.putWord(resultType);
|
||||||
|
m_code.putWord(resultId);
|
||||||
|
m_code.putWord(execution);
|
||||||
|
m_code.putWord(operation);
|
||||||
|
m_code.putWord(value);
|
||||||
|
|
||||||
|
if (clusterSize)
|
||||||
|
m_code.putWord(clusterSize);
|
||||||
|
return resultId;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void SpirvModule::opControlBarrier(
|
void SpirvModule::opControlBarrier(
|
||||||
uint32_t execution,
|
uint32_t execution,
|
||||||
uint32_t memory,
|
uint32_t memory,
|
||||||
|
@ -992,6 +992,13 @@ namespace dxvk {
|
|||||||
uint32_t reference,
|
uint32_t reference,
|
||||||
const SpirvImageOperands& operands);
|
const SpirvImageOperands& operands);
|
||||||
|
|
||||||
|
uint32_t opGroupNonUniformLogicalAnd(
|
||||||
|
uint32_t resultType,
|
||||||
|
uint32_t execution,
|
||||||
|
uint32_t operation,
|
||||||
|
uint32_t value,
|
||||||
|
uint32_t clusterSize);
|
||||||
|
|
||||||
void opControlBarrier(
|
void opControlBarrier(
|
||||||
uint32_t execution,
|
uint32_t execution,
|
||||||
uint32_t memory,
|
uint32_t memory,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user