mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-03-14 04:29:15 +01:00
[dxbc] Do not export PointSize on maintenance5-enabled drivers
... or on broken drivers that just explode for no reason at all.
This commit is contained in:
parent
4543c76e39
commit
2856474935
@ -6899,15 +6899,15 @@ namespace dxvk {
|
||||
|
||||
|
||||
void DxbcCompiler::emitPointSizeStore() {
|
||||
if (!m_pointSizeOut) {
|
||||
m_pointSizeOut = emitNewBuiltinVariable(DxbcRegisterInfo {
|
||||
if (m_moduleInfo.options.needsPointSizeExport) {
|
||||
uint32_t pointSizeId = emitNewBuiltinVariable(DxbcRegisterInfo {
|
||||
{ DxbcScalarType::Float32, 1, 0 },
|
||||
spv::StorageClassOutput },
|
||||
spv::BuiltInPointSize,
|
||||
"point_size");
|
||||
}
|
||||
|
||||
m_module.opStore(m_pointSizeOut, m_module.constf32(1.0f));
|
||||
m_module.opStore(pointSizeId, m_module.constf32(1.0f));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -514,8 +514,6 @@ 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.
|
||||
|
@ -41,6 +41,11 @@ namespace dxvk {
|
||||
enableSampleShadingInterlock = device->features().extFragmentShaderInterlock.fragmentShaderSampleInterlock;
|
||||
supportsTightIcbPacking = device->features().vk12.uniformBufferStandardLayout;
|
||||
|
||||
// Qcom just breaks for no reason if we export point size,
|
||||
// even in an environment where doing so is required.
|
||||
needsPointSizeExport = !device->features().khrMaintenance5.maintenance5
|
||||
&& !device->adapter()->matchesDriver(VK_DRIVER_ID_QUALCOMM_PROPRIETARY);
|
||||
|
||||
// Figure out float control flags to match D3D11 rules
|
||||
if (options.floatControls) {
|
||||
if (devInfo.vk12.shaderSignedZeroInfNanPreserveFloat32)
|
||||
|
@ -57,6 +57,9 @@ namespace dxvk {
|
||||
/// constant buffers if possible
|
||||
bool supportsTightIcbPacking = false;
|
||||
|
||||
/// Whether exporting point size is required
|
||||
bool needsPointSizeExport = true;
|
||||
|
||||
/// Float control flags
|
||||
DxbcFloatControlFlags floatControl;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user