1
0
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:
Philip Rebohle 2018-11-07 11:57:04 +01:00
parent c8e44085c5
commit 59d0ad4413
No known key found for this signature in database
GPG Key ID: C8CC613427A31C99
3 changed files with 30 additions and 1 deletions

View File

@ -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

View File

@ -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,

View File

@ -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,