Merge pull request #33385 from bruvzg/loader_1_1_127
Update Vulkan loader to 1.1.127
This commit is contained in:
commit
bb9b9b03c4
31 changed files with 33207 additions and 15345 deletions
|
@ -14,7 +14,6 @@ if env['builtin_vulkan']:
|
|||
env_thirdparty.disable_warnings()
|
||||
|
||||
loader_sources = [
|
||||
"asm_offset.c",
|
||||
"cJSON.c",
|
||||
"debug_utils.c",
|
||||
"dev_ext_trampoline.c",
|
||||
|
@ -29,6 +28,7 @@ if env['builtin_vulkan']:
|
|||
|
||||
if env['platform'] == "windows":
|
||||
loader_sources.append("dirent_on_windows.c")
|
||||
loader_sources.append("dxgi_loader.c")
|
||||
env_thirdparty.AppendUnique(CPPDEFINES=[
|
||||
'VK_USE_PLATFORM_WIN32_KHR',
|
||||
'VULKAN_NON_CMAKE_BUILD',
|
||||
|
|
2
thirdparty/README.md
vendored
2
thirdparty/README.md
vendored
|
@ -531,7 +531,7 @@ folder.
|
|||
## vulkan
|
||||
|
||||
- Upstream: https://github.com/KhronosGroup/Vulkan-Loader
|
||||
- Version: 1.1.113
|
||||
- Version: 1.1.127
|
||||
- License: Apache 2.0
|
||||
|
||||
Unless there is a specific reason to package a more recent version, please stick
|
||||
|
|
10
thirdparty/vulkan/include/vulkan/vk_icd.h
vendored
10
thirdparty/vulkan/include/vulkan/vk_icd.h
vendored
|
@ -89,7 +89,8 @@ typedef enum {
|
|||
VK_ICD_WSI_PLATFORM_MACOS,
|
||||
VK_ICD_WSI_PLATFORM_IOS,
|
||||
VK_ICD_WSI_PLATFORM_DISPLAY,
|
||||
VK_ICD_WSI_PLATFORM_HEADLESS
|
||||
VK_ICD_WSI_PLATFORM_HEADLESS,
|
||||
VK_ICD_WSI_PLATFORM_METAL,
|
||||
} VkIcdWsiPlatform;
|
||||
|
||||
typedef struct {
|
||||
|
@ -172,4 +173,11 @@ typedef struct {
|
|||
VkIcdSurfaceBase base;
|
||||
} VkIcdSurfaceHeadless;
|
||||
|
||||
#ifdef VK_USE_PLATFORM_METAL_EXT
|
||||
typedef struct {
|
||||
VkIcdSurfaceBase base;
|
||||
const CAMetalLayer *pLayer;
|
||||
} VkIcdSurfaceMetal;
|
||||
#endif // VK_USE_PLATFORM_METAL_EXT
|
||||
|
||||
#endif // VKICD_H
|
||||
|
|
46949
thirdparty/vulkan/include/vulkan/vulkan.hpp
vendored
46949
thirdparty/vulkan/include/vulkan/vulkan.hpp
vendored
File diff suppressed because it is too large
Load diff
|
@ -1,10 +1,6 @@
|
|||
#ifndef VULKAN_ANDROID_H_
|
||||
#define VULKAN_ANDROID_H_ 1
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
** Copyright (c) 2015-2019 The Khronos Group Inc.
|
||||
**
|
||||
|
@ -27,6 +23,11 @@ extern "C" {
|
|||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define VK_KHR_android_surface 1
|
||||
struct ANativeWindow;
|
||||
|
|
627
thirdparty/vulkan/include/vulkan/vulkan_core.h
vendored
627
thirdparty/vulkan/include/vulkan/vulkan_core.h
vendored
|
@ -1,10 +1,6 @@
|
|||
#ifndef VULKAN_CORE_H_
|
||||
#define VULKAN_CORE_H_ 1
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
** Copyright (c) 2015-2019 The Khronos Group Inc.
|
||||
**
|
||||
|
@ -27,6 +23,11 @@ extern "C" {
|
|||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define VK_VERSION_1_0 1
|
||||
#include "vk_platform.h"
|
||||
|
@ -43,7 +44,7 @@ extern "C" {
|
|||
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
|
||||
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
|
||||
// Version of this file
|
||||
#define VK_HEADER_VERSION 113
|
||||
#define VK_HEADER_VERSION 127
|
||||
|
||||
|
||||
#define VK_NULL_HANDLE 0
|
||||
|
@ -307,6 +308,7 @@ typedef enum VkStructureType {
|
|||
VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000,
|
||||
VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000,
|
||||
VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000,
|
||||
VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001,
|
||||
VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000,
|
||||
|
@ -327,7 +329,7 @@ typedef enum VkStructureType {
|
|||
VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001,
|
||||
VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000,
|
||||
VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000,
|
||||
VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = 1000086000,
|
||||
VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = 1000086001,
|
||||
|
@ -351,6 +353,10 @@ typedef enum VkStructureType {
|
|||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000,
|
||||
VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001,
|
||||
VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000,
|
||||
VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001,
|
||||
VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002,
|
||||
VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003,
|
||||
VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000,
|
||||
VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001,
|
||||
VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002,
|
||||
|
@ -437,11 +443,14 @@ typedef enum VkStructureType {
|
|||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000,
|
||||
VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001,
|
||||
VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000,
|
||||
VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000,
|
||||
VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000,
|
||||
VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000,
|
||||
VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000,
|
||||
VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000,
|
||||
|
@ -463,7 +472,13 @@ typedef enum VkStructureType {
|
|||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002,
|
||||
VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000,
|
||||
VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS2_FEATURES_INTEL = 1000209000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001,
|
||||
VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002,
|
||||
VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003,
|
||||
VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004,
|
||||
VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000,
|
||||
VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000,
|
||||
VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001,
|
||||
VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002,
|
||||
|
@ -480,11 +495,19 @@ typedef enum VkStructureType {
|
|||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001,
|
||||
VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000,
|
||||
VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000,
|
||||
VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001,
|
||||
VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000,
|
||||
VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001,
|
||||
VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000,
|
||||
VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001,
|
||||
VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002,
|
||||
|
@ -503,7 +526,17 @@ typedef enum VkStructureType {
|
|||
VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002,
|
||||
VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001,
|
||||
VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000,
|
||||
VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000,
|
||||
VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001,
|
||||
VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002,
|
||||
VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003,
|
||||
VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004,
|
||||
VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001,
|
||||
|
@ -542,6 +575,7 @@ typedef enum VkStructureType {
|
|||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
|
||||
VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES,
|
||||
VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
|
||||
VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
|
||||
VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT,
|
||||
|
@ -826,6 +860,20 @@ typedef enum VkFormat {
|
|||
VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005,
|
||||
VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006,
|
||||
VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007,
|
||||
VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000,
|
||||
VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001,
|
||||
VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002,
|
||||
VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003,
|
||||
VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004,
|
||||
VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005,
|
||||
VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006,
|
||||
VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007,
|
||||
VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008,
|
||||
VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009,
|
||||
VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010,
|
||||
VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011,
|
||||
VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012,
|
||||
VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013,
|
||||
VK_FORMAT_G8B8G8R8_422_UNORM_KHR = VK_FORMAT_G8B8G8R8_422_UNORM,
|
||||
VK_FORMAT_B8G8R8G8_422_UNORM_KHR = VK_FORMAT_B8G8R8G8_422_UNORM,
|
||||
VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM,
|
||||
|
@ -936,6 +984,10 @@ typedef enum VkImageLayout {
|
|||
VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000,
|
||||
VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003,
|
||||
VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000,
|
||||
VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000,
|
||||
VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001,
|
||||
VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002,
|
||||
VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003,
|
||||
VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,
|
||||
VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,
|
||||
VK_IMAGE_LAYOUT_BEGIN_RANGE = VK_IMAGE_LAYOUT_UNDEFINED,
|
||||
|
@ -1172,6 +1224,7 @@ typedef enum VkDynamicState {
|
|||
VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004,
|
||||
VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006,
|
||||
VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001,
|
||||
VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000,
|
||||
VK_DYNAMIC_STATE_BEGIN_RANGE = VK_DYNAMIC_STATE_VIEWPORT,
|
||||
VK_DYNAMIC_STATE_END_RANGE = VK_DYNAMIC_STATE_STENCIL_REFERENCE,
|
||||
VK_DYNAMIC_STATE_RANGE_SIZE = (VK_DYNAMIC_STATE_STENCIL_REFERENCE - VK_DYNAMIC_STATE_VIEWPORT + 1),
|
||||
|
@ -1204,6 +1257,7 @@ typedef enum VkSamplerAddressMode {
|
|||
VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2,
|
||||
VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3,
|
||||
VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4,
|
||||
VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE,
|
||||
VK_SAMPLER_ADDRESS_MODE_BEGIN_RANGE = VK_SAMPLER_ADDRESS_MODE_REPEAT,
|
||||
VK_SAMPLER_ADDRESS_MODE_END_RANGE = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER,
|
||||
VK_SAMPLER_ADDRESS_MODE_RANGE_SIZE = (VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER - VK_SAMPLER_ADDRESS_MODE_REPEAT + 1),
|
||||
|
@ -1285,6 +1339,7 @@ typedef enum VkIndexType {
|
|||
VK_INDEX_TYPE_UINT16 = 0,
|
||||
VK_INDEX_TYPE_UINT32 = 1,
|
||||
VK_INDEX_TYPE_NONE_NV = 1000165000,
|
||||
VK_INDEX_TYPE_UINT8_EXT = 1000265000,
|
||||
VK_INDEX_TYPE_BEGIN_RANGE = VK_INDEX_TYPE_UINT16,
|
||||
VK_INDEX_TYPE_END_RANGE = VK_INDEX_TYPE_UINT32,
|
||||
VK_INDEX_TYPE_RANGE_SIZE = (VK_INDEX_TYPE_UINT32 - VK_INDEX_TYPE_UINT16 + 1),
|
||||
|
@ -1469,6 +1524,8 @@ typedef enum VkMemoryPropertyFlagBits {
|
|||
VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008,
|
||||
VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010,
|
||||
VK_MEMORY_PROPERTY_PROTECTED_BIT = 0x00000020,
|
||||
VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD = 0x00000040,
|
||||
VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 0x00000080,
|
||||
VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
|
||||
} VkMemoryPropertyFlagBits;
|
||||
typedef VkFlags VkMemoryPropertyFlags;
|
||||
|
@ -1622,6 +1679,10 @@ typedef enum VkImageViewCreateFlagBits {
|
|||
VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
|
||||
} VkImageViewCreateFlagBits;
|
||||
typedef VkFlags VkImageViewCreateFlags;
|
||||
|
||||
typedef enum VkShaderModuleCreateFlagBits {
|
||||
VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
|
||||
} VkShaderModuleCreateFlagBits;
|
||||
typedef VkFlags VkShaderModuleCreateFlags;
|
||||
typedef VkFlags VkPipelineCacheCreateFlags;
|
||||
|
||||
|
@ -1632,11 +1693,19 @@ typedef enum VkPipelineCreateFlagBits {
|
|||
VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 0x00000008,
|
||||
VK_PIPELINE_CREATE_DISPATCH_BASE = 0x00000010,
|
||||
VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 0x00000020,
|
||||
VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 0x00000040,
|
||||
VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 0x00000080,
|
||||
VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT,
|
||||
VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = VK_PIPELINE_CREATE_DISPATCH_BASE,
|
||||
VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
|
||||
} VkPipelineCreateFlagBits;
|
||||
typedef VkFlags VkPipelineCreateFlags;
|
||||
|
||||
typedef enum VkPipelineShaderStageCreateFlagBits {
|
||||
VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 0x00000001,
|
||||
VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 0x00000002,
|
||||
VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
|
||||
} VkPipelineShaderStageCreateFlagBits;
|
||||
typedef VkFlags VkPipelineShaderStageCreateFlags;
|
||||
|
||||
typedef enum VkShaderStageFlagBits {
|
||||
|
@ -1709,7 +1778,16 @@ typedef enum VkDescriptorPoolCreateFlagBits {
|
|||
} VkDescriptorPoolCreateFlagBits;
|
||||
typedef VkFlags VkDescriptorPoolCreateFlags;
|
||||
typedef VkFlags VkDescriptorPoolResetFlags;
|
||||
|
||||
typedef enum VkFramebufferCreateFlagBits {
|
||||
VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 0x00000001,
|
||||
VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
|
||||
} VkFramebufferCreateFlagBits;
|
||||
typedef VkFlags VkFramebufferCreateFlags;
|
||||
|
||||
typedef enum VkRenderPassCreateFlagBits {
|
||||
VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
|
||||
} VkRenderPassCreateFlagBits;
|
||||
typedef VkFlags VkRenderPassCreateFlags;
|
||||
|
||||
typedef enum VkAttachmentDescriptionFlagBits {
|
||||
|
@ -1805,7 +1883,8 @@ typedef VkFlags VkCommandBufferResetFlags;
|
|||
typedef enum VkStencilFaceFlagBits {
|
||||
VK_STENCIL_FACE_FRONT_BIT = 0x00000001,
|
||||
VK_STENCIL_FACE_BACK_BIT = 0x00000002,
|
||||
VK_STENCIL_FRONT_AND_BACK = 0x00000003,
|
||||
VK_STENCIL_FACE_FRONT_AND_BACK = 0x00000003,
|
||||
VK_STENCIL_FRONT_AND_BACK = VK_STENCIL_FACE_FRONT_AND_BACK,
|
||||
VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
|
||||
} VkStencilFaceFlagBits;
|
||||
typedef VkFlags VkStencilFaceFlags;
|
||||
|
@ -5021,7 +5100,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImage2KHR(
|
|||
#define VK_KHR_display 1
|
||||
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR)
|
||||
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayModeKHR)
|
||||
#define VK_KHR_DISPLAY_SPEC_VERSION 21
|
||||
#define VK_KHR_DISPLAY_SPEC_VERSION 23
|
||||
#define VK_KHR_DISPLAY_EXTENSION_NAME "VK_KHR_display"
|
||||
|
||||
typedef enum VkDisplayPlaneAlphaFlagBitsKHR {
|
||||
|
@ -5144,7 +5223,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayPlaneSurfaceKHR(
|
|||
|
||||
|
||||
#define VK_KHR_display_swapchain 1
|
||||
#define VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION 9
|
||||
#define VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION 10
|
||||
#define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain"
|
||||
typedef struct VkDisplayPresentInfoKHR {
|
||||
VkStructureType sType;
|
||||
|
@ -5167,7 +5246,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateSharedSwapchainsKHR(
|
|||
|
||||
|
||||
#define VK_KHR_sampler_mirror_clamp_to_edge 1
|
||||
#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION 1
|
||||
#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION 3
|
||||
#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME "VK_KHR_sampler_mirror_clamp_to_edge"
|
||||
|
||||
|
||||
|
@ -5183,7 +5262,7 @@ typedef VkPhysicalDeviceMultiviewProperties VkPhysicalDeviceMultiviewPropertiesK
|
|||
|
||||
|
||||
#define VK_KHR_get_physical_device_properties2 1
|
||||
#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION 1
|
||||
#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION 2
|
||||
#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_physical_device_properties2"
|
||||
typedef VkPhysicalDeviceFeatures2 VkPhysicalDeviceFeatures2KHR;
|
||||
|
||||
|
@ -5248,7 +5327,7 @@ VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
|
|||
|
||||
|
||||
#define VK_KHR_device_group 1
|
||||
#define VK_KHR_DEVICE_GROUP_SPEC_VERSION 3
|
||||
#define VK_KHR_DEVICE_GROUP_SPEC_VERSION 4
|
||||
#define VK_KHR_DEVICE_GROUP_EXTENSION_NAME "VK_KHR_device_group"
|
||||
typedef VkPeerMemoryFeatureFlags VkPeerMemoryFeatureFlagsKHR;
|
||||
|
||||
|
@ -5526,12 +5605,14 @@ VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetWithTemplateKHR(
|
|||
#define VK_KHR_shader_float16_int8 1
|
||||
#define VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION 1
|
||||
#define VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME "VK_KHR_shader_float16_int8"
|
||||
typedef struct VkPhysicalDeviceFloat16Int8FeaturesKHR {
|
||||
typedef struct VkPhysicalDeviceShaderFloat16Int8FeaturesKHR {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkBool32 shaderFloat16;
|
||||
VkBool32 shaderInt8;
|
||||
} VkPhysicalDeviceFloat16Int8FeaturesKHR;
|
||||
} VkPhysicalDeviceShaderFloat16Int8FeaturesKHR;
|
||||
|
||||
typedef VkPhysicalDeviceShaderFloat16Int8FeaturesKHR VkPhysicalDeviceFloat16Int8FeaturesKHR;
|
||||
|
||||
|
||||
|
||||
|
@ -5602,6 +5683,43 @@ VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplateKHR(
|
|||
#endif
|
||||
|
||||
|
||||
#define VK_KHR_imageless_framebuffer 1
|
||||
#define VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION 1
|
||||
#define VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME "VK_KHR_imageless_framebuffer"
|
||||
typedef struct VkPhysicalDeviceImagelessFramebufferFeaturesKHR {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkBool32 imagelessFramebuffer;
|
||||
} VkPhysicalDeviceImagelessFramebufferFeaturesKHR;
|
||||
|
||||
typedef struct VkFramebufferAttachmentImageInfoKHR {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkImageCreateFlags flags;
|
||||
VkImageUsageFlags usage;
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
uint32_t layerCount;
|
||||
uint32_t viewFormatCount;
|
||||
const VkFormat* pViewFormats;
|
||||
} VkFramebufferAttachmentImageInfoKHR;
|
||||
|
||||
typedef struct VkFramebufferAttachmentsCreateInfoKHR {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
uint32_t attachmentImageInfoCount;
|
||||
const VkFramebufferAttachmentImageInfoKHR* pAttachmentImageInfos;
|
||||
} VkFramebufferAttachmentsCreateInfoKHR;
|
||||
|
||||
typedef struct VkRenderPassAttachmentBeginInfoKHR {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
uint32_t attachmentCount;
|
||||
const VkImageView* pAttachments;
|
||||
} VkRenderPassAttachmentBeginInfoKHR;
|
||||
|
||||
|
||||
|
||||
#define VK_KHR_create_renderpass2 1
|
||||
#define VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION 1
|
||||
#define VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME "VK_KHR_create_renderpass2"
|
||||
|
@ -5994,7 +6112,7 @@ typedef struct VkImageFormatListCreateInfoKHR {
|
|||
#define VK_KHR_sampler_ycbcr_conversion 1
|
||||
typedef VkSamplerYcbcrConversion VkSamplerYcbcrConversionKHR;
|
||||
|
||||
#define VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION 1
|
||||
#define VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION 14
|
||||
#define VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME "VK_KHR_sampler_ycbcr_conversion"
|
||||
typedef VkSamplerYcbcrModelConversion VkSamplerYcbcrModelConversionKHR;
|
||||
|
||||
|
@ -6098,6 +6216,17 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountKHR(
|
|||
#endif
|
||||
|
||||
|
||||
#define VK_KHR_shader_subgroup_extended_types 1
|
||||
#define VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION 1
|
||||
#define VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME "VK_KHR_shader_subgroup_extended_types"
|
||||
typedef struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkBool32 shaderSubgroupExtendedTypes;
|
||||
} VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR;
|
||||
|
||||
|
||||
|
||||
#define VK_KHR_8bit_storage 1
|
||||
#define VK_KHR_8BIT_STORAGE_SPEC_VERSION 1
|
||||
#define VK_KHR_8BIT_STORAGE_EXTENSION_NAME "VK_KHR_8bit_storage"
|
||||
|
@ -6123,6 +6252,18 @@ typedef struct VkPhysicalDeviceShaderAtomicInt64FeaturesKHR {
|
|||
|
||||
|
||||
|
||||
#define VK_KHR_shader_clock 1
|
||||
#define VK_KHR_SHADER_CLOCK_SPEC_VERSION 1
|
||||
#define VK_KHR_SHADER_CLOCK_EXTENSION_NAME "VK_KHR_shader_clock"
|
||||
typedef struct VkPhysicalDeviceShaderClockFeaturesKHR {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkBool32 shaderSubgroupClock;
|
||||
VkBool32 shaderDeviceClock;
|
||||
} VkPhysicalDeviceShaderClockFeaturesKHR;
|
||||
|
||||
|
||||
|
||||
#define VK_KHR_driver_properties 1
|
||||
#define VK_MAX_DRIVER_NAME_SIZE_KHR 256
|
||||
#define VK_MAX_DRIVER_INFO_SIZE_KHR 256
|
||||
|
@ -6166,28 +6307,38 @@ typedef struct VkPhysicalDeviceDriverPropertiesKHR {
|
|||
|
||||
|
||||
#define VK_KHR_shader_float_controls 1
|
||||
#define VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION 1
|
||||
#define VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION 4
|
||||
#define VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME "VK_KHR_shader_float_controls"
|
||||
|
||||
typedef enum VkShaderFloatControlsIndependenceKHR {
|
||||
VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0,
|
||||
VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1,
|
||||
VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2,
|
||||
VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_BEGIN_RANGE_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR,
|
||||
VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_END_RANGE_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR,
|
||||
VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_RANGE_SIZE_KHR = (VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR + 1),
|
||||
VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM_KHR = 0x7FFFFFFF
|
||||
} VkShaderFloatControlsIndependenceKHR;
|
||||
typedef struct VkPhysicalDeviceFloatControlsPropertiesKHR {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkBool32 separateDenormSettings;
|
||||
VkBool32 separateRoundingModeSettings;
|
||||
VkBool32 shaderSignedZeroInfNanPreserveFloat16;
|
||||
VkBool32 shaderSignedZeroInfNanPreserveFloat32;
|
||||
VkBool32 shaderSignedZeroInfNanPreserveFloat64;
|
||||
VkBool32 shaderDenormPreserveFloat16;
|
||||
VkBool32 shaderDenormPreserveFloat32;
|
||||
VkBool32 shaderDenormPreserveFloat64;
|
||||
VkBool32 shaderDenormFlushToZeroFloat16;
|
||||
VkBool32 shaderDenormFlushToZeroFloat32;
|
||||
VkBool32 shaderDenormFlushToZeroFloat64;
|
||||
VkBool32 shaderRoundingModeRTEFloat16;
|
||||
VkBool32 shaderRoundingModeRTEFloat32;
|
||||
VkBool32 shaderRoundingModeRTEFloat64;
|
||||
VkBool32 shaderRoundingModeRTZFloat16;
|
||||
VkBool32 shaderRoundingModeRTZFloat32;
|
||||
VkBool32 shaderRoundingModeRTZFloat64;
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkShaderFloatControlsIndependenceKHR denormBehaviorIndependence;
|
||||
VkShaderFloatControlsIndependenceKHR roundingModeIndependence;
|
||||
VkBool32 shaderSignedZeroInfNanPreserveFloat16;
|
||||
VkBool32 shaderSignedZeroInfNanPreserveFloat32;
|
||||
VkBool32 shaderSignedZeroInfNanPreserveFloat64;
|
||||
VkBool32 shaderDenormPreserveFloat16;
|
||||
VkBool32 shaderDenormPreserveFloat32;
|
||||
VkBool32 shaderDenormPreserveFloat64;
|
||||
VkBool32 shaderDenormFlushToZeroFloat16;
|
||||
VkBool32 shaderDenormFlushToZeroFloat32;
|
||||
VkBool32 shaderDenormFlushToZeroFloat64;
|
||||
VkBool32 shaderRoundingModeRTEFloat16;
|
||||
VkBool32 shaderRoundingModeRTEFloat32;
|
||||
VkBool32 shaderRoundingModeRTEFloat64;
|
||||
VkBool32 shaderRoundingModeRTZFloat16;
|
||||
VkBool32 shaderRoundingModeRTZFloat32;
|
||||
VkBool32 shaderRoundingModeRTZFloat64;
|
||||
} VkPhysicalDeviceFloatControlsPropertiesKHR;
|
||||
|
||||
|
||||
|
@ -6229,6 +6380,89 @@ typedef struct VkPhysicalDeviceDepthStencilResolvePropertiesKHR {
|
|||
#define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME "VK_KHR_swapchain_mutable_format"
|
||||
|
||||
|
||||
#define VK_KHR_timeline_semaphore 1
|
||||
#define VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION 2
|
||||
#define VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME "VK_KHR_timeline_semaphore"
|
||||
|
||||
typedef enum VkSemaphoreTypeKHR {
|
||||
VK_SEMAPHORE_TYPE_BINARY_KHR = 0,
|
||||
VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1,
|
||||
VK_SEMAPHORE_TYPE_BEGIN_RANGE_KHR = VK_SEMAPHORE_TYPE_BINARY_KHR,
|
||||
VK_SEMAPHORE_TYPE_END_RANGE_KHR = VK_SEMAPHORE_TYPE_TIMELINE_KHR,
|
||||
VK_SEMAPHORE_TYPE_RANGE_SIZE_KHR = (VK_SEMAPHORE_TYPE_TIMELINE_KHR - VK_SEMAPHORE_TYPE_BINARY_KHR + 1),
|
||||
VK_SEMAPHORE_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF
|
||||
} VkSemaphoreTypeKHR;
|
||||
|
||||
typedef enum VkSemaphoreWaitFlagBitsKHR {
|
||||
VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 0x00000001,
|
||||
VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
|
||||
} VkSemaphoreWaitFlagBitsKHR;
|
||||
typedef VkFlags VkSemaphoreWaitFlagsKHR;
|
||||
typedef struct VkPhysicalDeviceTimelineSemaphoreFeaturesKHR {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkBool32 timelineSemaphore;
|
||||
} VkPhysicalDeviceTimelineSemaphoreFeaturesKHR;
|
||||
|
||||
typedef struct VkPhysicalDeviceTimelineSemaphorePropertiesKHR {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
uint64_t maxTimelineSemaphoreValueDifference;
|
||||
} VkPhysicalDeviceTimelineSemaphorePropertiesKHR;
|
||||
|
||||
typedef struct VkSemaphoreTypeCreateInfoKHR {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkSemaphoreTypeKHR semaphoreType;
|
||||
uint64_t initialValue;
|
||||
} VkSemaphoreTypeCreateInfoKHR;
|
||||
|
||||
typedef struct VkTimelineSemaphoreSubmitInfoKHR {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
uint32_t waitSemaphoreValueCount;
|
||||
const uint64_t* pWaitSemaphoreValues;
|
||||
uint32_t signalSemaphoreValueCount;
|
||||
const uint64_t* pSignalSemaphoreValues;
|
||||
} VkTimelineSemaphoreSubmitInfoKHR;
|
||||
|
||||
typedef struct VkSemaphoreWaitInfoKHR {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkSemaphoreWaitFlagsKHR flags;
|
||||
uint32_t semaphoreCount;
|
||||
const VkSemaphore* pSemaphores;
|
||||
const uint64_t* pValues;
|
||||
} VkSemaphoreWaitInfoKHR;
|
||||
|
||||
typedef struct VkSemaphoreSignalInfoKHR {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkSemaphore semaphore;
|
||||
uint64_t value;
|
||||
} VkSemaphoreSignalInfoKHR;
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreCounterValueKHR)(VkDevice device, VkSemaphore semaphore, uint64_t* pValue);
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkWaitSemaphoresKHR)(VkDevice device, const VkSemaphoreWaitInfoKHR* pWaitInfo, uint64_t timeout);
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkSignalSemaphoreKHR)(VkDevice device, const VkSemaphoreSignalInfoKHR* pSignalInfo);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreCounterValueKHR(
|
||||
VkDevice device,
|
||||
VkSemaphore semaphore,
|
||||
uint64_t* pValue);
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkWaitSemaphoresKHR(
|
||||
VkDevice device,
|
||||
const VkSemaphoreWaitInfoKHR* pWaitInfo,
|
||||
uint64_t timeout);
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkSignalSemaphoreKHR(
|
||||
VkDevice device,
|
||||
const VkSemaphoreSignalInfoKHR* pSignalInfo);
|
||||
#endif
|
||||
|
||||
|
||||
#define VK_KHR_vulkan_memory_model 1
|
||||
#define VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION 3
|
||||
#define VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME "VK_KHR_vulkan_memory_model"
|
||||
|
@ -6242,6 +6476,11 @@ typedef struct VkPhysicalDeviceVulkanMemoryModelFeaturesKHR {
|
|||
|
||||
|
||||
|
||||
#define VK_KHR_spirv_1_4 1
|
||||
#define VK_KHR_SPIRV_1_4_SPEC_VERSION 1
|
||||
#define VK_KHR_SPIRV_1_4_EXTENSION_NAME "VK_KHR_spirv_1_4"
|
||||
|
||||
|
||||
#define VK_KHR_surface_protected_capabilities 1
|
||||
#define VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION 1
|
||||
#define VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME "VK_KHR_surface_protected_capabilities"
|
||||
|
@ -6253,6 +6492,30 @@ typedef struct VkSurfaceProtectedCapabilitiesKHR {
|
|||
|
||||
|
||||
|
||||
#define VK_KHR_separate_depth_stencil_layouts 1
|
||||
#define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION 1
|
||||
#define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME "VK_KHR_separate_depth_stencil_layouts"
|
||||
typedef struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkBool32 separateDepthStencilLayouts;
|
||||
} VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR;
|
||||
|
||||
typedef struct VkAttachmentReferenceStencilLayoutKHR {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkImageLayout stencilLayout;
|
||||
} VkAttachmentReferenceStencilLayoutKHR;
|
||||
|
||||
typedef struct VkAttachmentDescriptionStencilLayoutKHR {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkImageLayout stencilInitialLayout;
|
||||
VkImageLayout stencilFinalLayout;
|
||||
} VkAttachmentDescriptionStencilLayoutKHR;
|
||||
|
||||
|
||||
|
||||
#define VK_KHR_uniform_buffer_standard_layout 1
|
||||
#define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION 1
|
||||
#define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME "VK_KHR_uniform_buffer_standard_layout"
|
||||
|
@ -6264,6 +6527,99 @@ typedef struct VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR {
|
|||
|
||||
|
||||
|
||||
#define VK_KHR_pipeline_executable_properties 1
|
||||
#define VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION 1
|
||||
#define VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME "VK_KHR_pipeline_executable_properties"
|
||||
|
||||
typedef enum VkPipelineExecutableStatisticFormatKHR {
|
||||
VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0,
|
||||
VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1,
|
||||
VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2,
|
||||
VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3,
|
||||
VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BEGIN_RANGE_KHR = VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR,
|
||||
VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_END_RANGE_KHR = VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR,
|
||||
VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_RANGE_SIZE_KHR = (VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR - VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR + 1),
|
||||
VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 0x7FFFFFFF
|
||||
} VkPipelineExecutableStatisticFormatKHR;
|
||||
typedef struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkBool32 pipelineExecutableInfo;
|
||||
} VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR;
|
||||
|
||||
typedef struct VkPipelineInfoKHR {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkPipeline pipeline;
|
||||
} VkPipelineInfoKHR;
|
||||
|
||||
typedef struct VkPipelineExecutablePropertiesKHR {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkShaderStageFlags stages;
|
||||
char name[VK_MAX_DESCRIPTION_SIZE];
|
||||
char description[VK_MAX_DESCRIPTION_SIZE];
|
||||
uint32_t subgroupSize;
|
||||
} VkPipelineExecutablePropertiesKHR;
|
||||
|
||||
typedef struct VkPipelineExecutableInfoKHR {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkPipeline pipeline;
|
||||
uint32_t executableIndex;
|
||||
} VkPipelineExecutableInfoKHR;
|
||||
|
||||
typedef union VkPipelineExecutableStatisticValueKHR {
|
||||
VkBool32 b32;
|
||||
int64_t i64;
|
||||
uint64_t u64;
|
||||
double f64;
|
||||
} VkPipelineExecutableStatisticValueKHR;
|
||||
|
||||
typedef struct VkPipelineExecutableStatisticKHR {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
char name[VK_MAX_DESCRIPTION_SIZE];
|
||||
char description[VK_MAX_DESCRIPTION_SIZE];
|
||||
VkPipelineExecutableStatisticFormatKHR format;
|
||||
VkPipelineExecutableStatisticValueKHR value;
|
||||
} VkPipelineExecutableStatisticKHR;
|
||||
|
||||
typedef struct VkPipelineExecutableInternalRepresentationKHR {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
char name[VK_MAX_DESCRIPTION_SIZE];
|
||||
char description[VK_MAX_DESCRIPTION_SIZE];
|
||||
VkBool32 isText;
|
||||
size_t dataSize;
|
||||
void* pData;
|
||||
} VkPipelineExecutableInternalRepresentationKHR;
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutablePropertiesKHR)(VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, uint32_t* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties);
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutableStatisticsKHR)(VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics);
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutableInternalRepresentationsKHR)(VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutablePropertiesKHR(
|
||||
VkDevice device,
|
||||
const VkPipelineInfoKHR* pPipelineInfo,
|
||||
uint32_t* pExecutableCount,
|
||||
VkPipelineExecutablePropertiesKHR* pProperties);
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableStatisticsKHR(
|
||||
VkDevice device,
|
||||
const VkPipelineExecutableInfoKHR* pExecutableInfo,
|
||||
uint32_t* pStatisticCount,
|
||||
VkPipelineExecutableStatisticKHR* pStatistics);
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableInternalRepresentationsKHR(
|
||||
VkDevice device,
|
||||
const VkPipelineExecutableInfoKHR* pExecutableInfo,
|
||||
uint32_t* pInternalRepresentationCount,
|
||||
VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations);
|
||||
#endif
|
||||
|
||||
|
||||
#define VK_EXT_debug_report 1
|
||||
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT)
|
||||
#define VK_EXT_DEBUG_REPORT_SPEC_VERSION 9
|
||||
|
@ -6610,7 +6966,7 @@ VKAPI_ATTR uint32_t VKAPI_CALL vkGetImageViewHandleNVX(
|
|||
|
||||
|
||||
#define VK_AMD_draw_indirect_count 1
|
||||
#define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 1
|
||||
#define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 2
|
||||
#define VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_AMD_draw_indirect_count"
|
||||
typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
|
||||
typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
|
||||
|
@ -6787,7 +7143,7 @@ typedef struct VkExportMemoryAllocateInfoNV {
|
|||
|
||||
|
||||
#define VK_EXT_validation_flags 1
|
||||
#define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 1
|
||||
#define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 2
|
||||
#define VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME "VK_EXT_validation_flags"
|
||||
|
||||
typedef enum VkValidationCheckEXT {
|
||||
|
@ -6817,6 +7173,17 @@ typedef struct VkValidationFlagsEXT {
|
|||
#define VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME "VK_EXT_shader_subgroup_vote"
|
||||
|
||||
|
||||
#define VK_EXT_texture_compression_astc_hdr 1
|
||||
#define VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION 1
|
||||
#define VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME "VK_EXT_texture_compression_astc_hdr"
|
||||
typedef struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkBool32 textureCompressionASTC_HDR;
|
||||
} VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT;
|
||||
|
||||
|
||||
|
||||
#define VK_EXT_astc_decode_mode 1
|
||||
#define VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION 1
|
||||
#define VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME "VK_EXT_astc_decode_mode"
|
||||
|
@ -6835,7 +7202,7 @@ typedef struct VkPhysicalDeviceASTCDecodeFeaturesEXT {
|
|||
|
||||
|
||||
#define VK_EXT_conditional_rendering 1
|
||||
#define VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION 1
|
||||
#define VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION 2
|
||||
#define VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME "VK_EXT_conditional_rendering"
|
||||
|
||||
typedef enum VkConditionalRenderingFlagBitsEXT {
|
||||
|
@ -7467,7 +7834,7 @@ typedef struct VkPipelineRasterizationDepthClipStateCreateInfoEXT {
|
|||
|
||||
|
||||
#define VK_EXT_hdr_metadata 1
|
||||
#define VK_EXT_HDR_METADATA_SPEC_VERSION 1
|
||||
#define VK_EXT_HDR_METADATA_SPEC_VERSION 2
|
||||
#define VK_EXT_HDR_METADATA_EXTENSION_NAME "VK_EXT_hdr_metadata"
|
||||
typedef struct VkXYColorEXT {
|
||||
float x;
|
||||
|
@ -7651,7 +8018,7 @@ VKAPI_ATTR void VKAPI_CALL vkSubmitDebugUtilsMessageEXT(
|
|||
|
||||
|
||||
#define VK_EXT_sampler_filter_minmax 1
|
||||
#define VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION 1
|
||||
#define VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION 2
|
||||
#define VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME "VK_EXT_sampler_filter_minmax"
|
||||
|
||||
typedef enum VkSamplerReductionModeEXT {
|
||||
|
@ -8234,6 +8601,15 @@ VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkAccelerationStructureNV)
|
|||
#define VK_NV_RAY_TRACING_EXTENSION_NAME "VK_NV_ray_tracing"
|
||||
#define VK_SHADER_UNUSED_NV (~0U)
|
||||
|
||||
typedef enum VkAccelerationStructureTypeNV {
|
||||
VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0,
|
||||
VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1,
|
||||
VK_ACCELERATION_STRUCTURE_TYPE_BEGIN_RANGE_NV = VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV,
|
||||
VK_ACCELERATION_STRUCTURE_TYPE_END_RANGE_NV = VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV,
|
||||
VK_ACCELERATION_STRUCTURE_TYPE_RANGE_SIZE_NV = (VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV - VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV + 1),
|
||||
VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_NV = 0x7FFFFFFF
|
||||
} VkAccelerationStructureTypeNV;
|
||||
|
||||
typedef enum VkRayTracingShaderGroupTypeNV {
|
||||
VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0,
|
||||
VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1,
|
||||
|
@ -8253,15 +8629,6 @@ typedef enum VkGeometryTypeNV {
|
|||
VK_GEOMETRY_TYPE_MAX_ENUM_NV = 0x7FFFFFFF
|
||||
} VkGeometryTypeNV;
|
||||
|
||||
typedef enum VkAccelerationStructureTypeNV {
|
||||
VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0,
|
||||
VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1,
|
||||
VK_ACCELERATION_STRUCTURE_TYPE_BEGIN_RANGE_NV = VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV,
|
||||
VK_ACCELERATION_STRUCTURE_TYPE_END_RANGE_NV = VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV,
|
||||
VK_ACCELERATION_STRUCTURE_TYPE_RANGE_SIZE_NV = (VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV - VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV + 1),
|
||||
VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_NV = 0x7FFFFFFF
|
||||
} VkAccelerationStructureTypeNV;
|
||||
|
||||
typedef enum VkCopyAccelerationStructureModeNV {
|
||||
VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0,
|
||||
VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1,
|
||||
|
@ -8529,7 +8896,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCompileDeferredNV(
|
|||
|
||||
|
||||
#define VK_NV_representative_fragment_test 1
|
||||
#define VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION 1
|
||||
#define VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION 2
|
||||
#define VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME "VK_NV_representative_fragment_test"
|
||||
typedef struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV {
|
||||
VkStructureType sType;
|
||||
|
@ -8633,6 +9000,22 @@ VKAPI_ATTR void VKAPI_CALL vkCmdWriteBufferMarkerAMD(
|
|||
#endif
|
||||
|
||||
|
||||
#define VK_AMD_pipeline_compiler_control 1
|
||||
#define VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION 1
|
||||
#define VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME "VK_AMD_pipeline_compiler_control"
|
||||
|
||||
typedef enum VkPipelineCompilerControlFlagBitsAMD {
|
||||
VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 0x7FFFFFFF
|
||||
} VkPipelineCompilerControlFlagBitsAMD;
|
||||
typedef VkFlags VkPipelineCompilerControlFlagsAMD;
|
||||
typedef struct VkPipelineCompilerControlCreateInfoAMD {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkPipelineCompilerControlFlagsAMD compilerControlFlags;
|
||||
} VkPipelineCompilerControlCreateInfoAMD;
|
||||
|
||||
|
||||
|
||||
#define VK_EXT_calibrated_timestamps 1
|
||||
#define VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION 1
|
||||
#define VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME "VK_EXT_calibrated_timestamps"
|
||||
|
@ -8672,7 +9055,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetCalibratedTimestampsEXT(
|
|||
|
||||
|
||||
#define VK_AMD_shader_core_properties 1
|
||||
#define VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION 1
|
||||
#define VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION 2
|
||||
#define VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME "VK_AMD_shader_core_properties"
|
||||
typedef struct VkPhysicalDeviceShaderCorePropertiesAMD {
|
||||
VkStructureType sType;
|
||||
|
@ -8862,7 +9245,7 @@ typedef struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV {
|
|||
|
||||
|
||||
#define VK_NV_shader_image_footprint 1
|
||||
#define VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION 1
|
||||
#define VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION 2
|
||||
#define VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME "VK_NV_shader_image_footprint"
|
||||
typedef struct VkPhysicalDeviceShaderImageFootprintFeaturesNV {
|
||||
VkStructureType sType;
|
||||
|
@ -8931,13 +9314,13 @@ VKAPI_ATTR void VKAPI_CALL vkGetQueueCheckpointDataNV(
|
|||
|
||||
|
||||
#define VK_INTEL_shader_integer_functions2 1
|
||||
#define VK_INTEL_SHADER_INTEGER_FUNCTIONS2_SPEC_VERSION 1
|
||||
#define VK_INTEL_SHADER_INTEGER_FUNCTIONS2_EXTENSION_NAME "VK_INTEL_shader_integer_functions2"
|
||||
typedef struct VkPhysicalDeviceShaderIntegerFunctions2INTEL {
|
||||
#define VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION 1
|
||||
#define VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME "VK_INTEL_shader_integer_functions2"
|
||||
typedef struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkBool32 shaderIntegerFunctions2;
|
||||
} VkPhysicalDeviceShaderIntegerFunctions2INTEL;
|
||||
} VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL;
|
||||
|
||||
|
||||
|
||||
|
@ -9179,6 +9562,61 @@ typedef struct VkPhysicalDeviceScalarBlockLayoutFeaturesEXT {
|
|||
#define VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME "VK_GOOGLE_decorate_string"
|
||||
|
||||
|
||||
#define VK_EXT_subgroup_size_control 1
|
||||
#define VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION 2
|
||||
#define VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME "VK_EXT_subgroup_size_control"
|
||||
typedef struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkBool32 subgroupSizeControl;
|
||||
VkBool32 computeFullSubgroups;
|
||||
} VkPhysicalDeviceSubgroupSizeControlFeaturesEXT;
|
||||
|
||||
typedef struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
uint32_t minSubgroupSize;
|
||||
uint32_t maxSubgroupSize;
|
||||
uint32_t maxComputeWorkgroupSubgroups;
|
||||
VkShaderStageFlags requiredSubgroupSizeStages;
|
||||
} VkPhysicalDeviceSubgroupSizeControlPropertiesEXT;
|
||||
|
||||
typedef struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
uint32_t requiredSubgroupSize;
|
||||
} VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT;
|
||||
|
||||
|
||||
|
||||
#define VK_AMD_shader_core_properties2 1
|
||||
#define VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION 1
|
||||
#define VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME "VK_AMD_shader_core_properties2"
|
||||
|
||||
typedef enum VkShaderCorePropertiesFlagBitsAMD {
|
||||
VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 0x7FFFFFFF
|
||||
} VkShaderCorePropertiesFlagBitsAMD;
|
||||
typedef VkFlags VkShaderCorePropertiesFlagsAMD;
|
||||
typedef struct VkPhysicalDeviceShaderCoreProperties2AMD {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkShaderCorePropertiesFlagsAMD shaderCoreFeatures;
|
||||
uint32_t activeComputeUnitCount;
|
||||
} VkPhysicalDeviceShaderCoreProperties2AMD;
|
||||
|
||||
|
||||
|
||||
#define VK_AMD_device_coherent_memory 1
|
||||
#define VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION 1
|
||||
#define VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME "VK_AMD_device_coherent_memory"
|
||||
typedef struct VkPhysicalDeviceCoherentMemoryFeaturesAMD {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkBool32 deviceCoherentMemory;
|
||||
} VkPhysicalDeviceCoherentMemoryFeaturesAMD;
|
||||
|
||||
|
||||
|
||||
#define VK_EXT_memory_budget 1
|
||||
#define VK_EXT_MEMORY_BUDGET_SPEC_VERSION 1
|
||||
#define VK_EXT_MEMORY_BUDGET_EXTENSION_NAME "VK_EXT_memory_budget"
|
||||
|
@ -9266,15 +9704,16 @@ typedef struct VkImageStencilUsageCreateInfoEXT {
|
|||
|
||||
|
||||
#define VK_EXT_validation_features 1
|
||||
#define VK_EXT_VALIDATION_FEATURES_SPEC_VERSION 1
|
||||
#define VK_EXT_VALIDATION_FEATURES_SPEC_VERSION 2
|
||||
#define VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME "VK_EXT_validation_features"
|
||||
|
||||
typedef enum VkValidationFeatureEnableEXT {
|
||||
VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0,
|
||||
VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1,
|
||||
VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2,
|
||||
VK_VALIDATION_FEATURE_ENABLE_BEGIN_RANGE_EXT = VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT,
|
||||
VK_VALIDATION_FEATURE_ENABLE_END_RANGE_EXT = VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT,
|
||||
VK_VALIDATION_FEATURE_ENABLE_RANGE_SIZE_EXT = (VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT - VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT + 1),
|
||||
VK_VALIDATION_FEATURE_ENABLE_END_RANGE_EXT = VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT,
|
||||
VK_VALIDATION_FEATURE_ENABLE_RANGE_SIZE_EXT = (VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT - VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT + 1),
|
||||
VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 0x7FFFFFFF
|
||||
} VkValidationFeatureEnableEXT;
|
||||
|
||||
|
@ -9440,7 +9879,7 @@ typedef struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT {
|
|||
|
||||
|
||||
#define VK_EXT_headless_surface 1
|
||||
#define VK_EXT_HEADLESS_SURFACE_SPEC_VERSION 0
|
||||
#define VK_EXT_HEADLESS_SURFACE_SPEC_VERSION 1
|
||||
#define VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME "VK_EXT_headless_surface"
|
||||
typedef VkFlags VkHeadlessSurfaceCreateFlagsEXT;
|
||||
typedef struct VkHeadlessSurfaceCreateInfoEXT {
|
||||
|
@ -9460,6 +9899,56 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateHeadlessSurfaceEXT(
|
|||
#endif
|
||||
|
||||
|
||||
#define VK_EXT_line_rasterization 1
|
||||
#define VK_EXT_LINE_RASTERIZATION_SPEC_VERSION 1
|
||||
#define VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME "VK_EXT_line_rasterization"
|
||||
|
||||
typedef enum VkLineRasterizationModeEXT {
|
||||
VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0,
|
||||
VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1,
|
||||
VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2,
|
||||
VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3,
|
||||
VK_LINE_RASTERIZATION_MODE_BEGIN_RANGE_EXT = VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT,
|
||||
VK_LINE_RASTERIZATION_MODE_END_RANGE_EXT = VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT,
|
||||
VK_LINE_RASTERIZATION_MODE_RANGE_SIZE_EXT = (VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT - VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT + 1),
|
||||
VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
|
||||
} VkLineRasterizationModeEXT;
|
||||
typedef struct VkPhysicalDeviceLineRasterizationFeaturesEXT {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkBool32 rectangularLines;
|
||||
VkBool32 bresenhamLines;
|
||||
VkBool32 smoothLines;
|
||||
VkBool32 stippledRectangularLines;
|
||||
VkBool32 stippledBresenhamLines;
|
||||
VkBool32 stippledSmoothLines;
|
||||
} VkPhysicalDeviceLineRasterizationFeaturesEXT;
|
||||
|
||||
typedef struct VkPhysicalDeviceLineRasterizationPropertiesEXT {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
uint32_t lineSubPixelPrecisionBits;
|
||||
} VkPhysicalDeviceLineRasterizationPropertiesEXT;
|
||||
|
||||
typedef struct VkPipelineRasterizationLineStateCreateInfoEXT {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkLineRasterizationModeEXT lineRasterizationMode;
|
||||
VkBool32 stippledLineEnable;
|
||||
uint32_t lineStippleFactor;
|
||||
uint16_t lineStipplePattern;
|
||||
} VkPipelineRasterizationLineStateCreateInfoEXT;
|
||||
|
||||
typedef void (VKAPI_PTR *PFN_vkCmdSetLineStippleEXT)(VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, uint16_t lineStipplePattern);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
VKAPI_ATTR void VKAPI_CALL vkCmdSetLineStippleEXT(
|
||||
VkCommandBuffer commandBuffer,
|
||||
uint32_t lineStippleFactor,
|
||||
uint16_t lineStipplePattern);
|
||||
#endif
|
||||
|
||||
|
||||
#define VK_EXT_host_query_reset 1
|
||||
#define VK_EXT_HOST_QUERY_RESET_SPEC_VERSION 1
|
||||
#define VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME "VK_EXT_host_query_reset"
|
||||
|
@ -9480,6 +9969,17 @@ VKAPI_ATTR void VKAPI_CALL vkResetQueryPoolEXT(
|
|||
#endif
|
||||
|
||||
|
||||
#define VK_EXT_index_type_uint8 1
|
||||
#define VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION 1
|
||||
#define VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME "VK_EXT_index_type_uint8"
|
||||
typedef struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkBool32 indexTypeUint8;
|
||||
} VkPhysicalDeviceIndexTypeUint8FeaturesEXT;
|
||||
|
||||
|
||||
|
||||
#define VK_EXT_shader_demote_to_helper_invocation 1
|
||||
#define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION 1
|
||||
#define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME "VK_EXT_shader_demote_to_helper_invocation"
|
||||
|
@ -9510,6 +10010,11 @@ typedef struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT {
|
|||
} VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT;
|
||||
|
||||
|
||||
|
||||
#define VK_GOOGLE_user_type 1
|
||||
#define VK_GOOGLE_USER_TYPE_SPEC_VERSION 1
|
||||
#define VK_GOOGLE_USER_TYPE_EXTENSION_NAME "VK_GOOGLE_user_type"
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
#ifndef VULKAN_FUCHSIA_H_
|
||||
#define VULKAN_FUCHSIA_H_ 1
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
** Copyright (c) 2015-2019 The Khronos Group Inc.
|
||||
**
|
||||
|
@ -27,6 +23,11 @@ extern "C" {
|
|||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define VK_FUCHSIA_imagepipe_surface 1
|
||||
#define VK_FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION 1
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
#ifndef VULKAN_GGP_H_
|
||||
#define VULKAN_GGP_H_ 1
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
** Copyright (c) 2015-2019 The Khronos Group Inc.
|
||||
**
|
||||
|
@ -27,6 +23,11 @@ extern "C" {
|
|||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define VK_GGP_stream_descriptor_surface 1
|
||||
#define VK_GGP_STREAM_DESCRIPTOR_SURFACE_SPEC_VERSION 1
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
#ifndef VULKAN_IOS_H_
|
||||
#define VULKAN_IOS_H_ 1
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
** Copyright (c) 2015-2019 The Khronos Group Inc.
|
||||
**
|
||||
|
@ -27,6 +23,11 @@ extern "C" {
|
|||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define VK_MVK_ios_surface 1
|
||||
#define VK_MVK_IOS_SURFACE_SPEC_VERSION 2
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
#ifndef VULKAN_MACOS_H_
|
||||
#define VULKAN_MACOS_H_ 1
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
** Copyright (c) 2015-2019 The Khronos Group Inc.
|
||||
**
|
||||
|
@ -27,6 +23,11 @@ extern "C" {
|
|||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define VK_MVK_macos_surface 1
|
||||
#define VK_MVK_MACOS_SURFACE_SPEC_VERSION 2
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
#ifndef VULKAN_METAL_H_
|
||||
#define VULKAN_METAL_H_ 1
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
** Copyright (c) 2015-2019 The Khronos Group Inc.
|
||||
**
|
||||
|
@ -27,6 +23,11 @@ extern "C" {
|
|||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define VK_EXT_metal_surface 1
|
||||
|
||||
|
|
9
thirdparty/vulkan/include/vulkan/vulkan_vi.h
vendored
9
thirdparty/vulkan/include/vulkan/vulkan_vi.h
vendored
|
@ -1,10 +1,6 @@
|
|||
#ifndef VULKAN_VI_H_
|
||||
#define VULKAN_VI_H_ 1
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
** Copyright (c) 2015-2019 The Khronos Group Inc.
|
||||
**
|
||||
|
@ -27,6 +23,11 @@ extern "C" {
|
|||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define VK_NN_vi_surface 1
|
||||
#define VK_NN_VI_SURFACE_SPEC_VERSION 1
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
#ifndef VULKAN_WAYLAND_H_
|
||||
#define VULKAN_WAYLAND_H_ 1
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
** Copyright (c) 2015-2019 The Khronos Group Inc.
|
||||
**
|
||||
|
@ -27,6 +23,11 @@ extern "C" {
|
|||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define VK_KHR_wayland_surface 1
|
||||
#define VK_KHR_WAYLAND_SURFACE_SPEC_VERSION 6
|
||||
|
|
13
thirdparty/vulkan/include/vulkan/vulkan_win32.h
vendored
13
thirdparty/vulkan/include/vulkan/vulkan_win32.h
vendored
|
@ -1,10 +1,6 @@
|
|||
#ifndef VULKAN_WIN32_H_
|
||||
#define VULKAN_WIN32_H_ 1
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
** Copyright (c) 2015-2019 The Khronos Group Inc.
|
||||
**
|
||||
|
@ -27,6 +23,11 @@ extern "C" {
|
|||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define VK_KHR_win32_surface 1
|
||||
#define VK_KHR_WIN32_SURFACE_SPEC_VERSION 6
|
||||
|
@ -246,7 +247,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleNV(
|
|||
|
||||
|
||||
#define VK_NV_win32_keyed_mutex 1
|
||||
#define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 1
|
||||
#define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 2
|
||||
#define VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_NV_win32_keyed_mutex"
|
||||
typedef struct VkWin32KeyedMutexAcquireReleaseInfoNV {
|
||||
VkStructureType sType;
|
||||
|
@ -263,7 +264,7 @@ typedef struct VkWin32KeyedMutexAcquireReleaseInfoNV {
|
|||
|
||||
|
||||
#define VK_EXT_full_screen_exclusive 1
|
||||
#define VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION 3
|
||||
#define VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION 4
|
||||
#define VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME "VK_EXT_full_screen_exclusive"
|
||||
|
||||
typedef enum VkFullScreenExclusiveEXT {
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
#ifndef VULKAN_XCB_H_
|
||||
#define VULKAN_XCB_H_ 1
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
** Copyright (c) 2015-2019 The Khronos Group Inc.
|
||||
**
|
||||
|
@ -27,6 +23,11 @@ extern "C" {
|
|||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define VK_KHR_xcb_surface 1
|
||||
#define VK_KHR_XCB_SURFACE_SPEC_VERSION 6
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
#ifndef VULKAN_XLIB_H_
|
||||
#define VULKAN_XLIB_H_ 1
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
** Copyright (c) 2015-2019 The Khronos Group Inc.
|
||||
**
|
||||
|
@ -27,6 +23,11 @@ extern "C" {
|
|||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define VK_KHR_xlib_surface 1
|
||||
#define VK_KHR_XLIB_SURFACE_SPEC_VERSION 6
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
#ifndef VULKAN_XLIB_XRANDR_H_
|
||||
#define VULKAN_XLIB_XRANDR_H_ 1
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
** Copyright (c) 2015-2019 The Khronos Group Inc.
|
||||
**
|
||||
|
@ -27,6 +23,11 @@ extern "C" {
|
|||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define VK_EXT_acquire_xlib_display 1
|
||||
#define VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION 1
|
||||
|
|
80
thirdparty/vulkan/loader/adapters.h
vendored
Normal file
80
thirdparty/vulkan/loader/adapters.h
vendored
Normal file
|
@ -0,0 +1,80 @@
|
|||
/*
|
||||
* Copyright (c) 2019 The Khronos Group Inc.
|
||||
* Copyright (c) 2019 Valve Corporation
|
||||
* Copyright (c) 2019 LunarG, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* Author: Lenny Komow <lenny@lunarg.com>
|
||||
*/
|
||||
|
||||
typedef struct LoaderEnumAdapters2 {
|
||||
ULONG adapter_count;
|
||||
struct {
|
||||
UINT handle;
|
||||
LUID luid;
|
||||
ULONG source_count;
|
||||
BOOL present_move_regions_preferred;
|
||||
} * adapters;
|
||||
} LoaderEnumAdapters2;
|
||||
|
||||
typedef _Check_return_ NTSTATUS(APIENTRY *PFN_LoaderEnumAdapters2)(const LoaderEnumAdapters2 *);
|
||||
|
||||
typedef enum AdapterInfoType {
|
||||
LOADER_QUERY_TYPE_REGISTRY = 48,
|
||||
} AdapterInfoType;
|
||||
|
||||
typedef struct LoaderQueryAdapterInfo {
|
||||
UINT handle;
|
||||
AdapterInfoType type;
|
||||
VOID *private_data;
|
||||
UINT private_data_size;
|
||||
} LoaderQueryAdapterInfo;
|
||||
|
||||
typedef _Check_return_ NTSTATUS(APIENTRY *PFN_LoaderQueryAdapterInfo)(const LoaderQueryAdapterInfo *);
|
||||
|
||||
typedef enum LoaderQueryRegistryType {
|
||||
LOADER_QUERY_REGISTRY_ADAPTER_KEY = 1,
|
||||
} LoaderQueryRegistryType;
|
||||
|
||||
typedef enum LoaderQueryRegistryStatus {
|
||||
LOADER_QUERY_REGISTRY_STATUS_SUCCESS = 0,
|
||||
LOADER_QUERY_REGISTRY_STATUS_BUFFER_OVERFLOW = 1,
|
||||
} LoaderQueryRegistryStatus;
|
||||
|
||||
typedef struct LoaderQueryRegistryFlags {
|
||||
union {
|
||||
struct {
|
||||
UINT translate_path : 1;
|
||||
UINT mutable_value : 1;
|
||||
UINT reserved : 30;
|
||||
};
|
||||
UINT value;
|
||||
};
|
||||
} LoaderQueryRegistryFlags;
|
||||
|
||||
typedef struct LoaderQueryRegistryInfo {
|
||||
LoaderQueryRegistryType query_type;
|
||||
LoaderQueryRegistryFlags query_flags;
|
||||
WCHAR value_name[MAX_PATH];
|
||||
ULONG value_type;
|
||||
ULONG physical_adapter_index;
|
||||
ULONG output_value_size;
|
||||
LoaderQueryRegistryStatus status;
|
||||
union {
|
||||
DWORD output_dword;
|
||||
UINT64 output_qword;
|
||||
WCHAR output_string[1];
|
||||
BYTE output_binary[1];
|
||||
};
|
||||
} LoaderQueryRegistryInfo;
|
23
thirdparty/vulkan/loader/dxgi_loader.c
vendored
Normal file
23
thirdparty/vulkan/loader/dxgi_loader.c
vendored
Normal file
|
@ -0,0 +1,23 @@
|
|||
#include "dxgi_loader.h"
|
||||
|
||||
#include <strsafe.h>
|
||||
|
||||
static HMODULE load_dxgi_module() {
|
||||
TCHAR systemPath[MAX_PATH] = "";
|
||||
GetSystemDirectory(systemPath, MAX_PATH);
|
||||
StringCchCat(systemPath, MAX_PATH, TEXT("\\dxgi.dll"));
|
||||
|
||||
return LoadLibrary(systemPath);
|
||||
}
|
||||
|
||||
typedef HRESULT (APIENTRY *PFN_CreateDXGIFactory1)(REFIID riid, void **ppFactory);
|
||||
|
||||
HRESULT dyn_CreateDXGIFactory1(REFIID riid, void **ppFactory) {
|
||||
PFN_CreateDXGIFactory1 fpCreateDXGIFactory1 =
|
||||
(PFN_CreateDXGIFactory1)GetProcAddress(load_dxgi_module(), "CreateDXGIFactory1");
|
||||
|
||||
if (fpCreateDXGIFactory1 != NULL)
|
||||
return fpCreateDXGIFactory1(riid, ppFactory);
|
||||
|
||||
return DXGI_ERROR_NOT_FOUND;
|
||||
}
|
8
thirdparty/vulkan/loader/dxgi_loader.h
vendored
Normal file
8
thirdparty/vulkan/loader/dxgi_loader.h
vendored
Normal file
|
@ -0,0 +1,8 @@
|
|||
#ifndef DXGI_LOADER_H
|
||||
#define DXGI_LOADER_H
|
||||
|
||||
#include <dxgi1_2.h>
|
||||
|
||||
HRESULT dyn_CreateDXGIFactory1(REFIID riid, void **ppFactory);
|
||||
|
||||
#endif
|
11
thirdparty/vulkan/loader/extension_manual.c
vendored
11
thirdparty/vulkan/loader/extension_manual.c
vendored
|
@ -58,6 +58,17 @@ VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceSurfaceCapabilities2K
|
|||
uint8_t icd_index = phys_dev_term->icd_index;
|
||||
|
||||
if (icd_term->dispatch.GetPhysicalDeviceSurfaceCapabilities2KHR != NULL) {
|
||||
VkBaseOutStructure *pNext = (VkBaseOutStructure *)pSurfaceCapabilities->pNext;
|
||||
while (pNext != NULL) {
|
||||
if ((int)pNext->sType == VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR) {
|
||||
// Not all ICDs may be supporting VK_KHR_surface_protected_capabilities
|
||||
// Initialize VkSurfaceProtectedCapabilitiesKHR.supportsProtected to false and
|
||||
// if an ICD supports protected surfaces, it will reset it to true accordingly.
|
||||
((VkSurfaceProtectedCapabilitiesKHR *)pNext)->supportsProtected = VK_FALSE;
|
||||
}
|
||||
pNext = (VkBaseOutStructure *)pNext->pNext;
|
||||
}
|
||||
|
||||
// Pass the call to the driver, possibly unwrapping the ICD surface
|
||||
if (icd_surface->real_icd_surfaces != NULL && (void *)icd_surface->real_icd_surfaces[icd_index] != NULL) {
|
||||
VkPhysicalDeviceSurfaceInfo2KHR info_copy = *pSurfaceInfo;
|
||||
|
|
376
thirdparty/vulkan/loader/loader.c
vendored
376
thirdparty/vulkan/loader/loader.c
vendored
|
@ -25,6 +25,12 @@
|
|||
*
|
||||
*/
|
||||
|
||||
// This needs to be defined first, or else we'll get redefinitions on NTSTATUS values
|
||||
#ifdef _WIN32
|
||||
#define UMDF_USING_NTSTATUS
|
||||
#include <ntstatus.h>
|
||||
#endif
|
||||
|
||||
#ifndef _GNU_SOURCE
|
||||
#define _GNU_SOURCE
|
||||
#endif
|
||||
|
@ -63,6 +69,9 @@
|
|||
#include <cfgmgr32.h>
|
||||
#include <initguid.h>
|
||||
#include <devpkey.h>
|
||||
#include <winternl.h>
|
||||
#include "adapters.h"
|
||||
#include "dxgi_loader.h"
|
||||
#endif
|
||||
|
||||
// This is a CMake generated file with #defines for any functions/includes
|
||||
|
@ -231,6 +240,10 @@ void *loader_device_heap_realloc(const struct loader_device *device, void *pMemo
|
|||
// Environment variables
|
||||
#if defined(__linux__) || defined(__APPLE__)
|
||||
|
||||
static inline bool IsHighIntegrity() {
|
||||
return geteuid() != getuid() || getegid() != getgid();
|
||||
}
|
||||
|
||||
static inline char *loader_getenv(const char *name, const struct loader_instance *inst) {
|
||||
// No allocation of memory necessary for Linux, but we should at least touch
|
||||
// the inst pointer to get rid of compiler warnings.
|
||||
|
@ -247,7 +260,7 @@ static inline char *loader_secure_getenv(const char *name, const struct loader_i
|
|||
// that can do damage.
|
||||
// This algorithm is derived from glibc code that sets an internal
|
||||
// variable (__libc_enable_secure) if the process is running under setuid or setgid.
|
||||
return geteuid() != getuid() || getegid() != getgid() ? NULL : loader_getenv(name, inst);
|
||||
return IsHighIntegrity() ? NULL : loader_getenv(name, inst);
|
||||
#else
|
||||
// Linux
|
||||
#ifdef HAVE_SECURE_GETENV
|
||||
|
@ -274,6 +287,28 @@ static inline void loader_free_getenv(char *val, const struct loader_instance *i
|
|||
|
||||
#elif defined(WIN32)
|
||||
|
||||
static inline bool IsHighIntegrity() {
|
||||
HANDLE process_token;
|
||||
if (OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY | TOKEN_QUERY_SOURCE, &process_token)) {
|
||||
// Maximum possible size of SID_AND_ATTRIBUTES is maximum size of a SID + size of attributes DWORD.
|
||||
uint8_t mandatory_label_buffer[SECURITY_MAX_SID_SIZE + sizeof(DWORD)];
|
||||
DWORD buffer_size;
|
||||
if (GetTokenInformation(process_token, TokenIntegrityLevel, mandatory_label_buffer, sizeof(mandatory_label_buffer),
|
||||
&buffer_size) != 0) {
|
||||
const TOKEN_MANDATORY_LABEL *mandatory_label = (const TOKEN_MANDATORY_LABEL *)mandatory_label_buffer;
|
||||
const DWORD sub_authority_count = *GetSidSubAuthorityCount(mandatory_label->Label.Sid);
|
||||
const DWORD integrity_level = *GetSidSubAuthority(mandatory_label->Label.Sid, sub_authority_count - 1);
|
||||
|
||||
CloseHandle(process_token);
|
||||
return integrity_level > SECURITY_MANDATORY_MEDIUM_RID;
|
||||
}
|
||||
|
||||
CloseHandle(process_token);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline char *loader_getenv(const char *name, const struct loader_instance *inst) {
|
||||
char *retVal;
|
||||
DWORD valSize;
|
||||
|
@ -300,7 +335,10 @@ static inline char *loader_getenv(const char *name, const struct loader_instance
|
|||
}
|
||||
|
||||
static inline char *loader_secure_getenv(const char *name, const struct loader_instance *inst) {
|
||||
// No secure version for Windows as far as I know
|
||||
if (IsHighIntegrity()) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return loader_getenv(name, inst);
|
||||
}
|
||||
|
||||
|
@ -486,12 +524,11 @@ VKAPI_ATTR VkResult VKAPI_CALL vkSetDeviceDispatch(VkDevice device, void *object
|
|||
static bool loaderAddJsonEntry(const struct loader_instance *inst,
|
||||
char **reg_data, // list of JSON files
|
||||
PDWORD total_size, // size of reg_data
|
||||
LPCTSTR key_name, // key name - used for debug prints - i.e. VulkanDriverName
|
||||
LPCSTR key_name, // key name - used for debug prints - i.e. VulkanDriverName
|
||||
DWORD key_type, // key data type
|
||||
LPSTR json_path, // JSON string to add to the list reg_data
|
||||
DWORD json_size, // size in bytes of json_path
|
||||
VkResult *result) {
|
||||
|
||||
// Check for and ignore duplicates.
|
||||
if (*reg_data && strstr(*reg_data, json_path)) {
|
||||
// Success. The json_path is already in the list.
|
||||
|
@ -542,8 +579,8 @@ static bool loaderAddJsonEntry(const struct loader_instance *inst,
|
|||
// This function looks for filename in given device handle, filename is then added to return list
|
||||
// function return true if filename was appended to reg_data list
|
||||
// If error occures result is updated with failure reason
|
||||
bool loaderGetDeviceRegistryEntry(const struct loader_instance *inst, char **reg_data, PDWORD total_size, DEVINST dev_id, LPCTSTR value_name, VkResult *result)
|
||||
{
|
||||
bool loaderGetDeviceRegistryEntry(const struct loader_instance *inst, char **reg_data, PDWORD total_size, DEVINST dev_id,
|
||||
LPCSTR value_name, VkResult *result) {
|
||||
HKEY hkrKey = INVALID_HANDLE_VALUE;
|
||||
DWORD requiredSize, data_type;
|
||||
char *manifest_path = NULL;
|
||||
|
@ -635,7 +672,8 @@ out:
|
|||
//
|
||||
// *reg_data contains a string list of filenames as pointer.
|
||||
// When done using the returned string list, the caller should free the pointer.
|
||||
VkResult loaderGetDeviceRegistryFiles(const struct loader_instance *inst, char **reg_data, PDWORD reg_data_size, LPCTSTR value_name) {
|
||||
VkResult loaderGetDeviceRegistryFiles(const struct loader_instance *inst, char **reg_data, PDWORD reg_data_size,
|
||||
LPCSTR value_name) {
|
||||
static const wchar_t *softwareComponentGUID = L"{5c4c3332-344d-483c-8739-259e934c9cc8}";
|
||||
static const wchar_t *displayGUID = L"{4d36e968-e325-11ce-bfc1-08002be10318}";
|
||||
const ULONG flags = CM_GETIDLIST_FILTER_CLASS | CM_GETIDLIST_FILTER_PRESENT;
|
||||
|
@ -675,7 +713,7 @@ VkResult loaderGetDeviceRegistryFiles(const struct loader_instance *inst, char *
|
|||
for (wchar_t *deviceName = pDeviceNames; *deviceName; deviceName += wcslen(deviceName) + 1) {
|
||||
CONFIGRET status = CM_Locate_DevNodeW(&devID, deviceName, CM_LOCATE_DEVNODE_NORMAL);
|
||||
if (CR_SUCCESS != status) {
|
||||
loader_log(inst, VK_DEBUG_REPORT_ERROR_BIT_EXT, 0, "loaderGetDeviceRegistryFiles: failed to open DevNode %s",
|
||||
loader_log(inst, VK_DEBUG_REPORT_ERROR_BIT_EXT, 0, "loaderGetDeviceRegistryFiles: failed to open DevNode %ls",
|
||||
deviceName);
|
||||
continue;
|
||||
}
|
||||
|
@ -684,17 +722,17 @@ VkResult loaderGetDeviceRegistryFiles(const struct loader_instance *inst, char *
|
|||
|
||||
if (CR_SUCCESS != status)
|
||||
{
|
||||
loader_log(inst, VK_DEBUG_REPORT_ERROR_BIT_EXT, 0, "loaderGetDeviceRegistryFiles: failed to probe device status %s",
|
||||
loader_log(inst, VK_DEBUG_REPORT_ERROR_BIT_EXT, 0, "loaderGetDeviceRegistryFiles: failed to probe device status %ls",
|
||||
deviceName);
|
||||
continue;
|
||||
}
|
||||
if ((ulStatus & DN_HAS_PROBLEM) && (ulProblem == CM_PROB_NEED_RESTART || ulProblem == DN_NEED_RESTART)) {
|
||||
loader_log(inst, VK_DEBUG_REPORT_INFORMATION_BIT_EXT, 0,
|
||||
"loaderGetDeviceRegistryFiles: device %s is pending reboot, skipping ...", deviceName);
|
||||
"loaderGetDeviceRegistryFiles: device %ls is pending reboot, skipping ...", deviceName);
|
||||
continue;
|
||||
}
|
||||
|
||||
loader_log(inst, VK_DEBUG_REPORT_INFORMATION_BIT_EXT, 0, "loaderGetDeviceRegistryFiles: opening device %s", deviceName);
|
||||
loader_log(inst, VK_DEBUG_REPORT_INFORMATION_BIT_EXT, 0, "loaderGetDeviceRegistryFiles: opening device %ls", deviceName);
|
||||
|
||||
if (loaderGetDeviceRegistryEntry(inst, reg_data, reg_data_size, devID, value_name, &result)) {
|
||||
found = true;
|
||||
|
@ -716,7 +754,7 @@ VkResult loaderGetDeviceRegistryFiles(const struct loader_instance *inst, char *
|
|||
CM_Get_Device_IDW(childID, buffer, MAX_DEVICE_ID_LEN, 0);
|
||||
|
||||
loader_log(inst, VK_DEBUG_REPORT_INFORMATION_BIT_EXT, 0,
|
||||
"loaderGetDeviceRegistryFiles: Opening child device %d - %s", childID, buffer);
|
||||
"loaderGetDeviceRegistryFiles: Opening child device %d - %ls", childID, buffer);
|
||||
|
||||
status = CM_Get_DevNode_Registry_PropertyW(childID, CM_DRP_CLASSGUID, NULL, &childGuid, &childGuidSize, 0);
|
||||
if (status != CR_SUCCESS) {
|
||||
|
@ -768,6 +806,49 @@ static char *loader_get_next_path(char *path);
|
|||
// When done using the returned string list, the caller should free the pointer.
|
||||
VkResult loaderGetRegistryFiles(const struct loader_instance *inst, char *location, bool use_secondary_hive, char **reg_data,
|
||||
PDWORD reg_data_size) {
|
||||
// This list contains all of the allowed ICDs. This allows us to verify that a device is actually present from the vendor
|
||||
// specified. This does disallow other vendors, but any new driver should use the device-specific registries anyway.
|
||||
static const struct {
|
||||
const char *filename;
|
||||
int vendor_id;
|
||||
} known_drivers[] = {
|
||||
#if defined(_WIN64)
|
||||
{
|
||||
.filename = "igvk64.json",
|
||||
.vendor_id = 0x8086,
|
||||
},
|
||||
{
|
||||
.filename = "nv-vk64.json",
|
||||
.vendor_id = 0x10de,
|
||||
},
|
||||
{
|
||||
.filename = "amd-vulkan64.json",
|
||||
.vendor_id = 0x1002,
|
||||
},
|
||||
{
|
||||
.filename = "amdvlk64.json",
|
||||
.vendor_id = 0x1002,
|
||||
},
|
||||
#else
|
||||
{
|
||||
.filename = "igvk32.json",
|
||||
.vendor_id = 0x8086,
|
||||
},
|
||||
{
|
||||
.filename = "nv-vk32.json",
|
||||
.vendor_id = 0x10de,
|
||||
},
|
||||
{
|
||||
.filename = "amd-vulkan32.json",
|
||||
.vendor_id = 0x1002,
|
||||
},
|
||||
{
|
||||
.filename = "amdvlk32.json",
|
||||
.vendor_id = 0x1002,
|
||||
},
|
||||
#endif
|
||||
};
|
||||
|
||||
LONG rtn_value;
|
||||
HKEY hive = DEFAULT_VK_REGISTRY_HIVE, key;
|
||||
DWORD access_flags;
|
||||
|
@ -780,12 +861,25 @@ VkResult loaderGetRegistryFiles(const struct loader_instance *inst, char *locati
|
|||
DWORD value_size = sizeof(value);
|
||||
VkResult result = VK_SUCCESS;
|
||||
bool found = false;
|
||||
IDXGIFactory1 *dxgi_factory = NULL;
|
||||
bool is_driver = !strcmp(location, VK_DRIVERS_INFO_REGISTRY_LOC);
|
||||
|
||||
if (NULL == reg_data) {
|
||||
result = VK_ERROR_INITIALIZATION_FAILED;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (is_driver) {
|
||||
HRESULT hres = dyn_CreateDXGIFactory1(&IID_IDXGIFactory1, &dxgi_factory);
|
||||
if (hres != S_OK) {
|
||||
loader_log(
|
||||
inst, VK_DEBUG_REPORT_WARNING_BIT_EXT, 0,
|
||||
"loaderGetRegistryFiles: Failed to create dxgi factory for ICD registry verification. No ICDs will be added from "
|
||||
"legacy registry locations");
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
while (*loc) {
|
||||
next = loader_get_next_path(loc);
|
||||
access_flags = KEY_QUERY_VALUE;
|
||||
|
@ -820,9 +914,58 @@ VkResult loaderGetRegistryFiles(const struct loader_instance *inst, char *locati
|
|||
*reg_data = new_ptr;
|
||||
*reg_data_size *= 2;
|
||||
}
|
||||
|
||||
// We've now found a json file. If this is an ICD, we still need to check if there is actually a device
|
||||
// that matches this ICD
|
||||
loader_log(
|
||||
inst, VK_DEBUG_REPORT_INFORMATION_BIT_EXT, 0, "Located json file \"%s\" from registry \"%s\\%s\"", name,
|
||||
hive == DEFAULT_VK_REGISTRY_HIVE ? DEFAULT_VK_REGISTRY_HIVE_STR : SECONDARY_VK_REGISTRY_HIVE_STR, location);
|
||||
if (is_driver) {
|
||||
int i;
|
||||
for (i = 0; i < sizeof(known_drivers) / sizeof(known_drivers[0]); ++i) {
|
||||
if (!strcmp(name + strlen(name) - strlen(known_drivers[i].filename), known_drivers[i].filename)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i == sizeof(known_drivers) / sizeof(known_drivers[0])) {
|
||||
loader_log(inst, VK_DEBUG_REPORT_INFORMATION_BIT_EXT, 0,
|
||||
"Driver %s is not recognized as a known driver. It will be assumed to be active", name);
|
||||
} else {
|
||||
bool found_gpu = false;
|
||||
for (int j = 0;; ++j) {
|
||||
IDXGIAdapter1 *adapter;
|
||||
HRESULT hres = dxgi_factory->lpVtbl->EnumAdapters1(dxgi_factory, j, &adapter);
|
||||
if (hres == DXGI_ERROR_NOT_FOUND) {
|
||||
break;
|
||||
} else if (hres != S_OK) {
|
||||
loader_log(inst, VK_DEBUG_REPORT_WARNING_BIT_EXT, 0,
|
||||
"Failed to enumerate DXGI adapters at index %d. As a result, drivers may be skipped", j);
|
||||
continue;
|
||||
}
|
||||
|
||||
DXGI_ADAPTER_DESC1 description;
|
||||
hres = adapter->lpVtbl->GetDesc1(adapter, &description);
|
||||
if (hres != S_OK) {
|
||||
loader_log(
|
||||
inst, VK_DEBUG_REPORT_INFORMATION_BIT_EXT, 0,
|
||||
"Failed to get DXGI adapter information at index %d. As a result, drivers may be skipped", j);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (description.VendorId == known_drivers[i].vendor_id) {
|
||||
found_gpu = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!found_gpu) {
|
||||
loader_log(inst, VK_DEBUG_REPORT_INFORMATION_BIT_EXT, 0,
|
||||
"Dropping driver %s as no corresponduing DXGI adapter was found", name);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (strlen(*reg_data) == 0) {
|
||||
// The list is emtpy. Add the first entry.
|
||||
(void)snprintf(*reg_data, name_size + 1, "%s", name);
|
||||
|
@ -856,7 +999,8 @@ VkResult loaderGetRegistryFiles(const struct loader_instance *inst, char *locati
|
|||
}
|
||||
}
|
||||
}
|
||||
name_size = 2048;
|
||||
name_size = sizeof(name);
|
||||
value_size = sizeof(value);
|
||||
}
|
||||
RegCloseKey(key);
|
||||
}
|
||||
|
@ -875,6 +1019,9 @@ VkResult loaderGetRegistryFiles(const struct loader_instance *inst, char *locati
|
|||
}
|
||||
|
||||
out:
|
||||
if (is_driver && dxgi_factory != NULL) {
|
||||
dxgi_factory->lpVtbl->Release(dxgi_factory);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
@ -1635,7 +1782,7 @@ bool loaderImplicitLayerIsEnabled(const struct loader_instance *inst, const stru
|
|||
enable = true;
|
||||
} else {
|
||||
// Otherwise, only enable this layer if the enable environment variable is defined
|
||||
env_value = loader_secure_getenv(prop->enable_env_var.name, inst);
|
||||
env_value = loader_getenv(prop->enable_env_var.name, inst);
|
||||
if (env_value && !strcmp(prop->enable_env_var.value, env_value)) {
|
||||
enable = true;
|
||||
}
|
||||
|
@ -1644,7 +1791,7 @@ bool loaderImplicitLayerIsEnabled(const struct loader_instance *inst, const stru
|
|||
|
||||
// The disable_environment has priority over everything else. If it is defined, the layer is always
|
||||
// disabled.
|
||||
env_value = loader_secure_getenv(prop->disable_env_var.name, inst);
|
||||
env_value = loader_getenv(prop->disable_env_var.name, inst);
|
||||
if (env_value) {
|
||||
enable = false;
|
||||
}
|
||||
|
@ -1906,7 +2053,8 @@ struct loader_icd_term *loader_get_icd_and_device(const VkDevice device, struct
|
|||
for (struct loader_device *dev = icd_term->logical_device_list; dev; dev = dev->next)
|
||||
// Value comparison of device prevents object wrapping by layers
|
||||
if (loader_get_dispatch(dev->icd_device) == loader_get_dispatch(device) ||
|
||||
loader_get_dispatch(dev->chain_device) == loader_get_dispatch(device)) {
|
||||
(dev->chain_device != VK_NULL_HANDLE &&
|
||||
loader_get_dispatch(dev->chain_device) == loader_get_dispatch(device))) {
|
||||
*found_dev = dev;
|
||||
if (NULL != icd_index) {
|
||||
*icd_index = index;
|
||||
|
@ -2287,6 +2435,12 @@ void loader_initialize(void) {
|
|||
.malloc_fn = loader_instance_tls_heap_alloc, .free_fn = loader_instance_tls_heap_free,
|
||||
};
|
||||
cJSON_InitHooks(&alloc_fns);
|
||||
|
||||
#if defined(_WIN32)
|
||||
// This is needed to ensure that newer APIs are available right away
|
||||
// and not after the first call that has been statically linked
|
||||
LoadLibrary("gdi32.dll");
|
||||
#endif
|
||||
}
|
||||
|
||||
struct loader_data_files {
|
||||
|
@ -3685,8 +3839,10 @@ static VkResult ReadDataFilesInSearchPaths(const struct loader_instance *inst, e
|
|||
search_path_size += DetermineDataFilePathSize(EXTRASYSCONFDIR, rel_size);
|
||||
#endif
|
||||
if (is_directory_list) {
|
||||
search_path_size += DetermineDataFilePathSize(xdgdatahome, rel_size);
|
||||
search_path_size += DetermineDataFilePathSize(home_root, rel_size);
|
||||
if (!IsHighIntegrity()) {
|
||||
search_path_size += DetermineDataFilePathSize(xdgdatahome, rel_size);
|
||||
search_path_size += DetermineDataFilePathSize(home_root, rel_size);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -3793,26 +3949,168 @@ out:
|
|||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
// Read manifest JSON files uing the Windows driver interface
|
||||
static VkResult ReadManifestsFromD3DAdapters(const struct loader_instance *inst, char **reg_data, PDWORD reg_data_size,
|
||||
const wchar_t *value_name) {
|
||||
VkResult result = VK_INCOMPLETE;
|
||||
LoaderEnumAdapters2 adapters = {.adapter_count = 0, .adapters = NULL};
|
||||
LoaderQueryRegistryInfo *full_info = NULL;
|
||||
size_t full_info_size = 0;
|
||||
char *json_path = NULL;
|
||||
size_t json_path_size = 0;
|
||||
|
||||
PFN_LoaderEnumAdapters2 fpLoaderEnumAdapters2 =
|
||||
(PFN_LoaderEnumAdapters2)GetProcAddress(GetModuleHandle("gdi32.dll"), "D3DKMTEnumAdapters2");
|
||||
PFN_LoaderQueryAdapterInfo fpLoaderQueryAdapterInfo =
|
||||
(PFN_LoaderQueryAdapterInfo)GetProcAddress(GetModuleHandle("gdi32.dll"), "D3DKMTQueryAdapterInfo");
|
||||
if (fpLoaderEnumAdapters2 == NULL || fpLoaderQueryAdapterInfo == NULL) {
|
||||
result = VK_ERROR_OUT_OF_HOST_MEMORY;
|
||||
goto out;
|
||||
}
|
||||
|
||||
// Get all of the adapters
|
||||
NTSTATUS status = fpLoaderEnumAdapters2(&adapters);
|
||||
if (status == STATUS_SUCCESS && adapters.adapter_count > 0) {
|
||||
adapters.adapters = loader_instance_heap_alloc(inst, sizeof(*adapters.adapters) * adapters.adapter_count,
|
||||
VK_SYSTEM_ALLOCATION_SCOPE_COMMAND);
|
||||
if (adapters.adapters == NULL) {
|
||||
goto out;
|
||||
}
|
||||
status = fpLoaderEnumAdapters2(&adapters);
|
||||
}
|
||||
if (status != STATUS_SUCCESS) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
// If that worked, we need to get the manifest file(s) for each adapter
|
||||
for (ULONG i = 0; i < adapters.adapter_count; ++i) {
|
||||
// The first query should just check if the field exists and how big it is
|
||||
LoaderQueryRegistryInfo filename_info = {
|
||||
.query_type = LOADER_QUERY_REGISTRY_ADAPTER_KEY,
|
||||
.query_flags =
|
||||
{
|
||||
.translate_path = true,
|
||||
},
|
||||
.value_type = REG_MULTI_SZ,
|
||||
.physical_adapter_index = 0,
|
||||
};
|
||||
wcsncpy(filename_info.value_name, value_name, sizeof(filename_info.value_name) / sizeof(DWORD));
|
||||
LoaderQueryAdapterInfo query_info = {
|
||||
.handle = adapters.adapters[i].handle,
|
||||
.type = LOADER_QUERY_TYPE_REGISTRY,
|
||||
.private_data = &filename_info,
|
||||
.private_data_size = sizeof(filename_info),
|
||||
};
|
||||
status = fpLoaderQueryAdapterInfo(&query_info);
|
||||
|
||||
// This error indicates that the type didn't match, so we'll try a REG_SZ
|
||||
if (status != STATUS_SUCCESS) {
|
||||
filename_info.value_type = REG_SZ;
|
||||
status = fpLoaderQueryAdapterInfo(&query_info);
|
||||
}
|
||||
|
||||
if (status != STATUS_SUCCESS || filename_info.status != LOADER_QUERY_REGISTRY_STATUS_BUFFER_OVERFLOW) {
|
||||
continue;
|
||||
}
|
||||
|
||||
while (status == STATUS_SUCCESS &&
|
||||
((LoaderQueryRegistryInfo *)query_info.private_data)->status == LOADER_QUERY_REGISTRY_STATUS_BUFFER_OVERFLOW) {
|
||||
bool needs_copy = (full_info == NULL);
|
||||
size_t full_size = sizeof(LoaderQueryRegistryInfo) + filename_info.output_value_size;
|
||||
void *buffer =
|
||||
loader_instance_heap_realloc(inst, full_info, full_info_size, full_size, VK_SYSTEM_ALLOCATION_SCOPE_COMMAND);
|
||||
if (buffer == NULL) {
|
||||
result = VK_ERROR_OUT_OF_HOST_MEMORY;
|
||||
goto out;
|
||||
}
|
||||
full_info = buffer;
|
||||
full_info_size = full_size;
|
||||
|
||||
if (needs_copy) {
|
||||
memcpy(full_info, &filename_info, sizeof(LoaderQueryRegistryInfo));
|
||||
}
|
||||
query_info.private_data = full_info;
|
||||
query_info.private_data_size = (UINT)full_info_size;
|
||||
status = fpLoaderQueryAdapterInfo(&query_info);
|
||||
}
|
||||
|
||||
if (status != STATUS_SUCCESS || full_info->status != LOADER_QUERY_REGISTRY_STATUS_SUCCESS) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
// Convert the wide string to a narrow string
|
||||
void *buffer = loader_instance_heap_realloc(inst, json_path, json_path_size, full_info->output_value_size,
|
||||
VK_SYSTEM_ALLOCATION_SCOPE_COMMAND);
|
||||
if (buffer == NULL) {
|
||||
result = VK_ERROR_OUT_OF_HOST_MEMORY;
|
||||
goto out;
|
||||
}
|
||||
json_path = buffer;
|
||||
json_path_size = full_info->output_value_size;
|
||||
|
||||
// Iterate over each component string
|
||||
for (const wchar_t *curr_path = full_info->output_string; curr_path[0] != '\0'; curr_path += wcslen(curr_path) + 1) {
|
||||
WideCharToMultiByte(CP_UTF8, 0, curr_path, -1, json_path, (int)json_path_size, NULL, NULL);
|
||||
|
||||
// Add the string to the output list
|
||||
result = VK_SUCCESS;
|
||||
loaderAddJsonEntry(inst, reg_data, reg_data_size, (LPCTSTR)L"EnumAdapters", REG_SZ, json_path,
|
||||
(DWORD)strlen(json_path) + 1, &result);
|
||||
if (result != VK_SUCCESS) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
// If this is a string and not a multi-string, we don't want to go throught the loop more than once
|
||||
if (full_info->value_type == REG_SZ) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
out:
|
||||
if (json_path != NULL) {
|
||||
loader_instance_heap_free(inst, json_path);
|
||||
}
|
||||
if (full_info != NULL) {
|
||||
loader_instance_heap_free(inst, full_info);
|
||||
}
|
||||
if (adapters.adapters != NULL) {
|
||||
loader_instance_heap_free(inst, adapters.adapters);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// Look for data files in the registry.
|
||||
static VkResult ReadDataFilesInRegistry(const struct loader_instance *inst, enum loader_data_files_type data_file_type,
|
||||
bool warn_if_not_present, char *registry_location, struct loader_data_files *out_files) {
|
||||
VkResult vk_result = VK_SUCCESS;
|
||||
bool is_icd = (data_file_type == LOADER_DATA_FILE_MANIFEST_ICD);
|
||||
bool use_secondary_hive = data_file_type == LOADER_DATA_FILE_MANIFEST_LAYER;
|
||||
char *search_path = NULL;
|
||||
|
||||
// These calls look at the PNP/Device section of the registry.
|
||||
VkResult regHKR_result = VK_SUCCESS;
|
||||
DWORD reg_size = 4096;
|
||||
if (!strncmp(registry_location, VK_DRIVERS_INFO_REGISTRY_LOC, sizeof(VK_DRIVERS_INFO_REGISTRY_LOC))) {
|
||||
regHKR_result = loaderGetDeviceRegistryFiles(inst, &search_path, ®_size, LoaderPnpDriverRegistry());
|
||||
// If we're looking for drivers we need to try enumerating adapters
|
||||
regHKR_result = ReadManifestsFromD3DAdapters(inst, &search_path, ®_size, LoaderPnpDriverRegistryWide());
|
||||
if (regHKR_result == VK_INCOMPLETE) {
|
||||
regHKR_result = loaderGetDeviceRegistryFiles(inst, &search_path, ®_size, LoaderPnpDriverRegistry());
|
||||
}
|
||||
} else if (!strncmp(registry_location, VK_ELAYERS_INFO_REGISTRY_LOC, sizeof(VK_ELAYERS_INFO_REGISTRY_LOC))) {
|
||||
regHKR_result = loaderGetDeviceRegistryFiles(inst, &search_path, ®_size, LoaderPnpELayerRegistry());
|
||||
regHKR_result = ReadManifestsFromD3DAdapters(inst, &search_path, ®_size, LoaderPnpELayerRegistryWide());
|
||||
if (regHKR_result == VK_INCOMPLETE) {
|
||||
regHKR_result = loaderGetDeviceRegistryFiles(inst, &search_path, ®_size, LoaderPnpELayerRegistry());
|
||||
}
|
||||
} else if (!strncmp(registry_location, VK_ILAYERS_INFO_REGISTRY_LOC, sizeof(VK_ILAYERS_INFO_REGISTRY_LOC))) {
|
||||
regHKR_result = loaderGetDeviceRegistryFiles(inst, &search_path, ®_size, LoaderPnpILayerRegistry());
|
||||
regHKR_result = ReadManifestsFromD3DAdapters(inst, &search_path, ®_size, LoaderPnpILayerRegistryWide());
|
||||
if (regHKR_result == VK_INCOMPLETE) {
|
||||
regHKR_result = loaderGetDeviceRegistryFiles(inst, &search_path, ®_size, LoaderPnpILayerRegistry());
|
||||
}
|
||||
}
|
||||
|
||||
// This call looks into the Khronos non-device specific section of the registry.
|
||||
bool use_secondary_hive = (data_file_type == LOADER_DATA_FILE_MANIFEST_LAYER) && (!IsHighIntegrity());
|
||||
VkResult reg_result = loaderGetRegistryFiles(inst, registry_location, use_secondary_hive, &search_path, ®_size);
|
||||
|
||||
if ((VK_SUCCESS != reg_result && VK_SUCCESS != regHKR_result) || NULL == search_path) {
|
||||
|
@ -4455,7 +4753,7 @@ void loaderScanForImplicitLayers(struct loader_instance *inst, struct loader_lay
|
|||
continue;
|
||||
}
|
||||
|
||||
res = loaderAddLayerProperties(inst, instance_layers, json, false, file_str);
|
||||
res = loaderAddLayerProperties(inst, instance_layers, json, true, file_str);
|
||||
|
||||
loader_instance_heap_free(inst, file_str);
|
||||
cJSON_Delete(json);
|
||||
|
@ -4470,13 +4768,11 @@ void loaderScanForImplicitLayers(struct loader_instance *inst, struct loader_lay
|
|||
// actually present in the available layer list
|
||||
VerifyAllMetaLayers(inst, instance_layers, &override_layer_valid);
|
||||
|
||||
if (override_layer_valid) {
|
||||
loaderRemoveLayersInBlacklist(inst, instance_layers);
|
||||
if (NULL != inst) {
|
||||
if (override_layer_valid || implicit_metalayer_present) {
|
||||
loaderRemoveLayersNotInImplicitMetaLayers(inst, instance_layers);
|
||||
if (override_layer_valid && inst != NULL) {
|
||||
inst->override_layer_present = true;
|
||||
}
|
||||
} else if (implicit_metalayer_present) {
|
||||
loaderRemoveLayersNotInImplicitMetaLayers(inst, instance_layers);
|
||||
}
|
||||
|
||||
out:
|
||||
|
@ -5098,7 +5394,7 @@ static void loaderAddEnvironmentLayers(struct loader_instance *inst, const enum
|
|||
struct loader_layer_list *target_list, struct loader_layer_list *expanded_target_list,
|
||||
const struct loader_layer_list *source_list) {
|
||||
char *next, *name;
|
||||
char *layer_env = loader_secure_getenv(env_name, inst);
|
||||
char *layer_env = loader_getenv(env_name, inst);
|
||||
if (layer_env == NULL) {
|
||||
goto out;
|
||||
}
|
||||
|
@ -5981,16 +6277,18 @@ VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateInstance(const VkInstanceCreateI
|
|||
|
||||
// Get the driver version from vkEnumerateInstanceVersion
|
||||
uint32_t icd_version = VK_API_VERSION_1_0;
|
||||
PFN_vkEnumerateInstanceVersion icd_enumerate_instance_version = (PFN_vkEnumerateInstanceVersion)
|
||||
icd_term->scanned_icd->GetInstanceProcAddr(NULL, "vkEnumerateInstanceVersion");
|
||||
VkResult icd_result = VK_SUCCESS;
|
||||
if (icd_enumerate_instance_version != NULL) {
|
||||
icd_result = icd_enumerate_instance_version(&icd_version);
|
||||
if (icd_result != VK_SUCCESS) {
|
||||
icd_version = VK_API_VERSION_1_0;
|
||||
loader_log(ptr_instance, VK_DEBUG_REPORT_DEBUG_BIT_EXT, 0, "terminator_CreateInstance: ICD \"%s\" "
|
||||
"vkEnumerateInstanceVersion returned error. The ICD will be treated as a 1.0 ICD",
|
||||
icd_term->scanned_icd->lib_name);
|
||||
if (icd_term->scanned_icd->api_version >= VK_API_VERSION_1_1) {
|
||||
PFN_vkEnumerateInstanceVersion icd_enumerate_instance_version = (PFN_vkEnumerateInstanceVersion)
|
||||
icd_term->scanned_icd->GetInstanceProcAddr(NULL, "vkEnumerateInstanceVersion");
|
||||
if (icd_enumerate_instance_version != NULL) {
|
||||
icd_result = icd_enumerate_instance_version(&icd_version);
|
||||
if (icd_result != VK_SUCCESS) {
|
||||
icd_version = VK_API_VERSION_1_0;
|
||||
loader_log(ptr_instance, VK_DEBUG_REPORT_DEBUG_BIT_EXT, 0, "terminator_CreateInstance: ICD \"%s\" "
|
||||
"vkEnumerateInstanceVersion returned error. The ICD will be treated as a 1.0 ICD",
|
||||
icd_term->scanned_icd->lib_name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -6942,7 +7240,7 @@ VKAPI_ATTR VkResult VKAPI_CALL
|
|||
terminator_EnumerateInstanceVersion(const VkEnumerateInstanceVersionChain *chain, uint32_t* pApiVersion) {
|
||||
// NOTE: The Vulkan WG doesn't want us checking pApiVersion for NULL, but instead
|
||||
// prefers us crashing.
|
||||
*pApiVersion = VK_MAKE_VERSION(loader_major_version, loader_minor_version, 0);
|
||||
*pApiVersion = VK_MAKE_VERSION(loader_major_version, loader_minor_version, VK_HEADER_VERSION);
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
|
|
3
thirdparty/vulkan/loader/loader.h
vendored
3
thirdparty/vulkan/loader/loader.h
vendored
|
@ -333,6 +333,9 @@ struct loader_instance {
|
|||
bool wsi_ios_surface_enabled;
|
||||
#endif
|
||||
bool wsi_headless_surface_enabled;
|
||||
#if defined(VK_USE_PLATFORM_METAL_EXT)
|
||||
bool wsi_metal_surface_enabled;
|
||||
#endif
|
||||
bool wsi_display_enabled;
|
||||
bool wsi_display_props2_enabled;
|
||||
};
|
||||
|
|
|
@ -23,6 +23,12 @@
|
|||
# VkPhysicalDevice or a dispatchable object it can unwrap the object, possibly overwriting the wrapped physical device, and then
|
||||
# jump to the next function in the call chain
|
||||
|
||||
#ifdef HAVE_CET_H
|
||||
#include <cet.h>
|
||||
#else
|
||||
#define _CET_ENDBR
|
||||
#endif
|
||||
|
||||
.intel_syntax noprefix
|
||||
.include "gen_defines.asm"
|
||||
|
||||
|
@ -31,6 +37,7 @@
|
|||
.macro PhysDevExtTramp num
|
||||
.global vkPhysDevExtTramp\num
|
||||
vkPhysDevExtTramp\num:
|
||||
_CET_ENDBR
|
||||
mov rax, [rdi]
|
||||
mov rdi, [rdi + PHYS_DEV_OFFSET_PHYS_DEV_TRAMP]
|
||||
jmp [rax + (PHYS_DEV_OFFSET_INST_DISPATCH + (PTR_SIZE * \num))]
|
||||
|
@ -39,6 +46,7 @@ vkPhysDevExtTramp\num:
|
|||
.macro PhysDevExtTermin num
|
||||
.global vkPhysDevExtTermin\num
|
||||
vkPhysDevExtTermin\num:
|
||||
_CET_ENDBR
|
||||
mov rax, [rdi + ICD_TERM_OFFSET_PHYS_DEV_TERM] # Store the loader_icd_term* in rax
|
||||
cmp qword ptr [rax + (DISPATCH_OFFSET_ICD_TERM + (PTR_SIZE * \num))], 0 # Check if the next function in the chain is NULL
|
||||
je terminError\num # Go to the error section if it is NULL
|
||||
|
@ -60,6 +68,7 @@ terminError\num:
|
|||
.macro DevExtTramp num
|
||||
.global vkdev_ext\num
|
||||
vkdev_ext\num:
|
||||
_CET_ENDBR
|
||||
mov rax, [rdi] # Dereference the handle to get the dispatch table
|
||||
jmp [rax + (EXT_OFFSET_DEVICE_DISPATCH + (PTR_SIZE * \num))] # Jump to the appropriate call chain
|
||||
.endm
|
||||
|
@ -69,6 +78,7 @@ vkdev_ext\num:
|
|||
.macro PhysDevExtTramp num
|
||||
.global vkPhysDevExtTramp\num
|
||||
vkPhysDevExtTramp\num:
|
||||
_CET_ENDBR
|
||||
mov eax, [esp + 4] # Load the wrapped VkPhysicalDevice into eax
|
||||
mov ecx, [eax + PHYS_DEV_OFFSET_PHYS_DEV_TRAMP] # Load the unwrapped VkPhysicalDevice into ecx
|
||||
mov [esp + 4], ecx # Overwrite the wrapped VkPhysicalDevice with the unwrapped one (on the stack)
|
||||
|
@ -79,6 +89,7 @@ vkPhysDevExtTramp\num:
|
|||
.macro PhysDevExtTermin num
|
||||
.global vkPhysDevExtTermin\num
|
||||
vkPhysDevExtTermin\num:
|
||||
_CET_ENDBR
|
||||
mov ecx, [esp + 4] # Move the wrapped VkPhysicalDevice into ecx
|
||||
mov eax, [ecx + ICD_TERM_OFFSET_PHYS_DEV_TERM] # Store the loader_icd_term* in eax
|
||||
cmp dword ptr [eax + (DISPATCH_OFFSET_ICD_TERM + (PTR_SIZE * \num))], 0 # Check if the next function in the chain is NULL
|
||||
|
@ -102,6 +113,7 @@ terminError\num:
|
|||
.macro DevExtTramp num
|
||||
.global vkdev_ext\num
|
||||
vkdev_ext\num:
|
||||
_CET_ENDBR
|
||||
mov eax, [esp + 4] # Dereference the handle to get the dispatch table
|
||||
jmp [eax + (EXT_OFFSET_DEVICE_DISPATCH + (PTR_SIZE * \num))] # Jump to the appropriate call chain
|
||||
.endm
|
|
@ -86,6 +86,12 @@ static VKAPI_ATTR VkResult VKAPI_CALL StubBindImageMemory2KHR(VkDevice device, u
|
|||
static VKAPI_ATTR void VKAPI_CALL StubGetDescriptorSetLayoutSupportKHR(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport) { };
|
||||
static VKAPI_ATTR void VKAPI_CALL StubCmdDrawIndirectCountKHR(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride) { };
|
||||
static VKAPI_ATTR void VKAPI_CALL StubCmdDrawIndexedIndirectCountKHR(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride) { };
|
||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetSemaphoreCounterValueKHR(VkDevice device, VkSemaphore semaphore, uint64_t* pValue) { return VK_SUCCESS; };
|
||||
static VKAPI_ATTR VkResult VKAPI_CALL StubWaitSemaphoresKHR(VkDevice device, const VkSemaphoreWaitInfoKHR* pWaitInfo, uint64_t timeout) { return VK_SUCCESS; };
|
||||
static VKAPI_ATTR VkResult VKAPI_CALL StubSignalSemaphoreKHR(VkDevice device, const VkSemaphoreSignalInfoKHR* pSignalInfo) { return VK_SUCCESS; };
|
||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetPipelineExecutablePropertiesKHR(VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, uint32_t* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties) { return VK_SUCCESS; };
|
||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetPipelineExecutableStatisticsKHR(VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics) { return VK_SUCCESS; };
|
||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetPipelineExecutableInternalRepresentationsKHR(VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations) { return VK_SUCCESS; };
|
||||
static VKAPI_ATTR VkResult VKAPI_CALL StubDebugMarkerSetObjectTagEXT(VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo) { return VK_SUCCESS; };
|
||||
static VKAPI_ATTR VkResult VKAPI_CALL StubDebugMarkerSetObjectNameEXT(VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo) { return VK_SUCCESS; };
|
||||
static VKAPI_ATTR void VKAPI_CALL StubCmdDebugMarkerBeginEXT(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) { };
|
||||
|
@ -179,6 +185,7 @@ static VKAPI_ATTR VkResult VKAPI_CALL StubReleaseFullScreenExclusiveModeEXT(VkDe
|
|||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetDeviceGroupSurfacePresentModes2EXT(VkDevice device, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkDeviceGroupPresentModeFlagsKHR* pModes) { return VK_SUCCESS; };
|
||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
||||
static VKAPI_ATTR void VKAPI_CALL StubCmdSetLineStippleEXT(VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, uint16_t lineStipplePattern) { };
|
||||
static VKAPI_ATTR void VKAPI_CALL StubResetQueryPoolEXT(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount) { };
|
||||
|
||||
|
||||
|
@ -425,6 +432,18 @@ static inline void layer_init_device_dispatch_table(VkDevice device, VkLayerDisp
|
|||
if (table->CmdDrawIndirectCountKHR == nullptr) { table->CmdDrawIndirectCountKHR = (PFN_vkCmdDrawIndirectCountKHR)StubCmdDrawIndirectCountKHR; }
|
||||
table->CmdDrawIndexedIndirectCountKHR = (PFN_vkCmdDrawIndexedIndirectCountKHR) gpa(device, "vkCmdDrawIndexedIndirectCountKHR");
|
||||
if (table->CmdDrawIndexedIndirectCountKHR == nullptr) { table->CmdDrawIndexedIndirectCountKHR = (PFN_vkCmdDrawIndexedIndirectCountKHR)StubCmdDrawIndexedIndirectCountKHR; }
|
||||
table->GetSemaphoreCounterValueKHR = (PFN_vkGetSemaphoreCounterValueKHR) gpa(device, "vkGetSemaphoreCounterValueKHR");
|
||||
if (table->GetSemaphoreCounterValueKHR == nullptr) { table->GetSemaphoreCounterValueKHR = (PFN_vkGetSemaphoreCounterValueKHR)StubGetSemaphoreCounterValueKHR; }
|
||||
table->WaitSemaphoresKHR = (PFN_vkWaitSemaphoresKHR) gpa(device, "vkWaitSemaphoresKHR");
|
||||
if (table->WaitSemaphoresKHR == nullptr) { table->WaitSemaphoresKHR = (PFN_vkWaitSemaphoresKHR)StubWaitSemaphoresKHR; }
|
||||
table->SignalSemaphoreKHR = (PFN_vkSignalSemaphoreKHR) gpa(device, "vkSignalSemaphoreKHR");
|
||||
if (table->SignalSemaphoreKHR == nullptr) { table->SignalSemaphoreKHR = (PFN_vkSignalSemaphoreKHR)StubSignalSemaphoreKHR; }
|
||||
table->GetPipelineExecutablePropertiesKHR = (PFN_vkGetPipelineExecutablePropertiesKHR) gpa(device, "vkGetPipelineExecutablePropertiesKHR");
|
||||
if (table->GetPipelineExecutablePropertiesKHR == nullptr) { table->GetPipelineExecutablePropertiesKHR = (PFN_vkGetPipelineExecutablePropertiesKHR)StubGetPipelineExecutablePropertiesKHR; }
|
||||
table->GetPipelineExecutableStatisticsKHR = (PFN_vkGetPipelineExecutableStatisticsKHR) gpa(device, "vkGetPipelineExecutableStatisticsKHR");
|
||||
if (table->GetPipelineExecutableStatisticsKHR == nullptr) { table->GetPipelineExecutableStatisticsKHR = (PFN_vkGetPipelineExecutableStatisticsKHR)StubGetPipelineExecutableStatisticsKHR; }
|
||||
table->GetPipelineExecutableInternalRepresentationsKHR = (PFN_vkGetPipelineExecutableInternalRepresentationsKHR) gpa(device, "vkGetPipelineExecutableInternalRepresentationsKHR");
|
||||
if (table->GetPipelineExecutableInternalRepresentationsKHR == nullptr) { table->GetPipelineExecutableInternalRepresentationsKHR = (PFN_vkGetPipelineExecutableInternalRepresentationsKHR)StubGetPipelineExecutableInternalRepresentationsKHR; }
|
||||
table->DebugMarkerSetObjectTagEXT = (PFN_vkDebugMarkerSetObjectTagEXT) gpa(device, "vkDebugMarkerSetObjectTagEXT");
|
||||
if (table->DebugMarkerSetObjectTagEXT == nullptr) { table->DebugMarkerSetObjectTagEXT = (PFN_vkDebugMarkerSetObjectTagEXT)StubDebugMarkerSetObjectTagEXT; }
|
||||
table->DebugMarkerSetObjectNameEXT = (PFN_vkDebugMarkerSetObjectNameEXT) gpa(device, "vkDebugMarkerSetObjectNameEXT");
|
||||
|
@ -607,6 +626,8 @@ static inline void layer_init_device_dispatch_table(VkDevice device, VkLayerDisp
|
|||
table->GetDeviceGroupSurfacePresentModes2EXT = (PFN_vkGetDeviceGroupSurfacePresentModes2EXT) gpa(device, "vkGetDeviceGroupSurfacePresentModes2EXT");
|
||||
if (table->GetDeviceGroupSurfacePresentModes2EXT == nullptr) { table->GetDeviceGroupSurfacePresentModes2EXT = (PFN_vkGetDeviceGroupSurfacePresentModes2EXT)StubGetDeviceGroupSurfacePresentModes2EXT; }
|
||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
||||
table->CmdSetLineStippleEXT = (PFN_vkCmdSetLineStippleEXT) gpa(device, "vkCmdSetLineStippleEXT");
|
||||
if (table->CmdSetLineStippleEXT == nullptr) { table->CmdSetLineStippleEXT = (PFN_vkCmdSetLineStippleEXT)StubCmdSetLineStippleEXT; }
|
||||
table->ResetQueryPoolEXT = (PFN_vkResetQueryPoolEXT) gpa(device, "vkResetQueryPoolEXT");
|
||||
if (table->ResetQueryPoolEXT == nullptr) { table->ResetQueryPoolEXT = (PFN_vkResetQueryPoolEXT)StubResetQueryPoolEXT; }
|
||||
}
|
||||
|
|
|
@ -470,6 +470,16 @@ typedef struct VkLayerDispatchTable_ {
|
|||
PFN_vkCmdDrawIndirectCountKHR CmdDrawIndirectCountKHR;
|
||||
PFN_vkCmdDrawIndexedIndirectCountKHR CmdDrawIndexedIndirectCountKHR;
|
||||
|
||||
// ---- VK_KHR_timeline_semaphore extension commands
|
||||
PFN_vkGetSemaphoreCounterValueKHR GetSemaphoreCounterValueKHR;
|
||||
PFN_vkWaitSemaphoresKHR WaitSemaphoresKHR;
|
||||
PFN_vkSignalSemaphoreKHR SignalSemaphoreKHR;
|
||||
|
||||
// ---- VK_KHR_pipeline_executable_properties extension commands
|
||||
PFN_vkGetPipelineExecutablePropertiesKHR GetPipelineExecutablePropertiesKHR;
|
||||
PFN_vkGetPipelineExecutableStatisticsKHR GetPipelineExecutableStatisticsKHR;
|
||||
PFN_vkGetPipelineExecutableInternalRepresentationsKHR GetPipelineExecutableInternalRepresentationsKHR;
|
||||
|
||||
// ---- VK_EXT_debug_marker extension commands
|
||||
PFN_vkDebugMarkerSetObjectTagEXT DebugMarkerSetObjectTagEXT;
|
||||
PFN_vkDebugMarkerSetObjectNameEXT DebugMarkerSetObjectNameEXT;
|
||||
|
@ -631,6 +641,9 @@ typedef struct VkLayerDispatchTable_ {
|
|||
PFN_vkGetDeviceGroupSurfacePresentModes2EXT GetDeviceGroupSurfacePresentModes2EXT;
|
||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
||||
|
||||
// ---- VK_EXT_line_rasterization extension commands
|
||||
PFN_vkCmdSetLineStippleEXT CmdSetLineStippleEXT;
|
||||
|
||||
// ---- VK_EXT_host_query_reset extension commands
|
||||
PFN_vkResetQueryPoolEXT ResetQueryPoolEXT;
|
||||
} VkLayerDispatchTable;
|
||||
|
|
165
thirdparty/vulkan/loader/vk_loader_extensions.c
vendored
165
thirdparty/vulkan/loader/vk_loader_extensions.c
vendored
|
@ -527,6 +527,16 @@ VKAPI_ATTR void VKAPI_CALL loader_init_device_extension_dispatch_table(struct lo
|
|||
table->CmdDrawIndirectCountKHR = (PFN_vkCmdDrawIndirectCountKHR)gdpa(dev, "vkCmdDrawIndirectCountKHR");
|
||||
table->CmdDrawIndexedIndirectCountKHR = (PFN_vkCmdDrawIndexedIndirectCountKHR)gdpa(dev, "vkCmdDrawIndexedIndirectCountKHR");
|
||||
|
||||
// ---- VK_KHR_timeline_semaphore extension commands
|
||||
table->GetSemaphoreCounterValueKHR = (PFN_vkGetSemaphoreCounterValueKHR)gdpa(dev, "vkGetSemaphoreCounterValueKHR");
|
||||
table->WaitSemaphoresKHR = (PFN_vkWaitSemaphoresKHR)gdpa(dev, "vkWaitSemaphoresKHR");
|
||||
table->SignalSemaphoreKHR = (PFN_vkSignalSemaphoreKHR)gdpa(dev, "vkSignalSemaphoreKHR");
|
||||
|
||||
// ---- VK_KHR_pipeline_executable_properties extension commands
|
||||
table->GetPipelineExecutablePropertiesKHR = (PFN_vkGetPipelineExecutablePropertiesKHR)gdpa(dev, "vkGetPipelineExecutablePropertiesKHR");
|
||||
table->GetPipelineExecutableStatisticsKHR = (PFN_vkGetPipelineExecutableStatisticsKHR)gdpa(dev, "vkGetPipelineExecutableStatisticsKHR");
|
||||
table->GetPipelineExecutableInternalRepresentationsKHR = (PFN_vkGetPipelineExecutableInternalRepresentationsKHR)gdpa(dev, "vkGetPipelineExecutableInternalRepresentationsKHR");
|
||||
|
||||
// ---- VK_EXT_debug_marker extension commands
|
||||
table->DebugMarkerSetObjectTagEXT = (PFN_vkDebugMarkerSetObjectTagEXT)gdpa(dev, "vkDebugMarkerSetObjectTagEXT");
|
||||
table->DebugMarkerSetObjectNameEXT = (PFN_vkDebugMarkerSetObjectNameEXT)gdpa(dev, "vkDebugMarkerSetObjectNameEXT");
|
||||
|
@ -688,6 +698,9 @@ VKAPI_ATTR void VKAPI_CALL loader_init_device_extension_dispatch_table(struct lo
|
|||
table->GetDeviceGroupSurfacePresentModes2EXT = (PFN_vkGetDeviceGroupSurfacePresentModes2EXT)gdpa(dev, "vkGetDeviceGroupSurfacePresentModes2EXT");
|
||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
||||
|
||||
// ---- VK_EXT_line_rasterization extension commands
|
||||
table->CmdSetLineStippleEXT = (PFN_vkCmdSetLineStippleEXT)gdpa(dev, "vkCmdSetLineStippleEXT");
|
||||
|
||||
// ---- VK_EXT_host_query_reset extension commands
|
||||
table->ResetQueryPoolEXT = (PFN_vkResetQueryPoolEXT)gdpa(dev, "vkResetQueryPoolEXT");
|
||||
}
|
||||
|
@ -1138,6 +1151,16 @@ VKAPI_ATTR void* VKAPI_CALL loader_lookup_device_dispatch_table(const VkLayerDis
|
|||
if (!strcmp(name, "CmdDrawIndirectCountKHR")) return (void *)table->CmdDrawIndirectCountKHR;
|
||||
if (!strcmp(name, "CmdDrawIndexedIndirectCountKHR")) return (void *)table->CmdDrawIndexedIndirectCountKHR;
|
||||
|
||||
// ---- VK_KHR_timeline_semaphore extension commands
|
||||
if (!strcmp(name, "GetSemaphoreCounterValueKHR")) return (void *)table->GetSemaphoreCounterValueKHR;
|
||||
if (!strcmp(name, "WaitSemaphoresKHR")) return (void *)table->WaitSemaphoresKHR;
|
||||
if (!strcmp(name, "SignalSemaphoreKHR")) return (void *)table->SignalSemaphoreKHR;
|
||||
|
||||
// ---- VK_KHR_pipeline_executable_properties extension commands
|
||||
if (!strcmp(name, "GetPipelineExecutablePropertiesKHR")) return (void *)table->GetPipelineExecutablePropertiesKHR;
|
||||
if (!strcmp(name, "GetPipelineExecutableStatisticsKHR")) return (void *)table->GetPipelineExecutableStatisticsKHR;
|
||||
if (!strcmp(name, "GetPipelineExecutableInternalRepresentationsKHR")) return (void *)table->GetPipelineExecutableInternalRepresentationsKHR;
|
||||
|
||||
// ---- VK_EXT_debug_marker extension commands
|
||||
if (!strcmp(name, "DebugMarkerSetObjectTagEXT")) return (void *)table->DebugMarkerSetObjectTagEXT;
|
||||
if (!strcmp(name, "DebugMarkerSetObjectNameEXT")) return (void *)table->DebugMarkerSetObjectNameEXT;
|
||||
|
@ -1299,6 +1322,9 @@ VKAPI_ATTR void* VKAPI_CALL loader_lookup_device_dispatch_table(const VkLayerDis
|
|||
if (!strcmp(name, "GetDeviceGroupSurfacePresentModes2EXT")) return (void *)table->GetDeviceGroupSurfacePresentModes2EXT;
|
||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
||||
|
||||
// ---- VK_EXT_line_rasterization extension commands
|
||||
if (!strcmp(name, "CmdSetLineStippleEXT")) return (void *)table->CmdSetLineStippleEXT;
|
||||
|
||||
// ---- VK_EXT_host_query_reset extension commands
|
||||
if (!strcmp(name, "ResetQueryPoolEXT")) return (void *)table->ResetQueryPoolEXT;
|
||||
|
||||
|
@ -1885,6 +1911,62 @@ VKAPI_ATTR void VKAPI_CALL CmdDrawIndexedIndirectCountKHR(
|
|||
}
|
||||
|
||||
|
||||
// ---- VK_KHR_timeline_semaphore extension trampoline/terminators
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreCounterValueKHR(
|
||||
VkDevice device,
|
||||
VkSemaphore semaphore,
|
||||
uint64_t* pValue) {
|
||||
const VkLayerDispatchTable *disp = loader_get_dispatch(device);
|
||||
return disp->GetSemaphoreCounterValueKHR(device, semaphore, pValue);
|
||||
}
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL WaitSemaphoresKHR(
|
||||
VkDevice device,
|
||||
const VkSemaphoreWaitInfoKHR* pWaitInfo,
|
||||
uint64_t timeout) {
|
||||
const VkLayerDispatchTable *disp = loader_get_dispatch(device);
|
||||
return disp->WaitSemaphoresKHR(device, pWaitInfo, timeout);
|
||||
}
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL SignalSemaphoreKHR(
|
||||
VkDevice device,
|
||||
const VkSemaphoreSignalInfoKHR* pSignalInfo) {
|
||||
const VkLayerDispatchTable *disp = loader_get_dispatch(device);
|
||||
return disp->SignalSemaphoreKHR(device, pSignalInfo);
|
||||
}
|
||||
|
||||
|
||||
// ---- VK_KHR_pipeline_executable_properties extension trampoline/terminators
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL GetPipelineExecutablePropertiesKHR(
|
||||
VkDevice device,
|
||||
const VkPipelineInfoKHR* pPipelineInfo,
|
||||
uint32_t* pExecutableCount,
|
||||
VkPipelineExecutablePropertiesKHR* pProperties) {
|
||||
const VkLayerDispatchTable *disp = loader_get_dispatch(device);
|
||||
return disp->GetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties);
|
||||
}
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL GetPipelineExecutableStatisticsKHR(
|
||||
VkDevice device,
|
||||
const VkPipelineExecutableInfoKHR* pExecutableInfo,
|
||||
uint32_t* pStatisticCount,
|
||||
VkPipelineExecutableStatisticKHR* pStatistics) {
|
||||
const VkLayerDispatchTable *disp = loader_get_dispatch(device);
|
||||
return disp->GetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics);
|
||||
}
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL GetPipelineExecutableInternalRepresentationsKHR(
|
||||
VkDevice device,
|
||||
const VkPipelineExecutableInfoKHR* pExecutableInfo,
|
||||
uint32_t* pInternalRepresentationCount,
|
||||
VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations) {
|
||||
const VkLayerDispatchTable *disp = loader_get_dispatch(device);
|
||||
return disp->GetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations);
|
||||
}
|
||||
|
||||
|
||||
// ---- VK_EXT_debug_marker extension trampoline/terminators
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL DebugMarkerSetObjectTagEXT(
|
||||
|
@ -3005,28 +3087,6 @@ VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateImagePipeSurfaceFUCHSIA(
|
|||
|
||||
#endif // VK_USE_PLATFORM_FUCHSIA
|
||||
|
||||
// ---- VK_EXT_metal_surface extension trampoline/terminators
|
||||
|
||||
#ifdef VK_USE_PLATFORM_METAL_EXT
|
||||
VKAPI_ATTR VkResult VKAPI_CALL CreateMetalSurfaceEXT(
|
||||
VkInstance instance,
|
||||
const VkMetalSurfaceCreateInfoEXT* pCreateInfo,
|
||||
const VkAllocationCallbacks* pAllocator,
|
||||
VkSurfaceKHR* pSurface) {
|
||||
#error("Not implemented. Likely needs to be manually generated!");
|
||||
return disp->CreateMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface);
|
||||
}
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateMetalSurfaceEXT(
|
||||
VkInstance instance,
|
||||
const VkMetalSurfaceCreateInfoEXT* pCreateInfo,
|
||||
const VkAllocationCallbacks* pAllocator,
|
||||
VkSurfaceKHR* pSurface) {
|
||||
#error("Not implemented. Likely needs to be manually generated!");
|
||||
}
|
||||
|
||||
#endif // VK_USE_PLATFORM_METAL_EXT
|
||||
|
||||
// ---- VK_EXT_buffer_device_address extension trampoline/terminators
|
||||
|
||||
VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetBufferDeviceAddressEXT(
|
||||
|
@ -3110,6 +3170,17 @@ VKAPI_ATTR VkResult VKAPI_CALL ReleaseFullScreenExclusiveModeEXT(
|
|||
|
||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
||||
|
||||
// ---- VK_EXT_line_rasterization extension trampoline/terminators
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL CmdSetLineStippleEXT(
|
||||
VkCommandBuffer commandBuffer,
|
||||
uint32_t lineStippleFactor,
|
||||
uint16_t lineStipplePattern) {
|
||||
const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
|
||||
disp->CmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern);
|
||||
}
|
||||
|
||||
|
||||
// ---- VK_EXT_host_query_reset extension trampoline/terminators
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL ResetQueryPoolEXT(
|
||||
|
@ -3406,6 +3477,34 @@ bool extension_instance_gpa(struct loader_instance *ptr_instance, const char *na
|
|||
return true;
|
||||
}
|
||||
|
||||
// ---- VK_KHR_timeline_semaphore extension commands
|
||||
if (!strcmp("vkGetSemaphoreCounterValueKHR", name)) {
|
||||
*addr = (void *)GetSemaphoreCounterValueKHR;
|
||||
return true;
|
||||
}
|
||||
if (!strcmp("vkWaitSemaphoresKHR", name)) {
|
||||
*addr = (void *)WaitSemaphoresKHR;
|
||||
return true;
|
||||
}
|
||||
if (!strcmp("vkSignalSemaphoreKHR", name)) {
|
||||
*addr = (void *)SignalSemaphoreKHR;
|
||||
return true;
|
||||
}
|
||||
|
||||
// ---- VK_KHR_pipeline_executable_properties extension commands
|
||||
if (!strcmp("vkGetPipelineExecutablePropertiesKHR", name)) {
|
||||
*addr = (void *)GetPipelineExecutablePropertiesKHR;
|
||||
return true;
|
||||
}
|
||||
if (!strcmp("vkGetPipelineExecutableStatisticsKHR", name)) {
|
||||
*addr = (void *)GetPipelineExecutableStatisticsKHR;
|
||||
return true;
|
||||
}
|
||||
if (!strcmp("vkGetPipelineExecutableInternalRepresentationsKHR", name)) {
|
||||
*addr = (void *)GetPipelineExecutableInternalRepresentationsKHR;
|
||||
return true;
|
||||
}
|
||||
|
||||
// ---- VK_EXT_debug_marker extension commands
|
||||
if (!strcmp("vkDebugMarkerSetObjectTagEXT", name)) {
|
||||
*addr = (void *)DebugMarkerSetObjectTagEXT;
|
||||
|
@ -3908,16 +4007,6 @@ bool extension_instance_gpa(struct loader_instance *ptr_instance, const char *na
|
|||
}
|
||||
#endif // VK_USE_PLATFORM_FUCHSIA
|
||||
|
||||
// ---- VK_EXT_metal_surface extension commands
|
||||
#ifdef VK_USE_PLATFORM_METAL_EXT
|
||||
if (!strcmp("vkCreateMetalSurfaceEXT", name)) {
|
||||
*addr = (ptr_instance->enabled_known_extensions.ext_metal_surface == 1)
|
||||
? (void *)CreateMetalSurfaceEXT
|
||||
: NULL;
|
||||
return true;
|
||||
}
|
||||
#endif // VK_USE_PLATFORM_METAL_EXT
|
||||
|
||||
// ---- VK_EXT_buffer_device_address extension commands
|
||||
if (!strcmp("vkGetBufferDeviceAddressEXT", name)) {
|
||||
*addr = (void *)GetBufferDeviceAddressEXT;
|
||||
|
@ -3962,6 +4051,12 @@ bool extension_instance_gpa(struct loader_instance *ptr_instance, const char *na
|
|||
}
|
||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
||||
|
||||
// ---- VK_EXT_line_rasterization extension commands
|
||||
if (!strcmp("vkCmdSetLineStippleEXT", name)) {
|
||||
*addr = (void *)CmdSetLineStippleEXT;
|
||||
return true;
|
||||
}
|
||||
|
||||
// ---- VK_EXT_host_query_reset extension commands
|
||||
if (!strcmp("vkResetQueryPoolEXT", name)) {
|
||||
*addr = (void *)ResetQueryPoolEXT;
|
||||
|
@ -4037,12 +4132,6 @@ void extensions_create_instance(struct loader_instance *ptr_instance, const VkIn
|
|||
} else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME)) {
|
||||
ptr_instance->enabled_known_extensions.fuchsia_imagepipe_surface = 1;
|
||||
#endif // VK_USE_PLATFORM_FUCHSIA
|
||||
|
||||
// ---- VK_EXT_metal_surface extension commands
|
||||
#ifdef VK_USE_PLATFORM_METAL_EXT
|
||||
} else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_EXT_METAL_SURFACE_EXTENSION_NAME)) {
|
||||
ptr_instance->enabled_known_extensions.ext_metal_surface = 1;
|
||||
#endif // VK_USE_PLATFORM_METAL_EXT
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -437,7 +437,6 @@ union loader_instance_extension_enables {
|
|||
uint8_t ext_display_surface_counter : 1;
|
||||
uint8_t ext_debug_utils : 1;
|
||||
uint8_t fuchsia_imagepipe_surface : 1;
|
||||
uint8_t ext_metal_surface : 1;
|
||||
};
|
||||
uint64_t padding[4];
|
||||
};
|
||||
|
|
39
thirdparty/vulkan/loader/vk_loader_platform.h
vendored
39
thirdparty/vulkan/loader/vk_loader_platform.h
vendored
|
@ -207,7 +207,12 @@ static inline void loader_platform_thread_cond_broadcast(loader_platform_thread_
|
|||
static inline const char *LoaderPnpDriverRegistry() {
|
||||
BOOL is_wow;
|
||||
IsWow64Process(GetCurrentProcess(), &is_wow);
|
||||
return is_wow ? (API_NAME "DriverNameWow") : (API_NAME "DriverName");
|
||||
return is_wow ? "VulkanDriverNameWow" : "VulkanDriverName";
|
||||
}
|
||||
static inline const wchar_t *LoaderPnpDriverRegistryWide() {
|
||||
BOOL is_wow;
|
||||
IsWow64Process(GetCurrentProcess(), &is_wow);
|
||||
return is_wow ? L"VulkanDriverNameWow" : L"VulkanDriverName";
|
||||
}
|
||||
|
||||
// Get the key for the plug 'n play explicit layer registry
|
||||
|
@ -215,15 +220,25 @@ static inline const char *LoaderPnpDriverRegistry() {
|
|||
static inline const char *LoaderPnpELayerRegistry() {
|
||||
BOOL is_wow;
|
||||
IsWow64Process(GetCurrentProcess(), &is_wow);
|
||||
return is_wow ? (API_NAME "ExplicitLayersWow") : (API_NAME "ExplicitLayers");
|
||||
return is_wow ? "VulkanExplicitLayersWow" : "VulkanExplicitLayers";
|
||||
}
|
||||
static inline const wchar_t *LoaderPnpELayerRegistryWide() {
|
||||
BOOL is_wow;
|
||||
IsWow64Process(GetCurrentProcess(), &is_wow);
|
||||
return is_wow ? L"VulkanExplicitLayersWow" : L"VulkanExplicitLayers";
|
||||
}
|
||||
|
||||
// Get the key for the plug 'n play implicit layer registry
|
||||
// The string returned by this function should NOT be freed
|
||||
|
||||
static inline const char *LoaderPnpILayerRegistry() {
|
||||
BOOL is_wow;
|
||||
IsWow64Process(GetCurrentProcess(), &is_wow);
|
||||
return is_wow ? (API_NAME "ImplicitLayersWow") : (API_NAME "ImplicitLayers");
|
||||
return is_wow ? "VulkanImplicitLayersWow" : "VulkanImplicitLayers";
|
||||
}
|
||||
static inline const wchar_t *LoaderPnpILayerRegistryWide() {
|
||||
BOOL is_wow;
|
||||
IsWow64Process(GetCurrentProcess(), &is_wow);
|
||||
return is_wow ? L"VulkanImplicitLayersWow" : L"VulkanImplicitLayers";
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -319,7 +334,23 @@ static char *loader_platform_get_proc_address_error(const char *name) {
|
|||
|
||||
// Threads:
|
||||
typedef HANDLE loader_platform_thread;
|
||||
|
||||
// __declspec(thread) is not supported by MinGW compiler (ignored with warning or
|
||||
// cause erorr depending on compiler switches)
|
||||
//
|
||||
// __thread should be used instead
|
||||
//
|
||||
// __MINGW32__ defined for both 32 and 64 bit MinGW compilers, so it is enough to
|
||||
// detect any (32 or 64) flawor of MinGW compiler.
|
||||
//
|
||||
// @note __GNUC__ could be used as a more generic way to detect _any_
|
||||
// GCC[-compitible] compiler on Windows, but this fix was tested
|
||||
// only with MinGW, so keep it explicit at the moment.
|
||||
#if defined(__MINGW32__)
|
||||
#define THREAD_LOCAL_DECL __thread
|
||||
#else
|
||||
#define THREAD_LOCAL_DECL __declspec(thread)
|
||||
#endif
|
||||
|
||||
// The once init functionality is not used when building a DLL on Windows. This is because there is no way to clean up the
|
||||
// resources allocated by anything allocated by once init. This isn't a problem for static libraries, but it is for dynamic
|
||||
|
|
91
thirdparty/vulkan/loader/wsi.c
vendored
91
thirdparty/vulkan/loader/wsi.c
vendored
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* Copyright (c) 2015-2016 The Khronos Group Inc.
|
||||
* Copyright (c) 2015-2016 Valve Corporation
|
||||
* Copyright (c) 2015-2016 LunarG, Inc.
|
||||
* Copyright (c) 2015-2016, 2019 The Khronos Group Inc.
|
||||
* Copyright (c) 2015-2016, 2019 Valve Corporation
|
||||
* Copyright (c) 2015-2016, 2019 LunarG, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -19,6 +19,7 @@
|
|||
* Author: Jon Ashburn <jon@lunarg.com>
|
||||
* Author: Ian Elliott <ianelliott@google.com>
|
||||
* Author: Mark Lobodzinski <mark@lunarg.com>
|
||||
* Author: Lenny Komow <lenny@lunarg.com>
|
||||
*/
|
||||
|
||||
#ifndef _GNU_SOURCE
|
||||
|
@ -60,9 +61,11 @@ void wsi_create_instance(struct loader_instance *ptr_instance, const VkInstanceC
|
|||
#ifdef VK_USE_PLATFORM_IOS_MVK
|
||||
ptr_instance->wsi_ios_surface_enabled = false;
|
||||
#endif // VK_USE_PLATFORM_IOS_MVK
|
||||
|
||||
ptr_instance->wsi_display_enabled = false;
|
||||
ptr_instance->wsi_display_props2_enabled = false;
|
||||
#ifdef VK_USE_PLATFORM_METAL_EXT
|
||||
ptr_instance->wsi_metal_surface_enabled = false;
|
||||
#endif // VK_USE_PLATFORM_METAL_EXT
|
||||
|
||||
for (uint32_t i = 0; i < pCreateInfo->enabledExtensionCount; i++) {
|
||||
if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_SURFACE_EXTENSION_NAME) == 0) {
|
||||
|
@ -115,6 +118,12 @@ void wsi_create_instance(struct loader_instance *ptr_instance, const VkInstanceC
|
|||
ptr_instance->wsi_headless_surface_enabled = true;
|
||||
continue;
|
||||
}
|
||||
#if defined(VK_USE_PLATFORM_METAL_EXT)
|
||||
if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_EXT_METAL_SURFACE_EXTENSION_NAME) == 0) {
|
||||
ptr_instance->wsi_metal_surface_enabled = true;
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_DISPLAY_EXTENSION_NAME) == 0) {
|
||||
ptr_instance->wsi_display_enabled = true;
|
||||
continue;
|
||||
|
@ -1169,6 +1178,72 @@ VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateIOSSurfaceMVK(VkInstance instanc
|
|||
|
||||
#endif // VK_USE_PLATFORM_IOS_MVK
|
||||
|
||||
#if defined(VK_USE_PLATFORM_METAL_EXT)
|
||||
|
||||
LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateMetalSurfaceEXT(VkInstance instance,
|
||||
const VkMetalSurfaceCreateInfoEXT *pCreateInfo,
|
||||
const VkAllocationCallbacks *pAllocator,
|
||||
VkSurfaceKHR *pSurface) {
|
||||
const VkLayerInstanceDispatchTable *disp = loader_get_instance_layer_dispatch(instance);
|
||||
return disp->CreateMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface);
|
||||
}
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateMetalSurfaceEXT(VkInstance instance, const VkMetalSurfaceCreateInfoEXT *pCreateInfo,
|
||||
const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface) {
|
||||
VkResult result = VK_SUCCESS;
|
||||
VkIcdSurface *icd_surface = NULL;
|
||||
uint32_t i;
|
||||
|
||||
// First, check to ensure the appropriate extension was enabled:
|
||||
struct loader_instance *ptr_instance = loader_get_instance(instance);
|
||||
if (!ptr_instance->wsi_metal_surface_enabled) {
|
||||
loader_log(ptr_instance, VK_DEBUG_REPORT_ERROR_BIT_EXT, 0,
|
||||
"VK_EXT_metal_surface extension not enabled. vkCreateMetalSurfaceEXT will not be executed.\n");
|
||||
}
|
||||
|
||||
// Next, if so, proceed with the implementation of this function:
|
||||
icd_surface = AllocateIcdSurfaceStruct(ptr_instance, sizeof(icd_surface->metal_surf.base), sizeof(icd_surface->metal_surf));
|
||||
if (icd_surface == NULL) {
|
||||
result = VK_ERROR_OUT_OF_HOST_MEMORY;
|
||||
goto out;
|
||||
}
|
||||
|
||||
icd_surface->metal_surf.base.platform = VK_ICD_WSI_PLATFORM_METAL;
|
||||
icd_surface->metal_surf.pLayer = pCreateInfo->pLayer;
|
||||
|
||||
// Loop through each ICD and determine if they need to create a surface
|
||||
i = 0;
|
||||
for (struct loader_icd_term *icd_term = ptr_instance->icd_terms; icd_term != NULL; icd_term = icd_term->next, ++i) {
|
||||
if (icd_term->scanned_icd->interface_version >= ICD_VER_SUPPORTS_ICD_SURFACE_KHR) {
|
||||
if (icd_term->dispatch.CreateMetalSurfaceEXT != NULL) {
|
||||
result = icd_term->dispatch.CreateMetalSurfaceEXT(icd_term->instance, pCreateInfo, pAllocator,
|
||||
&icd_surface->real_icd_surfaces[i]);
|
||||
if (result != VK_SUCCESS) {
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
*pSurface = (VkSurfaceKHR)icd_surface;
|
||||
|
||||
out:
|
||||
if (result != VK_SUCCESS && icd_surface != NULL) {
|
||||
if (icd_surface->real_icd_surfaces != NULL) {
|
||||
i = 0;
|
||||
for (struct loader_icd_term *icd_term = ptr_instance->icd_terms; icd_term != NULL; icd_term = icd_term->next, ++i) {
|
||||
if (icd_surface->real_icd_surfaces[i] == VK_NULL_HANDLE && icd_term->dispatch.DestroySurfaceKHR != NULL) {
|
||||
icd_term->dispatch.DestroySurfaceKHR(icd_term->instance, icd_surface->real_icd_surfaces[i], pAllocator);
|
||||
}
|
||||
}
|
||||
loader_instance_heap_free(ptr_instance, icd_surface->real_icd_surfaces);
|
||||
}
|
||||
loader_instance_heap_free(ptr_instance, icd_surface);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
// Functions for the VK_KHR_display instance extension:
|
||||
LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPropertiesKHR(VkPhysicalDevice physicalDevice,
|
||||
uint32_t *pPropertyCount,
|
||||
|
@ -1882,6 +1957,14 @@ bool wsi_swapchain_instance_gpa(struct loader_instance *ptr_instance, const char
|
|||
return true;
|
||||
}
|
||||
|
||||
#if defined(VK_USE_PLATFORM_METAL_EXT)
|
||||
// Functions for the VK_MVK_macos_surface extension:
|
||||
if (!strcmp("vkCreateMetalSurfaceEXT", name)) {
|
||||
*addr = ptr_instance->wsi_metal_surface_enabled ? (void *)vkCreateMetalSurfaceEXT : NULL;
|
||||
return true;
|
||||
}
|
||||
#endif // VK_USE_PLATFORM_METAL_EXT
|
||||
|
||||
// Functions for VK_KHR_display extension:
|
||||
if (!strcmp("vkGetPhysicalDeviceDisplayPropertiesKHR", name)) {
|
||||
*addr = ptr_instance->wsi_display_enabled ? (void *)vkGetPhysicalDeviceDisplayPropertiesKHR : NULL;
|
||||
|
|
7
thirdparty/vulkan/loader/wsi.h
vendored
7
thirdparty/vulkan/loader/wsi.h
vendored
|
@ -42,6 +42,9 @@ typedef struct {
|
|||
#ifdef VK_USE_PLATFORM_MACOS_MVK
|
||||
VkIcdSurfaceMacOS macos_surf;
|
||||
#endif // VK_USE_PLATFORM_MACOS_MVK
|
||||
#ifdef VK_USE_PLATFORM_METAL_EXT
|
||||
VkIcdSurfaceMetal metal_surf;
|
||||
#endif // VK_USE_PLATFORM_METAL_EXT
|
||||
VkIcdSurfaceDisplay display_surf;
|
||||
VkIcdSurfaceHeadless headless_surf;
|
||||
};
|
||||
|
@ -126,6 +129,10 @@ VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateMacOSSurfaceMVK(VkInstance insta
|
|||
VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateIOSSurfaceMVK(VkInstance instance, const VkIOSSurfaceCreateInfoMVK *pCreateInfo,
|
||||
const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
|
||||
#endif
|
||||
#if defined(VK_USE_PLATFORM_METAL_EXT)
|
||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateMetalSurfaceEXT(VkInstance instance, const VkMetalSurfaceCreateInfoEXT *pCreateInfo,
|
||||
const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
|
||||
#endif
|
||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceDisplayPropertiesKHR(VkPhysicalDevice physicalDevice,
|
||||
uint32_t *pPropertyCount,
|
||||
VkDisplayPropertiesKHR *pProperties);
|
||||
|
|
Loading…
Reference in a new issue