From ab12ffa0da84bd854608a2966cf61082966b8443 Mon Sep 17 00:00:00 2001 From: Robin Kertels Date: Wed, 13 Mar 2024 02:02:44 +0100 Subject: [PATCH] [d3d9] Use max point size of Vulkan device The default render state value has to match what we report in the device caps. Fixes a Wine stateblock test. --- src/d3d9/d3d9_adapter.cpp | 4 +++- src/d3d9/d3d9_device.cpp | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/d3d9/d3d9_adapter.cpp b/src/d3d9/d3d9_adapter.cpp index d1fa49c4..e82d28c6 100644 --- a/src/d3d9/d3d9_adapter.cpp +++ b/src/d3d9/d3d9_adapter.cpp @@ -278,6 +278,8 @@ namespace dxvk { auto& options = m_parent->GetOptions(); + const VkPhysicalDeviceLimits& limits = m_adapter->deviceProperties().limits; + // TODO: Actually care about what the adapter supports here. // ^ For Intel and older cards most likely here. @@ -538,7 +540,7 @@ namespace dxvk { // Max Vertex Blend Matrix Index pCaps->MaxVertexBlendMatrixIndex = 0; // Max Point Size - pCaps->MaxPointSize = 256.0f; + pCaps->MaxPointSize = limits.pointSizeRange[1]; // Max Primitive Count pCaps->MaxPrimitiveCount = 0x00555555; // Max Vertex Index diff --git a/src/d3d9/d3d9_device.cpp b/src/d3d9/d3d9_device.cpp index 583c39e9..3f4c7c12 100644 --- a/src/d3d9/d3d9_device.cpp +++ b/src/d3d9/d3d9_device.cpp @@ -7771,6 +7771,8 @@ namespace dxvk { rs[D3DRS_CLIPPLANEENABLE] = 0; m_flags.set(D3D9DeviceFlag::DirtyClipPlanes); + const VkPhysicalDeviceLimits& limits = m_dxvkDevice->adapter()->deviceProperties().limits; + rs[D3DRS_POINTSPRITEENABLE] = FALSE; rs[D3DRS_POINTSCALEENABLE] = FALSE; rs[D3DRS_POINTSCALE_A] = bit::cast(1.0f); @@ -7778,7 +7780,7 @@ namespace dxvk { rs[D3DRS_POINTSCALE_C] = bit::cast(0.0f); rs[D3DRS_POINTSIZE] = bit::cast(1.0f); rs[D3DRS_POINTSIZE_MIN] = bit::cast(1.0f); - rs[D3DRS_POINTSIZE_MAX] = bit::cast(64.0f); + rs[D3DRS_POINTSIZE_MAX] = bit::cast(limits.pointSizeRange[1]); UpdatePushConstant(); UpdatePushConstant(); UpdatePushConstant();