diff --git a/src/spirv/spirv_module.cpp b/src/spirv/spirv_module.cpp index bd69bde8..0f63facb 100644 --- a/src/spirv/spirv_module.cpp +++ b/src/spirv/spirv_module.cpp @@ -438,6 +438,34 @@ namespace dxvk { m_annotations.putInt32(specId); } + + void SpirvModule::decorateXfb( + uint32_t object, + uint32_t streamId, + uint32_t bufferId, + uint32_t offset, + uint32_t stride) { + m_annotations.putIns (spv::OpDecorate, 4); + m_annotations.putWord (object); + m_annotations.putWord (spv::DecorationStream); + m_annotations.putInt32(streamId); + + m_annotations.putIns (spv::OpDecorate, 4); + m_annotations.putWord (object); + m_annotations.putWord (spv::DecorationXfbBuffer); + m_annotations.putInt32(bufferId); + + m_annotations.putIns (spv::OpDecorate, 4); + m_annotations.putWord (object); + m_annotations.putWord (spv::DecorationXfbStride); + m_annotations.putInt32(stride); + + m_annotations.putIns (spv::OpDecorate, 4); + m_annotations.putWord (object); + m_annotations.putWord (spv::DecorationOffset); + m_annotations.putInt32(offset); + } + void SpirvModule::memberDecorateBuiltIn( uint32_t structId, diff --git a/src/spirv/spirv_module.h b/src/spirv/spirv_module.h index 9886fd3e..36f0fdd2 100644 --- a/src/spirv/spirv_module.h +++ b/src/spirv/spirv_module.h @@ -197,6 +197,13 @@ namespace dxvk { uint32_t object, uint32_t specId); + void decorateXfb( + uint32_t object, + uint32_t streamId, + uint32_t bufferId, + uint32_t offset, + uint32_t stride); + void memberDecorateBuiltIn( uint32_t structId, uint32_t memberId,