Optionally hide additional static Vulkan linkage symbols.

Move the aliasing of promoted function pointers to the function pointer
lookup collection, because non-global function alias symbols are not
available in separately compiled object file.

Add public aliased Vulkan extension functions that were promoted to 1.1 to
the public symbols that are hidden when MVK_HIDE_VULKAN_SYMBOLS is enabled.

Add functions from the private VK_MVK_moltenvk extension that depend on
Vulkan object handles to the public symbols that are hidden when
MVK_HIDE_VULKAN_SYMBOLS is enabled, to discourage their use by apps that
are using the Vulkan Loader and Layers, because they are not supported by
the Vulkan Loader and Layers.

Update VK_MVK_MOLTENVK_SPEC_VERSION to version 33.
This commit is contained in:
Bill Hollings 2021-12-18 14:00:37 -05:00
parent bc4ce5799c
commit 52568efb27
5 changed files with 108 additions and 148 deletions

View File

@ -100,6 +100,10 @@ extern "C" {
/** Directive to identify public symbols. */ /** Directive to identify public symbols. */
#define MVK_PUBLIC_SYMBOL __attribute__((visibility("default"))) #define MVK_PUBLIC_SYMBOL __attribute__((visibility("default")))
/** Directive to make a public alias of another symbol. */
#define MVK_PUBLIC_ALIAS(ALIAS, TARGET) asm(".globl _" #ALIAS "\n\t_" #ALIAS " = _" #TARGET)
/** /**
* Directives to hide public symbols from the Vulkan API, to avoid library linking * Directives to hide public symbols from the Vulkan API, to avoid library linking
* conflicts when bound to a Vulkan Loader that also exports identical symbols. * conflicts when bound to a Vulkan Loader that also exports identical symbols.
@ -109,13 +113,12 @@ extern "C" {
#endif #endif
#if MVK_HIDE_VULKAN_SYMBOLS #if MVK_HIDE_VULKAN_SYMBOLS
# define MVK_PUBLIC_VULKAN_SYMBOL # define MVK_PUBLIC_VULKAN_SYMBOL
# define MVK_PUBLIC_VULKAN_ALIAS(ALIAS, TARGET)
#else #else
# define MVK_PUBLIC_VULKAN_SYMBOL MVK_PUBLIC_SYMBOL # define MVK_PUBLIC_VULKAN_SYMBOL MVK_PUBLIC_SYMBOL
# define MVK_PUBLIC_VULKAN_ALIAS(ALIAS, TARGET) MVK_PUBLIC_ALIAS(ALIAS, TARGET)
#endif #endif
/** Directive to make a public alias of another symbol. */
#define MVK_PUBLIC_ALIAS(ALIAS, TARGET) asm(".globl _" #ALIAS "\n\t_" #ALIAS " = _" #TARGET)
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -55,7 +55,7 @@ typedef unsigned long MTLLanguageVersion;
#define MVK_MAKE_VERSION(major, minor, patch) (((major) * 10000) + ((minor) * 100) + (patch)) #define MVK_MAKE_VERSION(major, minor, patch) (((major) * 10000) + ((minor) * 100) + (patch))
#define MVK_VERSION MVK_MAKE_VERSION(MVK_VERSION_MAJOR, MVK_VERSION_MINOR, MVK_VERSION_PATCH) #define MVK_VERSION MVK_MAKE_VERSION(MVK_VERSION_MAJOR, MVK_VERSION_MINOR, MVK_VERSION_PATCH)
#define VK_MVK_MOLTENVK_SPEC_VERSION 32 #define VK_MVK_MOLTENVK_SPEC_VERSION 33
#define VK_MVK_MOLTENVK_EXTENSION_NAME "VK_MVK_moltenvk" #define VK_MVK_MOLTENVK_EXTENSION_NAME "VK_MVK_moltenvk"
/** Identifies the level of logging MoltenVK should be limited to outputting. */ /** Identifies the level of logging MoltenVK should be limited to outputting. */
@ -1113,11 +1113,8 @@ VKAPI_ATTR VkResult VKAPI_CALL vkSetMoltenVKConfigurationMVK(
* In that case, this function will set *pMetalFeaturesSize to the size that MoltenVK expects * In that case, this function will set *pMetalFeaturesSize to the size that MoltenVK expects
* MVKPhysicalDeviceMetalFeatures to be. * MVKPhysicalDeviceMetalFeatures to be.
* *
* This function is not supported by the Vulkan SDK Loader and Layers framework. * This function is not supported by the Vulkan SDK Loader and Layers framework
* The VkPhysicalDevice object you provide here must have been retrieved directly from * and is unavailable when using the Vulkan SDK Loader and Layers framework.
* MoltenVK, and not through the Vulkan SDK Loader and Layers framework. Opaque Vulkan
* objects are often changed by layers, and passing them from one layer to another,
* or from a layer directly to MoltenVK, will result in undefined behaviour.
*/ */
VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceMetalFeaturesMVK( VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceMetalFeaturesMVK(
VkPhysicalDevice physicalDevice, VkPhysicalDevice physicalDevice,
@ -1146,11 +1143,8 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceMetalFeaturesMVK(
* pPerf to NULL. In that case, this function will set *pPerfSize to the size that MoltenVK * pPerf to NULL. In that case, this function will set *pPerfSize to the size that MoltenVK
* expects MVKPerformanceStatistics to be. * expects MVKPerformanceStatistics to be.
* *
* This function is not supported by the Vulkan SDK Loader and Layers framework. * This function is not supported by the Vulkan SDK Loader and Layers framework
* The VkDevice object you provide here must have been retrieved directly from * and is unavailable when using the Vulkan SDK Loader and Layers framework.
* MoltenVK, and not through the Vulkan SDK Loader and Layers framework. Opaque Vulkan
* objects are often changed by layers, and passing them from one layer to another,
* or from a layer directly to MoltenVK, will result in undefined behaviour.
*/ */
VKAPI_ATTR VkResult VKAPI_CALL vkGetPerformanceStatisticsMVK( VKAPI_ATTR VkResult VKAPI_CALL vkGetPerformanceStatisticsMVK(
VkDevice device, VkDevice device,
@ -1177,11 +1171,8 @@ VKAPI_ATTR void VKAPI_CALL vkGetVersionStringsMVK(
* source code or MSL compiled code. Workgroup size is determined automatically * source code or MSL compiled code. Workgroup size is determined automatically
* if you're using SPIR-V. * if you're using SPIR-V.
* *
* This function is not supported by the Vulkan SDK Loader and Layers framework. * This function is not supported by the Vulkan SDK Loader and Layers framework
* The VkShaderModule object you provide here must have been retrieved directly from * and is unavailable when using the Vulkan SDK Loader and Layers framework.
* MoltenVK, and not through the Vulkan SDK Loader and Layers framework. Opaque Vulkan
* objects are often changed by layers, and passing them from one layer to another,
* or from a layer directly to MoltenVK, will result in undefined behaviour.
*/ */
VKAPI_ATTR void VKAPI_CALL vkSetWorkgroupSizeMVK( VKAPI_ATTR void VKAPI_CALL vkSetWorkgroupSizeMVK(
VkShaderModule shaderModule, VkShaderModule shaderModule,
@ -1194,11 +1185,8 @@ VKAPI_ATTR void VKAPI_CALL vkSetWorkgroupSizeMVK(
/** /**
* Returns, in the pMTLDevice pointer, the MTLDevice used by the VkPhysicalDevice. * Returns, in the pMTLDevice pointer, the MTLDevice used by the VkPhysicalDevice.
* *
* This function is not supported by the Vulkan SDK Loader and Layers framework. * This function is not supported by the Vulkan SDK Loader and Layers framework
* The VkPhysicalDevice object you provide here must have been retrieved directly from * and is unavailable when using the Vulkan SDK Loader and Layers framework.
* MoltenVK, and not through the Vulkan SDK Loader and Layers framework. Opaque Vulkan
* objects are often changed by layers, and passing them from one layer to another,
* or from a layer directly to MoltenVK, will result in undefined behaviour.
*/ */
VKAPI_ATTR void VKAPI_CALL vkGetMTLDeviceMVK( VKAPI_ATTR void VKAPI_CALL vkGetMTLDeviceMVK(
VkPhysicalDevice physicalDevice, VkPhysicalDevice physicalDevice,
@ -1214,11 +1202,8 @@ VKAPI_ATTR void VKAPI_CALL vkGetMTLDeviceMVK(
* *
* Returns VK_SUCCESS. * Returns VK_SUCCESS.
* *
* This function is not supported by the Vulkan SDK Loader and Layers framework. * This function is not supported by the Vulkan SDK Loader and Layers framework
* The VkImage object you provide here must have been retrieved directly from * and is unavailable when using the Vulkan SDK Loader and Layers framework.
* MoltenVK, and not through the Vulkan SDK Loader and Layers framework. Opaque Vulkan
* objects are often changed by layers, and passing them from one layer to another,
* or from a layer directly to MoltenVK, will result in undefined behaviour.
*/ */
VKAPI_ATTR VkResult VKAPI_CALL vkSetMTLTextureMVK( VKAPI_ATTR VkResult VKAPI_CALL vkSetMTLTextureMVK(
VkImage image, VkImage image,
@ -1227,11 +1212,8 @@ VKAPI_ATTR VkResult VKAPI_CALL vkSetMTLTextureMVK(
/** /**
* Returns, in the pMTLTexture pointer, the MTLTexture currently underlaying the VkImage. * Returns, in the pMTLTexture pointer, the MTLTexture currently underlaying the VkImage.
* *
* This function is not supported by the Vulkan SDK Loader and Layers framework. * This function is not supported by the Vulkan SDK Loader and Layers framework
* The VkImage object you provide here must have been retrieved directly from * and is unavailable when using the Vulkan SDK Loader and Layers framework.
* MoltenVK, and not through the Vulkan SDK Loader and Layers framework. Opaque Vulkan
* objects are often changed by layers, and passing them from one layer to another,
* or from a layer directly to MoltenVK, will result in undefined behaviour.
*/ */
VKAPI_ATTR void VKAPI_CALL vkGetMTLTextureMVK( VKAPI_ATTR void VKAPI_CALL vkGetMTLTextureMVK(
VkImage image, VkImage image,
@ -1240,11 +1222,8 @@ VKAPI_ATTR void VKAPI_CALL vkGetMTLTextureMVK(
/** /**
* Returns, in the pMTLBuffer pointer, the MTLBuffer currently underlaying the VkBuffer. * Returns, in the pMTLBuffer pointer, the MTLBuffer currently underlaying the VkBuffer.
* *
* This function is not supported by the Vulkan SDK Loader and Layers framework. * This function is not supported by the Vulkan SDK Loader and Layers framework
* The VkBuffer object you provide here must have been retrieved directly from * and is unavailable when using the Vulkan SDK Loader and Layers framework.
* MoltenVK, and not through the Vulkan SDK Loader and Layers framework. Opaque Vulkan
* objects are often changed by layers, and passing them from one layer to another,
* or from a layer directly to MoltenVK, will result in undefined behaviour.
*/ */
VKAPI_ATTR void VKAPI_CALL vkGetMTLBufferMVK( VKAPI_ATTR void VKAPI_CALL vkGetMTLBufferMVK(
VkBuffer buffer, VkBuffer buffer,
@ -1253,11 +1232,8 @@ VKAPI_ATTR void VKAPI_CALL vkGetMTLBufferMVK(
/** /**
* Returns, in the pMTLCommandQueue pointer, the MTLCommandQueue currently underlaying the VkQueue. * Returns, in the pMTLCommandQueue pointer, the MTLCommandQueue currently underlaying the VkQueue.
* *
* This function is not supported by the Vulkan SDK Loader and Layers framework. * This function is not supported by the Vulkan SDK Loader and Layers framework
* The VkQueue object you provide here must have been retrieved directly from * and is unavailable when using the Vulkan SDK Loader and Layers framework.
* MoltenVK, and not through the Vulkan SDK Loader and Layers framework. Opaque Vulkan
* objects are often changed by layers, and passing them from one layer to another,
* or from a layer directly to MoltenVK, will result in undefined behaviour.
*/ */
VKAPI_ATTR void VKAPI_CALL vkGetMTLCommandQueueMVK( VKAPI_ATTR void VKAPI_CALL vkGetMTLCommandQueueMVK(
VkQueue queue, VkQueue queue,
@ -1289,11 +1265,8 @@ VKAPI_ATTR void VKAPI_CALL vkGetMTLCommandQueueMVK(
* - VK_ERROR_FEATURE_NOT_PRESENT if IOSurfaces are not supported on the platform. * - VK_ERROR_FEATURE_NOT_PRESENT if IOSurfaces are not supported on the platform.
* - VK_ERROR_INITIALIZATION_FAILED if ioSurface is specified and is not compatible with this VkImage. * - VK_ERROR_INITIALIZATION_FAILED if ioSurface is specified and is not compatible with this VkImage.
* *
* This function is not supported by the Vulkan SDK Loader and Layers framework. * This function is not supported by the Vulkan SDK Loader and Layers framework
* The VkImage object you provide here must have been retrieved directly from * and is unavailable when using the Vulkan SDK Loader and Layers framework.
* MoltenVK, and not through the Vulkan SDK Loader and Layers framework. Opaque Vulkan
* objects are often changed by layers, and passing them from one layer to another,
* or from a layer directly to MoltenVK, will result in undefined behaviour.
*/ */
VKAPI_ATTR VkResult VKAPI_CALL vkUseIOSurfaceMVK( VKAPI_ATTR VkResult VKAPI_CALL vkUseIOSurfaceMVK(
VkImage image, VkImage image,
@ -1304,11 +1277,8 @@ VKAPI_ATTR VkResult VKAPI_CALL vkUseIOSurfaceMVK(
* as set by the useIOSurfaceMVK() function, or returns null if the VkImage is not using * as set by the useIOSurfaceMVK() function, or returns null if the VkImage is not using
* an IOSurface, or if the platform does not support IOSurfaces. * an IOSurface, or if the platform does not support IOSurfaces.
* *
* This function is not supported by the Vulkan SDK Loader and Layers framework. * This function is not supported by the Vulkan SDK Loader and Layers framework
* The VkImage object you provide here must have been retrieved directly from * and is unavailable when using the Vulkan SDK Loader and Layers framework.
* MoltenVK, and not through the Vulkan SDK Loader and Layers framework. Opaque Vulkan
* objects are often changed by layers, and passing them from one layer to another,
* or from a layer directly to MoltenVK, will result in undefined behaviour.
*/ */
VKAPI_ATTR void VKAPI_CALL vkGetIOSurfaceMVK( VKAPI_ATTR void VKAPI_CALL vkGetIOSurfaceMVK(
VkImage image, VkImage image,

View File

@ -386,7 +386,10 @@ void MVKInstance::initDebugCallbacks(const VkInstanceCreateInfo* pCreateInfo) {
} }
} }
#define ADD_ENTRY_POINT(func, api, ext1, ext2, isDev) _entryPoints[""#func] = { (PFN_vkVoidFunction)&func, api, ext1, ext2, isDev } #define ADD_ENTRY_POINT_MAP(name, func, api, ext1, ext2, isDev) \
_entryPoints[""#name] = { (PFN_vkVoidFunction)&func, api, ext1, ext2, isDev }
#define ADD_ENTRY_POINT(func, api, ext1, ext2, isDev) ADD_ENTRY_POINT_MAP(func, func, api, ext1, ext2, isDev)
#define ADD_INST_ENTRY_POINT(func) ADD_ENTRY_POINT(func, VK_API_VERSION_1_0, nullptr, nullptr, false) #define ADD_INST_ENTRY_POINT(func) ADD_ENTRY_POINT(func, VK_API_VERSION_1_0, nullptr, nullptr, false)
#define ADD_DVC_ENTRY_POINT(func) ADD_ENTRY_POINT(func, VK_API_VERSION_1_0, nullptr, nullptr, true) #define ADD_DVC_ENTRY_POINT(func) ADD_ENTRY_POINT(func, VK_API_VERSION_1_0, nullptr, nullptr, true)
@ -394,11 +397,21 @@ void MVKInstance::initDebugCallbacks(const VkInstanceCreateInfo* pCreateInfo) {
#define ADD_INST_1_1_ENTRY_POINT(func) ADD_ENTRY_POINT(func, VK_API_VERSION_1_1, nullptr, nullptr, false) #define ADD_INST_1_1_ENTRY_POINT(func) ADD_ENTRY_POINT(func, VK_API_VERSION_1_1, nullptr, nullptr, false)
#define ADD_DVC_1_1_ENTRY_POINT(func) ADD_ENTRY_POINT(func, VK_API_VERSION_1_1, nullptr, nullptr, true) #define ADD_DVC_1_1_ENTRY_POINT(func) ADD_ENTRY_POINT(func, VK_API_VERSION_1_1, nullptr, nullptr, true)
#define ADD_INST_EXT_ENTRY_POINT(func, EXT) ADD_ENTRY_POINT(func, 0, VK_ ##EXT ##_EXTENSION_NAME, nullptr, false) // Adds both the 1.1 function and the promoted extension function.
#define ADD_DVC_EXT_ENTRY_POINT(func, EXT) ADD_ENTRY_POINT(func, 0, VK_ ##EXT ##_EXTENSION_NAME, nullptr, true) #define ADD_INST_1_1_PROMOTED_ENTRY_POINT(func, EXT) \
ADD_INST_1_1_ENTRY_POINT(func); \
ADD_ENTRY_POINT_MAP(func##KHR, func, 0, VK_##EXT##_EXTENSION_NAME, nullptr, false)
#define ADD_INST_EXT2_ENTRY_POINT(func, EXT1, EXT2) ADD_ENTRY_POINT(func, 0, VK_ ##EXT1 ##_EXTENSION_NAME, VK_ ##EXT2 ##_EXTENSION_NAME, false) // Adds both the 1.1 function and the promoted extension function.
#define ADD_DVC_EXT2_ENTRY_POINT(func, EXT1, EXT2) ADD_ENTRY_POINT(func, 0, VK_ ##EXT1 ##_EXTENSION_NAME, VK_ ##EXT2 ##_EXTENSION_NAME, true) #define ADD_DVC_1_1_PROMOTED_ENTRY_POINT(func, EXT) \
ADD_DVC_1_1_ENTRY_POINT(func); \
ADD_ENTRY_POINT_MAP(func##KHR, func, 0, VK_##EXT##_EXTENSION_NAME, nullptr, true)
#define ADD_INST_EXT_ENTRY_POINT(func, EXT) ADD_ENTRY_POINT(func, 0, VK_##EXT##_EXTENSION_NAME, nullptr, false)
#define ADD_DVC_EXT_ENTRY_POINT(func, EXT) ADD_ENTRY_POINT(func, 0, VK_##EXT##_EXTENSION_NAME, nullptr, true)
#define ADD_INST_EXT2_ENTRY_POINT(func, EXT1, EXT2) ADD_ENTRY_POINT(func, 0, VK_##EXT1##_EXTENSION_NAME, VK_##EXT2##_EXTENSION_NAME, false)
#define ADD_DVC_EXT2_ENTRY_POINT(func, EXT1, EXT2) ADD_ENTRY_POINT(func, 0, VK_##EXT1##_EXTENSION_NAME, VK_##EXT2##_EXTENSION_NAME, true)
// Initializes the function pointer map. // Initializes the function pointer map.
void MVKInstance::initProcAddrs() { void MVKInstance::initProcAddrs() {
@ -418,17 +431,17 @@ void MVKInstance::initProcAddrs() {
ADD_INST_ENTRY_POINT(vkEnumerateDeviceLayerProperties); ADD_INST_ENTRY_POINT(vkEnumerateDeviceLayerProperties);
ADD_INST_ENTRY_POINT(vkGetPhysicalDeviceSparseImageFormatProperties); ADD_INST_ENTRY_POINT(vkGetPhysicalDeviceSparseImageFormatProperties);
ADD_INST_1_1_ENTRY_POINT(vkEnumeratePhysicalDeviceGroups); ADD_INST_1_1_PROMOTED_ENTRY_POINT(vkEnumeratePhysicalDeviceGroups, KHR_DEVICE_GROUP_CREATION);
ADD_INST_1_1_ENTRY_POINT(vkGetPhysicalDeviceFeatures2); ADD_INST_1_1_PROMOTED_ENTRY_POINT(vkGetPhysicalDeviceFeatures2, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2);
ADD_INST_1_1_ENTRY_POINT(vkGetPhysicalDeviceProperties2); ADD_INST_1_1_PROMOTED_ENTRY_POINT(vkGetPhysicalDeviceProperties2, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2);
ADD_INST_1_1_ENTRY_POINT(vkGetPhysicalDeviceFormatProperties2); ADD_INST_1_1_PROMOTED_ENTRY_POINT(vkGetPhysicalDeviceFormatProperties2, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2);
ADD_INST_1_1_ENTRY_POINT(vkGetPhysicalDeviceImageFormatProperties2); ADD_INST_1_1_PROMOTED_ENTRY_POINT(vkGetPhysicalDeviceImageFormatProperties2, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2);
ADD_INST_1_1_ENTRY_POINT(vkGetPhysicalDeviceQueueFamilyProperties2); ADD_INST_1_1_PROMOTED_ENTRY_POINT(vkGetPhysicalDeviceQueueFamilyProperties2, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2);
ADD_INST_1_1_ENTRY_POINT(vkGetPhysicalDeviceMemoryProperties2); ADD_INST_1_1_PROMOTED_ENTRY_POINT(vkGetPhysicalDeviceMemoryProperties2, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2);
ADD_INST_1_1_ENTRY_POINT(vkGetPhysicalDeviceSparseImageFormatProperties2); ADD_INST_1_1_PROMOTED_ENTRY_POINT(vkGetPhysicalDeviceSparseImageFormatProperties2, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2);
ADD_INST_1_1_ENTRY_POINT(vkGetPhysicalDeviceExternalFenceProperties); ADD_INST_1_1_PROMOTED_ENTRY_POINT(vkGetPhysicalDeviceExternalFenceProperties, KHR_EXTERNAL_FENCE_CAPABILITIES);
ADD_INST_1_1_ENTRY_POINT(vkGetPhysicalDeviceExternalBufferProperties); ADD_INST_1_1_PROMOTED_ENTRY_POINT(vkGetPhysicalDeviceExternalBufferProperties, KHR_EXTERNAL_MEMORY_CAPABILITIES);
ADD_INST_1_1_ENTRY_POINT(vkGetPhysicalDeviceExternalSemaphoreProperties); ADD_INST_1_1_PROMOTED_ENTRY_POINT(vkGetPhysicalDeviceExternalSemaphoreProperties, KHR_EXTERNAL_SEMAPHORE_CAPABILITIES);
// Device functions: // Device functions:
ADD_DVC_ENTRY_POINT(vkGetDeviceProcAddr); ADD_DVC_ENTRY_POINT(vkGetDeviceProcAddr);
@ -554,34 +567,23 @@ void MVKInstance::initProcAddrs() {
ADD_DVC_ENTRY_POINT(vkCmdExecuteCommands); ADD_DVC_ENTRY_POINT(vkCmdExecuteCommands);
ADD_DVC_1_1_ENTRY_POINT(vkGetDeviceQueue2); ADD_DVC_1_1_ENTRY_POINT(vkGetDeviceQueue2);
ADD_DVC_1_1_ENTRY_POINT(vkBindBufferMemory2); ADD_DVC_1_1_PROMOTED_ENTRY_POINT(vkBindBufferMemory2, KHR_BIND_MEMORY_2);
ADD_DVC_1_1_ENTRY_POINT(vkBindImageMemory2); ADD_DVC_1_1_PROMOTED_ENTRY_POINT(vkBindImageMemory2, KHR_BIND_MEMORY_2);
ADD_DVC_1_1_ENTRY_POINT(vkGetBufferMemoryRequirements2); ADD_DVC_1_1_PROMOTED_ENTRY_POINT(vkGetBufferMemoryRequirements2, KHR_GET_MEMORY_REQUIREMENTS_2);
ADD_DVC_1_1_ENTRY_POINT(vkGetImageMemoryRequirements2); ADD_DVC_1_1_PROMOTED_ENTRY_POINT(vkGetImageMemoryRequirements2, KHR_GET_MEMORY_REQUIREMENTS_2);
ADD_DVC_1_1_ENTRY_POINT(vkGetImageSparseMemoryRequirements2); ADD_DVC_1_1_PROMOTED_ENTRY_POINT(vkGetImageSparseMemoryRequirements2, KHR_GET_MEMORY_REQUIREMENTS_2);
ADD_DVC_1_1_ENTRY_POINT(vkGetDeviceGroupPeerMemoryFeatures); ADD_DVC_1_1_PROMOTED_ENTRY_POINT(vkGetDeviceGroupPeerMemoryFeatures, KHR_DEVICE_GROUP);
ADD_DVC_1_1_ENTRY_POINT(vkCreateDescriptorUpdateTemplate); ADD_DVC_1_1_PROMOTED_ENTRY_POINT(vkCreateDescriptorUpdateTemplate, KHR_DESCRIPTOR_UPDATE_TEMPLATE);
ADD_DVC_1_1_ENTRY_POINT(vkDestroyDescriptorUpdateTemplate); ADD_DVC_1_1_PROMOTED_ENTRY_POINT(vkDestroyDescriptorUpdateTemplate, KHR_DESCRIPTOR_UPDATE_TEMPLATE);
ADD_DVC_1_1_ENTRY_POINT(vkUpdateDescriptorSetWithTemplate); ADD_DVC_1_1_PROMOTED_ENTRY_POINT(vkUpdateDescriptorSetWithTemplate, KHR_DESCRIPTOR_UPDATE_TEMPLATE);
ADD_DVC_1_1_ENTRY_POINT(vkGetDescriptorSetLayoutSupport); ADD_DVC_1_1_PROMOTED_ENTRY_POINT(vkGetDescriptorSetLayoutSupport, KHR_MAINTENANCE3);
ADD_DVC_1_1_ENTRY_POINT(vkCreateSamplerYcbcrConversion); ADD_DVC_1_1_PROMOTED_ENTRY_POINT(vkCreateSamplerYcbcrConversion, KHR_SAMPLER_YCBCR_CONVERSION);
ADD_DVC_1_1_ENTRY_POINT(vkDestroySamplerYcbcrConversion); ADD_DVC_1_1_PROMOTED_ENTRY_POINT(vkDestroySamplerYcbcrConversion, KHR_SAMPLER_YCBCR_CONVERSION);
ADD_DVC_1_1_ENTRY_POINT(vkTrimCommandPool); ADD_DVC_1_1_PROMOTED_ENTRY_POINT(vkTrimCommandPool, KHR_MAINTENANCE1);
ADD_DVC_1_1_ENTRY_POINT(vkCmdSetDeviceMask); ADD_DVC_1_1_PROMOTED_ENTRY_POINT(vkCmdSetDeviceMask, KHR_DEVICE_GROUP);
ADD_DVC_1_1_ENTRY_POINT(vkCmdDispatchBase); ADD_DVC_1_1_PROMOTED_ENTRY_POINT(vkCmdDispatchBase, KHR_DEVICE_GROUP);
// Instance extension functions: // Instance extension functions:
ADD_INST_EXT_ENTRY_POINT(vkEnumeratePhysicalDeviceGroupsKHR, KHR_DEVICE_GROUP_CREATION);
ADD_INST_EXT_ENTRY_POINT(vkGetPhysicalDeviceExternalFencePropertiesKHR, KHR_EXTERNAL_FENCE_CAPABILITIES);
ADD_INST_EXT_ENTRY_POINT(vkGetPhysicalDeviceExternalBufferPropertiesKHR, KHR_EXTERNAL_MEMORY_CAPABILITIES);
ADD_INST_EXT_ENTRY_POINT(vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, KHR_EXTERNAL_SEMAPHORE_CAPABILITIES);
ADD_INST_EXT_ENTRY_POINT(vkGetPhysicalDeviceFeatures2KHR, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2);
ADD_INST_EXT_ENTRY_POINT(vkGetPhysicalDeviceProperties2KHR, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2);
ADD_INST_EXT_ENTRY_POINT(vkGetPhysicalDeviceFormatProperties2KHR, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2);
ADD_INST_EXT_ENTRY_POINT(vkGetPhysicalDeviceImageFormatProperties2KHR, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2);
ADD_INST_EXT_ENTRY_POINT(vkGetPhysicalDeviceQueueFamilyProperties2KHR, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2);
ADD_INST_EXT_ENTRY_POINT(vkGetPhysicalDeviceMemoryProperties2KHR, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2);
ADD_INST_EXT_ENTRY_POINT(vkGetPhysicalDeviceSparseImageFormatProperties2KHR, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2);
ADD_INST_EXT_ENTRY_POINT(vkDestroySurfaceKHR, KHR_SURFACE); ADD_INST_EXT_ENTRY_POINT(vkDestroySurfaceKHR, KHR_SURFACE);
ADD_INST_EXT_ENTRY_POINT(vkGetPhysicalDeviceSurfaceSupportKHR, KHR_SURFACE); ADD_INST_EXT_ENTRY_POINT(vkGetPhysicalDeviceSurfaceSupportKHR, KHR_SURFACE);
ADD_INST_EXT_ENTRY_POINT(vkGetPhysicalDeviceSurfaceCapabilitiesKHR, KHR_SURFACE); ADD_INST_EXT_ENTRY_POINT(vkGetPhysicalDeviceSurfaceCapabilitiesKHR, KHR_SURFACE);
@ -626,27 +628,12 @@ void MVKInstance::initProcAddrs() {
ADD_INST_EXT_ENTRY_POINT(vkGetMTLCommandQueueMVK, MVK_MOLTENVK); ADD_INST_EXT_ENTRY_POINT(vkGetMTLCommandQueueMVK, MVK_MOLTENVK);
// Device extension functions: // Device extension functions:
ADD_DVC_EXT_ENTRY_POINT(vkBindBufferMemory2KHR, KHR_BIND_MEMORY_2);
ADD_DVC_EXT_ENTRY_POINT(vkBindImageMemory2KHR, KHR_BIND_MEMORY_2);
ADD_DVC_EXT_ENTRY_POINT(vkCreateRenderPass2KHR, KHR_CREATE_RENDERPASS_2); ADD_DVC_EXT_ENTRY_POINT(vkCreateRenderPass2KHR, KHR_CREATE_RENDERPASS_2);
ADD_DVC_EXT_ENTRY_POINT(vkCmdBeginRenderPass2KHR, KHR_CREATE_RENDERPASS_2); ADD_DVC_EXT_ENTRY_POINT(vkCmdBeginRenderPass2KHR, KHR_CREATE_RENDERPASS_2);
ADD_DVC_EXT_ENTRY_POINT(vkCmdNextSubpass2KHR, KHR_CREATE_RENDERPASS_2); ADD_DVC_EXT_ENTRY_POINT(vkCmdNextSubpass2KHR, KHR_CREATE_RENDERPASS_2);
ADD_DVC_EXT_ENTRY_POINT(vkCmdEndRenderPass2KHR, KHR_CREATE_RENDERPASS_2); ADD_DVC_EXT_ENTRY_POINT(vkCmdEndRenderPass2KHR, KHR_CREATE_RENDERPASS_2);
ADD_DVC_EXT_ENTRY_POINT(vkCreateDescriptorUpdateTemplateKHR, KHR_DESCRIPTOR_UPDATE_TEMPLATE);
ADD_DVC_EXT_ENTRY_POINT(vkDestroyDescriptorUpdateTemplateKHR, KHR_DESCRIPTOR_UPDATE_TEMPLATE);
ADD_DVC_EXT_ENTRY_POINT(vkUpdateDescriptorSetWithTemplateKHR, KHR_DESCRIPTOR_UPDATE_TEMPLATE);
ADD_DVC_EXT_ENTRY_POINT(vkGetDeviceGroupPeerMemoryFeaturesKHR, KHR_DEVICE_GROUP);
ADD_DVC_EXT_ENTRY_POINT(vkCmdSetDeviceMaskKHR, KHR_DEVICE_GROUP);
ADD_DVC_EXT_ENTRY_POINT(vkCmdDispatchBaseKHR, KHR_DEVICE_GROUP);
ADD_DVC_EXT_ENTRY_POINT(vkGetBufferMemoryRequirements2KHR, KHR_GET_MEMORY_REQUIREMENTS_2);
ADD_DVC_EXT_ENTRY_POINT(vkGetImageMemoryRequirements2KHR, KHR_GET_MEMORY_REQUIREMENTS_2);
ADD_DVC_EXT_ENTRY_POINT(vkGetImageSparseMemoryRequirements2KHR, KHR_GET_MEMORY_REQUIREMENTS_2);
ADD_DVC_EXT_ENTRY_POINT(vkTrimCommandPoolKHR, KHR_MAINTENANCE1);
ADD_DVC_EXT_ENTRY_POINT(vkGetDescriptorSetLayoutSupportKHR, KHR_MAINTENANCE3);
ADD_DVC_EXT_ENTRY_POINT(vkCmdPushDescriptorSetKHR, KHR_PUSH_DESCRIPTOR); ADD_DVC_EXT_ENTRY_POINT(vkCmdPushDescriptorSetKHR, KHR_PUSH_DESCRIPTOR);
ADD_DVC_EXT2_ENTRY_POINT(vkCmdPushDescriptorSetWithTemplateKHR, KHR_PUSH_DESCRIPTOR, KHR_DESCRIPTOR_UPDATE_TEMPLATE); ADD_DVC_EXT2_ENTRY_POINT(vkCmdPushDescriptorSetWithTemplateKHR, KHR_PUSH_DESCRIPTOR, KHR_DESCRIPTOR_UPDATE_TEMPLATE);
ADD_DVC_EXT_ENTRY_POINT(vkCreateSamplerYcbcrConversionKHR, KHR_SAMPLER_YCBCR_CONVERSION);
ADD_DVC_EXT_ENTRY_POINT(vkDestroySamplerYcbcrConversionKHR, KHR_SAMPLER_YCBCR_CONVERSION);
ADD_DVC_EXT_ENTRY_POINT(vkCreateSwapchainKHR, KHR_SWAPCHAIN); ADD_DVC_EXT_ENTRY_POINT(vkCreateSwapchainKHR, KHR_SWAPCHAIN);
ADD_DVC_EXT_ENTRY_POINT(vkDestroySwapchainKHR, KHR_SWAPCHAIN); ADD_DVC_EXT_ENTRY_POINT(vkDestroySwapchainKHR, KHR_SWAPCHAIN);
ADD_DVC_EXT_ENTRY_POINT(vkGetSwapchainImagesKHR, KHR_SWAPCHAIN); ADD_DVC_EXT_ENTRY_POINT(vkGetSwapchainImagesKHR, KHR_SWAPCHAIN);

View File

@ -69,7 +69,7 @@ MVK_PUBLIC_SYMBOL VkResult vkSetMoltenVKConfigurationMVK(
return rslt; return rslt;
} }
MVK_PUBLIC_SYMBOL VkResult vkGetPhysicalDeviceMetalFeaturesMVK( MVK_PUBLIC_VULKAN_SYMBOL VkResult vkGetPhysicalDeviceMetalFeaturesMVK(
VkPhysicalDevice physicalDevice, VkPhysicalDevice physicalDevice,
MVKPhysicalDeviceMetalFeatures* pMetalFeatures, MVKPhysicalDeviceMetalFeatures* pMetalFeatures,
size_t* pMetalFeaturesSize) { size_t* pMetalFeaturesSize) {
@ -78,7 +78,7 @@ MVK_PUBLIC_SYMBOL VkResult vkGetPhysicalDeviceMetalFeaturesMVK(
return mvkCopy(pMetalFeatures, mvkPD->getMetalFeatures(), pMetalFeaturesSize); return mvkCopy(pMetalFeatures, mvkPD->getMetalFeatures(), pMetalFeaturesSize);
} }
MVK_PUBLIC_SYMBOL VkResult vkGetPerformanceStatisticsMVK( MVK_PUBLIC_VULKAN_SYMBOL VkResult vkGetPerformanceStatisticsMVK(
VkDevice device, VkDevice device,
MVKPerformanceStatistics* pPerf, MVKPerformanceStatistics* pPerf,
size_t* pPerfSize) { size_t* pPerfSize) {
@ -105,7 +105,7 @@ MVK_PUBLIC_SYMBOL void vkGetVersionStringsMVK(
pVulkanVersionStringBuffer[len] = 0; // terminator pVulkanVersionStringBuffer[len] = 0; // terminator
} }
MVK_PUBLIC_SYMBOL void vkGetMTLDeviceMVK( MVK_PUBLIC_VULKAN_SYMBOL void vkGetMTLDeviceMVK(
VkPhysicalDevice physicalDevice, VkPhysicalDevice physicalDevice,
id<MTLDevice>* pMTLDevice) { id<MTLDevice>* pMTLDevice) {
@ -113,7 +113,7 @@ MVK_PUBLIC_SYMBOL void vkGetMTLDeviceMVK(
*pMTLDevice = mvkPD->getMTLDevice(); *pMTLDevice = mvkPD->getMTLDevice();
} }
MVK_PUBLIC_SYMBOL VkResult vkSetMTLTextureMVK( MVK_PUBLIC_VULKAN_SYMBOL VkResult vkSetMTLTextureMVK(
VkImage image, VkImage image,
id<MTLTexture> mtlTexture) { id<MTLTexture> mtlTexture) {
@ -121,7 +121,7 @@ MVK_PUBLIC_SYMBOL VkResult vkSetMTLTextureMVK(
return mvkImg->setMTLTexture(0, mtlTexture); return mvkImg->setMTLTexture(0, mtlTexture);
} }
MVK_PUBLIC_SYMBOL void vkGetMTLTextureMVK( MVK_PUBLIC_VULKAN_SYMBOL void vkGetMTLTextureMVK(
VkImage image, VkImage image,
id<MTLTexture>* pMTLTexture) { id<MTLTexture>* pMTLTexture) {
@ -129,7 +129,7 @@ MVK_PUBLIC_SYMBOL void vkGetMTLTextureMVK(
*pMTLTexture = mvkImg->getMTLTexture(0); *pMTLTexture = mvkImg->getMTLTexture(0);
} }
MVK_PUBLIC_SYMBOL void vkGetMTLBufferMVK( MVK_PUBLIC_VULKAN_SYMBOL void vkGetMTLBufferMVK(
VkBuffer buffer, VkBuffer buffer,
id<MTLBuffer>* pMTLBuffer) { id<MTLBuffer>* pMTLBuffer) {
@ -137,7 +137,7 @@ MVK_PUBLIC_SYMBOL void vkGetMTLBufferMVK(
*pMTLBuffer = mvkBuffer->getMTLBuffer(); *pMTLBuffer = mvkBuffer->getMTLBuffer();
} }
MVK_PUBLIC_SYMBOL void vkGetMTLCommandQueueMVK( MVK_PUBLIC_VULKAN_SYMBOL void vkGetMTLCommandQueueMVK(
VkQueue queue, VkQueue queue,
id<MTLCommandQueue>* pMTLCommandQueue) { id<MTLCommandQueue>* pMTLCommandQueue) {
@ -145,7 +145,7 @@ MVK_PUBLIC_SYMBOL void vkGetMTLCommandQueueMVK(
*pMTLCommandQueue = mvkQueue->getMTLCommandQueue(); *pMTLCommandQueue = mvkQueue->getMTLCommandQueue();
} }
MVK_PUBLIC_SYMBOL VkResult vkUseIOSurfaceMVK( MVK_PUBLIC_VULKAN_SYMBOL VkResult vkUseIOSurfaceMVK(
VkImage image, VkImage image,
IOSurfaceRef ioSurface) { IOSurfaceRef ioSurface) {
@ -153,7 +153,7 @@ MVK_PUBLIC_SYMBOL VkResult vkUseIOSurfaceMVK(
return mvkImg->useIOSurface(ioSurface); return mvkImg->useIOSurface(ioSurface);
} }
MVK_PUBLIC_SYMBOL void vkGetIOSurfaceMVK( MVK_PUBLIC_VULKAN_SYMBOL void vkGetIOSurfaceMVK(
VkImage image, VkImage image,
IOSurfaceRef* pIOSurface) { IOSurfaceRef* pIOSurface) {
@ -161,7 +161,7 @@ MVK_PUBLIC_SYMBOL void vkGetIOSurfaceMVK(
*pIOSurface = mvkImg->getIOSurface(); *pIOSurface = mvkImg->getIOSurface();
} }
MVK_PUBLIC_SYMBOL void vkSetWorkgroupSizeMVK( MVK_PUBLIC_VULKAN_SYMBOL void vkSetWorkgroupSizeMVK(
VkShaderModule shaderModule, VkShaderModule shaderModule,
uint32_t x, uint32_t x,
uint32_t y, uint32_t y,

View File

@ -162,7 +162,7 @@ static inline void MVKTraceVulkanCallEndImpl(const char* funcName, uint64_t star
} }
// Define an extension call as an alias of a core call // Define an extension call as an alias of a core call
#define MVK_PUBLIC_CORE_ALIAS(vkf) MVK_PUBLIC_ALIAS(vkf##KHR, vkf) #define MVK_PUBLIC_VULKAN_CORE_ALIAS(vkf) MVK_PUBLIC_VULKAN_ALIAS(vkf##KHR, vkf)
#pragma mark - #pragma mark -
@ -2321,8 +2321,8 @@ MVK_PUBLIC_VULKAN_SYMBOL void vkCmdDispatchBase(
#pragma mark - #pragma mark -
#pragma mark VK_KHR_bind_memory2 extension #pragma mark VK_KHR_bind_memory2 extension
MVK_PUBLIC_CORE_ALIAS(vkBindBufferMemory2); MVK_PUBLIC_VULKAN_CORE_ALIAS(vkBindBufferMemory2);
MVK_PUBLIC_CORE_ALIAS(vkBindImageMemory2); MVK_PUBLIC_VULKAN_CORE_ALIAS(vkBindImageMemory2);
#pragma mark - #pragma mark -
@ -2377,73 +2377,73 @@ MVK_PUBLIC_VULKAN_SYMBOL void vkCmdEndRenderPass2KHR(
#pragma mark - #pragma mark -
#pragma mark VK_KHR_descriptor_update_template extension #pragma mark VK_KHR_descriptor_update_template extension
MVK_PUBLIC_CORE_ALIAS(vkCreateDescriptorUpdateTemplate); MVK_PUBLIC_VULKAN_CORE_ALIAS(vkCreateDescriptorUpdateTemplate);
MVK_PUBLIC_CORE_ALIAS(vkDestroyDescriptorUpdateTemplate); MVK_PUBLIC_VULKAN_CORE_ALIAS(vkDestroyDescriptorUpdateTemplate);
MVK_PUBLIC_CORE_ALIAS(vkUpdateDescriptorSetWithTemplate); MVK_PUBLIC_VULKAN_CORE_ALIAS(vkUpdateDescriptorSetWithTemplate);
#pragma mark - #pragma mark -
#pragma mark VK_KHR_device_group extension #pragma mark VK_KHR_device_group extension
MVK_PUBLIC_CORE_ALIAS(vkGetDeviceGroupPeerMemoryFeatures); MVK_PUBLIC_VULKAN_CORE_ALIAS(vkGetDeviceGroupPeerMemoryFeatures);
MVK_PUBLIC_CORE_ALIAS(vkCmdSetDeviceMask); MVK_PUBLIC_VULKAN_CORE_ALIAS(vkCmdSetDeviceMask);
MVK_PUBLIC_CORE_ALIAS(vkCmdDispatchBase); MVK_PUBLIC_VULKAN_CORE_ALIAS(vkCmdDispatchBase);
#pragma mark - #pragma mark -
#pragma mark VK_KHR_device_group_creation extension #pragma mark VK_KHR_device_group_creation extension
MVK_PUBLIC_CORE_ALIAS(vkEnumeratePhysicalDeviceGroups); MVK_PUBLIC_VULKAN_CORE_ALIAS(vkEnumeratePhysicalDeviceGroups);
#pragma mark - #pragma mark -
#pragma mark VK_KHR_external_fence_capabilities extension #pragma mark VK_KHR_external_fence_capabilities extension
MVK_PUBLIC_CORE_ALIAS(vkGetPhysicalDeviceExternalFenceProperties); MVK_PUBLIC_VULKAN_CORE_ALIAS(vkGetPhysicalDeviceExternalFenceProperties);
#pragma mark - #pragma mark -
#pragma mark VK_KHR_external_memory_capabilities extension #pragma mark VK_KHR_external_memory_capabilities extension
MVK_PUBLIC_CORE_ALIAS(vkGetPhysicalDeviceExternalBufferProperties); MVK_PUBLIC_VULKAN_CORE_ALIAS(vkGetPhysicalDeviceExternalBufferProperties);
#pragma mark - #pragma mark -
#pragma mark VK_KHR_external_semaphore_capabilities extension #pragma mark VK_KHR_external_semaphore_capabilities extension
MVK_PUBLIC_CORE_ALIAS(vkGetPhysicalDeviceExternalSemaphoreProperties); MVK_PUBLIC_VULKAN_CORE_ALIAS(vkGetPhysicalDeviceExternalSemaphoreProperties);
#pragma mark - #pragma mark -
#pragma mark VK_KHR_get_memory_requirements2 extension #pragma mark VK_KHR_get_memory_requirements2 extension
MVK_PUBLIC_CORE_ALIAS(vkGetBufferMemoryRequirements2); MVK_PUBLIC_VULKAN_CORE_ALIAS(vkGetBufferMemoryRequirements2);
MVK_PUBLIC_CORE_ALIAS(vkGetImageMemoryRequirements2); MVK_PUBLIC_VULKAN_CORE_ALIAS(vkGetImageMemoryRequirements2);
MVK_PUBLIC_CORE_ALIAS(vkGetImageSparseMemoryRequirements2); MVK_PUBLIC_VULKAN_CORE_ALIAS(vkGetImageSparseMemoryRequirements2);
#pragma mark - #pragma mark -
#pragma mark VK_KHR_get_physical_device_properties2 extension #pragma mark VK_KHR_get_physical_device_properties2 extension
MVK_PUBLIC_CORE_ALIAS(vkGetPhysicalDeviceFeatures2); MVK_PUBLIC_VULKAN_CORE_ALIAS(vkGetPhysicalDeviceFeatures2);
MVK_PUBLIC_CORE_ALIAS(vkGetPhysicalDeviceProperties2); MVK_PUBLIC_VULKAN_CORE_ALIAS(vkGetPhysicalDeviceProperties2);
MVK_PUBLIC_CORE_ALIAS(vkGetPhysicalDeviceFormatProperties2); MVK_PUBLIC_VULKAN_CORE_ALIAS(vkGetPhysicalDeviceFormatProperties2);
MVK_PUBLIC_CORE_ALIAS(vkGetPhysicalDeviceImageFormatProperties2); MVK_PUBLIC_VULKAN_CORE_ALIAS(vkGetPhysicalDeviceImageFormatProperties2);
MVK_PUBLIC_CORE_ALIAS(vkGetPhysicalDeviceQueueFamilyProperties2); MVK_PUBLIC_VULKAN_CORE_ALIAS(vkGetPhysicalDeviceQueueFamilyProperties2);
MVK_PUBLIC_CORE_ALIAS(vkGetPhysicalDeviceMemoryProperties2); MVK_PUBLIC_VULKAN_CORE_ALIAS(vkGetPhysicalDeviceMemoryProperties2);
MVK_PUBLIC_CORE_ALIAS(vkGetPhysicalDeviceSparseImageFormatProperties2); MVK_PUBLIC_VULKAN_CORE_ALIAS(vkGetPhysicalDeviceSparseImageFormatProperties2);
#pragma mark - #pragma mark -
#pragma mark VK_KHR_maintenance1 extension #pragma mark VK_KHR_maintenance1 extension
MVK_PUBLIC_CORE_ALIAS(vkTrimCommandPool); MVK_PUBLIC_VULKAN_CORE_ALIAS(vkTrimCommandPool);
#pragma mark - #pragma mark -
#pragma mark VK_KHR_maintenance3 extension #pragma mark VK_KHR_maintenance3 extension
MVK_PUBLIC_CORE_ALIAS(vkGetDescriptorSetLayoutSupport); MVK_PUBLIC_VULKAN_CORE_ALIAS(vkGetDescriptorSetLayoutSupport);
#pragma mark - #pragma mark -
@ -2478,8 +2478,8 @@ MVK_PUBLIC_VULKAN_SYMBOL void vkCmdPushDescriptorSetWithTemplateKHR(
#pragma mark - #pragma mark -
#pragma mark VK_KHR_sampler_ycbcr_conversion extension #pragma mark VK_KHR_sampler_ycbcr_conversion extension
MVK_PUBLIC_CORE_ALIAS(vkCreateSamplerYcbcrConversion); MVK_PUBLIC_VULKAN_CORE_ALIAS(vkCreateSamplerYcbcrConversion);
MVK_PUBLIC_CORE_ALIAS(vkDestroySamplerYcbcrConversion); MVK_PUBLIC_VULKAN_CORE_ALIAS(vkDestroySamplerYcbcrConversion);
#pragma mark - #pragma mark -