diff --git a/libs/vkd3d/device.c b/libs/vkd3d/device.c index e53765af..873fbbe3 100644 --- a/libs/vkd3d/device.c +++ b/libs/vkd3d/device.c @@ -109,6 +109,7 @@ static const struct vkd3d_optional_extension_info optional_device_extensions[] = VK_EXTENSION(EXT_PIPELINE_CREATION_FEEDBACK, EXT_pipeline_creation_feedback), /* AMD extensions */ VK_EXTENSION(AMD_BUFFER_MARKER, AMD_buffer_marker), + VK_EXTENSION(AMD_DEVICE_COHERENT_MEMORY, AMD_device_coherent_memory), VK_EXTENSION(AMD_SHADER_CORE_PROPERTIES, AMD_shader_core_properties), VK_EXTENSION(AMD_SHADER_CORE_PROPERTIES_2, AMD_shader_core_properties2), /* NV extensions */ @@ -1396,6 +1397,13 @@ static void vkd3d_physical_device_info_init(struct vkd3d_physical_device_info *i info->driver_properties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR; vk_prepend_struct(&info->properties2, &info->driver_properties); + } + + if (vulkan_info->AMD_device_coherent_memory) + { + info->device_coherent_memory_features_amd.sType = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD; + vk_prepend_struct(&info->features2, &info->device_coherent_memory_features_amd); } /* Core in Vulkan 1.1. */ diff --git a/libs/vkd3d/vkd3d_private.h b/libs/vkd3d/vkd3d_private.h index 135751a2..bc1496a4 100644 --- a/libs/vkd3d/vkd3d_private.h +++ b/libs/vkd3d/vkd3d_private.h @@ -156,6 +156,7 @@ struct vkd3d_vulkan_info bool EXT_pipeline_creation_feedback; /* AMD device extensions */ bool AMD_buffer_marker; + bool AMD_device_coherent_memory; bool AMD_shader_core_properties; bool AMD_shader_core_properties2; /* NV device extensions */ @@ -2815,6 +2816,7 @@ struct vkd3d_physical_device_info VkPhysicalDeviceImageViewMinLodFeaturesEXT image_view_min_lod_features; VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE descriptor_set_host_mapping_features; VkPhysicalDeviceDynamicRenderingFeaturesKHR dynamic_rendering_features; + VkPhysicalDeviceCoherentMemoryFeaturesAMD device_coherent_memory_features_amd; VkPhysicalDeviceFeatures2 features2;