Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/HansKristian-Work/vkd3d-proton.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans-Kristian Arntzen <post@arntzen-software.no>2021-09-24 17:11:31 +0300
committerHans-Kristian Arntzen <post@arntzen-software.no>2021-09-24 17:48:42 +0300
commita4661c259045197d4f8563e987fba172fa44b03e (patch)
tree54924292f01ede95711f0591bcdb21726e644278
parentd82a211a16af6ab305a40f7229ca0d99942e636c (diff)
vkd3d: Remove OFFSET_BUFFER for SSBO on NV.nv-speedhacks
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
-rw-r--r--libs/vkd3d/state.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/libs/vkd3d/state.c b/libs/vkd3d/state.c
index 268a0e09..393a4f84 100644
--- a/libs/vkd3d/state.c
+++ b/libs/vkd3d/state.c
@@ -4336,7 +4336,7 @@ static bool vkd3d_bindless_supports_mutable_type(struct d3d12_device *device, ui
static uint32_t vkd3d_bindless_state_get_bindless_flags(struct d3d12_device *device)
{
- const struct vkd3d_physical_device_info *device_info = &device->device_info;
+ struct vkd3d_physical_device_info *device_info = &device->device_info;
const struct vkd3d_vulkan_info *vk_info = &device->vk_info;
uint32_t flags = 0;
@@ -4379,7 +4379,13 @@ static uint32_t vkd3d_bindless_state_get_bindless_flags(struct d3d12_device *dev
{
flags |= VKD3D_BINDLESS_RAW_SSBO;
- if (device_info->properties2.properties.limits.minStorageBufferOffsetAlignment > 4)
+ if (device_info->properties2.properties.vendorID == VKD3D_VENDOR_ID_NVIDIA)
+ {
+ /* NVIDIA reports 16 bytes, but that's somewhat misleading. It actually depends on how you access memory in
+ * the shader w.r.t vectorized loads. And we never use those for SSBOs, so ... */
+ device_info->properties2.properties.limits.minStorageBufferOffsetAlignment = 4;
+ }
+ else if (device_info->properties2.properties.limits.minStorageBufferOffsetAlignment > 4)
flags |= VKD3D_SSBO_OFFSET_BUFFER;
}