[PATCH 1/5] winevulkan/winex11: Add VK_KHR_display stub implementation.
Roderick Colenbrander
thunderbird2k at gmail.com
Tue Mar 27 18:04:22 CDT 2018
On Tue, Mar 27, 2018 at 3:35 PM, Józef Kucia <joseph.kucia at gmail.com> wrote:
> What is the main reason for this patch? I expect it wasn't written to
> implement VK_KHR_display extensions. If it was written just to make
> forwarding in vulkan-1.dll easier I think we should drop it. I don't
> like adding a lot of stubs to Wine graphics drivers which aren't going
> implemented any time soon. Also, advertising VK_KHR_display as
> supported doesn't seem right when we have just stubs.
>
> I think there are multiple ways to avoid this patch. We can generate
> stub entries in vulkan-1.spec for not implemented functions, or
> generate stub functions in vulkan_thunks.c for not implemented
> functions (we have stub() method in the make_vulkan script).
Correct, the main reason was to create a somewhat complete vulkan-1 as
the native version provides the VK_KHR_display entry points. I can
leave them as just stubs in .spec, but doing anything more requires
all the data types for vulkan_thunks.c to compile.
Ultimately I felt it was good to have at least proper thunks in
vulkan-1, but currently data types get pulled in through required
functionality in winevulkan. I can try changing hacking the thunk
generation code a bit and fall back to a regular stub.
We could drop the patch for now and I can think of another way.
> On Tue, Mar 27, 2018 at 9:00 AM, Roderick Colenbrander
> <thunderbird2k at gmail.com> wrote:
>> Signed-off-by: Roderick Colenbrander <thunderbird2k at gmail.com>
>> ---
>> dlls/winevulkan/make_vulkan | 14 +-
>> dlls/winevulkan/vulkan.c | 117 +++++
>> dlls/winevulkan/vulkan_thunks.c | 59 +++
>> dlls/winevulkan/vulkan_thunks.h | 70 +++
>> dlls/winex11.drv/vulkan.c | 77 +++-
>> include/wine/vulkan.h | 952 ++++++++++++++++++++++------------------
>> include/wine/vulkan_driver.h | 9 +-
>> 7 files changed, 861 insertions(+), 437 deletions(-)
>>
>> diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan
>> index 2858309c06..bb02b2aa92 100755
>> --- a/dlls/winevulkan/make_vulkan
>> +++ b/dlls/winevulkan/make_vulkan
>> @@ -80,6 +80,7 @@ EXT_BLOCK_SIZE = 1000
>> # and need custom wrappers due to e.g. win32 / X11 specific code.
>> # List of supported instance extensions.
>> SUPPORTED_INSTANCE_EXTENSIONS = [
>> + "VK_KHR_display",
>> "VK_KHR_get_physical_device_properties2",
>> "VK_KHR_surface",
>> "VK_KHR_win32_surface",
>> @@ -95,7 +96,7 @@ BLACKLISTED_EXTENSIONS = [
>> "VK_EXT_display_control", # Requires VK_EXT_display_surface_counter
>> "VK_EXT_hdr_metadata", # Needs WSI work.
>> "VK_GOOGLE_display_timing",
>> - "VK_KHR_display", # Needs WSI work.
>> + "VK_KHR_display_swapchain",
>> "VK_KHR_external_fence_fd",
>> "VK_KHR_external_fence_win32",
>> "VK_KHR_external_memory",
>> @@ -109,7 +110,7 @@ BLACKLISTED_EXTENSIONS = [
>> # Functions part of our winevulkan graphics driver interface.
>> # DRIVER_VERSION should be bumped on any change to driver interface
>> # in FUNCTION_OVERRIDES
>> -DRIVER_VERSION = 3
>> +DRIVER_VERSION = 4
>>
>> # Table of functions for which we have a special implementation.
>> # This are regular device / instance functions for which we need
>> @@ -140,6 +141,15 @@ FUNCTION_OVERRIDES = {
>> "vkGetDeviceQueue" : {"dispatch": True, "driver" : False, "thunk" : False},
>> "vkQueueSubmit" : {"dispatch": True, "driver" : False, "thunk" : False},
>>
>> + # VK_KHR_display
>> + "vkCreateDisplayModeKHR" : {"dispatch" : True, "driver" : True, "thunk" : True},
>> + "vkCreateDisplayPlaneSurfaceKHR" : {"dispatch" : True, "driver" : True, "thunk" : True},
>> + "vkGetDisplayModePropertiesKHR" : {"dispatch" : True, "driver" : True, "thunk" : False},
>> + "vkGetDisplayPlaneCapabilitiesKHR" : {"dispatch" : True, "driver" : True, "thunk" : True},
>> + "vkGetDisplayPlaneSupportedDisplaysKHR" : {"dispatch" : True, "driver" : True, "thunk" : True},
>> + "vkGetPhysicalDeviceDisplayPropertiesKHR" : {"dispatch" : True, "driver" : True, "thunk" : False},
>> + "vkGetPhysicalDeviceDisplayPlanePropertiesKHR" : {"dispatch" : True, "driver" : True, "thunk" : False},
>> +
>> # VK_KHR_surface
>> "vkDestroySurfaceKHR" : {"dispatch" : True, "driver" : True, "thunk" : True},
>> "vkGetPhysicalDeviceSurfaceSupportKHR" : {"dispatch" : True, "driver" : True, "thunk" : True},
>> diff --git a/dlls/winevulkan/vulkan.c b/dlls/winevulkan/vulkan.c
>> index ad1a35c934..809fd7203c 100644
>> --- a/dlls/winevulkan/vulkan.c
>> +++ b/dlls/winevulkan/vulkan.c
>> @@ -861,6 +861,123 @@ void WINAPI wine_vkGetDeviceQueue(VkDevice device, uint32_t family_index,
>> *queue = &device->queues[family_index][queue_index];
>> }
>>
>> +VkResult WINAPI wine_vkGetDisplayModePropertiesKHR(VkPhysicalDevice phys_dev,
>> + VkDisplayKHR display, uint32_t *count, VkDisplayModePropertiesKHR *properties)
>> +{
>> +#if defined(USE_STRUCT_CONVERSION)
>> + VkResult result;
>> + VkDisplayModePropertiesKHR_host *properties_host = NULL;
>> + TRACE("%p, 0x%s, %p, %p\n", phys_dev, wine_dbgstr_longlong(display), count, properties);
>> +
>> + if (properties)
>> + {
>> + properties_host = heap_calloc(*count, sizeof(*properties_host));
>> + if (!properties_host)
>> + return VK_ERROR_OUT_OF_HOST_MEMORY;
>> + }
>> +
>> + result = phys_dev->instance->funcs.p_vkGetDisplayModePropertiesKHR(phys_dev->phys_dev,
>> + display, count, properties_host);
>> +
>> + if (properties_host && (result == VK_SUCCESS || result == VK_INCOMPLETE))
>> + {
>> + unsigned int i;
>> + for (i = 0; i < *count; i++)
>> + {
>> + properties[i].displayMode = properties_host[i].displayMode;
>> + properties[i].parameters = properties_host[i].parameters;
>> + }
>> + }
>> +
>> + heap_free(properties_host);
>> + return result;
>> +#else
>> + TRACE("%p, 0x%s, %p, %p\n", phys_dev, wine_dbgstr_longlong(display), count, properties);
>> + return phys_dev->instance->funcs.p_vkGetDisplayModePropertiesKHR(phys_dev->phys_dev,
>> + display, count, properties);
>> +#endif
>> +}
>> +
>> +VkResult WINAPI wine_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(VkPhysicalDevice phys_dev,
>> + uint32_t *count, VkDisplayPlanePropertiesKHR *properties)
>> +{
>> +#if defined(USE_STRUCT_CONVERSION)
>> + VkResult result;
>> + VkDisplayPlanePropertiesKHR_host *properties_host = NULL;
>> + TRACE("%p, %p, %p\n", phys_dev, count, properties);
>> +
>> + if (properties)
>> + {
>> + properties_host = heap_calloc(*count, sizeof(*properties_host));
>> + if (!properties_host)
>> + return VK_ERROR_OUT_OF_HOST_MEMORY;
>> + }
>> +
>> + result = phys_dev->instance->funcs.p_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(phys_dev->phys_dev,
>> + count, properties_host);
>> +
>> + if (properties_host && (result == VK_SUCCESS || result == VK_INCOMPLETE))
>> + {
>> + unsigned int i;
>> + for (i = 0; i < *count; i++)
>> + {
>> + properties[i].currentDisplay = properties_host[i].currentDisplay;
>> + properties[i].currentStackIndex = properties_host[i].currentStackIndex;
>> + }
>> + }
>> +
>> + heap_free(properties_host);
>> + return result;
>> +#else
>> + TRACE("%p, %p, %p\n", phys_dev, count, properties);
>> + return phys_dev->instance->funcs.p_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(phys_dev->phys_dev,
>> + count, properties);
>> +#endif
>> +}
>
> What is the main reason that prevents us from autogenerating thunks
> for vkGetDisplayModePropertiesKHR() and
> vkGetPhysicalDeviceDisplayPlanePropertiesKHR()?
The main issue is automatically detecting functions with 'count' and
multi-pass behavior. So far I can just blindly parse parameters and
check if any conversion is needed. These nasty ones, need memory
allocation.
I could maybe store a list of these nasty functions.
>> +
>> +VkResult WINAPI wine_vkGetPhysicalDeviceDisplayPropertiesKHR(VkPhysicalDevice phys_dev,
>> + uint32_t *count, VkDisplayPropertiesKHR *properties)
>> +{
>> +#if defined(USE_STRUCT_CONVERSION)
>> + VkResult result;
>> + VkDisplayPropertiesKHR_host *properties_host = NULL;
>> + TRACE("%p, %p, %p\n", phys_dev, count, properties);
>> +
>> + if (properties)
>> + {
>> + properties_host = heap_calloc(*count, sizeof(*properties_host));
>> + if (!properties_host)
>> + return VK_ERROR_OUT_OF_HOST_MEMORY;
>> + }
>> +
>> + result = phys_dev->instance->funcs.p_vkGetPhysicalDeviceDisplayPropertiesKHR(phys_dev->phys_dev,
>> + count, properties_host);
>> +
>> + if (properties_host && (result == VK_SUCCESS || result == VK_INCOMPLETE))
>> + {
>> + unsigned int i;
>> + for (i = 0; i < *count; i++)
>> + {
>> + properties[i].display = properties_host[i].display;
>> + properties[i].displayName = properties_host[i].displayName;
>> + properties[i].physicalDimensions = properties_host[i].physicalDimensions;
>> + properties[i].physicalResolution = properties_host[i].physicalResolution;
>> + properties[i].supportedTransforms = properties_host[i].supportedTransforms;
>> + properties[i].planeReorderPossible = properties_host[i].planeReorderPossible;
>> + properties[i].persistentContent = properties_host[i].persistentContent;
>> + }
>> + }
>> +
>> + heap_free(properties_host);
>> + return result;
>> +#else
>> + TRACE("%p, %p, %p\n", phys_dev, count, properties);
>> + return phys_dev->instance->funcs.p_vkGetPhysicalDeviceDisplayPropertiesKHR(phys_dev->phys_dev,
>> + count, properties);
>> +#endif
>> +}
>> +
>> +
>> static PFN_vkVoidFunction WINAPI wine_vkGetInstanceProcAddr(VkInstance instance, const char *name)
>> {
>> void *func;
>> diff --git a/dlls/winevulkan/vulkan_thunks.c b/dlls/winevulkan/vulkan_thunks.c
>> index 2f2b8c196f..40e7f76c8f 100644
>> --- a/dlls/winevulkan/vulkan_thunks.c
>> +++ b/dlls/winevulkan/vulkan_thunks.c
>> @@ -381,6 +381,22 @@ static inline void convert_VkDescriptorUpdateTemplateCreateInfoKHR_win_to_host(c
>> out->set = in->set;
>> }
>>
>> +static inline void convert_VkDisplaySurfaceCreateInfoKHR_win_to_host(const VkDisplaySurfaceCreateInfoKHR *in, VkDisplaySurfaceCreateInfoKHR_host *out)
>> +{
>> + if (!in) return;
>> +
>> + out->sType = in->sType;
>> + out->pNext = in->pNext;
>> + out->flags = in->flags;
>> + out->displayMode = in->displayMode;
>> + out->planeIndex = in->planeIndex;
>> + out->planeStackIndex = in->planeStackIndex;
>> + out->transform = in->transform;
>> + out->globalAlpha = in->globalAlpha;
>> + out->alphaMode = in->alphaMode;
>> + out->imageExtent = in->imageExtent;
>> +}
>> +
>> static inline void convert_VkFramebufferCreateInfo_win_to_host(const VkFramebufferCreateInfo *in, VkFramebufferCreateInfo_host *out)
>> {
>> if (!in) return;
>> @@ -1518,6 +1534,29 @@ static VkResult WINAPI wine_vkCreateDescriptorUpdateTemplateKHR(VkDevice device,
>> #endif
>> }
>>
>> +static VkResult WINAPI wine_vkCreateDisplayModeKHR(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkDisplayModeKHR *pMode)
>> +{
>> + TRACE("%p, 0x%s, %p, %p, %p\n", physicalDevice, wine_dbgstr_longlong(display), pCreateInfo, pAllocator, pMode);
>> + return physicalDevice->instance->funcs.p_vkCreateDisplayModeKHR(physicalDevice->phys_dev, display, pCreateInfo, NULL, pMode);
>> +}
>> +
>> +static VkResult WINAPI wine_vkCreateDisplayPlaneSurfaceKHR(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface)
>> +{
>> +#if defined(USE_STRUCT_CONVERSION)
>> + VkResult result;
>> + VkDisplaySurfaceCreateInfoKHR_host pCreateInfo_host;
>> + TRACE("%p, %p, %p, %p\n", instance, pCreateInfo, pAllocator, pSurface);
>> +
>> + convert_VkDisplaySurfaceCreateInfoKHR_win_to_host(pCreateInfo, &pCreateInfo_host);
>> + result = instance->funcs.p_vkCreateDisplayPlaneSurfaceKHR(instance->instance, &pCreateInfo_host, NULL, pSurface);
>> +
>> + return result;
>> +#else
>> + TRACE("%p, %p, %p, %p\n", instance, pCreateInfo, pAllocator, pSurface);
>> + return instance->funcs.p_vkCreateDisplayPlaneSurfaceKHR(instance->instance, pCreateInfo, NULL, pSurface);
>> +#endif
>> +}
>> +
>> static VkResult WINAPI wine_vkCreateEvent(VkDevice device, const VkEventCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkEvent *pEvent)
>> {
>> TRACE("%p, %p, %p, %p\n", device, pCreateInfo, pAllocator, pEvent);
>> @@ -1848,6 +1887,18 @@ static void WINAPI wine_vkGetDeviceMemoryCommitment(VkDevice device, VkDeviceMem
>> device->funcs.p_vkGetDeviceMemoryCommitment(device->device, memory, pCommittedMemoryInBytes);
>> }
>>
>> +static VkResult WINAPI wine_vkGetDisplayPlaneCapabilitiesKHR(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR *pCapabilities)
>> +{
>> + TRACE("%p, 0x%s, %u, %p\n", physicalDevice, wine_dbgstr_longlong(mode), planeIndex, pCapabilities);
>> + return physicalDevice->instance->funcs.p_vkGetDisplayPlaneCapabilitiesKHR(physicalDevice->phys_dev, mode, planeIndex, pCapabilities);
>> +}
>> +
>> +static VkResult WINAPI wine_vkGetDisplayPlaneSupportedDisplaysKHR(VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t *pDisplayCount, VkDisplayKHR *pDisplays)
>> +{
>> + TRACE("%p, %u, %p, %p\n", physicalDevice, planeIndex, pDisplayCount, pDisplays);
>> + return physicalDevice->instance->funcs.p_vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice->phys_dev, planeIndex, pDisplayCount, pDisplays);
>> +}
>> +
>> static VkResult WINAPI wine_vkGetEventStatus(VkDevice device, VkEvent event)
>> {
>> TRACE("%p, 0x%s\n", device, wine_dbgstr_longlong(event));
>> @@ -2377,12 +2428,19 @@ static const struct vulkan_func vk_device_dispatch_table[] =
>> static const struct vulkan_func vk_instance_dispatch_table[] =
>> {
>> {"vkCreateDevice", &wine_vkCreateDevice},
>> + {"vkCreateDisplayModeKHR", &wine_vkCreateDisplayModeKHR},
>> + {"vkCreateDisplayPlaneSurfaceKHR", &wine_vkCreateDisplayPlaneSurfaceKHR},
>> {"vkCreateWin32SurfaceKHR", &wine_vkCreateWin32SurfaceKHR},
>> {"vkDestroyInstance", &wine_vkDestroyInstance},
>> {"vkDestroySurfaceKHR", &wine_vkDestroySurfaceKHR},
>> {"vkEnumerateDeviceExtensionProperties", &wine_vkEnumerateDeviceExtensionProperties},
>> {"vkEnumerateDeviceLayerProperties", &wine_vkEnumerateDeviceLayerProperties},
>> {"vkEnumeratePhysicalDevices", &wine_vkEnumeratePhysicalDevices},
>> + {"vkGetDisplayModePropertiesKHR", &wine_vkGetDisplayModePropertiesKHR},
>> + {"vkGetDisplayPlaneCapabilitiesKHR", &wine_vkGetDisplayPlaneCapabilitiesKHR},
>> + {"vkGetDisplayPlaneSupportedDisplaysKHR", &wine_vkGetDisplayPlaneSupportedDisplaysKHR},
>> + {"vkGetPhysicalDeviceDisplayPlanePropertiesKHR", &wine_vkGetPhysicalDeviceDisplayPlanePropertiesKHR},
>> + {"vkGetPhysicalDeviceDisplayPropertiesKHR", &wine_vkGetPhysicalDeviceDisplayPropertiesKHR},
>> {"vkGetPhysicalDeviceFeatures", &wine_vkGetPhysicalDeviceFeatures},
>> {"vkGetPhysicalDeviceFeatures2KHR", &wine_vkGetPhysicalDeviceFeatures2KHR},
>> {"vkGetPhysicalDeviceFormatProperties", &wine_vkGetPhysicalDeviceFormatProperties},
>> @@ -2467,6 +2525,7 @@ static const char * const vk_device_extensions[] =
>>
>> static const char * const vk_instance_extensions[] =
>> {
>> + "VK_KHR_display",
>
> We don't support this extension.
I want it to depend on the intersection with winex11.drv, but indeed
in winex11.drv there is no way to 'blacklist' extensions. Something
like that might be needed long-term if different Wine graphics may
have slightly different features.
>> "VK_KHR_get_physical_device_properties2",
>> "VK_KHR_surface",
>> "VK_KHR_win32_surface",
>> diff --git a/dlls/winevulkan/vulkan_thunks.h b/dlls/winevulkan/vulkan_thunks.h
>> index fb9afdf524..00495d72c0 100644
>> --- a/dlls/winevulkan/vulkan_thunks.h
>> +++ b/dlls/winevulkan/vulkan_thunks.h
>> @@ -26,6 +26,9 @@ VkResult WINAPI wine_vkEnumeratePhysicalDevices(VkInstance instance, uint32_t *p
>> void WINAPI wine_vkFreeCommandBuffers(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer *pCommandBuffers) DECLSPEC_HIDDEN;
>> PFN_vkVoidFunction WINAPI wine_vkGetDeviceProcAddr(VkDevice device, const char *pName) DECLSPEC_HIDDEN;
>> void WINAPI wine_vkGetDeviceQueue(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue *pQueue) DECLSPEC_HIDDEN;
>> +VkResult WINAPI wine_vkGetDisplayModePropertiesKHR(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t *pPropertyCount, VkDisplayModePropertiesKHR *pProperties) DECLSPEC_HIDDEN;
>> +VkResult WINAPI wine_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(VkPhysicalDevice physicalDevice, uint32_t *pPropertyCount, VkDisplayPlanePropertiesKHR *pProperties) DECLSPEC_HIDDEN;
>> +VkResult WINAPI wine_vkGetPhysicalDeviceDisplayPropertiesKHR(VkPhysicalDevice physicalDevice, uint32_t *pPropertyCount, VkDisplayPropertiesKHR *pProperties) DECLSPEC_HIDDEN;
>> VkResult WINAPI wine_vkQueueSubmit(VkQueue queue, uint32_t submitCount, const VkSubmitInfo *pSubmits, VkFence fence) DECLSPEC_HIDDEN;
>>
>> typedef struct VkCommandBufferAllocateInfo_host
>> @@ -216,6 +219,20 @@ typedef struct VkDescriptorUpdateTemplateCreateInfoKHR_host
>> uint32_t set;
>> } VkDescriptorUpdateTemplateCreateInfoKHR_host;
>>
>> +typedef struct VkDisplaySurfaceCreateInfoKHR_host
>> +{
>> + VkStructureType sType;
>> + const void *pNext;
>> + VkDisplaySurfaceCreateFlagsKHR flags;
>> + VkDisplayModeKHR displayMode;
>> + uint32_t planeIndex;
>> + uint32_t planeStackIndex;
>> + VkSurfaceTransformFlagBitsKHR transform;
>> + float globalAlpha;
>> + VkDisplayPlaneAlphaFlagBitsKHR alphaMode;
>> + VkExtent2D imageExtent;
>> +} VkDisplaySurfaceCreateInfoKHR_host;
>> +
>> typedef struct VkFramebufferCreateInfo_host
>> {
>> VkStructureType sType;
>> @@ -302,6 +319,12 @@ typedef struct VkMemoryRequirements_host
>> uint32_t memoryTypeBits;
>> } VkMemoryRequirements_host;
>>
>> +typedef struct VkDisplayModePropertiesKHR_host
>> +{
>> + VkDisplayModeKHR displayMode;
>> + VkDisplayModeParametersKHR parameters;
>> +} VkDisplayModePropertiesKHR_host;
>> +
>> typedef struct VkSubresourceLayout_host
>> {
>> VkDeviceSize offset;
>> @@ -311,6 +334,23 @@ typedef struct VkSubresourceLayout_host
>> VkDeviceSize depthPitch;
>> } VkSubresourceLayout_host;
>>
>> +typedef struct VkDisplayPlanePropertiesKHR_host
>> +{
>> + VkDisplayKHR currentDisplay;
>> + uint32_t currentStackIndex;
>> +} VkDisplayPlanePropertiesKHR_host;
>> +
>> +typedef struct VkDisplayPropertiesKHR_host
>> +{
>> + VkDisplayKHR display;
>> + const char *displayName;
>> + VkExtent2D physicalDimensions;
>> + VkExtent2D physicalResolution;
>> + VkSurfaceTransformFlagsKHR supportedTransforms;
>> + VkBool32 planeReorderPossible;
>> + VkBool32 persistentContent;
>> +} VkDisplayPropertiesKHR_host;
>> +
>> typedef struct VkImageFormatProperties_host
>> {
>> VkExtent3D maxExtent;
>> @@ -796,11 +836,34 @@ struct vulkan_device_funcs
>> struct vulkan_instance_funcs
>> {
>> VkResult (*p_vkCreateDevice)(VkPhysicalDevice, const VkDeviceCreateInfo *, const VkAllocationCallbacks *, VkDevice *);
>> + VkResult (*p_vkCreateDisplayModeKHR)(VkPhysicalDevice, VkDisplayKHR, const VkDisplayModeCreateInfoKHR *, const VkAllocationCallbacks *, VkDisplayModeKHR *);
>> +#if defined(USE_STRUCT_CONVERSION)
>> + VkResult (*p_vkCreateDisplayPlaneSurfaceKHR)(VkInstance, const VkDisplaySurfaceCreateInfoKHR_host *, const VkAllocationCallbacks *, VkSurfaceKHR *);
>> +#else
>> + VkResult (*p_vkCreateDisplayPlaneSurfaceKHR)(VkInstance, const VkDisplaySurfaceCreateInfoKHR *, const VkAllocationCallbacks *, VkSurfaceKHR *);
>> +#endif
>> VkResult (*p_vkCreateWin32SurfaceKHR)(VkInstance, const VkWin32SurfaceCreateInfoKHR *, const VkAllocationCallbacks *, VkSurfaceKHR *);
>> void (*p_vkDestroySurfaceKHR)(VkInstance, VkSurfaceKHR, const VkAllocationCallbacks *);
>> VkResult (*p_vkEnumerateDeviceExtensionProperties)(VkPhysicalDevice, const char *, uint32_t *, VkExtensionProperties *);
>> VkResult (*p_vkEnumerateDeviceLayerProperties)(VkPhysicalDevice, uint32_t *, VkLayerProperties *);
>> VkResult (*p_vkEnumeratePhysicalDevices)(VkInstance, uint32_t *, VkPhysicalDevice *);
>> +#if defined(USE_STRUCT_CONVERSION)
>> + VkResult (*p_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice, VkDisplayKHR, uint32_t *, VkDisplayModePropertiesKHR_host *);
>> +#else
>> + VkResult (*p_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice, VkDisplayKHR, uint32_t *, VkDisplayModePropertiesKHR *);
>> +#endif
>> + VkResult (*p_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice, VkDisplayModeKHR, uint32_t, VkDisplayPlaneCapabilitiesKHR *);
>> + VkResult (*p_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice, uint32_t, uint32_t *, VkDisplayKHR *);
>> +#if defined(USE_STRUCT_CONVERSION)
>> + VkResult (*p_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice, uint32_t *, VkDisplayPlanePropertiesKHR_host *);
>> +#else
>> + VkResult (*p_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice, uint32_t *, VkDisplayPlanePropertiesKHR *);
>> +#endif
>> +#if defined(USE_STRUCT_CONVERSION)
>> + VkResult (*p_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhysicalDevice, uint32_t *, VkDisplayPropertiesKHR_host *);
>> +#else
>> + VkResult (*p_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhysicalDevice, uint32_t *, VkDisplayPropertiesKHR *);
>> +#endif
>> void (*p_vkGetPhysicalDeviceFeatures)(VkPhysicalDevice, VkPhysicalDeviceFeatures *);
>> void (*p_vkGetPhysicalDeviceFeatures2KHR)(VkPhysicalDevice, VkPhysicalDeviceFeatures2KHR *);
>> void (*p_vkGetPhysicalDeviceFormatProperties)(VkPhysicalDevice, VkFormat, VkFormatProperties *);
>> @@ -985,11 +1048,18 @@ struct vulkan_instance_funcs
>>
>> #define ALL_VK_INSTANCE_FUNCS() \
>> USE_VK_FUNC(vkCreateDevice) \
>> + USE_VK_FUNC(vkCreateDisplayModeKHR) \
>> + USE_VK_FUNC(vkCreateDisplayPlaneSurfaceKHR) \
>> USE_VK_FUNC(vkCreateWin32SurfaceKHR) \
>> USE_VK_FUNC(vkDestroySurfaceKHR) \
>> USE_VK_FUNC(vkEnumerateDeviceExtensionProperties) \
>> USE_VK_FUNC(vkEnumerateDeviceLayerProperties) \
>> USE_VK_FUNC(vkEnumeratePhysicalDevices) \
>> + USE_VK_FUNC(vkGetDisplayModePropertiesKHR) \
>> + USE_VK_FUNC(vkGetDisplayPlaneCapabilitiesKHR) \
>> + USE_VK_FUNC(vkGetDisplayPlaneSupportedDisplaysKHR) \
>> + USE_VK_FUNC(vkGetPhysicalDeviceDisplayPlanePropertiesKHR) \
>> + USE_VK_FUNC(vkGetPhysicalDeviceDisplayPropertiesKHR) \
>> USE_VK_FUNC(vkGetPhysicalDeviceFeatures) \
>> USE_VK_FUNC(vkGetPhysicalDeviceFeatures2KHR) \
>> USE_VK_FUNC(vkGetPhysicalDeviceFormatProperties) \
>> diff --git a/dlls/winex11.drv/vulkan.c b/dlls/winex11.drv/vulkan.c
>> index c633579286..deefe67fdc 100644
>> --- a/dlls/winex11.drv/vulkan.c
>> +++ b/dlls/winex11.drv/vulkan.c
>> @@ -233,6 +233,23 @@ static VkResult X11DRV_vkAcquireNextImageKHR(VkDevice device, VkSwapchainKHR swa
>> return pvkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, index);
>> }
>>
>> +static VkResult X11DRV_vkCreateDisplayModeKHR(VkPhysicalDevice phys_dev,
>> + VkDisplayKHR display, const VkDisplayModeCreateInfoKHR *create_info,
>> + const VkAllocationCallbacks *allocator, VkDisplayModeKHR *mode)
>> +{
>> + FIXME("stub: %p 0x%s %p %p %p\n", phys_dev, wine_dbgstr_longlong(display),
>> + create_info, allocator, mode);
>> + return VK_ERROR_OUT_OF_HOST_MEMORY;
>> +}
>> +
>> +static VkResult X11DRV_vkCreateDisplayPlaneSurfaceKHR(VkInstance instance,
>> + const VkDisplaySurfaceCreateInfoKHR *create_info,
>> + const VkAllocationCallbacks *allocator, VkSurfaceKHR *surface)
>> +{
>> + FIXME("stub: %p %p %p %p\n", instance, create_info, allocator, surface);
>> + return VK_ERROR_OUT_OF_HOST_MEMORY;
>> +}
>> +
>> static VkResult X11DRV_vkCreateInstance(const VkInstanceCreateInfo *create_info,
>> const VkAllocationCallbacks *allocator, VkInstance *instance)
>> {
>> @@ -410,7 +427,30 @@ static void *X11DRV_vkGetDeviceProcAddr(VkDevice device, const char *name)
>> return pvkGetDeviceProcAddr(device, name);
>> }
>>
>> -static void *X11DRV_vkGetInstanceProcAddr(VkInstance instance, const char *name)
>> +static VkResult X11DRV_vkGetDisplayModePropertiesKHR(VkPhysicalDevice phys_dev,
>> + VkDisplayKHR display, uint32_t *count, VkDisplayModePropertiesKHR *properties)
>> +{
>> + FIXME("stub: %p 0x%s %p %p\n", phys_dev, wine_dbgstr_longlong(display), count,
>> + properties);
>> + return VK_ERROR_OUT_OF_HOST_MEMORY;
>> +}
>> +
>> +static VkResult X11DRV_vkGetDisplayPlaneCapabilitiesKHR(VkPhysicalDevice phys_dev,
>> + VkDisplayModeKHR mode, uint32_t index, VkDisplayPlaneCapabilitiesKHR *capabilities)
>> +{
>> + FIXME("stub: %p 0x%s %u %p\n", phys_dev, wine_dbgstr_longlong(mode), index,
>> + capabilities);
>> + return VK_ERROR_OUT_OF_HOST_MEMORY;
>> +}
>> +
>> +static VkResult X11DRV_vkGetDisplayPlaneSupportedDisplaysKHR(VkPhysicalDevice phys_dev,
>> + uint32_t index, uint32_t *count, VkDisplayKHR *displays)
>> +{
>> + FIXME("stub: %p %u %p %p\n", phys_dev, index, count, displays);
>> + return VK_ERROR_OUT_OF_HOST_MEMORY;
>> +}
>> +
>> +static void * X11DRV_vkGetInstanceProcAddr(VkInstance instance, const char *name)
>> {
>> void *proc_addr;
>>
>> @@ -422,6 +462,20 @@ static void *X11DRV_vkGetInstanceProcAddr(VkInstance instance, const char *name)
>> return pvkGetInstanceProcAddr(instance, name);
>> }
>>
>> +static VkResult X11DRV_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(VkPhysicalDevice phys_dev,
>> + uint32_t *count, VkDisplayPlanePropertiesKHR *properties)
>> +{
>> + FIXME("stub: %p %p %p\n", phys_dev, count, properties);
>> + return VK_ERROR_OUT_OF_HOST_MEMORY;
>> +}
>> +
>> +static VkResult X11DRV_vkGetPhysicalDeviceDisplayPropertiesKHR(VkPhysicalDevice phys_dev,
>> + uint32_t *count, VkDisplayPropertiesKHR *properties)
>> +{
>> + FIXME("stub: %p %p %p\n", phys_dev, count, properties);
>> + return VK_ERROR_OUT_OF_HOST_MEMORY;
>> +}
>> +
>> static VkResult X11DRV_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevice phys_dev,
>> VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR *capabilities)
>> {
>> @@ -491,6 +545,8 @@ static VkResult X11DRV_vkQueuePresentKHR(VkQueue queue, const VkPresentInfoKHR *
>> static const struct vulkan_funcs vulkan_funcs =
>> {
>> X11DRV_vkAcquireNextImageKHR,
>> + X11DRV_vkCreateDisplayModeKHR,
>> + X11DRV_vkCreateDisplayPlaneSurfaceKHR,
>> X11DRV_vkCreateInstance,
>> X11DRV_vkCreateSwapchainKHR,
>> X11DRV_vkCreateWin32SurfaceKHR,
>> @@ -499,7 +555,12 @@ static const struct vulkan_funcs vulkan_funcs =
>> X11DRV_vkDestroySwapchainKHR,
>> X11DRV_vkEnumerateInstanceExtensionProperties,
>> X11DRV_vkGetDeviceProcAddr,
>> + X11DRV_vkGetDisplayModePropertiesKHR,
>> + X11DRV_vkGetDisplayPlaneCapabilitiesKHR,
>> + X11DRV_vkGetDisplayPlaneSupportedDisplaysKHR,
>> X11DRV_vkGetInstanceProcAddr,
>> + X11DRV_vkGetPhysicalDeviceDisplayPlanePropertiesKHR,
>> + X11DRV_vkGetPhysicalDeviceDisplayPropertiesKHR,
>> X11DRV_vkGetPhysicalDeviceSurfaceCapabilitiesKHR,
>> X11DRV_vkGetPhysicalDeviceSurfaceFormatsKHR,
>> X11DRV_vkGetPhysicalDeviceSurfacePresentModesKHR,
>> @@ -525,14 +586,28 @@ static void *get_vulkan_driver_instance_proc_addr(const struct vulkan_funcs *vul
>> if (!instance)
>> return NULL;
>>
>> + if (!strcmp(name, "vkCreateDisplayModeKHR"))
>> + return vulkan_funcs->p_vkCreateDisplayModeKHR;
>
> The "vk" prefix has to be removed from strings in strcmp() in order
> for this to work.
>
>> + if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
>> + return vulkan_funcs->p_vkCreateDisplayPlaneSurfaceKHR;
>> if (!strcmp(name, "CreateWin32SurfaceKHR"))
>> return vulkan_funcs->p_vkCreateWin32SurfaceKHR;
>> if (!strcmp(name, "DestroyInstance"))
>> return vulkan_funcs->p_vkDestroyInstance;
>> if (!strcmp(name, "DestroySurfaceKHR"))
>> return vulkan_funcs->p_vkDestroySurfaceKHR;
>> + if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
>> + return vulkan_funcs->p_vkGetDisplayModePropertiesKHR;
>> + if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
>> + return vulkan_funcs->p_vkGetDisplayPlaneCapabilitiesKHR;
>> + if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
>> + return vulkan_funcs->p_vkGetDisplayPlaneSupportedDisplaysKHR;
>> if (!strcmp(name, "GetInstanceProcAddr"))
>> return vulkan_funcs->p_vkGetInstanceProcAddr;
>> + if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
>> + return vulkan_funcs->p_vkGetPhysicalDeviceDisplayPlanePropertiesKHR;
>> + if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
>> + return vulkan_funcs->p_vkGetPhysicalDeviceDisplayPropertiesKHR;
>> if (!strcmp(name, "GetPhysicalDeviceSurfaceCapabilitiesKHR"))
>> return vulkan_funcs->p_vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
>> if (!strcmp(name, "GetPhysicalDeviceSurfaceFormatsKHR"))
>> diff --git a/include/wine/vulkan.h b/include/wine/vulkan.h
>> index fcc31bc3c9..07bcd1279c 100644
>> --- a/include/wine/vulkan.h
>> +++ b/include/wine/vulkan.h
>> @@ -60,6 +60,8 @@ VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSetLayout)
>> VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorUpdateTemplateKHR)
>> VK_DEFINE_HANDLE(VkDevice)
>> VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeviceMemory)
>> +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR)
>> +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayModeKHR)
>> VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkEvent)
>> VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFence)
>> VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFramebuffer)
>> @@ -406,6 +408,15 @@ typedef enum VkDescriptorUpdateTemplateTypeKHR
>> VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_KHR_MAX_ENUM = 0x7fffffff,
>> } VkDescriptorUpdateTemplateTypeKHR;
>>
>> +typedef enum VkDisplayPlaneAlphaFlagBitsKHR
>> +{
>> + VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
>> + VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000002,
>> + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004,
>> + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008,
>> + VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_KHR_MAX_ENUM = 0x7fffffff,
>> +} VkDisplayPlaneAlphaFlagBitsKHR;
>> +
>> typedef enum VkDynamicState
>> {
>> VK_DYNAMIC_STATE_VIEWPORT = 0,
>> @@ -817,6 +828,8 @@ typedef enum VkObjectType
>> VK_OBJECT_TYPE_COMMAND_POOL = 25,
>> VK_OBJECT_TYPE_SURFACE_KHR = 1000000000,
>> VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000,
>> + VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000,
>> + VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001,
>> VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000,
>> VK_OBJECT_TYPE_MAX_ENUM = 0x7fffffff,
>> } VkObjectType;
>> @@ -1103,6 +1116,8 @@ typedef enum VkStructureType
>> VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48,
>> VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000,
>> VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001,
>> + VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000,
>> + VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001,
>> VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000,
>> VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000,
>> VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000,
>> @@ -1326,33 +1341,40 @@ typedef struct VkDispatchIndirectCommand
>> uint32_t z;
>> } VkDispatchIndirectCommand;
>>
>> -typedef struct VkDrawIndirectCommand
>> +typedef struct VkDisplayPlanePropertiesKHR
>> {
>> - uint32_t vertexCount;
>> + VkDisplayKHR WINE_VK_ALIGN(8) currentDisplay;
>> + uint32_t currentStackIndex;
>> +} VkDisplayPlanePropertiesKHR;
>> +
>> +typedef struct VkDrawIndexedIndirectCommand
>> +{
>> + uint32_t indexCount;
>> uint32_t instanceCount;
>> - uint32_t firstVertex;
>> + uint32_t firstIndex;
>> + int32_t vertexOffset;
>> uint32_t firstInstance;
>> -} VkDrawIndirectCommand;
>> +} VkDrawIndexedIndirectCommand;
>>
>> -typedef struct VkExtensionProperties
>> +typedef struct VkEventCreateInfo
>> {
>> - char extensionName[VK_MAX_EXTENSION_NAME_SIZE];
>> - uint32_t specVersion;
>> -} VkExtensionProperties;
>> + VkStructureType sType;
>> + const void *pNext;
>> + VkEventCreateFlags flags;
>> +} VkEventCreateInfo;
>>
>> -typedef struct VkExtent3D
>> +typedef struct VkExtent2D
>> {
>> uint32_t width;
>> uint32_t height;
>> - uint32_t depth;
>> -} VkExtent3D;
>> +} VkExtent2D;
>>
>> -typedef struct VkFormatProperties
>> +typedef struct VkFenceCreateInfo
>> {
>> - VkFormatFeatureFlags linearTilingFeatures;
>> - VkFormatFeatureFlags optimalTilingFeatures;
>> - VkFormatFeatureFlags bufferFeatures;
>> -} VkFormatProperties;
>> + VkStructureType sType;
>> + const void *pNext;
>> + VkFenceCreateFlags flags;
>> +} VkFenceCreateInfo;
>>
>> typedef struct VkFramebufferCreateInfo
>> {
>> @@ -1367,25 +1389,6 @@ typedef struct VkFramebufferCreateInfo
>> uint32_t layers;
>> } VkFramebufferCreateInfo;
>>
>> -typedef struct VkImageCreateInfo
>> -{
>> - VkStructureType sType;
>> - const void *pNext;
>> - VkImageCreateFlags flags;
>> - VkImageType imageType;
>> - VkFormat format;
>> - VkExtent3D extent;
>> - uint32_t mipLevels;
>> - uint32_t arrayLayers;
>> - VkSampleCountFlagBits samples;
>> - VkImageTiling tiling;
>> - VkImageUsageFlags usage;
>> - VkSharingMode sharingMode;
>> - uint32_t queueFamilyIndexCount;
>> - const uint32_t *pQueueFamilyIndices;
>> - VkImageLayout initialLayout;
>> -} VkImageCreateInfo;
>> -
>> typedef struct VkImageSubresource
>> {
>> VkImageAspectFlags aspectMask;
>> @@ -1600,32 +1603,6 @@ typedef struct VkSemaphoreCreateInfo
>> VkSemaphoreCreateFlags flags;
>> } VkSemaphoreCreateInfo;
>>
>> -typedef struct VkSparseImageFormatProperties
>> -{
>> - VkImageAspectFlags aspectMask;
>> - VkExtent3D imageGranularity;
>> - VkSparseImageFormatFlags flags;
>> -} VkSparseImageFormatProperties;
>> -
>> -typedef struct VkSparseImageMemoryBind
>> -{
>> - VkImageSubresource subresource;
>> - VkOffset3D offset;
>> - VkExtent3D extent;
>> - VkDeviceMemory WINE_VK_ALIGN(8) memory;
>> - VkDeviceSize WINE_VK_ALIGN(8) memoryOffset;
>> - VkSparseMemoryBindFlags flags;
>> -} VkSparseImageMemoryBind;
>> -
>> -typedef struct VkSparseImageMemoryRequirements
>> -{
>> - VkSparseImageFormatProperties formatProperties;
>> - uint32_t imageMipTailFirstLod;
>> - VkDeviceSize WINE_VK_ALIGN(8) imageMipTailSize;
>> - VkDeviceSize WINE_VK_ALIGN(8) imageMipTailOffset;
>> - VkDeviceSize WINE_VK_ALIGN(8) imageMipTailStride;
>> -} VkSparseImageMemoryRequirements;
>> -
>> typedef struct VkSparseMemoryBind
>> {
>> VkDeviceSize WINE_VK_ALIGN(8) resourceOffset;
>> @@ -1761,34 +1738,51 @@ typedef struct VkDescriptorUpdateTemplateCreateInfoKHR
>> uint32_t set;
>> } VkDescriptorUpdateTemplateCreateInfoKHR;
>>
>> -typedef struct VkEventCreateInfo
>> +typedef struct VkDisplayModeParametersKHR
>> +{
>> + VkExtent2D visibleRegion;
>> + uint32_t refreshRate;
>> +} VkDisplayModeParametersKHR;
>> +
>> +typedef struct VkDisplaySurfaceCreateInfoKHR
>> {
>> VkStructureType sType;
>> const void *pNext;
>> - VkEventCreateFlags flags;
>> -} VkEventCreateInfo;
>> + VkDisplaySurfaceCreateFlagsKHR flags;
>> + VkDisplayModeKHR WINE_VK_ALIGN(8) displayMode;
>> + uint32_t planeIndex;
>> + uint32_t planeStackIndex;
>> + VkSurfaceTransformFlagBitsKHR transform;
>> + float globalAlpha;
>> + VkDisplayPlaneAlphaFlagBitsKHR alphaMode;
>> + VkExtent2D imageExtent;
>> +} VkDisplaySurfaceCreateInfoKHR;
>>
>> -typedef struct VkExtent2D
>> +typedef struct VkExtent3D
>> {
>> uint32_t width;
>> uint32_t height;
>> -} VkExtent2D;
>> + uint32_t depth;
>> +} VkExtent3D;
>>
>> -typedef struct VkFormatProperties2KHR
>> +typedef struct VkImageCreateInfo
>> {
>> VkStructureType sType;
>> - void *pNext;
>> - VkFormatProperties formatProperties;
>> -} VkFormatProperties2KHR;
>> -
>> -typedef struct VkImageFormatProperties
>> -{
>> - VkExtent3D maxExtent;
>> - uint32_t maxMipLevels;
>> - uint32_t maxArrayLayers;
>> - VkSampleCountFlags sampleCounts;
>> - VkDeviceSize WINE_VK_ALIGN(8) maxResourceSize;
>> -} VkImageFormatProperties;
>> + const void *pNext;
>> + VkImageCreateFlags flags;
>> + VkImageType imageType;
>> + VkFormat format;
>> + VkExtent3D extent;
>> + uint32_t mipLevels;
>> + uint32_t arrayLayers;
>> + VkSampleCountFlagBits samples;
>> + VkImageTiling tiling;
>> + VkImageUsageFlags usage;
>> + VkSharingMode sharingMode;
>> + uint32_t queueFamilyIndexCount;
>> + const uint32_t *pQueueFamilyIndices;
>> + VkImageLayout initialLayout;
>> +} VkImageCreateInfo;
>>
>> typedef struct VkImageMemoryBarrier
>> {
>> @@ -1912,61 +1906,105 @@ typedef struct VkSparseBufferMemoryBindInfo
>> const VkSparseMemoryBind *pBinds;
>> } VkSparseBufferMemoryBindInfo;
>>
>> -typedef struct VkSparseImageMemoryBindInfo
>> +typedef struct VkSparseImageMemoryBind
>> +{
>> + VkImageSubresource subresource;
>> + VkOffset3D offset;
>> + VkExtent3D extent;
>> + VkDeviceMemory WINE_VK_ALIGN(8) memory;
>> + VkDeviceSize WINE_VK_ALIGN(8) memoryOffset;
>> + VkSparseMemoryBindFlags flags;
>> +} VkSparseImageMemoryBind;
>> +
>> +typedef struct VkSparseImageOpaqueMemoryBindInfo
>> {
>> VkImage WINE_VK_ALIGN(8) image;
>> uint32_t bindCount;
>> - const VkSparseImageMemoryBind *pBinds;
>> -} VkSparseImageMemoryBindInfo;
>> + const VkSparseMemoryBind *pBinds;
>> +} VkSparseImageOpaqueMemoryBindInfo;
>>
>> -typedef struct VkSpecializationInfo
>> +typedef struct VkStencilOpState
>> {
>> - uint32_t mapEntryCount;
>> - const VkSpecializationMapEntry *pMapEntries;
>> - size_t dataSize;
>> - const void *pData;
>> -} VkSpecializationInfo;
>> + VkStencilOp failOp;
>> + VkStencilOp passOp;
>> + VkStencilOp depthFailOp;
>> + VkCompareOp compareOp;
>> + uint32_t compareMask;
>> + uint32_t writeMask;
>> + uint32_t reference;
>> +} VkStencilOpState;
>>
>> -typedef struct VkSubpassDependency
>> +typedef struct VkSubpassDescription
>> {
>> - uint32_t srcSubpass;
>> - uint32_t dstSubpass;
>> - VkPipelineStageFlags srcStageMask;
>> - VkPipelineStageFlags dstStageMask;
>> - VkAccessFlags srcAccessMask;
>> - VkAccessFlags dstAccessMask;
>> - VkDependencyFlags dependencyFlags;
>> -} VkSubpassDependency;
>> + VkSubpassDescriptionFlags flags;
>> + VkPipelineBindPoint pipelineBindPoint;
>> + uint32_t inputAttachmentCount;
>> + const VkAttachmentReference *pInputAttachments;
>> + uint32_t colorAttachmentCount;
>> + const VkAttachmentReference *pColorAttachments;
>> + const VkAttachmentReference *pResolveAttachments;
>> + const VkAttachmentReference *pDepthStencilAttachment;
>> + uint32_t preserveAttachmentCount;
>> + const uint32_t *pPreserveAttachments;
>> +} VkSubpassDescription;
>>
>> -typedef struct VkSurfaceFormatKHR
>> +typedef struct VkSurfaceCapabilitiesKHR
>> {
>> - VkFormat format;
>> - VkColorSpaceKHR colorSpace;
>> -} VkSurfaceFormatKHR;
>> + uint32_t minImageCount;
>> + uint32_t maxImageCount;
>> + VkExtent2D currentExtent;
>> + VkExtent2D minImageExtent;
>> + VkExtent2D maxImageExtent;
>> + uint32_t maxImageArrayLayers;
>> + VkSurfaceTransformFlagsKHR supportedTransforms;
>> + VkSurfaceTransformFlagBitsKHR currentTransform;
>> + VkCompositeAlphaFlagsKHR supportedCompositeAlpha;
>> + VkImageUsageFlags supportedUsageFlags;
>> +} VkSurfaceCapabilitiesKHR;
>>
>> -typedef struct VkViewport
>> +typedef struct VkSwapchainCreateInfoKHR
>> {
>> - float x;
>> - float y;
>> - float width;
>> - float height;
>> - float minDepth;
>> - float maxDepth;
>> -} VkViewport;
>> + VkStructureType sType;
>> + const void *pNext;
>> + VkSwapchainCreateFlagsKHR flags;
>> + VkSurfaceKHR WINE_VK_ALIGN(8) surface;
>> + uint32_t minImageCount;
>> + VkFormat imageFormat;
>> + VkColorSpaceKHR imageColorSpace;
>> + VkExtent2D imageExtent;
>> + uint32_t imageArrayLayers;
>> + VkImageUsageFlags imageUsage;
>> + VkSharingMode imageSharingMode;
>> + uint32_t queueFamilyIndexCount;
>> + const uint32_t *pQueueFamilyIndices;
>> + VkSurfaceTransformFlagBitsKHR preTransform;
>> + VkCompositeAlphaFlagBitsKHR compositeAlpha;
>> + VkPresentModeKHR presentMode;
>> + VkBool32 clipped;
>> + VkSwapchainKHR WINE_VK_ALIGN(8) oldSwapchain;
>> +} VkSwapchainCreateInfoKHR;
>>
>> -typedef struct VkWriteDescriptorSet
>> +typedef struct VkVertexInputBindingDescription
>> +{
>> + uint32_t binding;
>> + uint32_t stride;
>> + VkVertexInputRate inputRate;
>> +} VkVertexInputBindingDescription;
>> +
>> +typedef struct VkViewportWScalingNV
>> +{
>> + float xcoeff;
>> + float ycoeff;
>> +} VkViewportWScalingNV;
>> +
>> +typedef struct VkWin32SurfaceCreateInfoKHR
>> {
>> VkStructureType sType;
>> const void *pNext;
>> - VkDescriptorSet WINE_VK_ALIGN(8) dstSet;
>> - uint32_t dstBinding;
>> - uint32_t dstArrayElement;
>> - uint32_t descriptorCount;
>> - VkDescriptorType descriptorType;
>> - const VkDescriptorImageInfo *pImageInfo;
>> - const VkDescriptorBufferInfo *pBufferInfo;
>> - const VkBufferView *pTexelBufferView;
>> -} VkWriteDescriptorSet;
>> + VkWin32SurfaceCreateFlagsKHR flags;
>> + HINSTANCE hinstance;
>> + HWND hwnd;
>> +} VkWin32SurfaceCreateInfoKHR;
>>
>> typedef struct VkApplicationInfo
>> {
>> @@ -2009,51 +2047,223 @@ typedef struct VkDeviceQueueCreateInfo
>> const float *pQueuePriorities;
>> } VkDeviceQueueCreateInfo;
>>
>> -typedef struct VkFenceCreateInfo
>> +typedef struct VkDisplayModePropertiesKHR
>> {
>> - VkStructureType sType;
>> - const void *pNext;
>> - VkFenceCreateFlags flags;
>> -} VkFenceCreateInfo;
>> + VkDisplayModeKHR WINE_VK_ALIGN(8) displayMode;
>> + VkDisplayModeParametersKHR parameters;
>> +} VkDisplayModePropertiesKHR;
>>
>> -typedef struct VkImageBlit
>> +typedef struct VkDisplayPropertiesKHR
>> {
>> - VkImageSubresourceLayers srcSubresource;
>> - VkOffset3D srcOffsets[2];
>> - VkImageSubresourceLayers dstSubresource;
>> - VkOffset3D dstOffsets[2];
>> + VkDisplayKHR WINE_VK_ALIGN(8) display;
>> + const char *displayName;
>> + VkExtent2D physicalDimensions;
>> + VkExtent2D physicalResolution;
>> + VkSurfaceTransformFlagsKHR supportedTransforms;
>> + VkBool32 planeReorderPossible;
>> + VkBool32 persistentContent;
>> +} VkDisplayPropertiesKHR;
>> +
>> +typedef struct VkFormatProperties
>> +{
>> + VkFormatFeatureFlags linearTilingFeatures;
>> + VkFormatFeatureFlags optimalTilingFeatures;
>> + VkFormatFeatureFlags bufferFeatures;
>> +} VkFormatProperties;
>> +
>> +typedef struct VkImageBlit
>> +{
>> + VkImageSubresourceLayers srcSubresource;
>> + VkOffset3D srcOffsets[2];
>> + VkImageSubresourceLayers dstSubresource;
>> + VkOffset3D dstOffsets[2];
>> } VkImageBlit;
>>
>> -typedef struct VkImageFormatProperties2KHR
>> +typedef struct VkImageFormatProperties
>> +{
>> + VkExtent3D maxExtent;
>> + uint32_t maxMipLevels;
>> + uint32_t maxArrayLayers;
>> + VkSampleCountFlags sampleCounts;
>> + VkDeviceSize WINE_VK_ALIGN(8) maxResourceSize;
>> +} VkImageFormatProperties;
>> +
>> +typedef struct VkImageResolve
>> +{
>> + VkImageSubresourceLayers srcSubresource;
>> + VkOffset3D srcOffset;
>> + VkImageSubresourceLayers dstSubresource;
>> + VkOffset3D dstOffset;
>> + VkExtent3D extent;
>> +} VkImageResolve;
>> +
>> +typedef struct VkInstanceCreateInfo
>> {
>> VkStructureType sType;
>> - void *pNext;
>> - VkImageFormatProperties WINE_VK_ALIGN(8) imageFormatProperties;
>> -} VkImageFormatProperties2KHR;
>> + const void *pNext;
>> + VkInstanceCreateFlags flags;
>> + const VkApplicationInfo *pApplicationInfo;
>> + uint32_t enabledLayerCount;
>> + const char * const*ppEnabledLayerNames;
>> + uint32_t enabledExtensionCount;
>> + const char * const*ppEnabledExtensionNames;
>> +} VkInstanceCreateInfo;
>>
>> -typedef struct VkOffset2D
>> +typedef struct VkMemoryHeap
>> {
>> - int32_t x;
>> - int32_t y;
>> -} VkOffset2D;
>> + VkDeviceSize WINE_VK_ALIGN(8) size;
>> + VkMemoryHeapFlags flags;
>> +} VkMemoryHeap;
>>
>> -typedef struct VkPhysicalDeviceFeatures2KHR
>> +typedef struct VkPhysicalDeviceLimits
>> +{
>> + uint32_t maxImageDimension1D;
>> + uint32_t maxImageDimension2D;
>> + uint32_t maxImageDimension3D;
>> + uint32_t maxImageDimensionCube;
>> + uint32_t maxImageArrayLayers;
>> + uint32_t maxTexelBufferElements;
>> + uint32_t maxUniformBufferRange;
>> + uint32_t maxStorageBufferRange;
>> + uint32_t maxPushConstantsSize;
>> + uint32_t maxMemoryAllocationCount;
>> + uint32_t maxSamplerAllocationCount;
>> + VkDeviceSize WINE_VK_ALIGN(8) bufferImageGranularity;
>> + VkDeviceSize WINE_VK_ALIGN(8) sparseAddressSpaceSize;
>> + uint32_t maxBoundDescriptorSets;
>> + uint32_t maxPerStageDescriptorSamplers;
>> + uint32_t maxPerStageDescriptorUniformBuffers;
>> + uint32_t maxPerStageDescriptorStorageBuffers;
>> + uint32_t maxPerStageDescriptorSampledImages;
>> + uint32_t maxPerStageDescriptorStorageImages;
>> + uint32_t maxPerStageDescriptorInputAttachments;
>> + uint32_t maxPerStageResources;
>> + uint32_t maxDescriptorSetSamplers;
>> + uint32_t maxDescriptorSetUniformBuffers;
>> + uint32_t maxDescriptorSetUniformBuffersDynamic;
>> + uint32_t maxDescriptorSetStorageBuffers;
>> + uint32_t maxDescriptorSetStorageBuffersDynamic;
>> + uint32_t maxDescriptorSetSampledImages;
>> + uint32_t maxDescriptorSetStorageImages;
>> + uint32_t maxDescriptorSetInputAttachments;
>> + uint32_t maxVertexInputAttributes;
>> + uint32_t maxVertexInputBindings;
>> + uint32_t maxVertexInputAttributeOffset;
>> + uint32_t maxVertexInputBindingStride;
>> + uint32_t maxVertexOutputComponents;
>> + uint32_t maxTessellationGenerationLevel;
>> + uint32_t maxTessellationPatchSize;
>> + uint32_t maxTessellationControlPerVertexInputComponents;
>> + uint32_t maxTessellationControlPerVertexOutputComponents;
>> + uint32_t maxTessellationControlPerPatchOutputComponents;
>> + uint32_t maxTessellationControlTotalOutputComponents;
>> + uint32_t maxTessellationEvaluationInputComponents;
>> + uint32_t maxTessellationEvaluationOutputComponents;
>> + uint32_t maxGeometryShaderInvocations;
>> + uint32_t maxGeometryInputComponents;
>> + uint32_t maxGeometryOutputComponents;
>> + uint32_t maxGeometryOutputVertices;
>> + uint32_t maxGeometryTotalOutputComponents;
>> + uint32_t maxFragmentInputComponents;
>> + uint32_t maxFragmentOutputAttachments;
>> + uint32_t maxFragmentDualSrcAttachments;
>> + uint32_t maxFragmentCombinedOutputResources;
>> + uint32_t maxComputeSharedMemorySize;
>> + uint32_t maxComputeWorkGroupCount[3];
>> + uint32_t maxComputeWorkGroupInvocations;
>> + uint32_t maxComputeWorkGroupSize[3];
>> + uint32_t subPixelPrecisionBits;
>> + uint32_t subTexelPrecisionBits;
>> + uint32_t mipmapPrecisionBits;
>> + uint32_t maxDrawIndexedIndexValue;
>> + uint32_t maxDrawIndirectCount;
>> + float maxSamplerLodBias;
>> + float maxSamplerAnisotropy;
>> + uint32_t maxViewports;
>> + uint32_t maxViewportDimensions[2];
>> + float viewportBoundsRange[2];
>> + uint32_t viewportSubPixelBits;
>> + size_t minMemoryMapAlignment;
>> + VkDeviceSize WINE_VK_ALIGN(8) minTexelBufferOffsetAlignment;
>> + VkDeviceSize WINE_VK_ALIGN(8) minUniformBufferOffsetAlignment;
>> + VkDeviceSize WINE_VK_ALIGN(8) minStorageBufferOffsetAlignment;
>> + int32_t minTexelOffset;
>> + uint32_t maxTexelOffset;
>> + int32_t minTexelGatherOffset;
>> + uint32_t maxTexelGatherOffset;
>> + float minInterpolationOffset;
>> + float maxInterpolationOffset;
>> + uint32_t subPixelInterpolationOffsetBits;
>> + uint32_t maxFramebufferWidth;
>> + uint32_t maxFramebufferHeight;
>> + uint32_t maxFramebufferLayers;
>> + VkSampleCountFlags framebufferColorSampleCounts;
>> + VkSampleCountFlags framebufferDepthSampleCounts;
>> + VkSampleCountFlags framebufferStencilSampleCounts;
>> + VkSampleCountFlags framebufferNoAttachmentsSampleCounts;
>> + uint32_t maxColorAttachments;
>> + VkSampleCountFlags sampledImageColorSampleCounts;
>> + VkSampleCountFlags sampledImageIntegerSampleCounts;
>> + VkSampleCountFlags sampledImageDepthSampleCounts;
>> + VkSampleCountFlags sampledImageStencilSampleCounts;
>> + VkSampleCountFlags storageImageSampleCounts;
>> + uint32_t maxSampleMaskWords;
>> + VkBool32 timestampComputeAndGraphics;
>> + float timestampPeriod;
>> + uint32_t maxClipDistances;
>> + uint32_t maxCullDistances;
>> + uint32_t maxCombinedClipAndCullDistances;
>> + uint32_t discreteQueuePriorities;
>> + float pointSizeRange[2];
>> + float lineWidthRange[2];
>> + float pointSizeGranularity;
>> + float lineWidthGranularity;
>> + VkBool32 strictLines;
>> + VkBool32 standardSampleLocations;
>> + VkDeviceSize WINE_VK_ALIGN(8) optimalBufferCopyOffsetAlignment;
>> + VkDeviceSize WINE_VK_ALIGN(8) optimalBufferCopyRowPitchAlignment;
>> + VkDeviceSize WINE_VK_ALIGN(8) nonCoherentAtomSize;
>> +} VkPhysicalDeviceLimits;
>> +
>> +typedef struct VkPhysicalDeviceProperties
>> +{
>> + uint32_t apiVersion;
>> + uint32_t driverVersion;
>> + uint32_t vendorID;
>> + uint32_t deviceID;
>> + VkPhysicalDeviceType deviceType;
>> + char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
>> + uint8_t pipelineCacheUUID[VK_UUID_SIZE];
>> + VkPhysicalDeviceLimits WINE_VK_ALIGN(8) limits;
>> + VkPhysicalDeviceSparseProperties sparseProperties;
>> +} VkPhysicalDeviceProperties;
>> +
>> +typedef struct VkPipelineDepthStencilStateCreateInfo
>> {
>> VkStructureType sType;
>> - void *pNext;
>> - VkPhysicalDeviceFeatures features;
>> -} VkPhysicalDeviceFeatures2KHR;
>> + const void *pNext;
>> + VkPipelineDepthStencilStateCreateFlags flags;
>> + VkBool32 depthTestEnable;
>> + VkBool32 depthWriteEnable;
>> + VkCompareOp depthCompareOp;
>> + VkBool32 depthBoundsTestEnable;
>> + VkBool32 stencilTestEnable;
>> + VkStencilOpState front;
>> + VkStencilOpState back;
>> + float minDepthBounds;
>> + float maxDepthBounds;
>> +} VkPipelineDepthStencilStateCreateInfo;
>>
>> -typedef struct VkPipelineShaderStageCreateInfo
>> +typedef struct VkPipelineVertexInputStateCreateInfo
>> {
>> VkStructureType sType;
>> const void *pNext;
>> - VkPipelineShaderStageCreateFlags flags;
>> - VkShaderStageFlagBits stage;
>> - VkShaderModule WINE_VK_ALIGN(8) module;
>> - const char *pName;
>> - const VkSpecializationInfo *pSpecializationInfo;
>> -} VkPipelineShaderStageCreateInfo;
>> + VkPipelineVertexInputStateCreateFlags flags;
>> + uint32_t vertexBindingDescriptionCount;
>> + const VkVertexInputBindingDescription *pVertexBindingDescriptions;
>> + uint32_t vertexAttributeDescriptionCount;
>> + const VkVertexInputAttributeDescription *pVertexAttributeDescriptions;
>> +} VkPipelineVertexInputStateCreateInfo;
>>
>> typedef struct VkQueueFamilyProperties2KHR
>> {
>> @@ -2071,54 +2281,20 @@ typedef struct VkShaderModuleCreateInfo
>> const uint32_t *pCode;
>> } VkShaderModuleCreateInfo;
>>
>> -typedef struct VkSparseImageOpaqueMemoryBindInfo
>> +typedef struct VkSparseImageMemoryBindInfo
>> {
>> VkImage WINE_VK_ALIGN(8) image;
>> uint32_t bindCount;
>> - const VkSparseMemoryBind *pBinds;
>> -} VkSparseImageOpaqueMemoryBindInfo;
>> -
>> -typedef struct VkSubpassDescription
>> -{
>> - VkSubpassDescriptionFlags flags;
>> - VkPipelineBindPoint pipelineBindPoint;
>> - uint32_t inputAttachmentCount;
>> - const VkAttachmentReference *pInputAttachments;
>> - uint32_t colorAttachmentCount;
>> - const VkAttachmentReference *pColorAttachments;
>> - const VkAttachmentReference *pResolveAttachments;
>> - const VkAttachmentReference *pDepthStencilAttachment;
>> - uint32_t preserveAttachmentCount;
>> - const uint32_t *pPreserveAttachments;
>> -} VkSubpassDescription;
>> -
>> -typedef struct VkSwapchainCreateInfoKHR
>> -{
>> - VkStructureType sType;
>> - const void *pNext;
>> - VkSwapchainCreateFlagsKHR flags;
>> - VkSurfaceKHR WINE_VK_ALIGN(8) surface;
>> - uint32_t minImageCount;
>> - VkFormat imageFormat;
>> - VkColorSpaceKHR imageColorSpace;
>> - VkExtent2D imageExtent;
>> - uint32_t imageArrayLayers;
>> - VkImageUsageFlags imageUsage;
>> - VkSharingMode imageSharingMode;
>> - uint32_t queueFamilyIndexCount;
>> - const uint32_t *pQueueFamilyIndices;
>> - VkSurfaceTransformFlagBitsKHR preTransform;
>> - VkCompositeAlphaFlagBitsKHR compositeAlpha;
>> - VkPresentModeKHR presentMode;
>> - VkBool32 clipped;
>> - VkSwapchainKHR WINE_VK_ALIGN(8) oldSwapchain;
>> -} VkSwapchainCreateInfoKHR;
>> + const VkSparseImageMemoryBind *pBinds;
>> +} VkSparseImageMemoryBindInfo;
>>
>> -typedef struct VkViewportWScalingNV
>> +typedef struct VkSpecializationInfo
>> {
>> - float xcoeff;
>> - float ycoeff;
>> -} VkViewportWScalingNV;
>> + uint32_t mapEntryCount;
>> + const VkSpecializationMapEntry *pMapEntries;
>> + size_t dataSize;
>> + const void *pData;
>> +} VkSpecializationInfo;
>>
>> typedef struct VkClearAttachment
>> {
>> @@ -2149,6 +2325,22 @@ typedef struct VkDeviceCreateInfo
>> const VkPhysicalDeviceFeatures *pEnabledFeatures;
>> } VkDeviceCreateInfo;
>>
>> +typedef struct VkDisplayModeCreateInfoKHR
>> +{
>> + VkStructureType sType;
>> + const void *pNext;
>> + VkDisplayModeCreateFlagsKHR flags;
>> + VkDisplayModeParametersKHR parameters;
>> +} VkDisplayModeCreateInfoKHR;
>> +
>> +typedef struct VkDrawIndirectCommand
>> +{
>> + uint32_t vertexCount;
>> + uint32_t instanceCount;
>> + uint32_t firstVertex;
>> + uint32_t firstInstance;
>> +} VkDrawIndirectCommand;
>> +
>> typedef struct VkImageCopy
>> {
>> VkImageSubresourceLayers srcSubresource;
>> @@ -2158,11 +2350,11 @@ typedef struct VkImageCopy
>> VkExtent3D extent;
>> } VkImageCopy;
>>
>> -typedef struct VkMemoryHeap
>> +typedef struct VkOffset2D
>> {
>> - VkDeviceSize WINE_VK_ALIGN(8) size;
>> - VkMemoryHeapFlags flags;
>> -} VkMemoryHeap;
>> + int32_t x;
>> + int32_t y;
>> +} VkOffset2D;
>>
>> typedef struct VkPhysicalDeviceMemoryProperties
>> {
>> @@ -2172,17 +2364,23 @@ typedef struct VkPhysicalDeviceMemoryProperties
>> VkMemoryHeap WINE_VK_ALIGN(8) memoryHeaps[VK_MAX_MEMORY_HEAPS];
>> } VkPhysicalDeviceMemoryProperties;
>>
>> -typedef struct VkPipelineColorBlendStateCreateInfo
>> +typedef struct VkPhysicalDeviceProperties2KHR
>> +{
>> + VkStructureType sType;
>> + void *pNext;
>> + VkPhysicalDeviceProperties WINE_VK_ALIGN(8) properties;
>> +} VkPhysicalDeviceProperties2KHR;
>> +
>> +typedef struct VkPipelineShaderStageCreateInfo
>> {
>> VkStructureType sType;
>> const void *pNext;
>> - VkPipelineColorBlendStateCreateFlags flags;
>> - VkBool32 logicOpEnable;
>> - VkLogicOp logicOp;
>> - uint32_t attachmentCount;
>> - const VkPipelineColorBlendAttachmentState *pAttachments;
>> - float blendConstants[4];
>> -} VkPipelineColorBlendStateCreateInfo;
>> + VkPipelineShaderStageCreateFlags flags;
>> + VkShaderStageFlagBits stage;
>> + VkShaderModule WINE_VK_ALIGN(8) module;
>> + const char *pName;
>> + const VkSpecializationInfo *pSpecializationInfo;
>> +} VkPipelineShaderStageCreateInfo;
>>
>> typedef struct VkPushConstantRange
>> {
>> @@ -2191,36 +2389,41 @@ typedef struct VkPushConstantRange
>> uint32_t size;
>> } VkPushConstantRange;
>>
>> -typedef struct VkRenderPassCreateInfo
>> +typedef struct VkSparseImageFormatProperties
>> {
>> - VkStructureType sType;
>> - const void *pNext;
>> - VkRenderPassCreateFlags flags;
>> - uint32_t attachmentCount;
>> - const VkAttachmentDescription *pAttachments;
>> - uint32_t subpassCount;
>> - const VkSubpassDescription *pSubpasses;
>> - uint32_t dependencyCount;
>> - const VkSubpassDependency *pDependencies;
>> -} VkRenderPassCreateInfo;
>> + VkImageAspectFlags aspectMask;
>> + VkExtent3D imageGranularity;
>> + VkSparseImageFormatFlags flags;
>> +} VkSparseImageFormatProperties;
>>
>> -typedef struct VkStencilOpState
>> +typedef struct VkSparseImageMemoryRequirements
>> {
>> - VkStencilOp failOp;
>> - VkStencilOp passOp;
>> - VkStencilOp depthFailOp;
>> - VkCompareOp compareOp;
>> - uint32_t compareMask;
>> - uint32_t writeMask;
>> - uint32_t reference;
>> -} VkStencilOpState;
>> + VkSparseImageFormatProperties formatProperties;
>> + uint32_t imageMipTailFirstLod;
>> + VkDeviceSize WINE_VK_ALIGN(8) imageMipTailSize;
>> + VkDeviceSize WINE_VK_ALIGN(8) imageMipTailOffset;
>> + VkDeviceSize WINE_VK_ALIGN(8) imageMipTailStride;
>> +} VkSparseImageMemoryRequirements;
>>
>> -typedef struct VkVertexInputBindingDescription
>> +typedef struct VkSurfaceFormatKHR
>> {
>> - uint32_t binding;
>> - uint32_t stride;
>> - VkVertexInputRate inputRate;
>> -} VkVertexInputBindingDescription;
>> + VkFormat format;
>> + VkColorSpaceKHR colorSpace;
>> +} VkSurfaceFormatKHR;
>> +
>> +typedef struct VkWriteDescriptorSet
>> +{
>> + VkStructureType sType;
>> + const void *pNext;
>> + VkDescriptorSet WINE_VK_ALIGN(8) dstSet;
>> + uint32_t dstBinding;
>> + uint32_t dstArrayElement;
>> + uint32_t descriptorCount;
>> + VkDescriptorType descriptorType;
>> + const VkDescriptorImageInfo *pImageInfo;
>> + const VkDescriptorBufferInfo *pBufferInfo;
>> + const VkBufferView *pTexelBufferView;
>> +} VkWriteDescriptorSet;
>>
>> typedef struct VkBindSparseInfo
>> {
>> @@ -2249,48 +2452,36 @@ typedef struct VkComputePipelineCreateInfo
>> int32_t basePipelineIndex;
>> } VkComputePipelineCreateInfo;
>>
>> -typedef struct VkImageResolve
>> +typedef struct VkExtensionProperties
>> {
>> - VkImageSubresourceLayers srcSubresource;
>> - VkOffset3D srcOffset;
>> - VkImageSubresourceLayers dstSubresource;
>> - VkOffset3D dstOffset;
>> - VkExtent3D extent;
>> -} VkImageResolve;
>> + char extensionName[VK_MAX_EXTENSION_NAME_SIZE];
>> + uint32_t specVersion;
>> +} VkExtensionProperties;
>>
>> -typedef struct VkPhysicalDeviceMemoryProperties2KHR
>> +typedef struct VkImageFormatProperties2KHR
>> {
>> VkStructureType sType;
>> void *pNext;
>> - VkPhysicalDeviceMemoryProperties WINE_VK_ALIGN(8) memoryProperties;
>> -} VkPhysicalDeviceMemoryProperties2KHR;
>> + VkImageFormatProperties WINE_VK_ALIGN(8) imageFormatProperties;
>> +} VkImageFormatProperties2KHR;
>>
>> -typedef struct VkPipelineDepthStencilStateCreateInfo
>> +typedef struct VkPhysicalDeviceMemoryProperties2KHR
>> {
>> VkStructureType sType;
>> - const void *pNext;
>> - VkPipelineDepthStencilStateCreateFlags flags;
>> - VkBool32 depthTestEnable;
>> - VkBool32 depthWriteEnable;
>> - VkCompareOp depthCompareOp;
>> - VkBool32 depthBoundsTestEnable;
>> - VkBool32 stencilTestEnable;
>> - VkStencilOpState front;
>> - VkStencilOpState back;
>> - float minDepthBounds;
>> - float maxDepthBounds;
>> -} VkPipelineDepthStencilStateCreateInfo;
>> + void *pNext;
>> + VkPhysicalDeviceMemoryProperties WINE_VK_ALIGN(8) memoryProperties;
>> +} VkPhysicalDeviceMemoryProperties2KHR;
>>
>> -typedef struct VkPipelineVertexInputStateCreateInfo
>> +typedef struct VkPipelineLayoutCreateInfo
>> {
>> VkStructureType sType;
>> const void *pNext;
>> - VkPipelineVertexInputStateCreateFlags flags;
>> - uint32_t vertexBindingDescriptionCount;
>> - const VkVertexInputBindingDescription *pVertexBindingDescriptions;
>> - uint32_t vertexAttributeDescriptionCount;
>> - const VkVertexInputAttributeDescription *pVertexAttributeDescriptions;
>> -} VkPipelineVertexInputStateCreateInfo;
>> + VkPipelineLayoutCreateFlags flags;
>> + uint32_t setLayoutCount;
>> + const VkDescriptorSetLayout *pSetLayouts;
>> + uint32_t pushConstantRangeCount;
>> + const VkPushConstantRange *pPushConstantRanges;
>> +} VkPipelineLayoutCreateInfo;
>>
>> typedef struct VkRect2D
>> {
>> @@ -2305,14 +2496,15 @@ typedef struct VkSparseImageFormatProperties2KHR
>> VkSparseImageFormatProperties properties;
>> } VkSparseImageFormatProperties2KHR;
>>
>> -typedef struct VkWin32SurfaceCreateInfoKHR
>> +typedef struct VkViewport
>> {
>> - VkStructureType sType;
>> - const void *pNext;
>> - VkWin32SurfaceCreateFlagsKHR flags;
>> - HINSTANCE hinstance;
>> - HWND hwnd;
>> -} VkWin32SurfaceCreateInfoKHR;
>> + float x;
>> + float y;
>> + float width;
>> + float height;
>> + float minDepth;
>> + float maxDepth;
>> +} VkViewport;
>>
>> typedef struct VkClearRect
>> {
>> @@ -2321,37 +2513,30 @@ typedef struct VkClearRect
>> uint32_t layerCount;
>> } VkClearRect;
>>
>> -typedef struct VkDrawIndexedIndirectCommand
>> -{
>> - uint32_t indexCount;
>> - uint32_t instanceCount;
>> - uint32_t firstIndex;
>> - int32_t vertexOffset;
>> - uint32_t firstInstance;
>> -} VkDrawIndexedIndirectCommand;
>> -
>> -typedef struct VkInstanceCreateInfo
>> +typedef struct VkDisplayPlaneCapabilitiesKHR
>> {
>> - VkStructureType sType;
>> - const void *pNext;
>> - VkInstanceCreateFlags flags;
>> - const VkApplicationInfo *pApplicationInfo;
>> - uint32_t enabledLayerCount;
>> - const char * const*ppEnabledLayerNames;
>> - uint32_t enabledExtensionCount;
>> - const char * const*ppEnabledExtensionNames;
>> -} VkInstanceCreateInfo;
>> + VkDisplayPlaneAlphaFlagsKHR supportedAlpha;
>> + VkOffset2D minSrcPosition;
>> + VkOffset2D maxSrcPosition;
>> + VkExtent2D minSrcExtent;
>> + VkExtent2D maxSrcExtent;
>> + VkOffset2D minDstPosition;
>> + VkOffset2D maxDstPosition;
>> + VkExtent2D minDstExtent;
>> + VkExtent2D maxDstExtent;
>> +} VkDisplayPlaneCapabilitiesKHR;
>>
>> -typedef struct VkPipelineLayoutCreateInfo
>> +typedef struct VkPipelineColorBlendStateCreateInfo
>> {
>> VkStructureType sType;
>> const void *pNext;
>> - VkPipelineLayoutCreateFlags flags;
>> - uint32_t setLayoutCount;
>> - const VkDescriptorSetLayout *pSetLayouts;
>> - uint32_t pushConstantRangeCount;
>> - const VkPushConstantRange *pPushConstantRanges;
>> -} VkPipelineLayoutCreateInfo;
>> + VkPipelineColorBlendStateCreateFlags flags;
>> + VkBool32 logicOpEnable;
>> + VkLogicOp logicOp;
>> + uint32_t attachmentCount;
>> + const VkPipelineColorBlendAttachmentState *pAttachments;
>> + float blendConstants[4];
>> +} VkPipelineColorBlendStateCreateInfo;
>>
>> typedef struct VkRenderPassBeginInfo
>> {
>> @@ -2364,6 +2549,17 @@ typedef struct VkRenderPassBeginInfo
>> const VkClearValue *pClearValues;
>> } VkRenderPassBeginInfo;
>>
>> +typedef struct VkSubpassDependency
>> +{
>> + uint32_t srcSubpass;
>> + uint32_t dstSubpass;
>> + VkPipelineStageFlags srcStageMask;
>> + VkPipelineStageFlags dstStageMask;
>> + VkAccessFlags srcAccessMask;
>> + VkAccessFlags dstAccessMask;
>> + VkDependencyFlags dependencyFlags;
>> +} VkSubpassDependency;
>> +
>> typedef struct VkDescriptorSetLayoutCreateInfo
>> {
>> VkStructureType sType;
>> @@ -2373,115 +2569,32 @@ typedef struct VkDescriptorSetLayoutCreateInfo
>> const VkDescriptorSetLayoutBinding *pBindings;
>> } VkDescriptorSetLayoutCreateInfo;
>>
>> -typedef struct VkPhysicalDeviceLimits
>> +typedef struct VkPhysicalDeviceFeatures2KHR
>> {
>> - uint32_t maxImageDimension1D;
>> - uint32_t maxImageDimension2D;
>> - uint32_t maxImageDimension3D;
>> - uint32_t maxImageDimensionCube;
>> - uint32_t maxImageArrayLayers;
>> - uint32_t maxTexelBufferElements;
>> - uint32_t maxUniformBufferRange;
>> - uint32_t maxStorageBufferRange;
>> - uint32_t maxPushConstantsSize;
>> - uint32_t maxMemoryAllocationCount;
>> - uint32_t maxSamplerAllocationCount;
>> - VkDeviceSize WINE_VK_ALIGN(8) bufferImageGranularity;
>> - VkDeviceSize WINE_VK_ALIGN(8) sparseAddressSpaceSize;
>> - uint32_t maxBoundDescriptorSets;
>> - uint32_t maxPerStageDescriptorSamplers;
>> - uint32_t maxPerStageDescriptorUniformBuffers;
>> - uint32_t maxPerStageDescriptorStorageBuffers;
>> - uint32_t maxPerStageDescriptorSampledImages;
>> - uint32_t maxPerStageDescriptorStorageImages;
>> - uint32_t maxPerStageDescriptorInputAttachments;
>> - uint32_t maxPerStageResources;
>> - uint32_t maxDescriptorSetSamplers;
>> - uint32_t maxDescriptorSetUniformBuffers;
>> - uint32_t maxDescriptorSetUniformBuffersDynamic;
>> - uint32_t maxDescriptorSetStorageBuffers;
>> - uint32_t maxDescriptorSetStorageBuffersDynamic;
>> - uint32_t maxDescriptorSetSampledImages;
>> - uint32_t maxDescriptorSetStorageImages;
>> - uint32_t maxDescriptorSetInputAttachments;
>> - uint32_t maxVertexInputAttributes;
>> - uint32_t maxVertexInputBindings;
>> - uint32_t maxVertexInputAttributeOffset;
>> - uint32_t maxVertexInputBindingStride;
>> - uint32_t maxVertexOutputComponents;
>> - uint32_t maxTessellationGenerationLevel;
>> - uint32_t maxTessellationPatchSize;
>> - uint32_t maxTessellationControlPerVertexInputComponents;
>> - uint32_t maxTessellationControlPerVertexOutputComponents;
>> - uint32_t maxTessellationControlPerPatchOutputComponents;
>> - uint32_t maxTessellationControlTotalOutputComponents;
>> - uint32_t maxTessellationEvaluationInputComponents;
>> - uint32_t maxTessellationEvaluationOutputComponents;
>> - uint32_t maxGeometryShaderInvocations;
>> - uint32_t maxGeometryInputComponents;
>> - uint32_t maxGeometryOutputComponents;
>> - uint32_t maxGeometryOutputVertices;
>> - uint32_t maxGeometryTotalOutputComponents;
>> - uint32_t maxFragmentInputComponents;
>> - uint32_t maxFragmentOutputAttachments;
>> - uint32_t maxFragmentDualSrcAttachments;
>> - uint32_t maxFragmentCombinedOutputResources;
>> - uint32_t maxComputeSharedMemorySize;
>> - uint32_t maxComputeWorkGroupCount[3];
>> - uint32_t maxComputeWorkGroupInvocations;
>> - uint32_t maxComputeWorkGroupSize[3];
>> - uint32_t subPixelPrecisionBits;
>> - uint32_t subTexelPrecisionBits;
>> - uint32_t mipmapPrecisionBits;
>> - uint32_t maxDrawIndexedIndexValue;
>> - uint32_t maxDrawIndirectCount;
>> - float maxSamplerLodBias;
>> - float maxSamplerAnisotropy;
>> - uint32_t maxViewports;
>> - uint32_t maxViewportDimensions[2];
>> - float viewportBoundsRange[2];
>> - uint32_t viewportSubPixelBits;
>> - size_t minMemoryMapAlignment;
>> - VkDeviceSize WINE_VK_ALIGN(8) minTexelBufferOffsetAlignment;
>> - VkDeviceSize WINE_VK_ALIGN(8) minUniformBufferOffsetAlignment;
>> - VkDeviceSize WINE_VK_ALIGN(8) minStorageBufferOffsetAlignment;
>> - int32_t minTexelOffset;
>> - uint32_t maxTexelOffset;
>> - int32_t minTexelGatherOffset;
>> - uint32_t maxTexelGatherOffset;
>> - float minInterpolationOffset;
>> - float maxInterpolationOffset;
>> - uint32_t subPixelInterpolationOffsetBits;
>> - uint32_t maxFramebufferWidth;
>> - uint32_t maxFramebufferHeight;
>> - uint32_t maxFramebufferLayers;
>> - VkSampleCountFlags framebufferColorSampleCounts;
>> - VkSampleCountFlags framebufferDepthSampleCounts;
>> - VkSampleCountFlags framebufferStencilSampleCounts;
>> - VkSampleCountFlags framebufferNoAttachmentsSampleCounts;
>> - uint32_t maxColorAttachments;
>> - VkSampleCountFlags sampledImageColorSampleCounts;
>> - VkSampleCountFlags sampledImageIntegerSampleCounts;
>> - VkSampleCountFlags sampledImageDepthSampleCounts;
>> - VkSampleCountFlags sampledImageStencilSampleCounts;
>> - VkSampleCountFlags storageImageSampleCounts;
>> - uint32_t maxSampleMaskWords;
>> - VkBool32 timestampComputeAndGraphics;
>> - float timestampPeriod;
>> - uint32_t maxClipDistances;
>> - uint32_t maxCullDistances;
>> - uint32_t maxCombinedClipAndCullDistances;
>> - uint32_t discreteQueuePriorities;
>> - float pointSizeRange[2];
>> - float lineWidthRange[2];
>> - float pointSizeGranularity;
>> - float lineWidthGranularity;
>> - VkBool32 strictLines;
>> - VkBool32 standardSampleLocations;
>> - VkDeviceSize WINE_VK_ALIGN(8) optimalBufferCopyOffsetAlignment;
>> - VkDeviceSize WINE_VK_ALIGN(8) optimalBufferCopyRowPitchAlignment;
>> - VkDeviceSize WINE_VK_ALIGN(8) nonCoherentAtomSize;
>> -} VkPhysicalDeviceLimits;
>> + VkStructureType sType;
>> + void *pNext;
>> + VkPhysicalDeviceFeatures features;
>> +} VkPhysicalDeviceFeatures2KHR;
>> +
>> +typedef struct VkRenderPassCreateInfo
>> +{
>> + VkStructureType sType;
>> + const void *pNext;
>> + VkRenderPassCreateFlags flags;
>> + uint32_t attachmentCount;
>> + const VkAttachmentDescription *pAttachments;
>> + uint32_t subpassCount;
>> + const VkSubpassDescription *pSubpasses;
>> + uint32_t dependencyCount;
>> + const VkSubpassDependency *pDependencies;
>> +} VkRenderPassCreateInfo;
>> +
>> +typedef struct VkFormatProperties2KHR
>> +{
>> + VkStructureType sType;
>> + void *pNext;
>> + VkFormatProperties formatProperties;
>> +} VkFormatProperties2KHR;
>>
>> typedef struct VkPipelineViewportStateCreateInfo
>> {
>> @@ -2517,40 +2630,6 @@ typedef struct VkGraphicsPipelineCreateInfo
>> int32_t basePipelineIndex;
>> } VkGraphicsPipelineCreateInfo;
>>
>> -typedef struct VkSurfaceCapabilitiesKHR
>> -{
>> - uint32_t minImageCount;
>> - uint32_t maxImageCount;
>> - VkExtent2D currentExtent;
>> - VkExtent2D minImageExtent;
>> - VkExtent2D maxImageExtent;
>> - uint32_t maxImageArrayLayers;
>> - VkSurfaceTransformFlagsKHR supportedTransforms;
>> - VkSurfaceTransformFlagBitsKHR currentTransform;
>> - VkCompositeAlphaFlagsKHR supportedCompositeAlpha;
>> - VkImageUsageFlags supportedUsageFlags;
>> -} VkSurfaceCapabilitiesKHR;
>> -
>> -typedef struct VkPhysicalDeviceProperties
>> -{
>> - uint32_t apiVersion;
>> - uint32_t driverVersion;
>> - uint32_t vendorID;
>> - uint32_t deviceID;
>> - VkPhysicalDeviceType deviceType;
>> - char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
>> - uint8_t pipelineCacheUUID[VK_UUID_SIZE];
>> - VkPhysicalDeviceLimits WINE_VK_ALIGN(8) limits;
>> - VkPhysicalDeviceSparseProperties sparseProperties;
>> -} VkPhysicalDeviceProperties;
>> -
>> -typedef struct VkPhysicalDeviceProperties2KHR
>> -{
>> - VkStructureType sType;
>> - void *pNext;
>> - VkPhysicalDeviceProperties WINE_VK_ALIGN(8) properties;
>> -} VkPhysicalDeviceProperties2KHR;
>> -
>> VkResult VKAPI_CALL vkAcquireNextImageKHR(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t *pImageIndex);
>> VkResult VKAPI_CALL vkAllocateCommandBuffers(VkDevice device, const VkCommandBufferAllocateInfo *pAllocateInfo, VkCommandBuffer *pCommandBuffers);
>> VkResult VKAPI_CALL vkAllocateDescriptorSets(VkDevice device, const VkDescriptorSetAllocateInfo *pAllocateInfo, VkDescriptorSet *pDescriptorSets);
>> @@ -2616,6 +2695,8 @@ VkResult VKAPI_CALL vkCreateDescriptorPool(VkDevice device, const VkDescriptorPo
>> VkResult VKAPI_CALL vkCreateDescriptorSetLayout(VkDevice device, const VkDescriptorSetLayoutCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkDescriptorSetLayout *pSetLayout);
>> VkResult VKAPI_CALL vkCreateDescriptorUpdateTemplateKHR(VkDevice device, const VkDescriptorUpdateTemplateCreateInfoKHR *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkDescriptorUpdateTemplateKHR *pDescriptorUpdateTemplate);
>> VkResult VKAPI_CALL vkCreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkDevice *pDevice);
>> +VkResult VKAPI_CALL vkCreateDisplayModeKHR(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkDisplayModeKHR *pMode);
>> +VkResult VKAPI_CALL vkCreateDisplayPlaneSurfaceKHR(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
>> VkResult VKAPI_CALL vkCreateEvent(VkDevice device, const VkEventCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkEvent *pEvent);
>> VkResult VKAPI_CALL vkCreateFence(VkDevice device, const VkFenceCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkFence *pFence);
>> VkResult VKAPI_CALL vkCreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkFramebuffer *pFramebuffer);
>> @@ -2670,12 +2751,17 @@ void VKAPI_CALL vkGetBufferMemoryRequirements(VkDevice device, VkBuffer buffer,
>> void VKAPI_CALL vkGetDeviceMemoryCommitment(VkDevice device, VkDeviceMemory memory, VkDeviceSize *pCommittedMemoryInBytes);
>> PFN_vkVoidFunction VKAPI_CALL vkGetDeviceProcAddr(VkDevice device, const char *pName);
>> void VKAPI_CALL vkGetDeviceQueue(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue *pQueue);
>> +VkResult VKAPI_CALL vkGetDisplayModePropertiesKHR(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t *pPropertyCount, VkDisplayModePropertiesKHR *pProperties);
>> +VkResult VKAPI_CALL vkGetDisplayPlaneCapabilitiesKHR(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR *pCapabilities);
>> +VkResult VKAPI_CALL vkGetDisplayPlaneSupportedDisplaysKHR(VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t *pDisplayCount, VkDisplayKHR *pDisplays);
>> VkResult VKAPI_CALL vkGetEventStatus(VkDevice device, VkEvent event);
>> VkResult VKAPI_CALL vkGetFenceStatus(VkDevice device, VkFence fence);
>> void VKAPI_CALL vkGetImageMemoryRequirements(VkDevice device, VkImage image, VkMemoryRequirements *pMemoryRequirements);
>> void VKAPI_CALL vkGetImageSparseMemoryRequirements(VkDevice device, VkImage image, uint32_t *pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements *pSparseMemoryRequirements);
>> void VKAPI_CALL vkGetImageSubresourceLayout(VkDevice device, VkImage image, const VkImageSubresource *pSubresource, VkSubresourceLayout *pLayout);
>> PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(VkInstance instance, const char *pName);
>> +VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlanePropertiesKHR(VkPhysicalDevice physicalDevice, uint32_t *pPropertyCount, VkDisplayPlanePropertiesKHR *pProperties);
>> +VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPropertiesKHR(VkPhysicalDevice physicalDevice, uint32_t *pPropertyCount, VkDisplayPropertiesKHR *pProperties);
>> void VKAPI_CALL vkGetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures *pFeatures);
>> void VKAPI_CALL vkGetPhysicalDeviceFeatures2KHR(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2KHR *pFeatures);
>> void VKAPI_CALL vkGetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties *pFormatProperties);
>> diff --git a/include/wine/vulkan_driver.h b/include/wine/vulkan_driver.h
>> index 60d16dd52a..d130d2f11b 100644
>> --- a/include/wine/vulkan_driver.h
>> +++ b/include/wine/vulkan_driver.h
>> @@ -4,7 +4,7 @@
>> #define __WINE_VULKAN_DRIVER_H
>>
>> /* Wine internal vulkan driver version, needs to be bumped upon vulkan_funcs changes. */
>> -#define WINE_VULKAN_DRIVER_VERSION 3
>> +#define WINE_VULKAN_DRIVER_VERSION 4
>>
>> struct vulkan_funcs
>> {
>> @@ -13,6 +13,8 @@ struct vulkan_funcs
>> * tables part of dispatchable Vulkan objects such as VkInstance or vkDevice.
>> */
>> VkResult (*p_vkAcquireNextImageKHR)(VkDevice, VkSwapchainKHR, uint64_t, VkSemaphore, VkFence, uint32_t *);
>> + VkResult (*p_vkCreateDisplayModeKHR)(VkPhysicalDevice, VkDisplayKHR, const VkDisplayModeCreateInfoKHR *, const VkAllocationCallbacks *, VkDisplayModeKHR *);
>> + VkResult (*p_vkCreateDisplayPlaneSurfaceKHR)(VkInstance, const VkDisplaySurfaceCreateInfoKHR *, const VkAllocationCallbacks *, VkSurfaceKHR *);
>> VkResult (*p_vkCreateInstance)(const VkInstanceCreateInfo *, const VkAllocationCallbacks *, VkInstance *);
>> VkResult (*p_vkCreateSwapchainKHR)(VkDevice, const VkSwapchainCreateInfoKHR *, const VkAllocationCallbacks *, VkSwapchainKHR *);
>> VkResult (*p_vkCreateWin32SurfaceKHR)(VkInstance, const VkWin32SurfaceCreateInfoKHR *, const VkAllocationCallbacks *, VkSurfaceKHR *);
>> @@ -21,7 +23,12 @@ struct vulkan_funcs
>> void (*p_vkDestroySwapchainKHR)(VkDevice, VkSwapchainKHR, const VkAllocationCallbacks *);
>> VkResult (*p_vkEnumerateInstanceExtensionProperties)(const char *, uint32_t *, VkExtensionProperties *);
>> void * (*p_vkGetDeviceProcAddr)(VkDevice, const char *);
>> + VkResult (*p_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice, VkDisplayKHR, uint32_t *, VkDisplayModePropertiesKHR *);
>> + VkResult (*p_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice, VkDisplayModeKHR, uint32_t, VkDisplayPlaneCapabilitiesKHR *);
>> + VkResult (*p_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice, uint32_t, uint32_t *, VkDisplayKHR *);
>> void * (*p_vkGetInstanceProcAddr)(VkInstance, const char *);
>> + VkResult (*p_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice, uint32_t *, VkDisplayPlanePropertiesKHR *);
>> + VkResult (*p_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhysicalDevice, uint32_t *, VkDisplayPropertiesKHR *);
>> VkResult (*p_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)(VkPhysicalDevice, VkSurfaceKHR, VkSurfaceCapabilitiesKHR *);
>> VkResult (*p_vkGetPhysicalDeviceSurfaceFormatsKHR)(VkPhysicalDevice, VkSurfaceKHR, uint32_t *, VkSurfaceFormatKHR *);
>> VkResult (*p_vkGetPhysicalDeviceSurfacePresentModesKHR)(VkPhysicalDevice, VkSurfaceKHR, uint32_t *, VkPresentModeKHR *);
>> --
>> 2.14.3
>>
>>
>>
More information about the wine-devel
mailing list