From: Georg Lehmann dadschoorse@gmail.com
--- dlls/winevulkan/loader_thunks.c | 52 +++++ dlls/winevulkan/loader_thunks.h | 38 ++++ dlls/winevulkan/make_vulkan | 3 +- dlls/winevulkan/vulkan_thunks.c | 371 ++++++++++++++++++++++++++++++++ dlls/winevulkan/vulkan_thunks.h | 8 + dlls/winevulkan/winevulkan.json | 2 +- include/wine/vulkan.h | 109 +++++++++- 7 files changed, 573 insertions(+), 10 deletions(-)
diff --git a/dlls/winevulkan/loader_thunks.c b/dlls/winevulkan/loader_thunks.c index d4feecae24d..db3550b8cad 100644 --- a/dlls/winevulkan/loader_thunks.c +++ b/dlls/winevulkan/loader_thunks.c @@ -388,6 +388,16 @@ void WINAPI vkCmdBindPipelineShaderGroupNV(VkCommandBuffer commandBuffer, VkPipe UNIX_CALL(vkCmdBindPipelineShaderGroupNV, ¶ms); }
+void WINAPI vkCmdBindShadersEXT(VkCommandBuffer commandBuffer, uint32_t stageCount, const VkShaderStageFlagBits *pStages, const VkShaderEXT *pShaders) +{ + struct vkCmdBindShadersEXT_params params; + params.commandBuffer = commandBuffer; + params.stageCount = stageCount; + params.pStages = pStages; + params.pShaders = pShaders; + UNIX_CALL(vkCmdBindShadersEXT, ¶ms); +} + void WINAPI vkCmdBindShadingRateImageNV(VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout) { struct vkCmdBindShadingRateImageNV_params params; @@ -3014,6 +3024,20 @@ VkResult WINAPI vkCreateShaderModule(VkDevice device, const VkShaderModuleCreate return params.result; }
+VkResult WINAPI vkCreateShadersEXT(VkDevice device, uint32_t createInfoCount, const VkShaderCreateInfoEXT *pCreateInfos, const VkAllocationCallbacks *pAllocator, VkShaderEXT *pShaders) +{ + struct vkCreateShadersEXT_params params; + NTSTATUS status; + params.device = device; + params.createInfoCount = createInfoCount; + params.pCreateInfos = pCreateInfos; + params.pAllocator = pAllocator; + params.pShaders = pShaders; + status = UNIX_CALL(vkCreateShadersEXT, ¶ms); + assert(!status); + return params.result; +} + VkResult WINAPI vkCreateSwapchainKHR(VkDevice device, const VkSwapchainCreateInfoKHR *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkSwapchainKHR *pSwapchain) { struct vkCreateSwapchainKHR_params params; @@ -3454,6 +3478,17 @@ void WINAPI vkDestroySemaphore(VkDevice device, VkSemaphore semaphore, const VkA assert(!status); }
+void WINAPI vkDestroyShaderEXT(VkDevice device, VkShaderEXT shader, const VkAllocationCallbacks *pAllocator) +{ + struct vkDestroyShaderEXT_params params; + NTSTATUS status; + params.device = device; + params.shader = shader; + params.pAllocator = pAllocator; + status = UNIX_CALL(vkDestroyShaderEXT, ¶ms); + assert(!status); +} + void WINAPI vkDestroyShaderModule(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks *pAllocator) { struct vkDestroyShaderModule_params params; @@ -5079,6 +5114,19 @@ VkResult WINAPI vkGetSemaphoreCounterValueKHR(VkDevice device, VkSemaphore semap return params.result; }
+VkResult WINAPI vkGetShaderBinaryDataEXT(VkDevice device, VkShaderEXT shader, size_t *pDataSize, void *pData) +{ + struct vkGetShaderBinaryDataEXT_params params; + NTSTATUS status; + params.device = device; + params.shader = shader; + params.pDataSize = pDataSize; + params.pData = pData; + status = UNIX_CALL(vkGetShaderBinaryDataEXT, ¶ms); + assert(!status); + return params.result; +} + VkResult WINAPI vkGetShaderInfoAMD(VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, size_t *pInfoSize, void *pInfo) { struct vkGetShaderInfoAMD_params params; @@ -5744,6 +5792,7 @@ static const struct vulkan_func vk_device_dispatch_table[] = {"vkCmdBindInvocationMaskHUAWEI", vkCmdBindInvocationMaskHUAWEI}, {"vkCmdBindPipeline", vkCmdBindPipeline}, {"vkCmdBindPipelineShaderGroupNV", vkCmdBindPipelineShaderGroupNV}, + {"vkCmdBindShadersEXT", vkCmdBindShadersEXT}, {"vkCmdBindShadingRateImageNV", vkCmdBindShadingRateImageNV}, {"vkCmdBindTransformFeedbackBuffersEXT", vkCmdBindTransformFeedbackBuffersEXT}, {"vkCmdBindVertexBuffers", vkCmdBindVertexBuffers}, @@ -6000,6 +6049,7 @@ static const struct vulkan_func vk_device_dispatch_table[] = {"vkCreateSamplerYcbcrConversionKHR", vkCreateSamplerYcbcrConversionKHR}, {"vkCreateSemaphore", vkCreateSemaphore}, {"vkCreateShaderModule", vkCreateShaderModule}, + {"vkCreateShadersEXT", vkCreateShadersEXT}, {"vkCreateSwapchainKHR", vkCreateSwapchainKHR}, {"vkCreateValidationCacheEXT", vkCreateValidationCacheEXT}, {"vkDebugMarkerSetObjectNameEXT", vkDebugMarkerSetObjectNameEXT}, @@ -6037,6 +6087,7 @@ static const struct vulkan_func vk_device_dispatch_table[] = {"vkDestroySamplerYcbcrConversion", vkDestroySamplerYcbcrConversion}, {"vkDestroySamplerYcbcrConversionKHR", vkDestroySamplerYcbcrConversionKHR}, {"vkDestroySemaphore", vkDestroySemaphore}, + {"vkDestroyShaderEXT", vkDestroyShaderEXT}, {"vkDestroyShaderModule", vkDestroyShaderModule}, {"vkDestroySwapchainKHR", vkDestroySwapchainKHR}, {"vkDestroyValidationCacheEXT", vkDestroyValidationCacheEXT}, @@ -6128,6 +6179,7 @@ static const struct vulkan_func vk_device_dispatch_table[] = {"vkGetSamplerOpaqueCaptureDescriptorDataEXT", vkGetSamplerOpaqueCaptureDescriptorDataEXT}, {"vkGetSemaphoreCounterValue", vkGetSemaphoreCounterValue}, {"vkGetSemaphoreCounterValueKHR", vkGetSemaphoreCounterValueKHR}, + {"vkGetShaderBinaryDataEXT", vkGetShaderBinaryDataEXT}, {"vkGetShaderInfoAMD", vkGetShaderInfoAMD}, {"vkGetShaderModuleCreateInfoIdentifierEXT", vkGetShaderModuleCreateInfoIdentifierEXT}, {"vkGetShaderModuleIdentifierEXT", vkGetShaderModuleIdentifierEXT}, diff --git a/dlls/winevulkan/loader_thunks.h b/dlls/winevulkan/loader_thunks.h index 28cb55fe111..90145cc246b 100644 --- a/dlls/winevulkan/loader_thunks.h +++ b/dlls/winevulkan/loader_thunks.h @@ -52,6 +52,7 @@ enum unix_call unix_vkCmdBindInvocationMaskHUAWEI, unix_vkCmdBindPipeline, unix_vkCmdBindPipelineShaderGroupNV, + unix_vkCmdBindShadersEXT, unix_vkCmdBindShadingRateImageNV, unix_vkCmdBindTransformFeedbackBuffersEXT, unix_vkCmdBindVertexBuffers, @@ -312,6 +313,7 @@ enum unix_call unix_vkCreateSamplerYcbcrConversionKHR, unix_vkCreateSemaphore, unix_vkCreateShaderModule, + unix_vkCreateShadersEXT, unix_vkCreateSwapchainKHR, unix_vkCreateValidationCacheEXT, unix_vkCreateWin32SurfaceKHR, @@ -354,6 +356,7 @@ enum unix_call unix_vkDestroySamplerYcbcrConversion, unix_vkDestroySamplerYcbcrConversionKHR, unix_vkDestroySemaphore, + unix_vkDestroyShaderEXT, unix_vkDestroyShaderModule, unix_vkDestroySurfaceKHR, unix_vkDestroySwapchainKHR, @@ -497,6 +500,7 @@ enum unix_call unix_vkGetSamplerOpaqueCaptureDescriptorDataEXT, unix_vkGetSemaphoreCounterValue, unix_vkGetSemaphoreCounterValueKHR, + unix_vkGetShaderBinaryDataEXT, unix_vkGetShaderInfoAMD, unix_vkGetShaderModuleCreateInfoIdentifierEXT, unix_vkGetShaderModuleIdentifierEXT, @@ -834,6 +838,14 @@ struct vkCmdBindPipelineShaderGroupNV_params uint32_t groupIndex; };
+struct vkCmdBindShadersEXT_params +{ + VkCommandBuffer commandBuffer; + uint32_t stageCount; + const VkShaderStageFlagBits *pStages; + const VkShaderEXT *pShaders; +}; + struct vkCmdBindShadingRateImageNV_params { VkCommandBuffer commandBuffer; @@ -2879,6 +2891,16 @@ struct vkCreateShaderModule_params VkResult result; };
+struct vkCreateShadersEXT_params +{ + VkDevice device; + uint32_t createInfoCount; + const VkShaderCreateInfoEXT *pCreateInfos; + const VkAllocationCallbacks *pAllocator; + VkShaderEXT *pShaders; + VkResult result; +}; + struct vkCreateSwapchainKHR_params { VkDevice device; @@ -3182,6 +3204,13 @@ struct vkDestroySemaphore_params const VkAllocationCallbacks *pAllocator; };
+struct vkDestroyShaderEXT_params +{ + VkDevice device; + VkShaderEXT DECLSPEC_ALIGN(8) shader; + const VkAllocationCallbacks *pAllocator; +}; + struct vkDestroyShaderModule_params { VkDevice device; @@ -4291,6 +4320,15 @@ struct vkGetSemaphoreCounterValueKHR_params VkResult result; };
+struct vkGetShaderBinaryDataEXT_params +{ + VkDevice device; + VkShaderEXT DECLSPEC_ALIGN(8) shader; + size_t *pDataSize; + void *pData; + VkResult result; +}; + struct vkGetShaderInfoAMD_params { VkDevice device; diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan index 6a77824d0e0..89e0c22d051 100755 --- a/dlls/winevulkan/make_vulkan +++ b/dlls/winevulkan/make_vulkan @@ -65,7 +65,7 @@ from enum import Enum LOGGER = logging.Logger("vulkan") LOGGER.addHandler(logging.StreamHandler())
-VK_XML_VERSION = "1.3.242" +VK_XML_VERSION = "1.3.246" WINE_VK_VERSION = (1, 3)
# Filenames to create. @@ -100,6 +100,7 @@ UNSUPPORTED_EXTENSIONS = [ "VK_GOOGLE_display_timing", "VK_KHR_external_fence_win32", "VK_KHR_external_semaphore_win32", + "VK_KHR_map_memory2", # Needs wow64 handling and is useless for now. # Relates to external_semaphore and needs type conversions in bitflags. "VK_KHR_shared_presentable_image", # Needs WSI work. "VK_KHR_video_queue", # TODO Video extensions use separate headers + xml diff --git a/dlls/winevulkan/vulkan_thunks.c b/dlls/winevulkan/vulkan_thunks.c index 7f9fad002ef..857c2d70b9e 100644 --- a/dlls/winevulkan/vulkan_thunks.c +++ b/dlls/winevulkan/vulkan_thunks.c @@ -1286,6 +1286,7 @@ typedef struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfo32 uint32_t requiredSubgroupSize; } VkPipelineShaderStageRequiredSubgroupSizeCreateInfo32; typedef VkPipelineShaderStageRequiredSubgroupSizeCreateInfo32 VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT32; +typedef VkPipelineShaderStageRequiredSubgroupSizeCreateInfo32 VkShaderRequiredSubgroupSizeCreateInfoEXT32;
typedef struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT32 { @@ -2802,6 +2803,22 @@ typedef struct VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM32 VkBool32 multiviewPerViewRenderAreas; } VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM32;
+typedef struct VkPhysicalDeviceShaderObjectFeaturesEXT32 +{ + VkStructureType sType; + PTR32 pNext; + VkBool32 shaderObject; +} VkPhysicalDeviceShaderObjectFeaturesEXT32; + +typedef struct VkPhysicalDeviceShaderTileImageFeaturesEXT32 +{ + VkStructureType sType; + PTR32 pNext; + VkBool32 shaderTileImageColorReadAccess; + VkBool32 shaderTileImageDepthReadAccess; + VkBool32 shaderTileImageStencilReadAccess; +} VkPhysicalDeviceShaderTileImageFeaturesEXT32; + typedef struct VkDeviceCreateInfo32 { VkStructureType sType; @@ -3892,6 +3909,24 @@ typedef struct VkSemaphoreCreateInfo32 VkSemaphoreCreateFlags flags; } VkSemaphoreCreateInfo32;
+typedef struct VkShaderCreateInfoEXT32 +{ + VkStructureType sType; + PTR32 pNext; + VkShaderCreateFlagsEXT flags; + VkShaderStageFlagBits stage; + VkShaderStageFlags nextStage; + VkShaderCodeTypeEXT codeType; + PTR32 codeSize; + PTR32 pCode; + PTR32 pName; + uint32_t setLayoutCount; + PTR32 pSetLayouts; + uint32_t pushConstantRangeCount; + PTR32 pPushConstantRanges; + PTR32 pSpecializationInfo; +} VkShaderCreateInfoEXT32; + typedef struct VkDeviceGroupSwapchainCreateInfoKHR32 { VkStructureType sType; @@ -5271,6 +5306,7 @@ typedef struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI32 uint32_t maxWorkGroupCount[3]; uint32_t maxWorkGroupSize[3]; uint32_t maxOutputClusterCount; + VkDeviceSize DECLSPEC_ALIGN(8) indirectBufferOffsetAlignment; } VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI32;
typedef struct VkPhysicalDeviceLineRasterizationPropertiesEXT32 @@ -5645,6 +5681,23 @@ typedef struct VkPhysicalDeviceShaderCorePropertiesARM32 uint32_t fmaRate; } VkPhysicalDeviceShaderCorePropertiesARM32;
+typedef struct VkPhysicalDeviceShaderObjectPropertiesEXT32 +{ + VkStructureType sType; + PTR32 pNext; + uint8_t shaderBinaryUUID[VK_UUID_SIZE]; + uint32_t shaderBinaryVersion; +} VkPhysicalDeviceShaderObjectPropertiesEXT32; + +typedef struct VkPhysicalDeviceShaderTileImagePropertiesEXT32 +{ + VkStructureType sType; + PTR32 pNext; + VkBool32 shaderTileImageCoherentReadAccelerated; + VkBool32 shaderTileImageReadSampleFromPixelRateInvocation; + VkBool32 shaderTileImageReadFromHelperInvocation; +} VkPhysicalDeviceShaderTileImagePropertiesEXT32; + typedef struct VkPhysicalDeviceProperties232 { VkStructureType sType; @@ -11589,6 +11642,30 @@ static inline void convert_VkDeviceCreateInfo_win64_to_host(struct conversion_co out_header = (void *)out_ext; break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT: + { + VkPhysicalDeviceShaderObjectFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkPhysicalDeviceShaderObjectFeaturesEXT *in_ext = (const VkPhysicalDeviceShaderObjectFeaturesEXT *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT; + out_ext->pNext = NULL; + out_ext->shaderObject = in_ext->shaderObject; + out_header->pNext = (void *)out_ext; + out_header = (void *)out_ext; + break; + } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT: + { + VkPhysicalDeviceShaderTileImageFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkPhysicalDeviceShaderTileImageFeaturesEXT *in_ext = (const VkPhysicalDeviceShaderTileImageFeaturesEXT *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT; + out_ext->pNext = NULL; + out_ext->shaderTileImageColorReadAccess = in_ext->shaderTileImageColorReadAccess; + out_ext->shaderTileImageDepthReadAccess = in_ext->shaderTileImageDepthReadAccess; + out_ext->shaderTileImageStencilReadAccess = in_ext->shaderTileImageStencilReadAccess; + out_header->pNext = (void *)out_ext; + out_header = (void *)out_ext; + break; + } default: FIXME("Unhandled sType %u.\n", in_header->sType); break; @@ -13484,6 +13561,30 @@ static inline void convert_VkDeviceCreateInfo_win32_to_host(struct conversion_co out_header = (void *)out_ext; break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT: + { + VkPhysicalDeviceShaderObjectFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkPhysicalDeviceShaderObjectFeaturesEXT32 *in_ext = (const VkPhysicalDeviceShaderObjectFeaturesEXT32 *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT; + out_ext->pNext = NULL; + out_ext->shaderObject = in_ext->shaderObject; + out_header->pNext = (void *)out_ext; + out_header = (void *)out_ext; + break; + } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT: + { + VkPhysicalDeviceShaderTileImageFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkPhysicalDeviceShaderTileImageFeaturesEXT32 *in_ext = (const VkPhysicalDeviceShaderTileImageFeaturesEXT32 *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT; + out_ext->pNext = NULL; + out_ext->shaderTileImageColorReadAccess = in_ext->shaderTileImageColorReadAccess; + out_ext->shaderTileImageDepthReadAccess = in_ext->shaderTileImageDepthReadAccess; + out_ext->shaderTileImageStencilReadAccess = in_ext->shaderTileImageStencilReadAccess; + out_header->pNext = (void *)out_ext; + out_header = (void *)out_ext; + break; + } default: FIXME("Unhandled sType %u.\n", in_header->sType); break; @@ -16470,6 +16571,66 @@ static inline void convert_VkShaderModuleCreateInfo_win32_to_host(struct convers } }
+static inline void convert_VkShaderCreateInfoEXT_win32_to_host(struct conversion_context *ctx, const VkShaderCreateInfoEXT32 *in, VkShaderCreateInfoEXT *out) +{ + const VkBaseInStructure32 *in_header; + VkBaseOutStructure *out_header = (void *)out; + + if (!in) return; + + out->sType = in->sType; + out->pNext = NULL; + out->flags = in->flags; + out->stage = in->stage; + out->nextStage = in->nextStage; + out->codeType = in->codeType; + out->codeSize = in->codeSize; + out->pCode = (const void *)UlongToPtr(in->pCode); + out->pName = (const char *)UlongToPtr(in->pName); + out->setLayoutCount = in->setLayoutCount; + out->pSetLayouts = (const VkDescriptorSetLayout *)UlongToPtr(in->pSetLayouts); + out->pushConstantRangeCount = in->pushConstantRangeCount; + out->pPushConstantRanges = (const VkPushConstantRange *)UlongToPtr(in->pPushConstantRanges); + out->pSpecializationInfo = convert_VkSpecializationInfo_array_win32_to_host(ctx, (const VkSpecializationInfo32 *)UlongToPtr(in->pSpecializationInfo), 1); + + for (in_header = UlongToPtr(in->pNext); in_header; in_header = UlongToPtr(in_header->pNext)) + { + switch (in_header->sType) + { + case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO: + { + VkPipelineShaderStageRequiredSubgroupSizeCreateInfo *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkPipelineShaderStageRequiredSubgroupSizeCreateInfo32 *in_ext = (const VkPipelineShaderStageRequiredSubgroupSizeCreateInfo32 *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO; + out_ext->pNext = NULL; + out_ext->requiredSubgroupSize = in_ext->requiredSubgroupSize; + out_header->pNext = (void *)out_ext; + out_header = (void *)out_ext; + break; + } + default: + FIXME("Unhandled sType %u.\n", in_header->sType); + break; + } + } +} + +static inline const VkShaderCreateInfoEXT *convert_VkShaderCreateInfoEXT_array_win32_to_host(struct conversion_context *ctx, const VkShaderCreateInfoEXT32 *in, uint32_t count) +{ + VkShaderCreateInfoEXT *out; + unsigned int i; + + if (!in || !count) return NULL; + + out = conversion_context_alloc(ctx, count * sizeof(*out)); + for (i = 0; i < count; i++) + { + convert_VkShaderCreateInfoEXT_win32_to_host(ctx, &in[i], &out[i]); + } + + return out; +} + #ifdef _WIN64 static inline void convert_VkSwapchainCreateInfoKHR_win64_to_host(const VkSwapchainCreateInfoKHR *in, VkSwapchainCreateInfoKHR *out) { @@ -19914,6 +20075,30 @@ static inline void convert_VkPhysicalDeviceFeatures2_win32_to_host(struct conver out_header = (void *)out_ext; break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT: + { + VkPhysicalDeviceShaderObjectFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkPhysicalDeviceShaderObjectFeaturesEXT32 *in_ext = (const VkPhysicalDeviceShaderObjectFeaturesEXT32 *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT; + out_ext->pNext = NULL; + out_ext->shaderObject = in_ext->shaderObject; + out_header->pNext = (void *)out_ext; + out_header = (void *)out_ext; + break; + } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT: + { + VkPhysicalDeviceShaderTileImageFeaturesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + const VkPhysicalDeviceShaderTileImageFeaturesEXT32 *in_ext = (const VkPhysicalDeviceShaderTileImageFeaturesEXT32 *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT; + out_ext->pNext = NULL; + out_ext->shaderTileImageColorReadAccess = in_ext->shaderTileImageColorReadAccess; + out_ext->shaderTileImageDepthReadAccess = in_ext->shaderTileImageDepthReadAccess; + out_ext->shaderTileImageStencilReadAccess = in_ext->shaderTileImageStencilReadAccess; + out_header->pNext = (void *)out_ext; + out_header = (void *)out_ext; + break; + } default: FIXME("Unhandled sType %u.\n", in_header->sType); break; @@ -21453,6 +21638,26 @@ static inline void convert_VkPhysicalDeviceFeatures2_host_to_win32(const VkPhysi out_header = (void *)out_ext; break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT: + { + VkPhysicalDeviceShaderObjectFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT); + const VkPhysicalDeviceShaderObjectFeaturesEXT *in_ext = (const VkPhysicalDeviceShaderObjectFeaturesEXT *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT; + out_ext->shaderObject = in_ext->shaderObject; + out_header = (void *)out_ext; + break; + } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT: + { + VkPhysicalDeviceShaderTileImageFeaturesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT); + const VkPhysicalDeviceShaderTileImageFeaturesEXT *in_ext = (const VkPhysicalDeviceShaderTileImageFeaturesEXT *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT; + out_ext->shaderTileImageColorReadAccess = in_ext->shaderTileImageColorReadAccess; + out_ext->shaderTileImageDepthReadAccess = in_ext->shaderTileImageDepthReadAccess; + out_ext->shaderTileImageStencilReadAccess = in_ext->shaderTileImageStencilReadAccess; + out_header = (void *)out_ext; + break; + } default: break; } @@ -22743,6 +22948,24 @@ static inline void convert_VkPhysicalDeviceProperties2_win32_to_host(struct conv out_header = (void *)out_ext; break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT: + { + VkPhysicalDeviceShaderObjectPropertiesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT; + out_ext->pNext = NULL; + out_header->pNext = (void *)out_ext; + out_header = (void *)out_ext; + break; + } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT: + { + VkPhysicalDeviceShaderTileImagePropertiesEXT *out_ext = conversion_context_alloc(ctx, sizeof(*out_ext)); + out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT; + out_ext->pNext = NULL; + out_header->pNext = (void *)out_ext; + out_header = (void *)out_ext; + break; + } default: FIXME("Unhandled sType %u.\n", in_header->sType); break; @@ -23351,6 +23574,7 @@ static inline void convert_VkPhysicalDeviceProperties2_host_to_win32(const VkPhy memcpy(out_ext->maxWorkGroupCount, in_ext->maxWorkGroupCount, 3 * sizeof(uint32_t)); memcpy(out_ext->maxWorkGroupSize, in_ext->maxWorkGroupSize, 3 * sizeof(uint32_t)); out_ext->maxOutputClusterCount = in_ext->maxOutputClusterCount; + out_ext->indirectBufferOffsetAlignment = in_ext->indirectBufferOffsetAlignment; out_header = (void *)out_ext; break; } @@ -23771,6 +23995,27 @@ static inline void convert_VkPhysicalDeviceProperties2_host_to_win32(const VkPhy out_header = (void *)out_ext; break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT: + { + VkPhysicalDeviceShaderObjectPropertiesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT); + const VkPhysicalDeviceShaderObjectPropertiesEXT *in_ext = (const VkPhysicalDeviceShaderObjectPropertiesEXT *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT; + memcpy(out_ext->shaderBinaryUUID, in_ext->shaderBinaryUUID, VK_UUID_SIZE * sizeof(uint8_t)); + out_ext->shaderBinaryVersion = in_ext->shaderBinaryVersion; + out_header = (void *)out_ext; + break; + } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT: + { + VkPhysicalDeviceShaderTileImagePropertiesEXT32 *out_ext = find_next_struct32(out_header, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT); + const VkPhysicalDeviceShaderTileImagePropertiesEXT *in_ext = (const VkPhysicalDeviceShaderTileImagePropertiesEXT *)in_header; + out_ext->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT; + out_ext->shaderTileImageCoherentReadAccelerated = in_ext->shaderTileImageCoherentReadAccelerated; + out_ext->shaderTileImageReadSampleFromPixelRateInvocation = in_ext->shaderTileImageReadSampleFromPixelRateInvocation; + out_ext->shaderTileImageReadFromHelperInvocation = in_ext->shaderTileImageReadFromHelperInvocation; + out_header = (void *)out_ext; + break; + } default: break; } @@ -26764,6 +27009,28 @@ static void thunk32_vkCmdBindPipelineShaderGroupNV(void *args) wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdBindPipelineShaderGroupNV(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->pipelineBindPoint, params->pipeline, params->groupIndex); }
+#ifdef _WIN64 +static void thunk64_vkCmdBindShadersEXT(void *args) +{ + struct vkCmdBindShadersEXT_params *params = args; + + wine_cmd_buffer_from_handle(params->commandBuffer)->device->funcs.p_vkCmdBindShadersEXT(wine_cmd_buffer_from_handle(params->commandBuffer)->command_buffer, params->stageCount, params->pStages, params->pShaders); +} +#endif /* _WIN64 */ + +static void thunk32_vkCmdBindShadersEXT(void *args) +{ + struct + { + PTR32 commandBuffer; + uint32_t stageCount; + PTR32 pStages; + PTR32 pShaders; + } *params = args; + + wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->device->funcs.p_vkCmdBindShadersEXT(wine_cmd_buffer_from_handle((VkCommandBuffer)UlongToPtr(params->commandBuffer))->command_buffer, params->stageCount, (const VkShaderStageFlagBits *)UlongToPtr(params->pStages), (const VkShaderEXT *)UlongToPtr(params->pShaders)); +} + #ifdef _WIN64 static void thunk64_vkCmdBindShadingRateImageNV(void *args) { @@ -33225,6 +33492,41 @@ static NTSTATUS thunk32_vkCreateShaderModule(void *args) return STATUS_SUCCESS; }
+#ifdef _WIN64 +static NTSTATUS thunk64_vkCreateShadersEXT(void *args) +{ + struct vkCreateShadersEXT_params *params = args; + + TRACE("%p, %u, %p, %p, %p\n", params->device, params->createInfoCount, params->pCreateInfos, params->pAllocator, params->pShaders); + + params->result = wine_device_from_handle(params->device)->funcs.p_vkCreateShadersEXT(wine_device_from_handle(params->device)->device, params->createInfoCount, params->pCreateInfos, NULL, params->pShaders); + return STATUS_SUCCESS; +} +#endif /* _WIN64 */ + +static NTSTATUS thunk32_vkCreateShadersEXT(void *args) +{ + struct + { + PTR32 device; + uint32_t createInfoCount; + PTR32 pCreateInfos; + PTR32 pAllocator; + PTR32 pShaders; + VkResult result; + } *params = args; + const VkShaderCreateInfoEXT *pCreateInfos_host; + struct conversion_context ctx; + + TRACE("%#x, %u, %#x, %#x, %#x\n", params->device, params->createInfoCount, params->pCreateInfos, params->pAllocator, params->pShaders); + + init_conversion_context(&ctx); + pCreateInfos_host = convert_VkShaderCreateInfoEXT_array_win32_to_host(&ctx, (const VkShaderCreateInfoEXT32 *)UlongToPtr(params->pCreateInfos), params->createInfoCount); + params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkCreateShadersEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->createInfoCount, pCreateInfos_host, NULL, (VkShaderEXT *)UlongToPtr(params->pShaders)); + free_conversion_context(&ctx); + return STATUS_SUCCESS; +} + #ifdef _WIN64 static NTSTATUS thunk64_vkCreateSwapchainKHR(void *args) { @@ -34399,6 +34701,33 @@ static NTSTATUS thunk32_vkDestroySemaphore(void *args) return STATUS_SUCCESS; }
+#ifdef _WIN64 +static NTSTATUS thunk64_vkDestroyShaderEXT(void *args) +{ + struct vkDestroyShaderEXT_params *params = args; + + TRACE("%p, 0x%s, %p\n", params->device, wine_dbgstr_longlong(params->shader), params->pAllocator); + + wine_device_from_handle(params->device)->funcs.p_vkDestroyShaderEXT(wine_device_from_handle(params->device)->device, params->shader, NULL); + return STATUS_SUCCESS; +} +#endif /* _WIN64 */ + +static NTSTATUS thunk32_vkDestroyShaderEXT(void *args) +{ + struct + { + PTR32 device; + VkShaderEXT DECLSPEC_ALIGN(8) shader; + PTR32 pAllocator; + } *params = args; + + TRACE("%#x, 0x%s, %#x\n", params->device, wine_dbgstr_longlong(params->shader), params->pAllocator); + + wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkDestroyShaderEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->shader, NULL); + return STATUS_SUCCESS; +} + #ifdef _WIN64 static NTSTATUS thunk64_vkDestroyShaderModule(void *args) { @@ -38899,6 +39228,38 @@ static NTSTATUS thunk32_vkGetSemaphoreCounterValueKHR(void *args) return STATUS_SUCCESS; }
+#ifdef _WIN64 +static NTSTATUS thunk64_vkGetShaderBinaryDataEXT(void *args) +{ + struct vkGetShaderBinaryDataEXT_params *params = args; + + TRACE("%p, 0x%s, %p, %p\n", params->device, wine_dbgstr_longlong(params->shader), params->pDataSize, params->pData); + + params->result = wine_device_from_handle(params->device)->funcs.p_vkGetShaderBinaryDataEXT(wine_device_from_handle(params->device)->device, params->shader, params->pDataSize, params->pData); + return STATUS_SUCCESS; +} +#endif /* _WIN64 */ + +static NTSTATUS thunk32_vkGetShaderBinaryDataEXT(void *args) +{ + struct + { + PTR32 device; + VkShaderEXT DECLSPEC_ALIGN(8) shader; + PTR32 pDataSize; + PTR32 pData; + VkResult result; + } *params = args; + size_t pDataSize_host; + + TRACE("%#x, 0x%s, %#x, %#x\n", params->device, wine_dbgstr_longlong(params->shader), params->pDataSize, params->pData); + + pDataSize_host = *(PTR32 *)UlongToPtr(params->pDataSize); + params->result = wine_device_from_handle((VkDevice)UlongToPtr(params->device))->funcs.p_vkGetShaderBinaryDataEXT(wine_device_from_handle((VkDevice)UlongToPtr(params->device))->device, params->shader, &pDataSize_host, (void *)UlongToPtr(params->pData)); + *(PTR32 *)UlongToPtr(params->pDataSize) = pDataSize_host; + return STATUS_SUCCESS; +} + #ifdef _WIN64 static NTSTATUS thunk64_vkGetShaderInfoAMD(void *args) { @@ -40590,9 +40951,11 @@ static const char * const vk_device_extensions[] = "VK_EXT_shader_demote_to_helper_invocation", "VK_EXT_shader_image_atomic_int64", "VK_EXT_shader_module_identifier", + "VK_EXT_shader_object", "VK_EXT_shader_stencil_export", "VK_EXT_shader_subgroup_ballot", "VK_EXT_shader_subgroup_vote", + "VK_EXT_shader_tile_image", "VK_EXT_shader_viewport_index_layer", "VK_EXT_subgroup_size_control", "VK_EXT_subpass_merge_feedback", @@ -40831,6 +41194,7 @@ const unixlib_entry_t __wine_unix_call_funcs[] = (void *)thunk64_vkCmdBindInvocationMaskHUAWEI, (void *)thunk64_vkCmdBindPipeline, (void *)thunk64_vkCmdBindPipelineShaderGroupNV, + (void *)thunk64_vkCmdBindShadersEXT, (void *)thunk64_vkCmdBindShadingRateImageNV, (void *)thunk64_vkCmdBindTransformFeedbackBuffersEXT, (void *)thunk64_vkCmdBindVertexBuffers, @@ -41091,6 +41455,7 @@ const unixlib_entry_t __wine_unix_call_funcs[] = thunk64_vkCreateSamplerYcbcrConversionKHR, thunk64_vkCreateSemaphore, thunk64_vkCreateShaderModule, + thunk64_vkCreateShadersEXT, thunk64_vkCreateSwapchainKHR, thunk64_vkCreateValidationCacheEXT, thunk64_vkCreateWin32SurfaceKHR, @@ -41133,6 +41498,7 @@ const unixlib_entry_t __wine_unix_call_funcs[] = thunk64_vkDestroySamplerYcbcrConversion, thunk64_vkDestroySamplerYcbcrConversionKHR, thunk64_vkDestroySemaphore, + thunk64_vkDestroyShaderEXT, thunk64_vkDestroyShaderModule, thunk64_vkDestroySurfaceKHR, thunk64_vkDestroySwapchainKHR, @@ -41276,6 +41642,7 @@ const unixlib_entry_t __wine_unix_call_funcs[] = thunk64_vkGetSamplerOpaqueCaptureDescriptorDataEXT, thunk64_vkGetSemaphoreCounterValue, thunk64_vkGetSemaphoreCounterValueKHR, + thunk64_vkGetShaderBinaryDataEXT, thunk64_vkGetShaderInfoAMD, thunk64_vkGetShaderModuleCreateInfoIdentifierEXT, thunk64_vkGetShaderModuleIdentifierEXT, @@ -41378,6 +41745,7 @@ const unixlib_entry_t __wine_unix_call_funcs[] = (void *)thunk32_vkCmdBindInvocationMaskHUAWEI, (void *)thunk32_vkCmdBindPipeline, (void *)thunk32_vkCmdBindPipelineShaderGroupNV, + (void *)thunk32_vkCmdBindShadersEXT, (void *)thunk32_vkCmdBindShadingRateImageNV, (void *)thunk32_vkCmdBindTransformFeedbackBuffersEXT, (void *)thunk32_vkCmdBindVertexBuffers, @@ -41638,6 +42006,7 @@ const unixlib_entry_t __wine_unix_call_funcs[] = thunk32_vkCreateSamplerYcbcrConversionKHR, thunk32_vkCreateSemaphore, thunk32_vkCreateShaderModule, + thunk32_vkCreateShadersEXT, thunk32_vkCreateSwapchainKHR, thunk32_vkCreateValidationCacheEXT, thunk32_vkCreateWin32SurfaceKHR, @@ -41680,6 +42049,7 @@ const unixlib_entry_t __wine_unix_call_funcs[] = thunk32_vkDestroySamplerYcbcrConversion, thunk32_vkDestroySamplerYcbcrConversionKHR, thunk32_vkDestroySemaphore, + thunk32_vkDestroyShaderEXT, thunk32_vkDestroyShaderModule, thunk32_vkDestroySurfaceKHR, thunk32_vkDestroySwapchainKHR, @@ -41823,6 +42193,7 @@ const unixlib_entry_t __wine_unix_call_funcs[] = thunk32_vkGetSamplerOpaqueCaptureDescriptorDataEXT, thunk32_vkGetSemaphoreCounterValue, thunk32_vkGetSemaphoreCounterValueKHR, + thunk32_vkGetShaderBinaryDataEXT, thunk32_vkGetShaderInfoAMD, thunk32_vkGetShaderModuleCreateInfoIdentifierEXT, thunk32_vkGetShaderModuleIdentifierEXT, diff --git a/dlls/winevulkan/vulkan_thunks.h b/dlls/winevulkan/vulkan_thunks.h index 865fbe3ff35..d63540bc2b9 100644 --- a/dlls/winevulkan/vulkan_thunks.h +++ b/dlls/winevulkan/vulkan_thunks.h @@ -95,6 +95,7 @@ struct vulkan_device_funcs void (*p_vkCmdBindInvocationMaskHUAWEI)(VkCommandBuffer, VkImageView, VkImageLayout); void (*p_vkCmdBindPipeline)(VkCommandBuffer, VkPipelineBindPoint, VkPipeline); void (*p_vkCmdBindPipelineShaderGroupNV)(VkCommandBuffer, VkPipelineBindPoint, VkPipeline, uint32_t); + void (*p_vkCmdBindShadersEXT)(VkCommandBuffer, uint32_t, const VkShaderStageFlagBits *, const VkShaderEXT *); void (*p_vkCmdBindShadingRateImageNV)(VkCommandBuffer, VkImageView, VkImageLayout); void (*p_vkCmdBindTransformFeedbackBuffersEXT)(VkCommandBuffer, uint32_t, uint32_t, const VkBuffer *, const VkDeviceSize *, const VkDeviceSize *); void (*p_vkCmdBindVertexBuffers)(VkCommandBuffer, uint32_t, uint32_t, const VkBuffer *, const VkDeviceSize *); @@ -351,6 +352,7 @@ struct vulkan_device_funcs VkResult (*p_vkCreateSamplerYcbcrConversionKHR)(VkDevice, const VkSamplerYcbcrConversionCreateInfo *, const VkAllocationCallbacks *, VkSamplerYcbcrConversion *); VkResult (*p_vkCreateSemaphore)(VkDevice, const VkSemaphoreCreateInfo *, const VkAllocationCallbacks *, VkSemaphore *); VkResult (*p_vkCreateShaderModule)(VkDevice, const VkShaderModuleCreateInfo *, const VkAllocationCallbacks *, VkShaderModule *); + VkResult (*p_vkCreateShadersEXT)(VkDevice, uint32_t, const VkShaderCreateInfoEXT *, const VkAllocationCallbacks *, VkShaderEXT *); VkResult (*p_vkCreateSwapchainKHR)(VkDevice, const VkSwapchainCreateInfoKHR *, const VkAllocationCallbacks *, VkSwapchainKHR *); VkResult (*p_vkCreateValidationCacheEXT)(VkDevice, const VkValidationCacheCreateInfoEXT *, const VkAllocationCallbacks *, VkValidationCacheEXT *); VkResult (*p_vkDebugMarkerSetObjectNameEXT)(VkDevice, const VkDebugMarkerObjectNameInfoEXT *); @@ -388,6 +390,7 @@ struct vulkan_device_funcs void (*p_vkDestroySamplerYcbcrConversion)(VkDevice, VkSamplerYcbcrConversion, const VkAllocationCallbacks *); void (*p_vkDestroySamplerYcbcrConversionKHR)(VkDevice, VkSamplerYcbcrConversion, const VkAllocationCallbacks *); void (*p_vkDestroySemaphore)(VkDevice, VkSemaphore, const VkAllocationCallbacks *); + void (*p_vkDestroyShaderEXT)(VkDevice, VkShaderEXT, const VkAllocationCallbacks *); void (*p_vkDestroyShaderModule)(VkDevice, VkShaderModule, const VkAllocationCallbacks *); void (*p_vkDestroySwapchainKHR)(VkDevice, VkSwapchainKHR, const VkAllocationCallbacks *); void (*p_vkDestroyValidationCacheEXT)(VkDevice, VkValidationCacheEXT, const VkAllocationCallbacks *); @@ -478,6 +481,7 @@ struct vulkan_device_funcs VkResult (*p_vkGetSamplerOpaqueCaptureDescriptorDataEXT)(VkDevice, const VkSamplerCaptureDescriptorDataInfoEXT *, void *); VkResult (*p_vkGetSemaphoreCounterValue)(VkDevice, VkSemaphore, uint64_t *); VkResult (*p_vkGetSemaphoreCounterValueKHR)(VkDevice, VkSemaphore, uint64_t *); + VkResult (*p_vkGetShaderBinaryDataEXT)(VkDevice, VkShaderEXT, size_t *, void *); VkResult (*p_vkGetShaderInfoAMD)(VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, size_t *, void *); void (*p_vkGetShaderModuleCreateInfoIdentifierEXT)(VkDevice, const VkShaderModuleCreateInfo *, VkShaderModuleIdentifierEXT *); void (*p_vkGetShaderModuleIdentifierEXT)(VkDevice, VkShaderModule, VkShaderModuleIdentifierEXT *); @@ -626,6 +630,7 @@ struct vulkan_instance_funcs USE_VK_FUNC(vkCmdBindInvocationMaskHUAWEI) \ USE_VK_FUNC(vkCmdBindPipeline) \ USE_VK_FUNC(vkCmdBindPipelineShaderGroupNV) \ + USE_VK_FUNC(vkCmdBindShadersEXT) \ USE_VK_FUNC(vkCmdBindShadingRateImageNV) \ USE_VK_FUNC(vkCmdBindTransformFeedbackBuffersEXT) \ USE_VK_FUNC(vkCmdBindVertexBuffers) \ @@ -882,6 +887,7 @@ struct vulkan_instance_funcs USE_VK_FUNC(vkCreateSamplerYcbcrConversionKHR) \ USE_VK_FUNC(vkCreateSemaphore) \ USE_VK_FUNC(vkCreateShaderModule) \ + USE_VK_FUNC(vkCreateShadersEXT) \ USE_VK_FUNC(vkCreateSwapchainKHR) \ USE_VK_FUNC(vkCreateValidationCacheEXT) \ USE_VK_FUNC(vkDebugMarkerSetObjectNameEXT) \ @@ -919,6 +925,7 @@ struct vulkan_instance_funcs USE_VK_FUNC(vkDestroySamplerYcbcrConversion) \ USE_VK_FUNC(vkDestroySamplerYcbcrConversionKHR) \ USE_VK_FUNC(vkDestroySemaphore) \ + USE_VK_FUNC(vkDestroyShaderEXT) \ USE_VK_FUNC(vkDestroyShaderModule) \ USE_VK_FUNC(vkDestroySwapchainKHR) \ USE_VK_FUNC(vkDestroyValidationCacheEXT) \ @@ -1009,6 +1016,7 @@ struct vulkan_instance_funcs USE_VK_FUNC(vkGetSamplerOpaqueCaptureDescriptorDataEXT) \ USE_VK_FUNC(vkGetSemaphoreCounterValue) \ USE_VK_FUNC(vkGetSemaphoreCounterValueKHR) \ + USE_VK_FUNC(vkGetShaderBinaryDataEXT) \ USE_VK_FUNC(vkGetShaderInfoAMD) \ USE_VK_FUNC(vkGetShaderModuleCreateInfoIdentifierEXT) \ USE_VK_FUNC(vkGetShaderModuleIdentifierEXT) \ diff --git a/dlls/winevulkan/winevulkan.json b/dlls/winevulkan/winevulkan.json index 532d21a3062..2eac944a2d6 100644 --- a/dlls/winevulkan/winevulkan.json +++ b/dlls/winevulkan/winevulkan.json @@ -2,6 +2,6 @@ "file_format_version": "1.0.0", "ICD": { "library_path": ".\winevulkan.dll", - "api_version": "1.3.242" + "api_version": "1.3.246" } } diff --git a/include/wine/vulkan.h b/include/wine/vulkan.h index 205126f2e75..c5fa7259489 100644 --- a/include/wine/vulkan.h +++ b/include/wine/vulkan.h @@ -525,6 +525,8 @@ #define VK_EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME "VK_EXT_image_2d_view_of_3d" #define VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION 1 #define VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME "VK_KHR_portability_enumeration" +#define VK_EXT_SHADER_TILE_IMAGE_SPEC_VERSION 1 +#define VK_EXT_SHADER_TILE_IMAGE_EXTENSION_NAME "VK_EXT_shader_tile_image" #define VK_EXT_OPACITY_MICROMAP_SPEC_VERSION 2 #define VK_EXT_OPACITY_MICROMAP_EXTENSION_NAME "VK_EXT_opacity_micromap" #define VK_EXT_LOAD_STORE_OP_NONE_SPEC_VERSION 1 @@ -573,6 +575,8 @@ #define VK_EXT_LEGACY_DITHERING_EXTENSION_NAME "VK_EXT_legacy_dithering" #define VK_EXT_PIPELINE_PROTECTED_ACCESS_SPEC_VERSION 1 #define VK_EXT_PIPELINE_PROTECTED_ACCESS_EXTENSION_NAME "VK_EXT_pipeline_protected_access" +#define VK_EXT_SHADER_OBJECT_SPEC_VERSION 1 +#define VK_EXT_SHADER_OBJECT_EXTENSION_NAME "VK_EXT_shader_object" #define VK_QCOM_TILE_PROPERTIES_SPEC_VERSION 1 #define VK_QCOM_TILE_PROPERTIES_EXTENSION_NAME "VK_QCOM_tile_properties" #define VK_QCOM_MULTIVIEW_PER_VIEW_VIEWPORTS_SPEC_VERSION 1 @@ -613,7 +617,7 @@ #define VK_API_VERSION_1_2 VK_MAKE_API_VERSION(0, 1, 2, 0) #define VK_API_VERSION_1_3 VK_MAKE_API_VERSION(0, 1, 3, 0) #define VKSC_API_VERSION_1_0 VK_MAKE_API_VERSION(VKSC_API_VARIANT, 1, 0, 0) -#define VK_HEADER_VERSION 242 +#define VK_HEADER_VERSION 246 #define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION) #define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; #define VK_USE_64_BIT_PTR_DEFINES 0 @@ -681,6 +685,7 @@ VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSampler) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSamplerYcbcrConversion) typedef VkSamplerYcbcrConversion VkSamplerYcbcrConversionKHR; VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSemaphore) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderEXT) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderModule) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR) @@ -801,6 +806,7 @@ typedef VkFlags64 VkMemoryDecompressionMethodFlagsNV; typedef VkFlags VkMemoryHeapFlags; typedef VkFlags VkMemoryMapFlags; typedef VkFlags VkMemoryPropertyFlags; +typedef VkFlags VkMemoryUnmapFlagsKHR; typedef VkFlags VkMetalSurfaceCreateFlagsEXT; typedef VkFlags VkMicromapCreateFlagsEXT; typedef VkFlags VkOpticalFlowExecuteFlagsNV; @@ -863,6 +869,7 @@ typedef VkSemaphoreImportFlags VkSemaphoreImportFlagsKHR; typedef VkFlags VkSemaphoreWaitFlags; typedef VkSemaphoreWaitFlags VkSemaphoreWaitFlagsKHR; typedef VkFlags VkShaderCorePropertiesFlagsAMD; +typedef VkFlags VkShaderCreateFlagsEXT; typedef VkFlags VkShaderModuleCreateFlags; typedef VkFlags VkShaderStageFlags; typedef VkFlags VkSparseImageFormatFlags; @@ -893,14 +900,11 @@ typedef VkFlags VkVideoDecodeH264PictureLayoutFlagsKHR; typedef VkFlags VkVideoDecodeUsageFlagsKHR; typedef VkFlags VkVideoEncodeCapabilityFlagsKHR; typedef VkFlags VkVideoEncodeContentFlagsKHR; +typedef VkFlags VkVideoEncodeFeedbackFlagsKHR; typedef VkFlags VkVideoEncodeFlagsKHR; typedef VkFlags VkVideoEncodeH264CapabilityFlagsEXT; -typedef VkFlags VkVideoEncodeH264InputModeFlagsEXT; -typedef VkFlags VkVideoEncodeH264OutputModeFlagsEXT; typedef VkFlags VkVideoEncodeH265CapabilityFlagsEXT; typedef VkFlags VkVideoEncodeH265CtbSizeFlagsEXT; -typedef VkFlags VkVideoEncodeH265InputModeFlagsEXT; -typedef VkFlags VkVideoEncodeH265OutputModeFlagsEXT; typedef VkFlags VkVideoEncodeH265TransformBlockSizeFlagsEXT; typedef VkFlags VkVideoEncodeRateControlFlagsKHR; typedef VkFlags VkVideoEncodeRateControlModeFlagsKHR; @@ -2816,6 +2820,7 @@ typedef enum VkObjectType VK_OBJECT_TYPE_PRIVATE_DATA_SLOT = 1000295000, VK_OBJECT_TYPE_MICROMAP_EXT = 1000396000, VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV = 1000464000, + VK_OBJECT_TYPE_SHADER_EXT = 1000482000, VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE, VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION, VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = VK_OBJECT_TYPE_PRIVATE_DATA_SLOT, @@ -3504,6 +3509,7 @@ typedef enum VkResult VK_OPERATION_DEFERRED_KHR = 1000268002, VK_OPERATION_NOT_DEFERRED_KHR = 1000268003, VK_PIPELINE_COMPILE_REQUIRED = 1000297000, + VK_ERROR_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000, VK_ERROR_OUT_OF_POOL_MEMORY_KHR = VK_ERROR_OUT_OF_POOL_MEMORY, VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = VK_ERROR_INVALID_EXTERNAL_HANDLE, VK_ERROR_FRAGMENTATION_EXT = VK_ERROR_FRAGMENTATION, @@ -3628,11 +3634,30 @@ typedef enum VkSemaphoreWaitFlagBits } VkSemaphoreWaitFlagBits; typedef VkSemaphoreWaitFlagBits VkSemaphoreWaitFlagBitsKHR;
+typedef enum VkShaderCodeTypeEXT +{ + VK_SHADER_CODE_TYPE_BINARY_EXT = 0, + VK_SHADER_CODE_TYPE_SPIRV_EXT = 1, + VK_SHADER_CODE_TYPE_EXT_MAX_ENUM = 0x7fffffff, +} VkShaderCodeTypeEXT; + typedef enum VkShaderCorePropertiesFlagBitsAMD { VK_SHADER_CORE_PROPERTIES_FLAG_BITS_AMD_MAX_ENUM = 0x7fffffff, } VkShaderCorePropertiesFlagBitsAMD;
+typedef enum VkShaderCreateFlagBitsEXT +{ + VK_SHADER_CREATE_LINK_STAGE_BIT_EXT = 0x00000001, + VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 0x00000002, + VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 0x00000004, + VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT = 0x00000008, + VK_SHADER_CREATE_DISPATCH_BASE_BIT_EXT = 0x00000010, + VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT = 0x00000020, + VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 0x00000040, + VK_SHADER_CREATE_FLAG_BITS_EXT_MAX_ENUM = 0x7fffffff, +} VkShaderCreateFlagBitsEXT; + typedef enum VkShaderFloatControlsIndependence { VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0, @@ -4276,6 +4301,8 @@ typedef enum VkStructureType VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT = 1000392000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT = 1000392001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT = 1000393000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT = 1000395000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT = 1000395001, VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT = 1000396000, VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT = 1000396001, VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT = 1000396002, @@ -4334,6 +4361,9 @@ typedef enum VkStructureType VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV = 1000464010, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT = 1000465000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT = 1000482000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT = 1000482001, + VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT = 1000482002, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM = 1000484000, VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM = 1000484001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM = 1000488000, @@ -4516,6 +4546,7 @@ typedef enum VkStructureType VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES, VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS, VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS, + VK_STRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO, VK_STRUCTURE_TYPE_MAX_ENUM = 0x7fffffff, } VkStructureType;
@@ -4695,6 +4726,7 @@ typedef enum VkVendorId VK_VENDOR_ID_CODEPLAY = 0x00010004, VK_VENDOR_ID_MESA = 0x00010005, VK_VENDOR_ID_POCL = 0x00010006, + VK_VENDOR_ID_MOBILEYE = 0x00010007, VK_VENDOR_ID_MAX_ENUM = 0x7fffffff, } VkVendorId;
@@ -6900,6 +6932,7 @@ typedef struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI uint32_t maxWorkGroupCount[3]; uint32_t maxWorkGroupSize[3]; uint32_t maxOutputClusterCount; + VkDeviceSize WINE_VK_ALIGN(8) indirectBufferOffsetAlignment; } VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI;
typedef struct VkPhysicalDeviceCoherentMemoryFeaturesAMD @@ -8694,6 +8727,21 @@ typedef struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT uint8_t shaderModuleIdentifierAlgorithmUUID[VK_UUID_SIZE]; } VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT;
+typedef struct VkPhysicalDeviceShaderObjectFeaturesEXT +{ + VkStructureType sType; + void *pNext; + VkBool32 shaderObject; +} VkPhysicalDeviceShaderObjectFeaturesEXT; + +typedef struct VkPhysicalDeviceShaderObjectPropertiesEXT +{ + VkStructureType sType; + void *pNext; + uint8_t shaderBinaryUUID[VK_UUID_SIZE]; + uint32_t shaderBinaryVersion; +} VkPhysicalDeviceShaderObjectPropertiesEXT; + typedef struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV { VkStructureType sType; @@ -8732,6 +8780,24 @@ typedef struct VkPhysicalDeviceShaderTerminateInvocationFeatures } VkPhysicalDeviceShaderTerminateInvocationFeatures; typedef VkPhysicalDeviceShaderTerminateInvocationFeatures VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR;
+typedef struct VkPhysicalDeviceShaderTileImageFeaturesEXT +{ + VkStructureType sType; + void *pNext; + VkBool32 shaderTileImageColorReadAccess; + VkBool32 shaderTileImageDepthReadAccess; + VkBool32 shaderTileImageStencilReadAccess; +} VkPhysicalDeviceShaderTileImageFeaturesEXT; + +typedef struct VkPhysicalDeviceShaderTileImagePropertiesEXT +{ + VkStructureType sType; + void *pNext; + VkBool32 shaderTileImageCoherentReadAccelerated; + VkBool32 shaderTileImageReadSampleFromPixelRateInvocation; + VkBool32 shaderTileImageReadFromHelperInvocation; +} VkPhysicalDeviceShaderTileImagePropertiesEXT; + typedef struct VkPhysicalDeviceShadingRateImageFeaturesNV { VkStructureType sType; @@ -9564,6 +9630,7 @@ typedef struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfo uint32_t requiredSubgroupSize; } VkPipelineShaderStageRequiredSubgroupSizeCreateInfo; typedef VkPipelineShaderStageRequiredSubgroupSizeCreateInfo VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT; +typedef VkPipelineShaderStageRequiredSubgroupSizeCreateInfo VkShaderRequiredSubgroupSizeCreateInfoEXT;
typedef struct VkPipelineTessellationDomainOriginStateCreateInfo { @@ -10432,7 +10499,7 @@ typedef struct VkSwapchainPresentBarrierCreateInfoNV typedef struct VkSwapchainPresentFenceInfoEXT { VkStructureType sType; - void *pNext; + const void *pNext; uint32_t swapchainCount; const VkFence *pFences; } VkSwapchainPresentFenceInfoEXT; @@ -10440,7 +10507,7 @@ typedef struct VkSwapchainPresentFenceInfoEXT typedef struct VkSwapchainPresentModeInfoEXT { VkStructureType sType; - void *pNext; + const void *pNext; uint32_t swapchainCount; const VkPresentModeKHR *pPresentModes; } VkSwapchainPresentModeInfoEXT; @@ -10448,7 +10515,7 @@ typedef struct VkSwapchainPresentModeInfoEXT typedef struct VkSwapchainPresentModesCreateInfoEXT { VkStructureType sType; - void *pNext; + const void *pNext; uint32_t presentModeCount; const VkPresentModeKHR *pPresentModes; } VkSwapchainPresentModesCreateInfoEXT; @@ -11623,6 +11690,24 @@ typedef struct VkRayTracingPipelineCreateInfoNV int32_t basePipelineIndex; } VkRayTracingPipelineCreateInfoNV;
+typedef struct VkShaderCreateInfoEXT +{ + VkStructureType sType; + const void *pNext; + VkShaderCreateFlagsEXT flags; + VkShaderStageFlagBits stage; + VkShaderStageFlags nextStage; + VkShaderCodeTypeEXT codeType; + size_t codeSize; + const void *pCode; + const char *pName; + uint32_t setLayoutCount; + const VkDescriptorSetLayout *pSetLayouts; + uint32_t pushConstantRangeCount; + const VkPushConstantRange *pPushConstantRanges; + const VkSpecializationInfo *pSpecializationInfo; +} VkShaderCreateInfoEXT; + typedef struct VkAccelerationStructureBuildGeometryInfoKHR { VkStructureType sType; @@ -11735,6 +11820,7 @@ typedef void (VKAPI_PTR *PFN_vkCmdBindIndexBuffer)(VkCommandBuffer, VkBuffer, Vk typedef void (VKAPI_PTR *PFN_vkCmdBindInvocationMaskHUAWEI)(VkCommandBuffer, VkImageView, VkImageLayout); typedef void (VKAPI_PTR *PFN_vkCmdBindPipeline)(VkCommandBuffer, VkPipelineBindPoint, VkPipeline); typedef void (VKAPI_PTR *PFN_vkCmdBindPipelineShaderGroupNV)(VkCommandBuffer, VkPipelineBindPoint, VkPipeline, uint32_t); +typedef void (VKAPI_PTR *PFN_vkCmdBindShadersEXT)(VkCommandBuffer, uint32_t, const VkShaderStageFlagBits *, const VkShaderEXT *); typedef void (VKAPI_PTR *PFN_vkCmdBindShadingRateImageNV)(VkCommandBuffer, VkImageView, VkImageLayout); typedef void (VKAPI_PTR *PFN_vkCmdBindTransformFeedbackBuffersEXT)(VkCommandBuffer, uint32_t, uint32_t, const VkBuffer *, const VkDeviceSize *, const VkDeviceSize *); typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers)(VkCommandBuffer, uint32_t, uint32_t, const VkBuffer *, const VkDeviceSize *); @@ -11995,6 +12081,7 @@ typedef VkResult (VKAPI_PTR *PFN_vkCreateSamplerYcbcrConversion)(VkDevice, const typedef VkResult (VKAPI_PTR *PFN_vkCreateSamplerYcbcrConversionKHR)(VkDevice, const VkSamplerYcbcrConversionCreateInfo *, const VkAllocationCallbacks *, VkSamplerYcbcrConversion *); typedef VkResult (VKAPI_PTR *PFN_vkCreateSemaphore)(VkDevice, const VkSemaphoreCreateInfo *, const VkAllocationCallbacks *, VkSemaphore *); typedef VkResult (VKAPI_PTR *PFN_vkCreateShaderModule)(VkDevice, const VkShaderModuleCreateInfo *, const VkAllocationCallbacks *, VkShaderModule *); +typedef VkResult (VKAPI_PTR *PFN_vkCreateShadersEXT)(VkDevice, uint32_t, const VkShaderCreateInfoEXT *, const VkAllocationCallbacks *, VkShaderEXT *); typedef VkResult (VKAPI_PTR *PFN_vkCreateSwapchainKHR)(VkDevice, const VkSwapchainCreateInfoKHR *, const VkAllocationCallbacks *, VkSwapchainKHR *); typedef VkResult (VKAPI_PTR *PFN_vkCreateValidationCacheEXT)(VkDevice, const VkValidationCacheCreateInfoEXT *, const VkAllocationCallbacks *, VkValidationCacheEXT *); typedef VkResult (VKAPI_PTR *PFN_vkCreateWin32SurfaceKHR)(VkInstance, const VkWin32SurfaceCreateInfoKHR *, const VkAllocationCallbacks *, VkSurfaceKHR *); @@ -12037,6 +12124,7 @@ typedef void (VKAPI_PTR *PFN_vkDestroySampler)(VkDevice, VkSampler, const VkAllo typedef void (VKAPI_PTR *PFN_vkDestroySamplerYcbcrConversion)(VkDevice, VkSamplerYcbcrConversion, const VkAllocationCallbacks *); typedef void (VKAPI_PTR *PFN_vkDestroySamplerYcbcrConversionKHR)(VkDevice, VkSamplerYcbcrConversion, const VkAllocationCallbacks *); typedef void (VKAPI_PTR *PFN_vkDestroySemaphore)(VkDevice, VkSemaphore, const VkAllocationCallbacks *); +typedef void (VKAPI_PTR *PFN_vkDestroyShaderEXT)(VkDevice, VkShaderEXT, const VkAllocationCallbacks *); typedef void (VKAPI_PTR *PFN_vkDestroyShaderModule)(VkDevice, VkShaderModule, const VkAllocationCallbacks *); typedef void (VKAPI_PTR *PFN_vkDestroySurfaceKHR)(VkInstance, VkSurfaceKHR, const VkAllocationCallbacks *); typedef void (VKAPI_PTR *PFN_vkDestroySwapchainKHR)(VkDevice, VkSwapchainKHR, const VkAllocationCallbacks *); @@ -12185,6 +12273,7 @@ typedef void (VKAPI_PTR *PFN_vkGetRenderAreaGranularity)(VkDevice, VkRenderPass, typedef VkResult (VKAPI_PTR *PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT)(VkDevice, const VkSamplerCaptureDescriptorDataInfoEXT *, void *); typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreCounterValue)(VkDevice, VkSemaphore, uint64_t *); typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreCounterValueKHR)(VkDevice, VkSemaphore, uint64_t *); +typedef VkResult (VKAPI_PTR *PFN_vkGetShaderBinaryDataEXT)(VkDevice, VkShaderEXT, size_t *, void *); typedef VkResult (VKAPI_PTR *PFN_vkGetShaderInfoAMD)(VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, size_t *, void *); typedef void (VKAPI_PTR *PFN_vkGetShaderModuleCreateInfoIdentifierEXT)(VkDevice, const VkShaderModuleCreateInfo *, VkShaderModuleIdentifierEXT *); typedef void (VKAPI_PTR *PFN_vkGetShaderModuleIdentifierEXT)(VkDevice, VkShaderModule, VkShaderModuleIdentifierEXT *); @@ -12275,6 +12364,7 @@ void VKAPI_CALL vkCmdBindIndexBuffer(VkCommandBuffer commandBuffer, VkBuffer buf void VKAPI_CALL vkCmdBindInvocationMaskHUAWEI(VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout); void VKAPI_CALL vkCmdBindPipeline(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline); void VKAPI_CALL vkCmdBindPipelineShaderGroupNV(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline, uint32_t groupIndex); +void VKAPI_CALL vkCmdBindShadersEXT(VkCommandBuffer commandBuffer, uint32_t stageCount, const VkShaderStageFlagBits *pStages, const VkShaderEXT *pShaders); void VKAPI_CALL vkCmdBindShadingRateImageNV(VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout); void VKAPI_CALL vkCmdBindTransformFeedbackBuffersEXT(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer *pBuffers, const VkDeviceSize *pOffsets, const VkDeviceSize *pSizes); void VKAPI_CALL vkCmdBindVertexBuffers(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer *pBuffers, const VkDeviceSize *pOffsets); @@ -12535,6 +12625,7 @@ VkResult VKAPI_CALL vkCreateSamplerYcbcrConversion(VkDevice device, const VkSamp VkResult VKAPI_CALL vkCreateSamplerYcbcrConversionKHR(VkDevice device, const VkSamplerYcbcrConversionCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkSamplerYcbcrConversion *pYcbcrConversion); VkResult VKAPI_CALL vkCreateSemaphore(VkDevice device, const VkSemaphoreCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkSemaphore *pSemaphore); VkResult VKAPI_CALL vkCreateShaderModule(VkDevice device, const VkShaderModuleCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkShaderModule *pShaderModule); +VkResult VKAPI_CALL vkCreateShadersEXT(VkDevice device, uint32_t createInfoCount, const VkShaderCreateInfoEXT *pCreateInfos, const VkAllocationCallbacks *pAllocator, VkShaderEXT *pShaders); VkResult VKAPI_CALL vkCreateSwapchainKHR(VkDevice device, const VkSwapchainCreateInfoKHR *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkSwapchainKHR *pSwapchain); VkResult VKAPI_CALL vkCreateValidationCacheEXT(VkDevice device, const VkValidationCacheCreateInfoEXT *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkValidationCacheEXT *pValidationCache); VkResult VKAPI_CALL vkCreateWin32SurfaceKHR(VkInstance instance, const VkWin32SurfaceCreateInfoKHR *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface); @@ -12577,6 +12668,7 @@ void VKAPI_CALL vkDestroySampler(VkDevice device, VkSampler sampler, const VkAll void VKAPI_CALL vkDestroySamplerYcbcrConversion(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks *pAllocator); void VKAPI_CALL vkDestroySamplerYcbcrConversionKHR(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks *pAllocator); void VKAPI_CALL vkDestroySemaphore(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks *pAllocator); +void VKAPI_CALL vkDestroyShaderEXT(VkDevice device, VkShaderEXT shader, const VkAllocationCallbacks *pAllocator); void VKAPI_CALL vkDestroyShaderModule(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks *pAllocator); void VKAPI_CALL vkDestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks *pAllocator); void VKAPI_CALL vkDestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks *pAllocator); @@ -12725,6 +12817,7 @@ void VKAPI_CALL vkGetRenderAreaGranularity(VkDevice device, VkRenderPass renderP VkResult VKAPI_CALL vkGetSamplerOpaqueCaptureDescriptorDataEXT(VkDevice device, const VkSamplerCaptureDescriptorDataInfoEXT *pInfo, void *pData); VkResult VKAPI_CALL vkGetSemaphoreCounterValue(VkDevice device, VkSemaphore semaphore, uint64_t *pValue); VkResult VKAPI_CALL vkGetSemaphoreCounterValueKHR(VkDevice device, VkSemaphore semaphore, uint64_t *pValue); +VkResult VKAPI_CALL vkGetShaderBinaryDataEXT(VkDevice device, VkShaderEXT shader, size_t *pDataSize, void *pData); VkResult VKAPI_CALL vkGetShaderInfoAMD(VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, size_t *pInfoSize, void *pInfo); void VKAPI_CALL vkGetShaderModuleCreateInfoIdentifierEXT(VkDevice device, const VkShaderModuleCreateInfo *pCreateInfo, VkShaderModuleIdentifierEXT *pIdentifier); void VKAPI_CALL vkGetShaderModuleIdentifierEXT(VkDevice device, VkShaderModule shaderModule, VkShaderModuleIdentifierEXT *pIdentifier);