loader: gh888 Add KHR/EXT extensions in vulkan.h
Add the KHR_display_swapchain device extension to the loader
and the core_validation layers. This fulfills the work required in
JIRA LOAD-7 and gh 90.
Add debug_marker to the extension list.
Change-Id: I1fb70e5d44bc8c1f70fd6d1cfbd106a155081b25
diff --git a/include/vulkan/vk_layer.h b/include/vulkan/vk_layer.h
index 195ea35..78f6372 100644
--- a/include/vulkan/vk_layer.h
+++ b/include/vulkan/vk_layer.h
@@ -167,6 +167,12 @@
#ifdef VK_USE_PLATFORM_WIN32_KHR
PFN_vkGetMemoryWin32HandleNV GetMemoryWin32HandleNV;
#endif
+ PFN_vkCreateSharedSwapchainsKHR CreateSharedSwapchainsKHR;
+ PFN_vkDebugMarkerSetObjectTagEXT DebugMarkerSetObjectTagEXT;
+ PFN_vkDebugMarkerSetObjectNameEXT DebugMarkerSetObjectNameEXT;
+ PFN_vkCmdDebugMarkerBeginEXT CmdDebugMarkerBeginEXT;
+ PFN_vkCmdDebugMarkerEndEXT CmdDebugMarkerEndEXT;
+ PFN_vkCmdDebugMarkerInsertEXT CmdDebugMarkerInsertEXT;
} VkLayerDispatchTable;
typedef struct VkLayerInstanceDispatchTable_ {
diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp
index 1630386..13b3d4b 100644
--- a/layers/core_validation.cpp
+++ b/layers/core_validation.cpp
@@ -86,6 +86,7 @@
struct devExts {
bool wsi_enabled;
+ bool wsi_display_swapchain_enabled;
unordered_map<VkSwapchainKHR, unique_ptr<SWAPCHAIN_NODE>> swapchainMap;
unordered_map<VkImage, VkSwapchainKHR> imageToSwapchainMap;
};
@@ -4220,10 +4221,13 @@
// by more than one thread?
layer_data *dev_data = get_my_data_ptr(get_dispatch_key(device), layer_data_map);
dev_data->device_extensions.wsi_enabled = false;
+ dev_data->device_extensions.wsi_display_swapchain_enabled = false;
for (i = 0; i < pCreateInfo->enabledExtensionCount; i++) {
if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_SWAPCHAIN_EXTENSION_NAME) == 0)
dev_data->device_extensions.wsi_enabled = true;
+ if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME) == 0)
+ dev_data->device_extensions.wsi_display_swapchain_enabled = true;
}
}
@@ -10995,6 +10999,16 @@
return result;
}
+VKAPI_ATTR VkResult VKAPI_CALL CreateSharedSwapchainsKHR(VkDevice device, uint32_t swapchainCount,
+ const VkSwapchainCreateInfoKHR *pCreateInfos,
+ const VkAllocationCallbacks *pAllocator, VkSwapchainKHR *pSwapchains) {
+ layer_data *dev_data = get_my_data_ptr(get_dispatch_key(device), layer_data_map);
+ std::unique_lock<std::mutex> lock(global_lock);
+ VkResult result =
+ dev_data->device_dispatch_table->CreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains);
+ return result;
+}
+
VKAPI_ATTR VkResult VKAPI_CALL AcquireNextImageKHR(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout,
VkSemaphore semaphore, VkFence fence, uint32_t *pImageIndex) {
layer_data *dev_data = get_my_data_ptr(get_dispatch_key(device), layer_data_map);
@@ -11433,9 +11447,10 @@
{ "vkAcquireNextImageKHR", reinterpret_cast<PFN_vkVoidFunction>(AcquireNextImageKHR) },
{ "vkQueuePresentKHR", reinterpret_cast<PFN_vkVoidFunction>(QueuePresentKHR) },
};
+ layer_data *dev_data = nullptr;
if (dev) {
- layer_data *dev_data = get_my_data_ptr(get_dispatch_key(dev), layer_data_map);
+ dev_data = get_my_data_ptr(get_dispatch_key(dev), layer_data_map);
if (!dev_data->device_extensions.wsi_enabled)
return nullptr;
}
@@ -11445,6 +11460,14 @@
return khr_swapchain_commands[i].proc;
}
+ if (dev_data) {
+ if (!dev_data->device_extensions.wsi_display_swapchain_enabled)
+ return nullptr;
+ }
+
+ if (!strcmp("vkCreateSharedSwapchainsKHR", name))
+ return reinterpret_cast<PFN_vkVoidFunction>(CreateSharedSwapchainsKHR);
+
return nullptr;
}
diff --git a/layers/swapchain.cpp b/layers/swapchain.cpp
index 2449625..792b063 100644
--- a/layers/swapchain.cpp
+++ b/layers/swapchain.cpp
@@ -64,15 +64,18 @@
}
my_device_data->deviceMap[device].device = device;
my_device_data->deviceMap[device].swapchainExtensionEnabled = false;
+ my_device_data->deviceMap[device].displaySwapchainExtensionEnabled = false;
// Record whether the WSI device extension was enabled for this VkDevice.
// No need to check if the extension was advertised by
// vkEnumerateDeviceExtensionProperties(), since the loader handles that.
for (i = 0; i < pCreateInfo->enabledExtensionCount; i++) {
if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_SWAPCHAIN_EXTENSION_NAME) == 0) {
-
my_device_data->deviceMap[device].swapchainExtensionEnabled = true;
}
+ if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME) == 0) {
+ my_device_data->deviceMap[device].displaySwapchainExtensionEnabled = true;
+ }
}
}
@@ -2247,7 +2250,66 @@
return VK_ERROR_VALIDATION_FAILED_EXT;
}
-VKAPI_ATTR void VKAPI_CALL GetDeviceQueue(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue *pQueue) {
+VKAPI_ATTR VkResult VKAPI_CALL CreateSharedSwapchainsKHR(VkDevice device, uint32_t swapchainCount,
+ const VkSwapchainCreateInfoKHR *pCreateInfos,
+ const VkAllocationCallbacks *pAllocator, VkSwapchainKHR *pSwapchains) {
+ VkResult result = VK_SUCCESS;
+ bool skip_call = false;
+ layer_data *my_data = get_my_data_ptr(get_dispatch_key(device), layer_data_map);
+ std::unique_lock<std::mutex> lock(global_lock);
+ SwpDevice *pDevice = nullptr;
+ {
+ auto it = my_data->deviceMap.find(device);
+ pDevice = (it == my_data->deviceMap.end()) ? nullptr : &it->second;
+ }
+
+ // Validate that the swapchain extension was enabled:
+ if (pDevice && !pDevice->displaySwapchainExtensionEnabled) {
+ skip_call |= log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
+ reinterpret_cast<uint64_t>(device), __LINE__, SWAPCHAIN_EXT_NOT_ENABLED_BUT_USED, swapchain_layer_name,
+ "vkCreateSharedSwapchainsKHR() called even though the %s extension was not enabled for this VkDevice.",
+ VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME);
+ }
+ if (!pCreateInfos || !pSwapchains) {
+ skip_call |= log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
+ reinterpret_cast<uint64_t>(device), __LINE__, SWAPCHAIN_NULL_POINTER, swapchain_layer_name,
+ "vkCreateSharedSwapchainsKHR() called with NULL pointer");
+ }
+ if (swapchainCount == 0) {
+ skip_call |= log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
+ reinterpret_cast<uint64_t>(device), __LINE__, SWAPCHAIN_INVALID_COUNT, swapchain_layer_name,
+ "vkCreateSharedSwapchainsKHR() called with invalid swapchain count of %d.", swapchainCount);
+ } else {
+ SwpSwapchain *pSwapchain = nullptr;
+ for (uint32_t iii = 0; iii < swapchainCount; iii++) {
+ if (pCreateInfos[iii].sType != VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR) {
+ skip_call |= log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
+ reinterpret_cast<uint64_t>(device), __LINE__, SWAPCHAIN_WRONG_STYPE, swapchain_layer_name,
+ "vkCreateSharedSwapchainsKHR() called with invalid stype in pCreateInfos[%d].", iii);
+ }
+ auto it = my_data->swapchainMap.find(pSwapchains[iii]);
+ pSwapchain = (it == my_data->swapchainMap.end()) ? nullptr : &it->second;
+ if (nullptr == pSwapchain) {
+ skip_call |=
+ log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
+ reinterpret_cast<uint64_t>(device), __LINE__, SWAPCHAIN_INVALID_HANDLE, swapchain_layer_name,
+ "vkCreateSharedSwapchainsKHR() called with invalid Swapchain Handle in pCreateInfos[%d].", iii);
+ }
+ }
+ }
+ lock.unlock();
+
+ if (!skip_call) {
+ // Call down the call chain:
+ result = my_data->device_dispatch_table->CreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator,
+ pSwapchains);
+ return result;
+ }
+ return VK_ERROR_VALIDATION_FAILED_EXT;
+}
+
+VKAPI_ATTR void VKAPI_CALL
+GetDeviceQueue(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue *pQueue) {
bool skip_call = false;
layer_data *my_data = get_my_data_ptr(get_dispatch_key(device), layer_data_map);
diff --git a/layers/swapchain.h b/layers/swapchain.h
index 1f739f6..9b84f20 100644
--- a/layers/swapchain.h
+++ b/layers/swapchain.h
@@ -221,6 +221,9 @@
// Set to true if VK_KHR_SWAPCHAIN_EXTENSION_NAME was enabled:
bool swapchainExtensionEnabled;
+ // Set to true if VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME was enabled:
+ bool displaySwapchainExtensionEnabled;
+
// When vkCreateSwapchainKHR is called, the VkSwapchainKHR's are
// remembered:
unordered_map<VkSwapchainKHR, SwpSwapchain *> swapchains;
diff --git a/loader/LoaderAndLayerInterface.md b/loader/LoaderAndLayerInterface.md
index c3abd9f..8bb07d5 100644
--- a/loader/LoaderAndLayerInterface.md
+++ b/loader/LoaderAndLayerInterface.md
@@ -333,8 +333,6 @@
device. Thus, the overwhelming majority of extensions will be device extensions rather than
instance extensions.
-<br/>
-
## Vulkan Installable Client Driver interface with the loader ##
diff --git a/loader/table_ops.h b/loader/table_ops.h
index 5a9abf1..2b4d6d4 100644
--- a/loader/table_ops.h
+++ b/loader/table_ops.h
@@ -276,6 +276,18 @@
table->GetMemoryWin32HandleNV =
(PFN_vkGetMemoryWin32HandleNV)gpa(dev, "vkGetMemoryWin32HandleNV");
#endif // VK_USE_PLATFORM_WIN32_KHR
+ table->CreateSharedSwapchainsKHR =
+ (PFN_vkCreateSharedSwapchainsKHR)gpa(dev, "vkCreateSharedSwapchainsKHR");
+ table->DebugMarkerSetObjectTagEXT =
+ (PFN_vkDebugMarkerSetObjectTagEXT)gpa(dev, "vkDebugMarkerSetObjectTagEXT");
+ table->DebugMarkerSetObjectNameEXT =
+ (PFN_vkDebugMarkerSetObjectNameEXT)gpa(dev, "vkDebugMarkerSetObjectNameEXT");
+ table->CmdDebugMarkerBeginEXT =
+ (PFN_vkCmdDebugMarkerBeginEXT)gpa(dev, "vkCmdDebugMarkerBeginEXT");
+ table->CmdDebugMarkerEndEXT =
+ (PFN_vkCmdDebugMarkerEndEXT)gpa(dev, "vkCmdDebugMarkerEndEXT");
+ table->CmdDebugMarkerInsertEXT =
+ (PFN_vkCmdDebugMarkerInsertEXT)gpa(dev, "vkCmdDebugMarkerInsertEXT");
}
static inline void *
diff --git a/loader/wsi.c b/loader/wsi.c
index 539dbac..10c5260 100644
--- a/loader/wsi.c
+++ b/loader/wsi.c
@@ -1262,6 +1262,18 @@
return VK_SUCCESS;
}
+// This is the trampoline entrypoint
+// for CreateSharedSwapchainsKHR
+LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateSharedSwapchainsKHR(
+ VkDevice device, uint32_t swapchainCount,
+ const VkSwapchainCreateInfoKHR *pCreateInfos,
+ const VkAllocationCallbacks *pAllocator, VkSwapchainKHR *pSwapchains) {
+ const VkLayerDispatchTable *disp;
+ disp = loader_get_dispatch(device);
+ return disp->CreateSharedSwapchainsKHR(
+ device, swapchainCount, pCreateInfos, pAllocator, pSwapchains);
+}
+
bool wsi_swapchain_instance_gpa(struct loader_instance *ptr_instance,
const char *name, void **addr) {
*addr = NULL;
@@ -1458,5 +1470,12 @@
: NULL;
return true;
}
+
+ // Functions for KHR_display_swapchain extension:
+ if (!strcmp("vkCreateSharedSwapchainsKHR", name)) {
+ *addr = (void *)vkCreateSharedSwapchainsKHR;
+ return true;
+ }
+
return false;
}
diff --git a/vulkan.py b/vulkan.py
index 29dc240..8923598 100644
--- a/vulkan.py
+++ b/vulkan.py
@@ -1195,6 +1195,20 @@
],
)
+ext_khr_display_swapchain = Extension(
+ name="VK_KHR_display_swapchain",
+ headers=["vulkan/vulkan.h"],
+ objects=["VkDisplayPresentInfoKHR"],
+ protos=[
+ Proto("VkResult", "CreateSharedSwapchainsKHR",
+ [Param("VkDevice", "device"),
+ Param("uint32_t", "swapchainCount"),
+ Param("const VkSwapchainCreateInfoKHR*", "pCreateInfos"),
+ Param("const VkAllocationCallbacks*", "pAllocator"),
+ Param("VkSwapchainKHR*", "pSwapchains")]),
+ ],
+)
+
ext_khr_xcb_surface = Extension(
name="VK_KHR_xcb_surface",
headers=["vulkan/vulkan.h"],
@@ -1294,7 +1308,7 @@
Param("uint32_t", "queueFamilyIndex")]),
],
)
-lunarg_debug_report = Extension(
+ext_debug_report = Extension(
name="VK_EXT_debug_report",
headers=["vulkan/vulkan.h"],
objects=[
@@ -1323,33 +1337,104 @@
Param("const char *", "pMsg")]),
],
)
+ext_debug_marker = Extension(
+ name="VK_EXT_debug_marker",
+ headers=["vulkan/vulkan.h"],
+ objects=[
+ "VkDebugMarkerObjectNameInfoEXT",
+ "VkDebugMarkerObjectTagInfoEXT",
+ "VkDebugMarkerMarkerInfoEXT"
+ ],
+ protos=[
+ Proto("VkResult", "DebugMarkerSetObjectTagEXT",
+ [Param("VkDevice", "device"),
+ Param("VkDebugMarkerObjectTagInfoEXT*", "pTagInfo")]),
+
+ Proto("VkResult", "DebugMarkerSetObjectNameEXT",
+ [Param("VkDevice", "device"),
+ Param("VkDebugMarkerObjectNameInfoEXT*", "pNameInfo")]),
+
+ Proto("void", "CmdDebugMarkerBeginEXT",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("VkDebugMarkerMarkerInfoEXT*", "pMarkerInfo")]),
+
+ Proto("void", "CmdDebugMarkerEndEXT",
+ [Param("VkCommandBuffer*", "commandBuffer")]),
+
+ Proto("void", "CmdDebugMarkerInsertEXT",
+ [Param("VkCommandBuffer", "commandBuffer"),
+ Param("VkDebugMarkerMarkerInfoEXT*", "pMarkerInfo")]),
+ ],
+)
import sys
if sys.argv[1] == 'AllPlatforms':
- extensions = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_win32_surface, ext_khr_xcb_surface, ext_khr_xlib_surface, ext_khr_wayland_surface, ext_khr_mir_surface, ext_khr_display, ext_khr_android_surface, ext_amd_extension_draw_indirect_count, ext_nv_external_memory_capabilities, ext_nv_external_memory_win32]
- extensions_all = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_win32_surface, ext_khr_xcb_surface, ext_khr_xlib_surface, ext_khr_wayland_surface, ext_khr_mir_surface, ext_khr_display, ext_khr_android_surface, ext_amd_extension_draw_indirect_count, ext_nv_external_memory_capabilities, ext_nv_external_memory_win32, lunarg_debug_report]
+ extensions = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_win32_surface, ext_khr_xcb_surface,
+ ext_khr_xlib_surface, ext_khr_wayland_surface, ext_khr_mir_surface, ext_khr_display,
+ ext_khr_android_surface, ext_amd_extension_draw_indirect_count,
+ ext_nv_external_memory_capabilities, ext_nv_external_memory_win32,
+ ext_khr_display_swapchain]
+ extensions_all = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_win32_surface,
+ ext_khr_xcb_surface, ext_khr_xlib_surface, ext_khr_wayland_surface, ext_khr_mir_surface,
+ ext_khr_display, ext_khr_android_surface, ext_amd_extension_draw_indirect_count,
+ ext_nv_external_memory_capabilities, ext_nv_external_memory_win32,
+ ext_khr_display_swapchain, ext_debug_report, ext_debug_marker]
else :
if len(sys.argv) > 3:
if sys.platform.startswith('win32') and sys.argv[1] != 'Android':
- extensions = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_win32_surface, ext_khr_display, ext_amd_extension_draw_indirect_count, ext_nv_external_memory_capabilities, ext_nv_external_memory_win32]
- extensions_all = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_win32_surface, ext_khr_display, ext_amd_extension_draw_indirect_count, ext_nv_external_memory_capabilities, ext_nv_external_memory_win32, lunarg_debug_report]
+ extensions = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_win32_surface,
+ ext_khr_display, ext_amd_extension_draw_indirect_count,
+ ext_nv_external_memory_capabilities, ext_nv_external_memory_win32,
+ ext_khr_display_swapchain]
+ extensions_all = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_win32_surface,
+ ext_khr_display, ext_amd_extension_draw_indirect_count,
+ ext_nv_external_memory_capabilities, ext_nv_external_memory_win32,
+ ext_khr_display_swapchain, ext_debug_report, ext_debug_marker]
elif sys.platform.startswith('linux') and sys.argv[1] != 'Android':
- extensions = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_xcb_surface, ext_khr_xlib_surface, ext_khr_wayland_surface, ext_khr_mir_surface, ext_khr_display, ext_amd_extension_draw_indirect_count, ext_nv_external_memory_capabilities]
- extensions_all = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_xcb_surface, ext_khr_xlib_surface, ext_khr_wayland_surface, ext_khr_mir_surface, ext_khr_display, ext_amd_extension_draw_indirect_count, ext_nv_external_memory_capabilities, lunarg_debug_report]
+ extensions = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_xcb_surface,
+ ext_khr_xlib_surface, ext_khr_wayland_surface, ext_khr_mir_surface, ext_khr_display,
+ ext_amd_extension_draw_indirect_count, ext_nv_external_memory_capabilities,
+ ext_khr_display_swapchain]
+ extensions_all = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_xcb_surface,
+ ext_khr_xlib_surface, ext_khr_wayland_surface, ext_khr_mir_surface,
+ ext_khr_display, ext_amd_extension_draw_indirect_count,
+ ext_nv_external_memory_capabilities, ext_khr_display_swapchain,
+ ext_debug_report, ext_debug_marker]
else: # android
- extensions = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_android_surface, ext_amd_extension_draw_indirect_count, ext_nv_external_memory_capabilities]
- extensions_all = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_android_surface, ext_amd_extension_draw_indirect_count, ext_nv_external_memory_capabilities, lunarg_debug_report]
+ extensions = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_android_surface,
+ ext_amd_extension_draw_indirect_count, ext_nv_external_memory_capabilities,
+ ext_khr_display_swapchain]
+ extensions_all = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_android_surface,
+ ext_amd_extension_draw_indirect_count, ext_nv_external_memory_capabilities,
+ ext_khr_display_swapchain, ext_debug_report, ext_debug_marker]
else :
if sys.argv[1] == 'Win32':
- extensions = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_win32_surface, ext_khr_display, ext_amd_extension_draw_indirect_count, ext_nv_external_memory_capabilities, ext_nv_external_memory_win32]
- extensions_all = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_win32_surface, ext_khr_display, ext_amd_extension_draw_indirect_count, ext_nv_external_memory_capabilities, ext_nv_external_memory_win32, lunarg_debug_report]
+ extensions = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_win32_surface,
+ ext_khr_display, ext_amd_extension_draw_indirect_count,
+ ext_nv_external_memory_capabilities, ext_nv_external_memory_win32,
+ ext_khr_display_swapchain]
+ extensions_all = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_win32_surface,
+ ext_khr_display, ext_amd_extension_draw_indirect_count,
+ ext_nv_external_memory_capabilities, ext_nv_external_memory_win32,
+ ext_khr_display_swapchain, ext_debug_report, ext_debug_marker]
elif sys.argv[1] == 'Android':
- extensions = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_android_surface, ext_amd_extension_draw_indirect_count, ext_nv_external_memory_capabilities]
- extensions_all = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_android_surface, ext_amd_extension_draw_indirect_count, ext_nv_external_memory_capabilities, lunarg_debug_report]
+ extensions = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_android_surface,
+ ext_amd_extension_draw_indirect_count, ext_nv_external_memory_capabilities,
+ ext_khr_display_swapchain]
+ extensions_all = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_android_surface,
+ ext_amd_extension_draw_indirect_count, ext_nv_external_memory_capabilities,
+ ext_khr_display_swapchain, ext_debug_report, ext_debug_marker]
elif sys.argv[1] == 'Xcb' or sys.argv[1] == 'Xlib' or sys.argv[1] == 'Wayland' or sys.argv[1] == 'Mir' or sys.argv[1] == 'Display':
- extensions = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_xcb_surface, ext_khr_xlib_surface, ext_khr_wayland_surface, ext_khr_mir_surface, ext_khr_display, ext_amd_extension_draw_indirect_count, ext_nv_external_memory_capabilities]
- extensions_all = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_xcb_surface, ext_khr_xlib_surface, ext_khr_wayland_surface, ext_khr_mir_surface, ext_khr_display, lunarg_debug_report, ext_amd_extension_draw_indirect_count, ext_nv_external_memory_capabilities]
+ extensions = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_xcb_surface,
+ ext_khr_xlib_surface, ext_khr_wayland_surface, ext_khr_mir_surface,
+ ext_khr_display, ext_amd_extension_draw_indirect_count,
+ ext_nv_external_memory_capabilities, ext_khr_display_swapchain]
+ extensions_all = [core, ext_khr_surface, ext_khr_device_swapchain, ext_khr_xcb_surface,
+ ext_khr_xlib_surface, ext_khr_wayland_surface, ext_khr_mir_surface,
+ ext_khr_display, ext_amd_extension_draw_indirect_count,
+ ext_nv_external_memory_capabilities, ext_khr_display_swapchain,
+ ext_debug_report, ext_debug_marker]
else:
print('Error: Undefined DisplayServer')
extensions = []