aboutsummaryrefslogtreecommitdiff
path: root/loader
diff options
context:
space:
mode:
authorIan Elliott <ianelliott@google.com>2015-11-19 16:05:09 -0700
committerJon Ashburn <jon@lunarg.com>2015-12-01 10:18:23 -0700
commitd17dd4b1ec0166f68ebb7c3955c1003136d688d3 (patch)
tree666858ddec63349653148f9387b0c2965e1e18d2 /loader
parent36f1c4eed4a4d06b7fa5749b6b819924f58f01b2 (diff)
downloadusermoji-d17dd4b1ec0166f68ebb7c3955c1003136d688d3.tar.xz
loader: Add new vkGetPhysicalDeviceSurface*KHR() functions.
- vkGetPhysicalDeviceSurfaceCapabilitiesKHR() - vkGetPhysicalDeviceSurfaceFormatsKHR() - vkGetPhysicalDeviceSurfacePresentModesKHR()
Diffstat (limited to 'loader')
-rw-r--r--loader/loader.c6
-rw-r--r--loader/loader.h3
-rw-r--r--loader/table_ops.h6
-rw-r--r--loader/wsi.c137
-rw-r--r--loader/wsi.h17
5 files changed, 169 insertions, 0 deletions
diff --git a/loader/loader.c b/loader/loader.c
index aef74e7a..eb47149e 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -108,6 +108,9 @@ const VkLayerInstanceDispatchTable instance_disp = {
.EnumerateDeviceLayerProperties = loader_EnumerateDeviceLayerProperties,
.GetPhysicalDeviceSparseImageFormatProperties = loader_GetPhysicalDeviceSparseImageFormatProperties,
.GetPhysicalDeviceSurfaceSupportKHR = loader_GetPhysicalDeviceSurfaceSupportKHR,
+ .GetPhysicalDeviceSurfaceCapabilitiesKHR = loader_GetPhysicalDeviceSurfaceCapabilitiesKHR,
+ .GetPhysicalDeviceSurfaceFormatsKHR = loader_GetPhysicalDeviceSurfaceFormatsKHR,
+ .GetPhysicalDeviceSurfacePresentModesKHR = loader_GetPhysicalDeviceSurfacePresentModesKHR,
.DbgCreateMsgCallback = loader_DbgCreateMsgCallback,
.DbgDestroyMsgCallback = loader_DbgDestroyMsgCallback,
};
@@ -1215,6 +1218,9 @@ static bool loader_icd_init_entrys(struct loader_icd *icd,
LOOKUP_GIPA(DbgCreateMsgCallback, false);
LOOKUP_GIPA(DbgDestroyMsgCallback, false);
LOOKUP_GIPA(GetPhysicalDeviceSurfaceSupportKHR, false);
+ LOOKUP_GIPA(GetPhysicalDeviceSurfaceCapabilitiesKHR, false);
+ LOOKUP_GIPA(GetPhysicalDeviceSurfaceFormatsKHR, false);
+ LOOKUP_GIPA(GetPhysicalDeviceSurfacePresentModesKHR, false);
#undef LOOKUP_GIPA
diff --git a/loader/loader.h b/loader/loader.h
index c6e64570..c83faa98 100644
--- a/loader/loader.h
+++ b/loader/loader.h
@@ -179,6 +179,9 @@ struct loader_icd {
PFN_vkDbgCreateMsgCallback DbgCreateMsgCallback;
PFN_vkDbgDestroyMsgCallback DbgDestroyMsgCallback;
PFN_vkGetPhysicalDeviceSurfaceSupportKHR GetPhysicalDeviceSurfaceSupportKHR;
+ PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR GetPhysicalDeviceSurfaceCapabilitiesKHR;
+ PFN_vkGetPhysicalDeviceSurfaceFormatsKHR GetPhysicalDeviceSurfaceFormatsKHR;
+ PFN_vkGetPhysicalDeviceSurfacePresentModesKHR GetPhysicalDeviceSurfacePresentModesKHR;
struct loader_icd *next;
};
diff --git a/loader/table_ops.h b/loader/table_ops.h
index 06b1acff..f3077817 100644
--- a/loader/table_ops.h
+++ b/loader/table_ops.h
@@ -507,6 +507,12 @@ static inline void *loader_lookup_instance_dispatch_table(
return (void *) table->EnumerateDeviceLayerProperties;
if (!strcmp(name, "GetPhysicalDeviceSurfaceSupportKHR"))
return (void *) table->GetPhysicalDeviceSurfaceSupportKHR;
+ if (!strcmp(name, "GetPhysicalDeviceSurfaceCapabilitiesKHR"))
+ return (void *) table->GetPhysicalDeviceSurfaceCapabilitiesKHR;
+ if (!strcmp(name, "GetPhysicalDeviceSurfaceFormatsKHR"))
+ return (void *) table->GetPhysicalDeviceSurfaceFormatsKHR;
+ if (!strcmp(name, "GetPhysicalDeviceSurfacePresentModesKHR"))
+ return (void *) table->GetPhysicalDeviceSurfacePresentModesKHR;
if (!strcmp(name, "DbgCreateMsgCallback"))
return (void *) table->DbgCreateMsgCallback;
if (!strcmp(name, "DbgDestroyMsgCallback"))
diff --git a/loader/wsi.c b/loader/wsi.c
index e65b4012..28d5dca4 100644
--- a/loader/wsi.c
+++ b/loader/wsi.c
@@ -239,6 +239,131 @@ VKAPI_ATTR VkResult VKAPI_CALL loader_GetPhysicalDeviceSurfaceSupportKHR(
pSupported);
}
+/*
+ * This is the trampoline entrypoint
+ * for GetPhysicalDeviceSurfaceCapabilitiesKHR
+ */
+LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
+ VkPhysicalDevice physicalDevice,
+ VkSurfaceKHR surface,
+ VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
+{
+ const VkLayerInstanceDispatchTable *disp;
+ disp = loader_get_instance_dispatch(physicalDevice);
+ VkResult res = disp->GetPhysicalDeviceSurfaceCapabilitiesKHR(
+ physicalDevice,
+ surface,
+ pSurfaceCapabilities);
+ return res;
+}
+
+/*
+ * This is the instance chain terminator function
+ * for GetPhysicalDeviceSurfaceCapabilitiesKHR
+ */
+VKAPI_ATTR VkResult VKAPI_CALL loader_GetPhysicalDeviceSurfaceCapabilitiesKHR(
+ VkPhysicalDevice physicalDevice,
+ VkSurfaceKHR surface,
+ VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
+{
+ struct loader_physical_device *phys_dev = (struct loader_physical_device *) physicalDevice;
+ struct loader_icd *icd = phys_dev->this_icd;
+
+ assert(pSurfaceCapabilities && "GetPhysicalDeviceSurfaceCapabilitiesKHR: Error, null pSurfaceCapabilities");
+
+ assert(icd->GetPhysicalDeviceSurfaceCapabilitiesKHR && "loader: null GetPhysicalDeviceSurfaceCapabilitiesKHR ICD pointer");
+
+ return icd->GetPhysicalDeviceSurfaceCapabilitiesKHR(phys_dev->phys_dev,
+ surface,
+ pSurfaceCapabilities);
+}
+
+/*
+ * This is the trampoline entrypoint
+ * for GetPhysicalDeviceSurfaceFormatsKHR
+ */
+LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormatsKHR(
+ VkPhysicalDevice physicalDevice,
+ VkSurfaceKHR surface,
+ uint32_t* pSurfaceFormatCount,
+ VkSurfaceFormatKHR* pSurfaceFormats)
+{
+ const VkLayerInstanceDispatchTable *disp;
+ disp = loader_get_instance_dispatch(physicalDevice);
+ VkResult res = disp->GetPhysicalDeviceSurfaceFormatsKHR(
+ physicalDevice,
+ surface,
+ pSurfaceFormatCount,
+ pSurfaceFormats);
+ return res;
+}
+
+/*
+ * This is the instance chain terminator function
+ * for GetPhysicalDeviceSurfaceFormatsKHR
+ */
+VKAPI_ATTR VkResult VKAPI_CALL loader_GetPhysicalDeviceSurfaceFormatsKHR(
+ VkPhysicalDevice physicalDevice,
+ VkSurfaceKHR surface,
+ uint32_t* pSurfaceFormatCount,
+ VkSurfaceFormatKHR* pSurfaceFormats)
+{
+ struct loader_physical_device *phys_dev = (struct loader_physical_device *) physicalDevice;
+ struct loader_icd *icd = phys_dev->this_icd;
+
+ assert(pSurfaceFormatCount && "GetPhysicalDeviceSurfaceFormatsKHR: Error, null pSurfaceFormatCount");
+
+ assert(icd->GetPhysicalDeviceSurfaceFormatsKHR && "loader: null GetPhysicalDeviceSurfaceFormatsKHR ICD pointer");
+
+ return icd->GetPhysicalDeviceSurfaceFormatsKHR(phys_dev->phys_dev,
+ surface,
+ pSurfaceFormatCount,
+ pSurfaceFormats);
+}
+
+/*
+ * This is the trampoline entrypoint
+ * for GetPhysicalDeviceSurfacePresentModesKHR
+ */
+LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModesKHR(
+ VkPhysicalDevice physicalDevice,
+ VkSurfaceKHR surface,
+ uint32_t* pPresentModeCount,
+ VkPresentModeKHR* pPresentModes)
+{
+ const VkLayerInstanceDispatchTable *disp;
+ disp = loader_get_instance_dispatch(physicalDevice);
+ VkResult res = disp->GetPhysicalDeviceSurfacePresentModesKHR(
+ physicalDevice,
+ surface,
+ pPresentModeCount,
+ pPresentModes);
+ return res;
+}
+
+/*
+ * This is the instance chain terminator function
+ * for GetPhysicalDeviceSurfacePresentModesKHR
+ */
+VKAPI_ATTR VkResult VKAPI_CALL loader_GetPhysicalDeviceSurfacePresentModesKHR(
+ VkPhysicalDevice physicalDevice,
+ VkSurfaceKHR surface,
+ uint32_t* pPresentModeCount,
+ VkPresentModeKHR* pPresentModes)
+{
+ struct loader_physical_device *phys_dev = (struct loader_physical_device *) physicalDevice;
+ struct loader_icd *icd = phys_dev->this_icd;
+
+ assert(pPresentModeCount && "GetPhysicalDeviceSurfacePresentModesKHR: Error, null pPresentModeCount");
+
+ assert(icd->GetPhysicalDeviceSurfacePresentModesKHR && "loader: null GetPhysicalDeviceSurfacePresentModesKHR ICD pointer");
+
+ return icd->GetPhysicalDeviceSurfacePresentModesKHR(phys_dev->phys_dev,
+ surface,
+ pPresentModeCount,
+ pPresentModes);
+}
+
@@ -480,6 +605,18 @@ bool wsi_swapchain_instance_gpa(struct loader_instance *ptr_instance,
*addr = ptr_instance->wsi_surface_enabled ? (void *) vkGetPhysicalDeviceSurfaceSupportKHR : NULL;
return true;
}
+ if (!strcmp("vkGetPhysicalDeviceSurfaceCapabilitiesKHR", name)) {
+ *addr = ptr_instance->wsi_surface_enabled ? (void *) vkGetPhysicalDeviceSurfaceCapabilitiesKHR : NULL;
+ return true;
+ }
+ if (!strcmp("vkGetPhysicalDeviceSurfaceFormatsKHR", name)) {
+ *addr = ptr_instance->wsi_surface_enabled ? (void *) vkGetPhysicalDeviceSurfaceFormatsKHR : NULL;
+ return true;
+ }
+ if (!strcmp("vkGetPhysicalDeviceSurfacePresentModesKHR", name)) {
+ *addr = ptr_instance->wsi_surface_enabled ? (void *) vkGetPhysicalDeviceSurfacePresentModesKHR : NULL;
+ return true;
+ }
#ifdef _WIN32
#ifdef VK_USE_PLATFORM_WIN32_KHR
if (!strcmp("vkCreateWin32SurfaceKHR", name)) {
diff --git a/loader/wsi.h b/loader/wsi.h
index 958d69eb..db4c0738 100644
--- a/loader/wsi.h
+++ b/loader/wsi.h
@@ -43,3 +43,20 @@ VKAPI_ATTR VkResult VKAPI_CALL loader_GetPhysicalDeviceSurfaceSupportKHR(
uint32_t queueFamilyIndex,
VkSurfaceKHR surface,
VkBool32* pSupported);
+
+VKAPI_ATTR VkResult VKAPI_CALL loader_GetPhysicalDeviceSurfaceCapabilitiesKHR(
+ VkPhysicalDevice physicalDevice,
+ VkSurfaceKHR surface,
+ VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
+
+VKAPI_ATTR VkResult VKAPI_CALL loader_GetPhysicalDeviceSurfaceFormatsKHR(
+ VkPhysicalDevice physicalDevice,
+ VkSurfaceKHR surface,
+ uint32_t* pSurfaceFormatCount,
+ VkSurfaceFormatKHR* pSurfaceFormats);
+
+VKAPI_ATTR VkResult VKAPI_CALL loader_GetPhysicalDeviceSurfacePresentModesKHR(
+ VkPhysicalDevice physicalDevice,
+ VkSurfaceKHR surface,
+ uint32_t* pPresentModeCount,
+ VkPresentModeKHR* pPresentModes);