aboutsummaryrefslogtreecommitdiff
path: root/loader
diff options
context:
space:
mode:
authorIan Elliott <ian@lunarg.com>2015-10-30 15:28:23 -0600
committerJon Ashburn <jon@lunarg.com>2015-12-01 10:18:23 -0700
commit3ff5d4a0edb79576e3e693fa1480f1468542c2b5 (patch)
tree96663548f904c7e53674245df5c945748b3b66aa /loader
parentdce5f3ea01d8c26cedf1d72fda33db52e8e57f47 (diff)
downloadusermoji-3ff5d4a0edb79576e3e693fa1480f1468542c2b5.tar.xz
loader: Started porting loader to new WSI (GIPA missing).
Diffstat (limited to 'loader')
-rw-r--r--loader/CMakeLists.txt4
-rw-r--r--loader/gpa_helper.h2
-rw-r--r--loader/loader.c4
-rw-r--r--loader/loader.h9
-rw-r--r--loader/trampoline.c4
-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(