mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-03-13 19:29:14 +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) {
|
||||
this->putWord(spv::MagicNumber);
|
||||
this->putWord(0x00010000); // v1.0
|
||||
this->putWord(0x00010300); // v1.3
|
||||
this->putWord(0); // Generator
|
||||
this->putWord(boundIds);
|
||||
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(
|
||||
uint32_t execution,
|
||||
uint32_t memory,
|
||||
|
@ -991,6 +991,13 @@ namespace dxvk {
|
||||
uint32_t coordinates,
|
||||
uint32_t reference,
|
||||
const SpirvImageOperands& operands);
|
||||
|
||||
uint32_t opGroupNonUniformLogicalAnd(
|
||||
uint32_t resultType,
|
||||
uint32_t execution,
|
||||
uint32_t operation,
|
||||
uint32_t value,
|
||||
uint32_t clusterSize);
|
||||
|
||||
void opControlBarrier(
|
||||
uint32_t execution,
|
||||
|
Loading…
x
Reference in New Issue
Block a user