diff options
| author | Ian Elliott <ian@lunarg.com> | 2015-10-30 15:28:23 -0600 |
|---|---|---|
| committer | Jon Ashburn <jon@lunarg.com> | 2015-12-01 10:18:23 -0700 |
| commit | 3ff5d4a0edb79576e3e693fa1480f1468542c2b5 (patch) | |
| tree | 96663548f904c7e53674245df5c945748b3b66aa /loader | |
| parent | dce5f3ea01d8c26cedf1d72fda33db52e8e57f47 (diff) | |
| download | usermoji-3ff5d4a0edb79576e3e693fa1480f1468542c2b5.tar.xz | |
loader: Started porting loader to new WSI (GIPA missing).
Diffstat (limited to 'loader')
| -rw-r--r-- | loader/CMakeLists.txt | 4 | ||||
| -rw-r--r-- | loader/gpa_helper.h | 2 | ||||
| -rw-r--r-- | loader/loader.c | 4 | ||||
| -rw-r--r-- | loader/loader.h | 9 | ||||
| -rw-r--r-- | loader/trampoline.c | 4 | ||||
| -rw-r--r-- | loader/wsi.c (renamed from loader/wsi_swapchain.c) | 75 | ||||
| -rw-r--r-- | loader/wsi.h (renamed from loader/wsi_swapchain.h) | 12 |
7 files changed, 90 insertions, 20 deletions
diff --git a/loader/CMakeLists.txt b/loader/CMakeLists.txt index c523d3da..85d635eb 100644 --- a/loader/CMakeLists.txt +++ b/loader/CMakeLists.txt @@ -18,8 +18,8 @@ set(LOADER_SRCS loader.h vk_loader_platform.h trampoline.c - wsi_swapchain.c - wsi_swapchain.h + wsi.c + wsi.h debug_report.c debug_report.h table_ops.h diff --git a/loader/gpa_helper.h b/loader/gpa_helper.h index 1c0c84e6..53c408ef 100644 --- a/loader/gpa_helper.h +++ b/loader/gpa_helper.h @@ -27,7 +27,7 @@ #include <string.h> #include "debug_report.h" -#include "wsi_swapchain.h" +#include "wsi.h" static inline void* trampolineGetProcAddr(struct loader_instance *inst, const char *funcName) diff --git a/loader/loader.c b/loader/loader.c index 45de0e7b..aef74e7a 100644 --- a/loader/loader.c +++ b/loader/loader.c @@ -44,7 +44,7 @@ #include "gpa_helper.h" #include "table_ops.h" #include "debug_report.h" -#include "wsi_swapchain.h" +#include "wsi.h" #include "vulkan/vk_icd.h" #include "cJSON.h" #include "murmurhash.h" @@ -971,7 +971,7 @@ void loader_get_icd_loader_instance_extensions( }; // Traverse loader's extensions, adding non-duplicate extensions to the list - wsi_swapchain_add_instance_extensions(inst, inst_exts); + wsi_add_instance_extensions(inst, inst_exts); debug_report_add_instance_extensions(inst, inst_exts); } diff --git a/loader/loader.h b/loader/loader.h index 28878065..f170f4d2 100644 --- a/loader/loader.h +++ b/loader/loader.h @@ -206,6 +206,15 @@ struct loader_instance { VkAllocationCallbacks alloc_callbacks; + bool wsi_surface_enabled; +#ifdef _WIN32 + bool wsi_win32_surface_enabled; +#else // _WIN32 + bool wsi_mir_surface_enabled; + bool wsi_wayland_surface_enabled; + bool wsi_xcb_surface_enabled; + bool wsi_xlib_surface_enabled; +#endif // _WIN32 bool wsi_swapchain_enabled; }; diff --git a/loader/trampoline.c b/loader/trampoline.c index 64d69f17..b4eca0f6 100644 --- a/loader/trampoline.c +++ b/loader/trampoline.c @@ -32,7 +32,7 @@ #include "vk_loader_platform.h" #include "loader.h" #include "debug_report.h" -#include "wsi_swapchain.h" +#include "wsi.h" /* Trampoline entrypoints */ @@ -154,7 +154,7 @@ LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance( } loader_activate_instance_layers(ptr_instance); - wsi_swapchain_create_instance(ptr_instance, pCreateInfo); + wsi_create_instance(ptr_instance, pCreateInfo); debug_report_create_instance(ptr_instance, pCreateInfo); diff --git a/loader/wsi_swapchain.c b/loader/wsi.c index fa1d995b..09a5247d 100644 --- a/loader/wsi_swapchain.c +++ b/loader/wsi.c @@ -30,31 +30,92 @@ #include <string.h> #include "vk_loader_platform.h" #include "loader.h" -#include "wsi_swapchain.h" +#include "wsi.h" -static const VkExtensionProperties wsi_swapchain_extension_info = { +static const VkExtensionProperties wsi_surface_extension_info = { .extensionName = VK_KHR_SURFACE_EXTENSION_NAME, .specVersion = VK_KHR_SURFACE_REVISION, }; -void wsi_swapchain_add_instance_extensions( +#ifdef _WIN32 +static const VkExtensionProperties wsi_win32_surface_extension_info = { + .extensionName = VK_KHR_WIN32_SURFACE_EXTENSION_NAME, + .specVersion = VK_KHR_WIN32_SURFACE_REVISION, +}; +#else // _WIN32 +static const VkExtensionProperties wsi_mir_surface_extension_info = { + .extensionName = VK_KHR_MIR_SURFACE_EXTENSION_NAME, + .specVersion = VK_KHR_MIR_SURFACE_REVISION, +}; + +static const VkExtensionProperties wsi_wayland_surface_extension_info = { + .extensionName = VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME, + .specVersion = VK_KHR_WAYLAND_SURFACE_REVISION, +}; + +static const VkExtensionProperties wsi_xcb_surface_extension_info = { + .extensionName = VK_KHR_XCB_SURFACE_EXTENSION_NAME, + .specVersion = VK_KHR_XCB_SURFACE_REVISION, +}; + +static const VkExtensionProperties wsi_xlib_surface_extension_info = { + .extensionName = VK_KHR_XLIB_SURFACE_EXTENSION_NAME, + .specVersion = VK_KHR_XLIB_SURFACE_REVISION, +}; +#endif // _WIN32 + +void wsi_add_instance_extensions( const struct loader_instance *inst, struct loader_extension_list *ext_list) { - loader_add_to_ext_list(inst, ext_list, 1, &wsi_swapchain_extension_info); + loader_add_to_ext_list(inst, ext_list, 1, &wsi_surface_extension_info); +#ifdef _WIN32 + loader_add_to_ext_list(inst, ext_list, 1, &wsi_win32_surface_extension_info); +#else // _WIN32 + loader_add_to_ext_list(inst, ext_list, 1, &wsi_mir_surface_extension_info); + loader_add_to_ext_list(inst, ext_list, 1, &wsi_wayland_surface_extension_info); + loader_add_to_ext_list(inst, ext_list, 1, &wsi_xcb_surface_extension_info); + loader_add_to_ext_list(inst, ext_list, 1, &wsi_xlib_surface_extension_info); +#endif // _WIN32 } -void wsi_swapchain_create_instance( +void wsi_create_instance( struct loader_instance *ptr_instance, const VkInstanceCreateInfo *pCreateInfo) { + ptr_instance->wsi_enabled = false; +#ifdef _WIN32 + ptr_instance->wsi_surface_enabled = true; +#else // _WIN32 + ptr_instance->wsi_mir_surface_enabled = false; + ptr_instance->wsi_wayland_surface_enabled = false; + ptr_instance->wsi_xcb_surface_enabled = false; + ptr_instance->wsi_xlib_surface_enabled = false; +#endif // _WIN32 ptr_instance->wsi_swapchain_enabled = false; for (uint32_t i = 0; i < pCreateInfo->enabledExtensionNameCount; i++) { if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_SURFACE_EXTENSION_NAME) == 0) { - ptr_instance->wsi_swapchain_enabled = true; - return; + ptr_instance->wsi_surface_enabled = true; + } +#ifdef _WIN32 + if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_WIN32_SURFACE_EXTENSION_NAME) == 0) { + ptr_instance->wsi_surface_enabled = true; + } +#else // _WIN32 + if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_MIR_SURFACE_EXTENSION_NAME) == 0) { + ptr_instance->wsi_mir_surface_enabled = true; + } + if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME) == 0) { + ptr_instance->wsi_wayland_surface_enabled = true; + } + if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_XCB_SURFACE_EXTENSION_NAME) == 0) { + ptr_instance->wsi_xcb_surface_enabled = true; + } + if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_XLIB_SURFACE_EXTENSION_NAME) == 0) { + ptr_instance->wsi_xlib_surface_enabled = true; } +#endif // _WIN32 } } diff --git a/loader/wsi_swapchain.h b/loader/wsi.h index e5885e20..958d69eb 100644 --- a/loader/wsi_swapchain.h +++ b/loader/wsi.h @@ -29,13 +29,13 @@ bool wsi_swapchain_instance_gpa(struct loader_instance *ptr_instance, const char* name, void **addr); -void wsi_swapchain_add_instance_extensions( - const struct loader_instance *inst, - struct loader_extension_list *ext_list); +void wsi_add_instance_extensions( + const struct loader_instance *inst, + struct loader_extension_list *ext_list); -void wsi_swapchain_create_instance( - struct loader_instance *ptr_instance, - const VkInstanceCreateInfo *pCreateInfo); +void wsi_create_instance( + struct loader_instance *ptr_instance, + const VkInstanceCreateInfo *pCreateInfo); VKAPI_ATTR VkResult VKAPI_CALL loader_GetPhysicalDeviceSurfaceSupportKHR( |
