From: Elizabeth Figura <zfigura@codeweavers.com> --- dlls/win32u/vulkan.c | 4 ++++ dlls/winevulkan/make_vulkan | 2 +- include/wine/vulkan.h | 16 ++++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/dlls/win32u/vulkan.c b/dlls/win32u/vulkan.c index 6feb6a0416e..5303a8e9bd5 100644 --- a/dlls/win32u/vulkan.c +++ b/dlls/win32u/vulkan.c @@ -689,6 +689,10 @@ static VkResult convert_device_create_info( struct vulkan_physical_device *physi device->extensions.has_VK_KHR_external_fence_win32 = 0; device->extensions.has_VK_KHR_external_semaphore_win32 = 0; + /* For Direct3D VA support. */ + device->extensions.has_VK_EXT_external_memory_dma_buf = physical_device->extensions.has_VK_EXT_external_memory_dma_buf; + device->extensions.has_VK_EXT_physical_device_drm = physical_device->extensions.has_VK_EXT_physical_device_drm; + if (physical_device->map_placed_align) { VkPhysicalDeviceMapMemoryPlacedFeaturesEXT *map_placed_features; diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan index f8375c96e32..05af73601da 100755 --- a/dlls/winevulkan/make_vulkan +++ b/dlls/winevulkan/make_vulkan @@ -103,7 +103,6 @@ UNSUPPORTED_EXTENSIONS = { # Extensions for other platforms "VK_EXT_metal_objects", - "VK_EXT_physical_device_drm", "VK_GOOGLE_surfaceless_query", "VK_SEC_amigo_profiling", # Angle specific. @@ -129,6 +128,7 @@ UNEXPOSED_EXTENSIONS = { "VK_EXT_external_memory_dma_buf", "VK_EXT_image_drm_format_modifier", "VK_EXT_metal_surface", + "VK_EXT_physical_device_drm", "VK_KHR_external_fence_fd", "VK_KHR_external_memory_fd", "VK_EXT_external_memory_metal", diff --git a/include/wine/vulkan.h b/include/wine/vulkan.h index 9b00aeeec04..a53df3e8230 100644 --- a/include/wine/vulkan.h +++ b/include/wine/vulkan.h @@ -479,6 +479,8 @@ typedef void* VkRemoteAddressNV; #define VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_SPEC_VERSION 1 #define VK_EXT_PCI_BUS_INFO_EXTENSION_NAME "VK_EXT_pci_bus_info" #define VK_EXT_PCI_BUS_INFO_SPEC_VERSION 2 +#define VK_EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME "VK_EXT_physical_device_drm" +#define VK_EXT_PHYSICAL_DEVICE_DRM_SPEC_VERSION 1 #define VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME "VK_EXT_pipeline_creation_cache_control" #define VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION 3 #define VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME "VK_EXT_pipeline_creation_feedback" @@ -6544,6 +6546,7 @@ typedef enum VkStructureType VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT = 1000352000, VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT = 1000352001, VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT = 1000352002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT = 1000353000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT = 1000354000, VK_STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT = 1000354001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT = 1000355000, @@ -15630,6 +15633,18 @@ typedef struct VkPhysicalDeviceDriverProperties } VkPhysicalDeviceDriverProperties; typedef VkPhysicalDeviceDriverProperties VkPhysicalDeviceDriverPropertiesKHR; +typedef struct VkPhysicalDeviceDrmPropertiesEXT +{ + VkStructureType sType; + void *pNext; + VkBool32 hasPrimary; + VkBool32 hasRender; + int64_t primaryMajor; + int64_t primaryMinor; + int64_t renderMajor; + int64_t renderMinor; +} VkPhysicalDeviceDrmPropertiesEXT; + typedef struct VkPhysicalDeviceDynamicRenderingFeatures { VkStructureType sType; @@ -23752,6 +23767,7 @@ VkResult VKAPI_CALL vkWriteSamplerDescriptorsEXT(VkDevice device, uint32_t sampl USE_VK_EXT(VK_EXT_external_memory_metal) \ USE_VK_EXT(VK_EXT_image_drm_format_modifier) \ USE_VK_EXT(VK_EXT_map_memory_placed) \ + USE_VK_EXT(VK_EXT_physical_device_drm) \ USE_VK_EXT(VK_KHR_external_fence_fd) \ USE_VK_EXT(VK_KHR_external_memory_fd) \ USE_VK_EXT(VK_KHR_external_semaphore_fd) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/11535