Skip to content

Commit 19f2004

Browse files
Refactor instance extension checks into single function
Loader now generates a struct that contains of bools for each instance extension and a function to set the bool to true if the extension is in the list passed in. This consolidates that logic into one place rather than having it spread out across the codebase. It also enable further changes that will require each drivers list of supported instance extensions.
1 parent fb78607 commit 19f2004

File tree

10 files changed

+364
-380
lines changed

10 files changed

+364
-380
lines changed

loader/debug_utils.c

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -612,43 +612,29 @@ VkResult add_debug_extensions_to_ext_list(const struct loader_instance *inst, st
612612
debug_utils_extension_info);
613613
}
614614

615-
void check_for_enabled_debug_extensions(struct loader_instance *ptr_instance, const VkInstanceCreateInfo *pCreateInfo) {
616-
for (uint32_t i = 0; i < pCreateInfo->enabledExtensionCount; i++) {
617-
if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_EXT_DEBUG_REPORT_EXTENSION_NAME) == 0) {
618-
ptr_instance->enabled_known_extensions.ext_debug_report = 1;
619-
} else if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_EXT_DEBUG_UTILS_EXTENSION_NAME) == 0) {
620-
ptr_instance->enabled_known_extensions.ext_debug_utils = 1;
621-
}
622-
}
623-
}
624-
625615
bool debug_extensions_InstanceGpa(struct loader_instance *ptr_instance, const char *name, void **addr) {
626616
bool ret_type = false;
627617

628618
*addr = NULL;
629619

630620
if (!strcmp("vkCreateDebugReportCallbackEXT", name)) {
631-
*addr =
632-
ptr_instance->enabled_known_extensions.ext_debug_report == 1 ? (void *)debug_utils_CreateDebugReportCallbackEXT : NULL;
621+
*addr = ptr_instance->enabled_extensions.ext_debug_report == 1 ? (void *)debug_utils_CreateDebugReportCallbackEXT : NULL;
633622
ret_type = true;
634623
} else if (!strcmp("vkDestroyDebugReportCallbackEXT", name)) {
635-
*addr =
636-
ptr_instance->enabled_known_extensions.ext_debug_report == 1 ? (void *)debug_utils_DestroyDebugReportCallbackEXT : NULL;
624+
*addr = ptr_instance->enabled_extensions.ext_debug_report == 1 ? (void *)debug_utils_DestroyDebugReportCallbackEXT : NULL;
637625
ret_type = true;
638626
} else if (!strcmp("vkDebugReportMessageEXT", name)) {
639-
*addr = ptr_instance->enabled_known_extensions.ext_debug_report == 1 ? (void *)debug_utils_DebugReportMessageEXT : NULL;
627+
*addr = ptr_instance->enabled_extensions.ext_debug_report == 1 ? (void *)debug_utils_DebugReportMessageEXT : NULL;
640628
return true;
641629
}
642630
if (!strcmp("vkCreateDebugUtilsMessengerEXT", name)) {
643-
*addr =
644-
ptr_instance->enabled_known_extensions.ext_debug_utils == 1 ? (void *)debug_utils_CreateDebugUtilsMessengerEXT : NULL;
631+
*addr = ptr_instance->enabled_extensions.ext_debug_utils == 1 ? (void *)debug_utils_CreateDebugUtilsMessengerEXT : NULL;
645632
ret_type = true;
646633
} else if (!strcmp("vkDestroyDebugUtilsMessengerEXT", name)) {
647-
*addr =
648-
ptr_instance->enabled_known_extensions.ext_debug_utils == 1 ? (void *)debug_utils_DestroyDebugUtilsMessengerEXT : NULL;
634+
*addr = ptr_instance->enabled_extensions.ext_debug_utils == 1 ? (void *)debug_utils_DestroyDebugUtilsMessengerEXT : NULL;
649635
ret_type = true;
650636
} else if (!strcmp("vkSubmitDebugUtilsMessageEXT", name)) {
651-
*addr = ptr_instance->enabled_known_extensions.ext_debug_utils == 1 ? (void *)debug_utils_SubmitDebugUtilsMessageEXT : NULL;
637+
*addr = ptr_instance->enabled_extensions.ext_debug_utils == 1 ? (void *)debug_utils_SubmitDebugUtilsMessageEXT : NULL;
652638
ret_type = true;
653639
}
654640

loader/generated/vk_loader_extensions.c

Lines changed: 153 additions & 52 deletions
Large diffs are not rendered by default.

loader/generated/vk_loader_extensions.h

Lines changed: 60 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,12 @@ VKAPI_ATTR VkResult VKAPI_CALL vkDevExtError(VkDevice dev);
4747
// the appropriate information for any instance extensions we know about.
4848
bool extension_instance_gpa(struct loader_instance *ptr_instance, const char *name, void **addr);
4949

50+
struct loader_instance_extension_enable_list; // Forward declaration
51+
5052
// Extension interception for vkCreateInstance function, so we can properly
5153
// detect and enable any instance extension information for extensions we know
5254
// about.
53-
void extensions_create_instance(struct loader_instance *ptr_instance, const VkInstanceCreateInfo *pCreateInfo);
55+
void fill_out_enabled_instance_extensions(uint32_t extension_count, const char *const * extension_list, struct loader_instance_extension_enable_list* enables);
5456

5557
// Extension interception for vkGetDeviceProcAddr function, so we can return
5658
// an appropriate terminator if this is one of those few device commands requiring
@@ -485,19 +487,75 @@ struct loader_icd_term_dispatch {
485487
PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV GetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV;
486488
};
487489

488-
struct loader_instance_extension_enables {
490+
struct loader_instance_extension_enable_list {
491+
uint8_t khr_surface;
492+
uint8_t khr_display;
493+
#if defined(VK_USE_PLATFORM_XLIB_KHR)
494+
uint8_t khr_xlib_surface;
495+
#endif // defined(VK_USE_PLATFORM_XLIB_KHR)
496+
#if defined(VK_USE_PLATFORM_XCB_KHR)
497+
uint8_t khr_xcb_surface;
498+
#endif // defined(VK_USE_PLATFORM_XCB_KHR)
499+
#if defined(VK_USE_PLATFORM_WAYLAND_KHR)
500+
uint8_t khr_wayland_surface;
501+
#endif // defined(VK_USE_PLATFORM_WAYLAND_KHR)
502+
#if defined(VK_USE_PLATFORM_ANDROID_KHR)
503+
uint8_t khr_android_surface;
504+
#endif // defined(VK_USE_PLATFORM_ANDROID_KHR)
505+
#if defined(VK_USE_PLATFORM_WIN32_KHR)
506+
uint8_t khr_win32_surface;
507+
#endif // defined(VK_USE_PLATFORM_WIN32_KHR)
489508
uint8_t khr_get_physical_device_properties2;
490509
uint8_t khr_device_group_creation;
491510
uint8_t khr_external_memory_capabilities;
492511
uint8_t khr_external_semaphore_capabilities;
493512
uint8_t khr_external_fence_capabilities;
513+
uint8_t khr_get_surface_capabilities2;
514+
uint8_t khr_get_display_properties2;
515+
uint8_t khr_surface_protected_capabilities;
516+
uint8_t khr_portability_enumeration;
494517
uint8_t ext_debug_report;
518+
#if defined(VK_USE_PLATFORM_GGP)
519+
uint8_t ggp_stream_descriptor_surface;
520+
#endif // defined(VK_USE_PLATFORM_GGP)
495521
uint8_t nv_external_memory_capabilities;
522+
uint8_t ext_validation_flags;
523+
#if defined(VK_USE_PLATFORM_VI_NN)
524+
uint8_t nn_vi_surface;
525+
#endif // defined(VK_USE_PLATFORM_VI_NN)
496526
uint8_t ext_direct_mode_display;
527+
#if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
497528
uint8_t ext_acquire_xlib_display;
529+
#endif // defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
498530
uint8_t ext_display_surface_counter;
531+
uint8_t ext_swapchain_colorspace;
532+
#if defined(VK_USE_PLATFORM_IOS_MVK)
533+
uint8_t mvk_ios_surface;
534+
#endif // defined(VK_USE_PLATFORM_IOS_MVK)
535+
#if defined(VK_USE_PLATFORM_MACOS_MVK)
536+
uint8_t mvk_macos_surface;
537+
#endif // defined(VK_USE_PLATFORM_MACOS_MVK)
499538
uint8_t ext_debug_utils;
539+
#if defined(VK_USE_PLATFORM_FUCHSIA)
540+
uint8_t fuchsia_imagepipe_surface;
541+
#endif // defined(VK_USE_PLATFORM_FUCHSIA)
542+
#if defined(VK_USE_PLATFORM_METAL_EXT)
543+
uint8_t ext_metal_surface;
544+
#endif // defined(VK_USE_PLATFORM_METAL_EXT)
545+
uint8_t ext_validation_features;
546+
uint8_t ext_headless_surface;
547+
uint8_t ext_surface_maintenance1;
500548
uint8_t ext_acquire_drm_display;
549+
#if defined(VK_USE_PLATFORM_DIRECTFB_EXT)
550+
uint8_t ext_directfb_surface;
551+
#endif // defined(VK_USE_PLATFORM_DIRECTFB_EXT)
552+
#if defined(VK_USE_PLATFORM_SCREEN_QNX)
553+
uint8_t qnx_screen_surface;
554+
#endif // defined(VK_USE_PLATFORM_SCREEN_QNX)
555+
uint8_t google_surfaceless_query;
556+
uint8_t lunarg_direct_driver_loading;
557+
uint8_t ext_layer_settings;
558+
uint8_t nv_display_stereo;
501559
};
502560

503561
// Functions that required a terminator need to have a separate dispatch table which contains their corresponding

loader/loader.c

Lines changed: 23 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -4198,36 +4198,29 @@ VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL loader_gpa_instance_terminator(VkInstan
41984198
// These functions need a terminator to handle the case of a driver not supporting VK_EXT_debug_utils when there are layers
41994199
// present which not check for NULL before calling the function.
42004200
if (!strcmp(pName, "vkSetDebugUtilsObjectNameEXT")) {
4201-
return loader_inst->enabled_known_extensions.ext_debug_utils ? (PFN_vkVoidFunction)terminator_SetDebugUtilsObjectNameEXT
4202-
: NULL;
4201+
return loader_inst->enabled_extensions.ext_debug_utils ? (PFN_vkVoidFunction)terminator_SetDebugUtilsObjectNameEXT : NULL;
42034202
}
42044203
if (!strcmp(pName, "vkSetDebugUtilsObjectTagEXT")) {
4205-
return loader_inst->enabled_known_extensions.ext_debug_utils ? (PFN_vkVoidFunction)terminator_SetDebugUtilsObjectTagEXT
4206-
: NULL;
4204+
return loader_inst->enabled_extensions.ext_debug_utils ? (PFN_vkVoidFunction)terminator_SetDebugUtilsObjectTagEXT : NULL;
42074205
}
42084206
if (!strcmp(pName, "vkQueueBeginDebugUtilsLabelEXT")) {
4209-
return loader_inst->enabled_known_extensions.ext_debug_utils ? (PFN_vkVoidFunction)terminator_QueueBeginDebugUtilsLabelEXT
4210-
: NULL;
4207+
return loader_inst->enabled_extensions.ext_debug_utils ? (PFN_vkVoidFunction)terminator_QueueBeginDebugUtilsLabelEXT : NULL;
42114208
}
42124209
if (!strcmp(pName, "vkQueueEndDebugUtilsLabelEXT")) {
4213-
return loader_inst->enabled_known_extensions.ext_debug_utils ? (PFN_vkVoidFunction)terminator_QueueEndDebugUtilsLabelEXT
4214-
: NULL;
4210+
return loader_inst->enabled_extensions.ext_debug_utils ? (PFN_vkVoidFunction)terminator_QueueEndDebugUtilsLabelEXT : NULL;
42154211
}
42164212
if (!strcmp(pName, "vkQueueInsertDebugUtilsLabelEXT")) {
4217-
return loader_inst->enabled_known_extensions.ext_debug_utils ? (PFN_vkVoidFunction)terminator_QueueInsertDebugUtilsLabelEXT
4218-
: NULL;
4213+
return loader_inst->enabled_extensions.ext_debug_utils ? (PFN_vkVoidFunction)terminator_QueueInsertDebugUtilsLabelEXT
4214+
: NULL;
42194215
}
42204216
if (!strcmp(pName, "vkCmdBeginDebugUtilsLabelEXT")) {
4221-
return loader_inst->enabled_known_extensions.ext_debug_utils ? (PFN_vkVoidFunction)terminator_CmdBeginDebugUtilsLabelEXT
4222-
: NULL;
4217+
return loader_inst->enabled_extensions.ext_debug_utils ? (PFN_vkVoidFunction)terminator_CmdBeginDebugUtilsLabelEXT : NULL;
42234218
}
42244219
if (!strcmp(pName, "vkCmdEndDebugUtilsLabelEXT")) {
4225-
return loader_inst->enabled_known_extensions.ext_debug_utils ? (PFN_vkVoidFunction)terminator_CmdEndDebugUtilsLabelEXT
4226-
: NULL;
4220+
return loader_inst->enabled_extensions.ext_debug_utils ? (PFN_vkVoidFunction)terminator_CmdEndDebugUtilsLabelEXT : NULL;
42274221
}
42284222
if (!strcmp(pName, "vkCmdInsertDebugUtilsLabelEXT")) {
4229-
return loader_inst->enabled_known_extensions.ext_debug_utils ? (PFN_vkVoidFunction)terminator_CmdInsertDebugUtilsLabelEXT
4230-
: NULL;
4223+
return loader_inst->enabled_extensions.ext_debug_utils ? (PFN_vkVoidFunction)terminator_CmdInsertDebugUtilsLabelEXT : NULL;
42314224
}
42324225

42334226
if (loader_inst->instance_finished_creation) {
@@ -5564,18 +5557,10 @@ VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateInstance(const VkInstanceCreateI
55645557
// Determine if vkGetPhysicalDeviceProperties2 is available to this Instance
55655558
// Also determine if VK_EXT_surface_maintenance1 is available on the ICD
55665559
if (icd_term->scanned_icd->api_version >= VK_API_VERSION_1_1) {
5567-
icd_term->supports_get_dev_prop_2 = true;
5568-
}
5569-
for (uint32_t j = 0; j < icd_create_info.enabledExtensionCount; j++) {
5570-
if (!strcmp(filtered_extension_names[j], VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME)) {
5571-
icd_term->supports_get_dev_prop_2 = true;
5572-
continue;
5573-
}
5574-
if (!strcmp(filtered_extension_names[j], VK_EXT_SURFACE_MAINTENANCE_1_EXTENSION_NAME)) {
5575-
icd_term->supports_ext_surface_maintenance_1 = true;
5576-
continue;
5577-
}
5560+
icd_term->enabled_instance_extensions.khr_get_physical_device_properties2 = true;
55785561
}
5562+
fill_out_enabled_instance_extensions(icd_create_info.enabledExtensionCount, (const char *const *)filtered_extension_names,
5563+
&icd_term->enabled_instance_extensions);
55795564

55805565
loader_destroy_generic_list(ptr_instance, (struct loader_generic_list *)&icd_exts);
55815566

@@ -5698,18 +5683,18 @@ VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateInstance(const VkInstanceCreateI
56985683

56995684
// For vkGetPhysicalDeviceProperties2, at least one ICD needs to support the extension for the
57005685
// instance to have it
5701-
if (ptr_instance->supports_get_dev_prop_2) {
5686+
if (ptr_instance->enabled_extensions.khr_get_physical_device_properties2) {
57025687
bool at_least_one_supports = false;
57035688
icd_term = ptr_instance->icd_terms;
57045689
while (icd_term != NULL) {
5705-
if (icd_term->supports_get_dev_prop_2) {
5690+
if (icd_term->enabled_instance_extensions.khr_get_physical_device_properties2) {
57065691
at_least_one_supports = true;
57075692
break;
57085693
}
57095694
icd_term = icd_term->next;
57105695
}
57115696
if (!at_least_one_supports) {
5712-
ptr_instance->supports_get_dev_prop_2 = false;
5697+
ptr_instance->enabled_extensions.khr_get_physical_device_properties2 = false;
57135698
}
57145699
}
57155700

@@ -5747,9 +5732,8 @@ VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateInstance(const VkInstanceCreateI
57475732
// This is why we don't clear inside of these function calls.
57485733
// The clearing should actually be handled by the overall memset of the pInstance structure in the
57495734
// trampoline.
5750-
wsi_create_instance(ptr_instance, pCreateInfo);
5751-
check_for_enabled_debug_extensions(ptr_instance, pCreateInfo);
5752-
extensions_create_instance(ptr_instance, pCreateInfo);
5735+
fill_out_enabled_instance_extensions(pCreateInfo->enabledExtensionCount, pCreateInfo->ppEnabledExtensionNames,
5736+
&ptr_instance->enabled_extensions);
57535737
}
57545738

57555739
return res;
@@ -5914,7 +5898,7 @@ VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateDevice(VkPhysicalDevice physical
59145898
// Before we continue, If KHX_device_group is the list of enabled and viable extensions, then we then need to look for the
59155899
// corresponding VkDeviceGroupDeviceCreateInfo struct in the device list and replace all the physical device values (which
59165900
// are really loader physical device terminator values) with the ICD versions.
5917-
// if (icd_term->this_instance->enabled_known_extensions.khr_device_group_creation == 1) {
5901+
// if (icd_term->this_instance->enabled_extensions.khr_device_group_creation == 1) {
59185902
{
59195903
VkBaseOutStructure *pNext = (VkBaseOutStructure *)localCreateInfo.pNext;
59205904
VkBaseOutStructure *pPrev = (VkBaseOutStructure *)&localCreateInfo;
@@ -5979,7 +5963,7 @@ VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateDevice(VkPhysicalDevice physical
59795963
icd_term->scanned_icd->lib_name);
59805964

59815965
// Verify that VK_KHR_get_physical_device_properties2 is enabled
5982-
if (icd_term->this_instance->enabled_known_extensions.khr_get_physical_device_properties2) {
5966+
if (icd_term->this_instance->enabled_extensions.khr_get_physical_device_properties2) {
59835967
localCreateInfo.pEnabledFeatures = &features->features;
59845968
}
59855969
}
@@ -6072,8 +6056,8 @@ VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateDevice(VkPhysicalDevice physical
60726056
dev->should_ignore_device_commands_from_newer_version = true;
60736057
}
60746058
}
6075-
dev->layer_extensions.ext_debug_utils_enabled = icd_term->this_instance->enabled_known_extensions.ext_debug_utils;
6076-
dev->driver_extensions.ext_debug_utils_enabled = icd_term->this_instance->enabled_known_extensions.ext_debug_utils;
6059+
dev->layer_extensions.ext_debug_utils_enabled = icd_term->this_instance->enabled_extensions.ext_debug_utils;
6060+
dev->driver_extensions.ext_debug_utils_enabled = icd_term->this_instance->enabled_extensions.ext_debug_utils;
60776061

60786062
VkPhysicalDeviceProperties properties;
60796063
icd_term->dispatch.GetPhysicalDeviceProperties(phys_dev_term->phys_dev, &properties);
@@ -7161,7 +7145,7 @@ VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumeratePhysicalDeviceGroups(
71617145
cur_icd_group_count = 0;
71627146

71637147
// Get the function pointer to use to call into the ICD. This could be the core or KHR version
7164-
if (inst->enabled_known_extensions.khr_device_group_creation) {
7148+
if (inst->enabled_extensions.khr_device_group_creation) {
71657149
fpEnumeratePhysicalDeviceGroups = icd_term->dispatch.EnumeratePhysicalDeviceGroupsKHR;
71667150
} else {
71677151
fpEnumeratePhysicalDeviceGroups = icd_term->dispatch.EnumeratePhysicalDeviceGroups;
@@ -7233,7 +7217,7 @@ VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumeratePhysicalDeviceGroups(
72337217
uint32_t count_this_time = total_count - cur_icd_group_count;
72347218

72357219
// Get the function pointer to use to call into the ICD. This could be the core or KHR version
7236-
if (inst->enabled_known_extensions.khr_device_group_creation) {
7220+
if (inst->enabled_extensions.khr_device_group_creation) {
72377221
fpEnumeratePhysicalDeviceGroups = icd_term->dispatch.EnumeratePhysicalDeviceGroupsKHR;
72387222
} else {
72397223
fpEnumeratePhysicalDeviceGroups = icd_term->dispatch.EnumeratePhysicalDeviceGroups;

loader/loader_common.h

Lines changed: 3 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -276,8 +276,8 @@ struct loader_icd_term {
276276
struct loader_icd_term *next;
277277

278278
PFN_PhysDevExt phys_dev_ext[MAX_NUM_UNKNOWN_EXTS];
279-
bool supports_get_dev_prop_2;
280-
bool supports_ext_surface_maintenance_1;
279+
280+
struct loader_instance_extension_enable_list enabled_instance_extensions;
281281

282282
uint32_t physical_device_count;
283283

@@ -360,7 +360,7 @@ struct loader_instance {
360360
VkInstance instance; // layers/ICD instance returned to trampoline
361361

362362
struct loader_extension_list ext_list; // icds and loaders extensions
363-
struct loader_instance_extension_enables enabled_known_extensions;
363+
struct loader_instance_extension_enable_list enabled_extensions;
364364

365365
// Indicates which indices in the array are in-use and which are free to be reused
366366
struct loader_used_object_list surfaces_list;
@@ -382,49 +382,6 @@ struct loader_instance {
382382
bool portability_enumeration_flag_bit_set;
383383
bool portability_enumeration_extension_enabled;
384384

385-
bool wsi_surface_enabled;
386-
#if defined(VK_USE_PLATFORM_WIN32_KHR)
387-
bool wsi_win32_surface_enabled;
388-
#endif
389-
#if defined(VK_USE_PLATFORM_WAYLAND_KHR)
390-
bool wsi_wayland_surface_enabled;
391-
#endif
392-
#if defined(VK_USE_PLATFORM_XCB_KHR)
393-
bool wsi_xcb_surface_enabled;
394-
#endif
395-
#if defined(VK_USE_PLATFORM_XLIB_KHR)
396-
bool wsi_xlib_surface_enabled;
397-
#endif
398-
#if defined(VK_USE_PLATFORM_DIRECTFB_EXT)
399-
bool wsi_directfb_surface_enabled;
400-
#endif
401-
#if defined(VK_USE_PLATFORM_ANDROID_KHR)
402-
bool wsi_android_surface_enabled;
403-
#endif
404-
#if defined(VK_USE_PLATFORM_MACOS_MVK)
405-
bool wsi_macos_surface_enabled;
406-
#endif
407-
#if defined(VK_USE_PLATFORM_IOS_MVK)
408-
bool wsi_ios_surface_enabled;
409-
#endif
410-
#if defined(VK_USE_PLATFORM_GGP)
411-
bool wsi_ggp_surface_enabled;
412-
#endif
413-
bool wsi_headless_surface_enabled;
414-
#if defined(VK_USE_PLATFORM_METAL_EXT)
415-
bool wsi_metal_surface_enabled;
416-
#endif
417-
#if defined(VK_USE_PLATFORM_FUCHSIA)
418-
bool wsi_imagepipe_surface_enabled;
419-
#endif
420-
#if defined(VK_USE_PLATFORM_SCREEN_QNX)
421-
bool wsi_screen_surface_enabled;
422-
#endif
423-
#if defined(VK_USE_PLATFORM_VI_NN)
424-
bool wsi_vi_surface_enabled;
425-
#endif
426-
bool wsi_display_enabled;
427-
bool wsi_display_props2_enabled;
428385
bool create_terminator_invalid_extension;
429386
bool supports_get_dev_prop_2;
430387
};

0 commit comments

Comments
 (0)