mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-29 21:30:53 +00:00
Allow for complex extension dependencies (i.e. two exts needed for func)
* This is fairly common with extension overlaps/interactions. Instead of having just one extension condition for a function, allow &&.
This commit is contained in:
@@ -74,13 +74,20 @@ void InitInstanceExtensionTables(VkInstance instance, InstanceDeviceInfo *info)
|
||||
|
||||
instance = Unwrap(instance);
|
||||
|
||||
#undef CheckExt
|
||||
#define CheckExt(name, ver) \
|
||||
bool name = info->ext_##name; \
|
||||
(void)name;
|
||||
|
||||
#undef HookInitExtension
|
||||
#define HookInitExtension(ext, func) \
|
||||
if(info->ext_##ext) \
|
||||
{ \
|
||||
InstanceGPA(func); \
|
||||
#define HookInitExtension(cond, func) \
|
||||
if(cond) \
|
||||
{ \
|
||||
InstanceGPA(func); \
|
||||
}
|
||||
|
||||
CheckInstanceExts();
|
||||
|
||||
InstanceGPA(EnumerateDeviceExtensionProperties);
|
||||
InstanceGPA(EnumerateDeviceLayerProperties);
|
||||
|
||||
@@ -100,12 +107,14 @@ void InitDeviceExtensionTables(VkDevice device, InstanceDeviceInfo *info)
|
||||
device = Unwrap(device);
|
||||
|
||||
#undef HookInitExtension
|
||||
#define HookInitExtension(ext, func) \
|
||||
if(info->ext_##ext) \
|
||||
{ \
|
||||
DeviceGPA(func); \
|
||||
#define HookInitExtension(cond, func) \
|
||||
if(cond) \
|
||||
{ \
|
||||
DeviceGPA(func); \
|
||||
}
|
||||
|
||||
CheckDeviceExts();
|
||||
|
||||
HookInitVulkanDeviceExts();
|
||||
}
|
||||
|
||||
|
||||
@@ -274,103 +274,102 @@
|
||||
|
||||
// for simplicity and since the check itself is platform agnostic,
|
||||
// these aren't protected in platform defines
|
||||
#define CheckInstanceExts() \
|
||||
CheckExt(VK_KHR_xlib_surface, VKXX); \
|
||||
CheckExt(VK_KHR_xcb_surface, VKXX); \
|
||||
CheckExt(VK_KHR_win32_surface, VKXX); \
|
||||
CheckExt(VK_KHR_android_surface, VKXX); \
|
||||
CheckExt(VK_KHR_surface, VKXX); \
|
||||
CheckExt(VK_EXT_debug_report, VKXX); \
|
||||
CheckExt(VK_KHR_display, VKXX); \
|
||||
CheckExt(VK_NV_external_memory_capabilities, VKXX); \
|
||||
CheckExt(VK_KHR_get_physical_device_properties2, VK11); \
|
||||
CheckExt(VK_EXT_display_surface_counter, VKXX); \
|
||||
CheckExt(VK_EXT_direct_mode_display, VKXX); \
|
||||
CheckExt(VK_EXT_acquire_xlib_display, VKXX); \
|
||||
CheckExt(VK_KHR_external_memory_capabilities, VK11); \
|
||||
CheckExt(VK_KHR_external_semaphore_capabilities, VK11);
|
||||
#define CheckInstanceExts() \
|
||||
CheckExt(KHR_xlib_surface, VKXX); \
|
||||
CheckExt(KHR_xcb_surface, VKXX); \
|
||||
CheckExt(KHR_win32_surface, VKXX); \
|
||||
CheckExt(KHR_android_surface, VKXX); \
|
||||
CheckExt(KHR_surface, VKXX); \
|
||||
CheckExt(EXT_debug_report, VKXX); \
|
||||
CheckExt(KHR_display, VKXX); \
|
||||
CheckExt(NV_external_memory_capabilities, VKXX); \
|
||||
CheckExt(KHR_get_physical_device_properties2, VK11); \
|
||||
CheckExt(EXT_display_surface_counter, VKXX); \
|
||||
CheckExt(EXT_direct_mode_display, VKXX); \
|
||||
CheckExt(EXT_acquire_xlib_display, VKXX); \
|
||||
CheckExt(KHR_external_memory_capabilities, VK11); \
|
||||
CheckExt(KHR_external_semaphore_capabilities, VK11);
|
||||
|
||||
#define CheckDeviceExts() \
|
||||
CheckExt(VK_EXT_debug_marker, VKXX); \
|
||||
CheckExt(VK_KHR_swapchain, VKXX); \
|
||||
CheckExt(VK_KHR_display_swapchain, VKXX); \
|
||||
CheckExt(VK_NV_external_memory, VKXX); \
|
||||
CheckExt(VK_NV_external_memory_win32, VKXX); \
|
||||
CheckExt(VK_NV_win32_keyed_mutex, VKXX); \
|
||||
CheckExt(VK_KHR_maintenance1, VK11); \
|
||||
CheckExt(VK_EXT_display_control, VKXX); \
|
||||
CheckExt(VK_KHR_external_memory, VK11); \
|
||||
CheckExt(VK_KHR_external_memory_win32, VKXX); \
|
||||
CheckExt(VK_KHR_external_memory_fd, VKXX); \
|
||||
CheckExt(VK_KHR_external_semaphore, VK11); \
|
||||
CheckExt(VK_KHR_external_semaphore_win32, VKXX); \
|
||||
CheckExt(VK_KHR_external_semaphore_fd, VKXX); \
|
||||
CheckExt(VK_KHR_get_memory_requirements2, VK11); \
|
||||
CheckExt(VK_AMD_shader_info, VKXX); \
|
||||
CheckExt(VK_KHR_push_descriptor, VKXX);
|
||||
#define CheckDeviceExts() \
|
||||
CheckExt(EXT_debug_marker, VKXX); \
|
||||
CheckExt(KHR_swapchain, VKXX); \
|
||||
CheckExt(KHR_display_swapchain, VKXX); \
|
||||
CheckExt(NV_external_memory, VKXX); \
|
||||
CheckExt(NV_external_memory_win32, VKXX); \
|
||||
CheckExt(NV_win32_keyed_mutex, VKXX); \
|
||||
CheckExt(KHR_maintenance1, VK11); \
|
||||
CheckExt(EXT_display_control, VKXX); \
|
||||
CheckExt(KHR_external_memory, VK11); \
|
||||
CheckExt(KHR_external_memory_win32, VKXX); \
|
||||
CheckExt(KHR_external_memory_fd, VKXX); \
|
||||
CheckExt(KHR_external_semaphore, VK11); \
|
||||
CheckExt(KHR_external_semaphore_win32, VKXX); \
|
||||
CheckExt(KHR_external_semaphore_fd, VKXX); \
|
||||
CheckExt(KHR_get_memory_requirements2, VK11); \
|
||||
CheckExt(AMD_shader_info, VKXX); \
|
||||
CheckExt(KHR_push_descriptor, VKXX);
|
||||
|
||||
#define HookInitVulkanInstanceExts() \
|
||||
HookInitExtension(VK_KHR_surface, DestroySurfaceKHR); \
|
||||
HookInitExtension(VK_KHR_surface, GetPhysicalDeviceSurfaceSupportKHR); \
|
||||
HookInitExtension(VK_KHR_surface, GetPhysicalDeviceSurfaceCapabilitiesKHR); \
|
||||
HookInitExtension(VK_KHR_surface, GetPhysicalDeviceSurfaceFormatsKHR); \
|
||||
HookInitExtension(VK_KHR_surface, GetPhysicalDeviceSurfacePresentModesKHR); \
|
||||
HookInitExtension(VK_EXT_debug_report, CreateDebugReportCallbackEXT); \
|
||||
HookInitExtension(VK_EXT_debug_report, DestroyDebugReportCallbackEXT); \
|
||||
HookInitExtension(VK_EXT_debug_report, DebugReportMessageEXT); \
|
||||
HookInitExtension(VK_KHR_display, GetPhysicalDeviceDisplayPropertiesKHR); \
|
||||
HookInitExtension(VK_KHR_display, GetPhysicalDeviceDisplayPlanePropertiesKHR); \
|
||||
HookInitExtension(VK_KHR_display, GetDisplayPlaneSupportedDisplaysKHR); \
|
||||
HookInitExtension(VK_KHR_display, GetDisplayModePropertiesKHR); \
|
||||
HookInitExtension(VK_KHR_display, CreateDisplayModeKHR); \
|
||||
HookInitExtension(VK_KHR_display, GetDisplayPlaneCapabilitiesKHR); \
|
||||
HookInitExtension(VK_KHR_display, CreateDisplayPlaneSurfaceKHR); \
|
||||
HookInitExtension(VK_NV_external_memory_capabilities, \
|
||||
GetPhysicalDeviceExternalImageFormatPropertiesNV); \
|
||||
HookInitExtension(VK_KHR_get_physical_device_properties2, GetPhysicalDeviceFeatures2KHR); \
|
||||
HookInitExtension(VK_KHR_get_physical_device_properties2, GetPhysicalDeviceProperties2KHR); \
|
||||
HookInitExtension(VK_KHR_get_physical_device_properties2, GetPhysicalDeviceFormatProperties2KHR); \
|
||||
HookInitExtension(VK_KHR_get_physical_device_properties2, \
|
||||
GetPhysicalDeviceImageFormatProperties2KHR); \
|
||||
HookInitExtension(VK_KHR_get_physical_device_properties2, \
|
||||
GetPhysicalDeviceQueueFamilyProperties2KHR); \
|
||||
HookInitExtension(VK_KHR_get_physical_device_properties2, GetPhysicalDeviceMemoryProperties2KHR); \
|
||||
HookInitExtension(VK_KHR_get_physical_device_properties2, \
|
||||
GetPhysicalDeviceSparseImageFormatProperties2KHR); \
|
||||
HookInitExtension(VK_EXT_direct_mode_display, ReleaseDisplayEXT); \
|
||||
HookInitExtension(VK_EXT_display_surface_counter, GetPhysicalDeviceSurfaceCapabilities2EXT); \
|
||||
HookInitExtension(VK_KHR_external_memory_capabilities, \
|
||||
GetPhysicalDeviceExternalBufferPropertiesKHR); \
|
||||
HookInitExtension(VK_KHR_external_semaphore_capabilities, \
|
||||
GetPhysicalDeviceExternalSemaphorePropertiesKHR); \
|
||||
#define HookInitVulkanInstanceExts() \
|
||||
HookInitExtension(KHR_surface, DestroySurfaceKHR); \
|
||||
HookInitExtension(KHR_surface, GetPhysicalDeviceSurfaceSupportKHR); \
|
||||
HookInitExtension(KHR_surface, GetPhysicalDeviceSurfaceCapabilitiesKHR); \
|
||||
HookInitExtension(KHR_surface, GetPhysicalDeviceSurfaceFormatsKHR); \
|
||||
HookInitExtension(KHR_surface, GetPhysicalDeviceSurfacePresentModesKHR); \
|
||||
HookInitExtension(EXT_debug_report, CreateDebugReportCallbackEXT); \
|
||||
HookInitExtension(EXT_debug_report, DestroyDebugReportCallbackEXT); \
|
||||
HookInitExtension(EXT_debug_report, DebugReportMessageEXT); \
|
||||
HookInitExtension(KHR_display, GetPhysicalDeviceDisplayPropertiesKHR); \
|
||||
HookInitExtension(KHR_display, GetPhysicalDeviceDisplayPlanePropertiesKHR); \
|
||||
HookInitExtension(KHR_display, GetDisplayPlaneSupportedDisplaysKHR); \
|
||||
HookInitExtension(KHR_display, GetDisplayModePropertiesKHR); \
|
||||
HookInitExtension(KHR_display, CreateDisplayModeKHR); \
|
||||
HookInitExtension(KHR_display, GetDisplayPlaneCapabilitiesKHR); \
|
||||
HookInitExtension(KHR_display, CreateDisplayPlaneSurfaceKHR); \
|
||||
HookInitExtension(NV_external_memory_capabilities, \
|
||||
GetPhysicalDeviceExternalImageFormatPropertiesNV); \
|
||||
HookInitExtension(KHR_get_physical_device_properties2, GetPhysicalDeviceFeatures2KHR); \
|
||||
HookInitExtension(KHR_get_physical_device_properties2, GetPhysicalDeviceProperties2KHR); \
|
||||
HookInitExtension(KHR_get_physical_device_properties2, GetPhysicalDeviceFormatProperties2KHR); \
|
||||
HookInitExtension(KHR_get_physical_device_properties2, \
|
||||
GetPhysicalDeviceImageFormatProperties2KHR); \
|
||||
HookInitExtension(KHR_get_physical_device_properties2, \
|
||||
GetPhysicalDeviceQueueFamilyProperties2KHR); \
|
||||
HookInitExtension(KHR_get_physical_device_properties2, GetPhysicalDeviceMemoryProperties2KHR); \
|
||||
HookInitExtension(KHR_get_physical_device_properties2, \
|
||||
GetPhysicalDeviceSparseImageFormatProperties2KHR); \
|
||||
HookInitExtension(EXT_direct_mode_display, ReleaseDisplayEXT); \
|
||||
HookInitExtension(EXT_display_surface_counter, GetPhysicalDeviceSurfaceCapabilities2EXT); \
|
||||
HookInitExtension(KHR_external_memory_capabilities, GetPhysicalDeviceExternalBufferPropertiesKHR); \
|
||||
HookInitExtension(KHR_external_semaphore_capabilities, \
|
||||
GetPhysicalDeviceExternalSemaphorePropertiesKHR); \
|
||||
HookInitInstance_PlatformSpecific()
|
||||
|
||||
#define HookInitVulkanDeviceExts() \
|
||||
HookInitExtension(VK_EXT_debug_marker, DebugMarkerSetObjectTagEXT); \
|
||||
HookInitExtension(VK_EXT_debug_marker, DebugMarkerSetObjectNameEXT); \
|
||||
HookInitExtension(VK_EXT_debug_marker, CmdDebugMarkerBeginEXT); \
|
||||
HookInitExtension(VK_EXT_debug_marker, CmdDebugMarkerEndEXT); \
|
||||
HookInitExtension(VK_EXT_debug_marker, CmdDebugMarkerInsertEXT); \
|
||||
HookInitExtension(VK_KHR_swapchain, CreateSwapchainKHR); \
|
||||
HookInitExtension(VK_KHR_swapchain, DestroySwapchainKHR); \
|
||||
HookInitExtension(VK_KHR_swapchain, GetSwapchainImagesKHR); \
|
||||
HookInitExtension(VK_KHR_swapchain, AcquireNextImageKHR); \
|
||||
HookInitExtension(VK_KHR_swapchain, QueuePresentKHR); \
|
||||
HookInitExtension(VK_KHR_display_swapchain, CreateSharedSwapchainsKHR); \
|
||||
HookInitExtension(VK_KHR_maintenance1, TrimCommandPoolKHR); \
|
||||
HookInitExtension(VK_EXT_display_control, DisplayPowerControlEXT); \
|
||||
HookInitExtension(VK_EXT_display_control, RegisterDeviceEventEXT); \
|
||||
HookInitExtension(VK_EXT_display_control, RegisterDisplayEventEXT); \
|
||||
HookInitExtension(VK_EXT_display_control, GetSwapchainCounterEXT); \
|
||||
HookInitExtension(VK_KHR_external_memory_fd, GetMemoryFdKHR); \
|
||||
HookInitExtension(VK_KHR_external_memory_fd, GetMemoryFdPropertiesKHR); \
|
||||
HookInitExtension(VK_KHR_external_semaphore_fd, ImportSemaphoreFdKHR); \
|
||||
HookInitExtension(VK_KHR_external_semaphore_fd, GetSemaphoreFdKHR); \
|
||||
HookInitExtension(VK_KHR_get_memory_requirements2, GetBufferMemoryRequirements2KHR); \
|
||||
HookInitExtension(VK_KHR_get_memory_requirements2, GetImageMemoryRequirements2KHR); \
|
||||
HookInitExtension(VK_KHR_get_memory_requirements2, GetImageSparseMemoryRequirements2KHR); \
|
||||
HookInitExtension(VK_AMD_shader_info, GetShaderInfoAMD); \
|
||||
HookInitExtension(VK_KHR_push_descriptor, CmdPushDescriptorSetKHR); \
|
||||
#define HookInitVulkanDeviceExts() \
|
||||
HookInitExtension(EXT_debug_marker, DebugMarkerSetObjectTagEXT); \
|
||||
HookInitExtension(EXT_debug_marker, DebugMarkerSetObjectNameEXT); \
|
||||
HookInitExtension(EXT_debug_marker, CmdDebugMarkerBeginEXT); \
|
||||
HookInitExtension(EXT_debug_marker, CmdDebugMarkerEndEXT); \
|
||||
HookInitExtension(EXT_debug_marker, CmdDebugMarkerInsertEXT); \
|
||||
HookInitExtension(KHR_swapchain, CreateSwapchainKHR); \
|
||||
HookInitExtension(KHR_swapchain, DestroySwapchainKHR); \
|
||||
HookInitExtension(KHR_swapchain, GetSwapchainImagesKHR); \
|
||||
HookInitExtension(KHR_swapchain, AcquireNextImageKHR); \
|
||||
HookInitExtension(KHR_swapchain, QueuePresentKHR); \
|
||||
HookInitExtension(KHR_display_swapchain, CreateSharedSwapchainsKHR); \
|
||||
HookInitExtension(KHR_maintenance1, TrimCommandPoolKHR); \
|
||||
HookInitExtension(EXT_display_control, DisplayPowerControlEXT); \
|
||||
HookInitExtension(EXT_display_control, RegisterDeviceEventEXT); \
|
||||
HookInitExtension(EXT_display_control, RegisterDisplayEventEXT); \
|
||||
HookInitExtension(EXT_display_control, GetSwapchainCounterEXT); \
|
||||
HookInitExtension(KHR_external_memory_fd, GetMemoryFdKHR); \
|
||||
HookInitExtension(KHR_external_memory_fd, GetMemoryFdPropertiesKHR); \
|
||||
HookInitExtension(KHR_external_semaphore_fd, ImportSemaphoreFdKHR); \
|
||||
HookInitExtension(KHR_external_semaphore_fd, GetSemaphoreFdKHR); \
|
||||
HookInitExtension(KHR_get_memory_requirements2, GetBufferMemoryRequirements2KHR); \
|
||||
HookInitExtension(KHR_get_memory_requirements2, GetImageMemoryRequirements2KHR); \
|
||||
HookInitExtension(KHR_get_memory_requirements2, GetImageSparseMemoryRequirements2KHR); \
|
||||
HookInitExtension(AMD_shader_info, GetShaderInfoAMD); \
|
||||
HookInitExtension(KHR_push_descriptor, CmdPushDescriptorSetKHR); \
|
||||
HookInitDevice_PlatformSpecific()
|
||||
|
||||
#define DefineHooks() \
|
||||
|
||||
@@ -256,16 +256,21 @@ VK_LAYER_EXPORT VkResult VKAPI_CALL VK_LAYER_RENDERDOC_CaptureEnumerateInstanceE
|
||||
pProperties);
|
||||
}
|
||||
|
||||
#undef CheckExt
|
||||
#define CheckExt(name, ver) \
|
||||
bool name = instDevInfo->ext_##name; \
|
||||
(void)name;
|
||||
|
||||
#undef HookInit
|
||||
#define HookInit(function) \
|
||||
if(!strcmp(pName, STRINGIZE(CONCAT(vk, function)))) \
|
||||
return (PFN_vkVoidFunction)&CONCAT(hooked_vk, function);
|
||||
|
||||
#undef HookInitExtension
|
||||
#define HookInitExtension(ext, function) \
|
||||
#define HookInitExtension(cond, function) \
|
||||
if(!strcmp(pName, STRINGIZE(CONCAT(vk, function)))) \
|
||||
{ \
|
||||
if(instDevInfo->ext_##ext) \
|
||||
if(cond) \
|
||||
return (PFN_vkVoidFunction)&CONCAT(hooked_vk, function); \
|
||||
}
|
||||
|
||||
@@ -288,6 +293,8 @@ VK_LAYER_RENDERDOC_CaptureGetDeviceProcAddr(VkDevice device, const char *pName)
|
||||
|
||||
InstanceDeviceInfo *instDevInfo = GetRecord(device)->instDevInfo;
|
||||
|
||||
CheckDeviceExts();
|
||||
|
||||
HookInitVulkanDeviceExts();
|
||||
|
||||
if(GetDeviceDispatchTable(device)->GetDeviceProcAddr == NULL)
|
||||
@@ -320,12 +327,15 @@ VK_LAYER_RENDERDOC_CaptureGetInstanceProcAddr(VkInstance instance, const char *p
|
||||
|
||||
InstanceDeviceInfo *instDevInfo = GetRecord(instance)->instDevInfo;
|
||||
|
||||
CheckInstanceExts();
|
||||
CheckDeviceExts();
|
||||
|
||||
HookInitVulkanInstanceExts();
|
||||
|
||||
// GetInstanceProcAddr must also unconditionally return all device functions
|
||||
|
||||
#undef HookInitExtension
|
||||
#define HookInitExtension(ext, function) \
|
||||
#define HookInitExtension(cond, function) \
|
||||
if(!strcmp(pName, STRINGIZE(CONCAT(vk, function)))) \
|
||||
return (PFN_vkVoidFunction)&CONCAT(hooked_vk, function);
|
||||
|
||||
|
||||
@@ -244,10 +244,11 @@ ReplayStatus WrappedVulkan::Initialise(VkInitParams ¶ms, uint64_t sectionVer
|
||||
InstanceDeviceInfo extInfo;
|
||||
|
||||
#undef CheckExt
|
||||
#define CheckExt(name, ver) \
|
||||
if(!strcmp(instinfo.ppEnabledExtensionNames[i], #name) || (int)renderdocAppInfo.apiVersion >= ver) \
|
||||
{ \
|
||||
extInfo.ext_##name = true; \
|
||||
#define CheckExt(name, ver) \
|
||||
if(!strcmp(instinfo.ppEnabledExtensionNames[i], "VK_" #name) || \
|
||||
(int)renderdocAppInfo.apiVersion >= ver) \
|
||||
{ \
|
||||
extInfo.ext_##name = true; \
|
||||
}
|
||||
|
||||
for(uint32_t i = 0; i < instinfo.enabledExtensionCount; i++)
|
||||
@@ -445,11 +446,11 @@ VkResult WrappedVulkan::vkCreateInstance(const VkInstanceCreateInfo *pCreateInfo
|
||||
record->instDevInfo->vulkanVersion = renderdocAppInfo.apiVersion;
|
||||
|
||||
#undef CheckExt
|
||||
#define CheckExt(name, ver) \
|
||||
if(!strcmp(modifiedCreateInfo.ppEnabledExtensionNames[i], #name) || \
|
||||
record->instDevInfo->vulkanVersion >= ver) \
|
||||
{ \
|
||||
record->instDevInfo->ext_##name = true; \
|
||||
#define CheckExt(name, ver) \
|
||||
if(!strcmp(modifiedCreateInfo.ppEnabledExtensionNames[i], "VK_" #name) || \
|
||||
record->instDevInfo->vulkanVersion >= ver) \
|
||||
{ \
|
||||
record->instDevInfo->ext_##name = true; \
|
||||
}
|
||||
|
||||
for(uint32_t i = 0; i < modifiedCreateInfo.enabledExtensionCount; i++)
|
||||
@@ -1222,11 +1223,11 @@ bool WrappedVulkan::Serialise_vkCreateDevice(SerialiserType &ser, VkPhysicalDevi
|
||||
InstanceDeviceInfo extInfo;
|
||||
|
||||
#undef CheckExt
|
||||
#define CheckExt(name, ver) \
|
||||
if(!strcmp(createInfo.ppEnabledExtensionNames[i], #name) || \
|
||||
(int)renderdocAppInfo.apiVersion >= ver) \
|
||||
{ \
|
||||
extInfo.ext_##name = true; \
|
||||
#define CheckExt(name, ver) \
|
||||
if(!strcmp(createInfo.ppEnabledExtensionNames[i], "VK_" #name) || \
|
||||
(int)renderdocAppInfo.apiVersion >= ver) \
|
||||
{ \
|
||||
extInfo.ext_##name = true; \
|
||||
}
|
||||
|
||||
for(uint32_t i = 0; i < createInfo.enabledExtensionCount; i++)
|
||||
@@ -1531,11 +1532,11 @@ VkResult WrappedVulkan::vkCreateDevice(VkPhysicalDevice physicalDevice,
|
||||
CheckInstanceExts();
|
||||
|
||||
#undef CheckExt
|
||||
#define CheckExt(name, ver) \
|
||||
if(!strcmp(createInfo.ppEnabledExtensionNames[i], #name) || \
|
||||
GetRecord(m_Instance)->instDevInfo->vulkanVersion >= ver) \
|
||||
{ \
|
||||
record->instDevInfo->ext_##name = true; \
|
||||
#define CheckExt(name, ver) \
|
||||
if(!strcmp(createInfo.ppEnabledExtensionNames[i], "VK_" #name) || \
|
||||
GetRecord(m_Instance)->instDevInfo->vulkanVersion >= ver) \
|
||||
{ \
|
||||
record->instDevInfo->ext_##name = true; \
|
||||
}
|
||||
|
||||
for(uint32_t i = 0; i < createInfo.enabledExtensionCount; i++)
|
||||
|
||||
Reference in New Issue
Block a user