diff --git a/src/dxbc/dxbc_compiler.cpp b/src/dxbc/dxbc_compiler.cpp index b0e59edea..5d31f9431 100644 --- a/src/dxbc/dxbc_compiler.cpp +++ b/src/dxbc/dxbc_compiler.cpp @@ -6634,6 +6634,19 @@ namespace dxvk { } + void DxbcCompiler::emitPointSizeStore() { + if (!m_pointSizeOut) { + m_pointSizeOut = emitNewBuiltinVariable(DxbcRegisterInfo { + { DxbcScalarType::Float32, 1, 0 }, + spv::StorageClassOutput }, + spv::BuiltInPointSize, + "point_size"); + } + + m_module.opStore(m_pointSizeOut, m_module.constf32(1.0f)); + } + + void DxbcCompiler::emitInit() { // Set up common capabilities for all shaders m_module.enableCapability(spv::CapabilityShader); @@ -6873,6 +6886,7 @@ namespace dxvk { this->emitOutputSetup(); this->emitClipCullStore(DxbcSystemValue::ClipDistance, m_clipDistances); this->emitClipCullStore(DxbcSystemValue::CullDistance, m_cullDistances); + this->emitPointSizeStore(); this->emitFunctionEnd(); } diff --git a/src/dxbc/dxbc_compiler.h b/src/dxbc/dxbc_compiler.h index 961219247..03ddf7ad6 100644 --- a/src/dxbc/dxbc_compiler.h +++ b/src/dxbc/dxbc_compiler.h @@ -484,7 +484,9 @@ namespace dxvk { uint32_t m_primitiveIdIn = 0; uint32_t m_primitiveIdOut = 0; - + + uint32_t m_pointSizeOut = 0; + ////////////////////////////////////////////////// // Immediate constant buffer. If defined, this is // an array of four-component uint32 vectors. @@ -1077,7 +1079,9 @@ namespace dxvk { void emitClipCullLoad( DxbcSystemValue sv, uint32_t srcArray); - + + void emitPointSizeStore(); + ////////////////////////////////////// // Common function definition methods void emitInit();