loader: Update the loader to 1.0.39
Add new extensions for 1.0.39. Also, updated layers to include minimal set of functionality for 1.0.39 extensions. Extensions include: - VK_KHR_get_physical_device_properties2 - VK_KHR_shader_draw_parameters - VK_EXT_direct_mode_display - VK_EXT_display_surface_counter - VK_EXT_display_control Also, redo the LoaderAndLayerIf document. Change-Id: I10412086da7a798afe832a3892e18f606259b5af
@@ -28,7 +28,7 @@ It should be straightforward to use it on other Linux distros.
|
||||
|
||||
These packages are needed to build this repository:
|
||||
```
|
||||
sudo apt-get install git cmake build-essential bison libx11-dev libxcb1-dev libxkbcommon-dev libmirclient-dev libwayland-dev
|
||||
sudo apt-get install git cmake build-essential bison libx11-dev libxcb1-dev libxkbcommon-dev libmirclient-dev libwayland-dev libxrandr-dev
|
||||
```
|
||||
|
||||
Example debug build (Note that the update\_external\_sources script used below builds external tools into predefined locations. See **Loader and Validation Layer Dependencies** for more information and other options):
|
||||
|
||||
@@ -13,7 +13,7 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
endif()
|
||||
|
||||
if (BUILD_WSI_XLIB_SUPPORT)
|
||||
add_definitions(-DVK_USE_PLATFORM_XLIB_KHR)
|
||||
add_definitions(-DVK_USE_PLATFORM_XLIB_KHR -DVK_USE_PLATFORM_XLIB_XRANDR_EXT)
|
||||
endif()
|
||||
|
||||
if (BUILD_WSI_WAYLAND_SUPPORT)
|
||||
@@ -61,6 +61,7 @@ set(NORMAL_LOADER_SRCS
|
||||
|
||||
set (OPT_LOADER_SRCS
|
||||
dev_ext_trampoline.c
|
||||
phys_dev_ext.c
|
||||
)
|
||||
|
||||
set (LOADER_SRCS ${NORMAL_LOADER_SRCS} ${OPT_LOADER_SRCS})
|
||||
@@ -110,7 +111,7 @@ else()
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wpointer-arith")
|
||||
|
||||
add_library(${API_LOWERCASE} SHARED ${LOADER_SRCS})
|
||||
set_target_properties(${API_LOWERCASE} PROPERTIES SOVERSION "1" VERSION "1.0.38")
|
||||
set_target_properties(${API_LOWERCASE} PROPERTIES SOVERSION "1" VERSION "1.0.39")
|
||||
target_link_libraries(${API_LOWERCASE} -ldl -lpthread -lm)
|
||||
install(TARGETS ${API_LOWERCASE} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||
endif()
|
||||
|
||||
|
Before Width: | Height: | Size: 17 KiB |
@@ -103,7 +103,7 @@ static VKAPI_ATTR VkResult VKAPI_CALL debug_report_CreateDebugReportCallbackEXT(
|
||||
VkDebugReportCallbackEXT *pCallback) {
|
||||
struct loader_instance *inst = loader_get_instance(instance);
|
||||
loader_platform_thread_lock_mutex(&loader_lock);
|
||||
VkResult result = inst->disp->CreateDebugReportCallbackEXT(
|
||||
VkResult result = inst->disp->layer_inst_disp.CreateDebugReportCallbackEXT(
|
||||
instance, pCreateInfo, pAllocator, pCallback);
|
||||
loader_platform_thread_unlock_mutex(&loader_lock);
|
||||
return result;
|
||||
@@ -295,7 +295,8 @@ debug_report_DestroyDebugReportCallbackEXT(
|
||||
struct loader_instance *inst = loader_get_instance(instance);
|
||||
loader_platform_thread_lock_mutex(&loader_lock);
|
||||
|
||||
inst->disp->DestroyDebugReportCallbackEXT(instance, callback, pAllocator);
|
||||
inst->disp->layer_inst_disp.DestroyDebugReportCallbackEXT(
|
||||
instance, callback, pAllocator);
|
||||
|
||||
util_DestroyDebugReportCallback(inst, callback, pAllocator);
|
||||
|
||||
@@ -308,8 +309,9 @@ static VKAPI_ATTR void VKAPI_CALL debug_report_DebugReportMessageEXT(
|
||||
int32_t msgCode, const char *pLayerPrefix, const char *pMsg) {
|
||||
struct loader_instance *inst = loader_get_instance(instance);
|
||||
|
||||
inst->disp->DebugReportMessageEXT(instance, flags, objType, object,
|
||||
location, msgCode, pLayerPrefix, pMsg);
|
||||
inst->disp->layer_inst_disp.DebugReportMessageEXT(
|
||||
instance, flags, objType, object, location, msgCode, pLayerPrefix,
|
||||
pMsg);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -25,9 +25,258 @@
|
||||
#include "vk_loader_platform.h"
|
||||
#include "loader.h"
|
||||
#include "extensions.h"
|
||||
#include "table_ops.h"
|
||||
#include <vulkan/vk_icd.h>
|
||||
#include "wsi.h"
|
||||
|
||||
// Definitions for the VK_KHR_get_physical_device_properties2 extension
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures2KHR(
|
||||
VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2KHR *pFeatures) {
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
disp->GetPhysicalDeviceFeatures2KHR(unwrapped_phys_dev, pFeatures);
|
||||
}
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceFeatures2KHR(
|
||||
VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2KHR *pFeatures) {
|
||||
struct loader_physical_device_term *phys_dev_term =
|
||||
(struct loader_physical_device_term *)physicalDevice;
|
||||
struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
|
||||
if (NULL == icd_term->GetPhysicalDeviceFeatures2KHR) {
|
||||
loader_log(icd_term->this_instance, VK_DEBUG_REPORT_ERROR_BIT_EXT, 0,
|
||||
"ICD associated with VkPhysicalDevice does not support "
|
||||
"vkGetPhysicalDeviceFeatures2KHR");
|
||||
}
|
||||
icd_term->GetPhysicalDeviceFeatures2KHR(phys_dev_term->phys_dev, pFeatures);
|
||||
}
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL
|
||||
vkGetPhysicalDeviceProperties2KHR(VkPhysicalDevice physicalDevice,
|
||||
VkPhysicalDeviceProperties2KHR *pProperties) {
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
disp->GetPhysicalDeviceProperties2KHR(unwrapped_phys_dev, pProperties);
|
||||
}
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceProperties2KHR(
|
||||
VkPhysicalDevice physicalDevice,
|
||||
VkPhysicalDeviceProperties2KHR *pProperties) {
|
||||
struct loader_physical_device_term *phys_dev_term =
|
||||
(struct loader_physical_device_term *)physicalDevice;
|
||||
struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
|
||||
if (NULL == icd_term->GetPhysicalDeviceProperties2KHR) {
|
||||
loader_log(icd_term->this_instance, VK_DEBUG_REPORT_ERROR_BIT_EXT, 0,
|
||||
"ICD associated with VkPhysicalDevice does not support "
|
||||
"vkGetPhysicalDeviceProperties2KHR");
|
||||
}
|
||||
icd_term->GetPhysicalDeviceProperties2KHR(phys_dev_term->phys_dev,
|
||||
pProperties);
|
||||
}
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties2KHR(
|
||||
VkPhysicalDevice physicalDevice, VkFormat format,
|
||||
VkFormatProperties2KHR *pFormatProperties) {
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
disp->GetPhysicalDeviceFormatProperties2KHR(unwrapped_phys_dev, format,
|
||||
pFormatProperties);
|
||||
}
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceFormatProperties2KHR(
|
||||
VkPhysicalDevice physicalDevice, VkFormat format,
|
||||
VkFormatProperties2KHR *pFormatProperties) {
|
||||
struct loader_physical_device_term *phys_dev_term =
|
||||
(struct loader_physical_device_term *)physicalDevice;
|
||||
struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
|
||||
if (NULL == icd_term->GetPhysicalDeviceFormatProperties2KHR) {
|
||||
loader_log(icd_term->this_instance, VK_DEBUG_REPORT_ERROR_BIT_EXT, 0,
|
||||
"ICD associated with VkPhysicalDevice does not support "
|
||||
"vkGetPhysicalDeviceFormatProperties2KHR");
|
||||
}
|
||||
icd_term->GetPhysicalDeviceFormatProperties2KHR(phys_dev_term->phys_dev,
|
||||
format, pFormatProperties);
|
||||
}
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties2KHR(
|
||||
VkPhysicalDevice physicalDevice,
|
||||
const VkPhysicalDeviceImageFormatInfo2KHR *pImageFormatInfo,
|
||||
VkImageFormatProperties2KHR *pImageFormatProperties) {
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
return disp->GetPhysicalDeviceImageFormatProperties2KHR(
|
||||
unwrapped_phys_dev, pImageFormatInfo, pImageFormatProperties);
|
||||
}
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL
|
||||
terminator_GetPhysicalDeviceImageFormatProperties2KHR(
|
||||
VkPhysicalDevice physicalDevice,
|
||||
const VkPhysicalDeviceImageFormatInfo2KHR *pImageFormatInfo,
|
||||
VkImageFormatProperties2KHR *pImageFormatProperties) {
|
||||
struct loader_physical_device_term *phys_dev_term =
|
||||
(struct loader_physical_device_term *)physicalDevice;
|
||||
struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
|
||||
if (NULL == icd_term->GetPhysicalDeviceImageFormatProperties2KHR) {
|
||||
loader_log(icd_term->this_instance, VK_DEBUG_REPORT_ERROR_BIT_EXT, 0,
|
||||
"ICD associated with VkPhysicalDevice does not support "
|
||||
"vkGetPhysicalDeviceImageFormatProperties2KHR");
|
||||
}
|
||||
return icd_term->GetPhysicalDeviceImageFormatProperties2KHR(
|
||||
phys_dev_term->phys_dev, pImageFormatInfo, pImageFormatProperties);
|
||||
}
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties2KHR(
|
||||
VkPhysicalDevice physicalDevice, uint32_t *pQueueFamilyPropertyCount,
|
||||
VkQueueFamilyProperties2KHR *pQueueFamilyProperties) {
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
disp->GetPhysicalDeviceQueueFamilyProperties2KHR(
|
||||
unwrapped_phys_dev, pQueueFamilyPropertyCount, pQueueFamilyProperties);
|
||||
}
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL
|
||||
terminator_GetPhysicalDeviceQueueFamilyProperties2KHR(
|
||||
VkPhysicalDevice physicalDevice, uint32_t *pQueueFamilyPropertyCount,
|
||||
VkQueueFamilyProperties2KHR *pQueueFamilyProperties) {
|
||||
struct loader_physical_device_term *phys_dev_term =
|
||||
(struct loader_physical_device_term *)physicalDevice;
|
||||
struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
|
||||
if (NULL == icd_term->GetPhysicalDeviceQueueFamilyProperties2KHR) {
|
||||
loader_log(icd_term->this_instance, VK_DEBUG_REPORT_ERROR_BIT_EXT, 0,
|
||||
"ICD associated with VkPhysicalDevice does not support "
|
||||
"vkGetPhysicalDeviceQueueFamilyProperties2KHR");
|
||||
}
|
||||
icd_term->GetPhysicalDeviceQueueFamilyProperties2KHR(
|
||||
phys_dev_term->phys_dev, pQueueFamilyPropertyCount,
|
||||
pQueueFamilyProperties);
|
||||
}
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties2KHR(
|
||||
VkPhysicalDevice physicalDevice,
|
||||
VkPhysicalDeviceMemoryProperties2KHR *pMemoryProperties) {
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
disp->GetPhysicalDeviceMemoryProperties2KHR(unwrapped_phys_dev,
|
||||
pMemoryProperties);
|
||||
}
|
||||
VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceMemoryProperties2KHR(
|
||||
VkPhysicalDevice physicalDevice,
|
||||
VkPhysicalDeviceMemoryProperties2KHR *pMemoryProperties) {
|
||||
struct loader_physical_device_term *phys_dev_term =
|
||||
(struct loader_physical_device_term *)physicalDevice;
|
||||
struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
|
||||
if (NULL == icd_term->GetPhysicalDeviceMemoryProperties2KHR) {
|
||||
loader_log(icd_term->this_instance, VK_DEBUG_REPORT_ERROR_BIT_EXT, 0,
|
||||
"ICD associated with VkPhysicalDevice does not support "
|
||||
"vkGetPhysicalDeviceMemoryProperties2KHR");
|
||||
}
|
||||
icd_term->GetPhysicalDeviceMemoryProperties2KHR(phys_dev_term->phys_dev,
|
||||
pMemoryProperties);
|
||||
}
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
|
||||
VkPhysicalDevice physicalDevice,
|
||||
const VkPhysicalDeviceSparseImageFormatInfo2KHR *pFormatInfo,
|
||||
uint32_t *pPropertyCount, VkSparseImageFormatProperties2KHR *pProperties) {
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
disp->GetPhysicalDeviceSparseImageFormatProperties2KHR(
|
||||
unwrapped_phys_dev, pFormatInfo, pPropertyCount, pProperties);
|
||||
}
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL
|
||||
terminator_GetPhysicalDeviceSparseImageFormatProperties2KHR(
|
||||
VkPhysicalDevice physicalDevice,
|
||||
const VkPhysicalDeviceSparseImageFormatInfo2KHR *pFormatInfo,
|
||||
uint32_t *pPropertyCount, VkSparseImageFormatProperties2KHR *pProperties) {
|
||||
struct loader_physical_device_term *phys_dev_term =
|
||||
(struct loader_physical_device_term *)physicalDevice;
|
||||
struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
|
||||
if (NULL == icd_term->GetPhysicalDeviceSparseImageFormatProperties2KHR) {
|
||||
loader_log(icd_term->this_instance, VK_DEBUG_REPORT_ERROR_BIT_EXT, 0,
|
||||
"ICD associated with VkPhysicalDevice does not support "
|
||||
"vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
|
||||
}
|
||||
icd_term->GetPhysicalDeviceSparseImageFormatProperties2KHR(
|
||||
phys_dev_term->phys_dev, pFormatInfo, pPropertyCount, pProperties);
|
||||
}
|
||||
|
||||
// Definitions for the VK_KHR_maintenance1 extension
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL
|
||||
vkTrimCommandPoolKHR(VkDevice device, VkCommandPool commandPool,
|
||||
VkCommandPoolTrimFlagsKHR flags) {
|
||||
const VkLayerDispatchTable *disp = loader_get_dispatch(device);
|
||||
disp->TrimCommandPoolKHR(device, commandPool, flags);
|
||||
}
|
||||
|
||||
// Definitions for the VK_EXT_acquire_xlib_display extension
|
||||
|
||||
#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkAcquireXlibDisplayEXT(
|
||||
VkPhysicalDevice physicalDevice, Display *dpy, VkDisplayKHR display) {
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
return disp->AcquireXlibDisplayEXT(unwrapped_phys_dev, dpy, display);
|
||||
}
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_AcquireXlibDisplayEXT(
|
||||
VkPhysicalDevice physicalDevice, Display *dpy, VkDisplayKHR display) {
|
||||
struct loader_physical_device_term *phys_dev_term =
|
||||
(struct loader_physical_device_term *)physicalDevice;
|
||||
struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
|
||||
if (NULL == icd_term->AcquireXlibDisplayEXT) {
|
||||
loader_log(icd_term->this_instance, VK_DEBUG_REPORT_ERROR_BIT_EXT, 0,
|
||||
"ICD associated with VkPhysicalDevice does not support "
|
||||
"vkAcquireXlibDisplayEXT");
|
||||
}
|
||||
return icd_term->AcquireXlibDisplayEXT(phys_dev_term->phys_dev, dpy,
|
||||
display);
|
||||
}
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL
|
||||
vkGetRandROutputDisplayEXT(VkPhysicalDevice physicalDevice, Display *dpy,
|
||||
RROutput rrOutput, VkDisplayKHR *pDisplay) {
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
return disp->GetRandROutputDisplayEXT(unwrapped_phys_dev, dpy, rrOutput,
|
||||
pDisplay);
|
||||
}
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_GetRandROutputDisplayEXT(
|
||||
VkPhysicalDevice physicalDevice, Display *dpy, RROutput rrOutput,
|
||||
VkDisplayKHR *pDisplay) {
|
||||
struct loader_physical_device_term *phys_dev_term =
|
||||
(struct loader_physical_device_term *)physicalDevice;
|
||||
struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
|
||||
if (NULL == icd_term->GetRandROutputDisplayEXT) {
|
||||
loader_log(icd_term->this_instance, VK_DEBUG_REPORT_ERROR_BIT_EXT, 0,
|
||||
"ICD associated with VkPhysicalDevice does not support "
|
||||
"vkGetRandROutputDisplayEXT");
|
||||
}
|
||||
return icd_term->GetRandROutputDisplayEXT(phys_dev_term->phys_dev, dpy,
|
||||
rrOutput, pDisplay);
|
||||
}
|
||||
#endif /* VK_USE_PLATFORM_XLIB_XRANDR_EXT */
|
||||
|
||||
// Definitions for the VK_EXT_debug_marker extension commands which
|
||||
// need to have a terminator function
|
||||
|
||||
@@ -130,9 +379,96 @@ VKAPI_ATTR VkResult VKAPI_CALL terminator_DebugMarkerSetObjectNameEXT(
|
||||
}
|
||||
}
|
||||
|
||||
// Definitions for the VK_EXT_direct_mode_display extension
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL
|
||||
vkReleaseDisplayEXT(VkPhysicalDevice physicalDevice, VkDisplayKHR display) {
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
return disp->ReleaseDisplayEXT(unwrapped_phys_dev, display);
|
||||
}
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_ReleaseDisplayEXT(
|
||||
VkPhysicalDevice physicalDevice, VkDisplayKHR display) {
|
||||
struct loader_physical_device_term *phys_dev_term =
|
||||
(struct loader_physical_device_term *)physicalDevice;
|
||||
struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
|
||||
if (NULL == icd_term->ReleaseDisplayEXT) {
|
||||
loader_log(icd_term->this_instance, VK_DEBUG_REPORT_ERROR_BIT_EXT, 0,
|
||||
"ICD associated with VkPhysicalDevice does not support "
|
||||
"vkReleaseDisplayEXT");
|
||||
}
|
||||
return icd_term->ReleaseDisplayEXT(phys_dev_term->phys_dev, display);
|
||||
}
|
||||
|
||||
// Definitions for the VK_EXT_display_surface_counter extension
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2EXT(
|
||||
VkPhysicalDevice physicalDevice, VkSurfaceKHR surface,
|
||||
VkSurfaceCapabilities2EXT *pSurfaceCapabilities) {
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
return disp->GetPhysicalDeviceSurfaceCapabilities2EXT(
|
||||
unwrapped_phys_dev, surface, pSurfaceCapabilities);
|
||||
}
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL
|
||||
terminator_GetPhysicalDeviceSurfaceCapabilities2EXT(
|
||||
VkPhysicalDevice physicalDevice, VkSurfaceKHR surface,
|
||||
VkSurfaceCapabilities2EXT *pSurfaceCapabilities) {
|
||||
struct loader_physical_device_term *phys_dev_term =
|
||||
(struct loader_physical_device_term *)physicalDevice;
|
||||
struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
|
||||
if (NULL != icd_term) {
|
||||
if (NULL == icd_term->GetPhysicalDeviceSurfaceCapabilities2EXT) {
|
||||
loader_log(icd_term->this_instance, VK_DEBUG_REPORT_ERROR_BIT_EXT,
|
||||
0,
|
||||
"ICD associated with VkPhysicalDevice does not support "
|
||||
"vkGetPhysicalDeviceSurfaceCapabilities2EXT");
|
||||
}
|
||||
VkIcdSurface *icd_surface = (VkIcdSurface *)(surface);
|
||||
uint8_t icd_index = phys_dev_term->icd_index;
|
||||
if (NULL != icd_surface->real_icd_surfaces) {
|
||||
if (NULL != (void *)icd_surface->real_icd_surfaces[icd_index]) {
|
||||
return icd_term->GetPhysicalDeviceSurfaceCapabilities2EXT(
|
||||
phys_dev_term->phys_dev,
|
||||
icd_surface->real_icd_surfaces[icd_index],
|
||||
pSurfaceCapabilities);
|
||||
}
|
||||
}
|
||||
}
|
||||
return icd_term->GetPhysicalDeviceSurfaceCapabilities2EXT(
|
||||
phys_dev_term->phys_dev, surface, pSurfaceCapabilities);
|
||||
}
|
||||
|
||||
// Definitions for the VK_AMD_draw_indirect_count extension
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountAMD(
|
||||
VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
|
||||
VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
|
||||
uint32_t stride) {
|
||||
const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
|
||||
disp->CmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer,
|
||||
countBufferOffset, maxDrawCount, stride);
|
||||
}
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountAMD(
|
||||
VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
|
||||
VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
|
||||
uint32_t stride) {
|
||||
const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
|
||||
disp->CmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset,
|
||||
countBuffer, countBufferOffset,
|
||||
maxDrawCount, stride);
|
||||
}
|
||||
|
||||
// Definitions for the VK_NV_external_memory_capabilities extension
|
||||
|
||||
LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL
|
||||
VKAPI_ATTR VkResult VKAPI_CALL
|
||||
vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
|
||||
VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type,
|
||||
VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags,
|
||||
@@ -141,7 +477,7 @@ vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
disp = loader_get_instance_dispatch(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
|
||||
return disp->GetPhysicalDeviceExternalImageFormatPropertiesNV(
|
||||
unwrapped_phys_dev, format, type, tiling, usage, flags,
|
||||
@@ -181,27 +517,6 @@ terminator_GetPhysicalDeviceExternalImageFormatPropertiesNV(
|
||||
externalHandleType, pExternalImageFormatProperties);
|
||||
}
|
||||
|
||||
// Definitions for the VK_AMD_draw_indirect_count extension
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountAMD(
|
||||
VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
|
||||
VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
|
||||
uint32_t stride) {
|
||||
const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
|
||||
disp->CmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer,
|
||||
countBufferOffset, maxDrawCount, stride);
|
||||
}
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountAMD(
|
||||
VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset,
|
||||
VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
|
||||
uint32_t stride) {
|
||||
const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
|
||||
disp->CmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset,
|
||||
countBuffer, countBufferOffset,
|
||||
maxDrawCount, stride);
|
||||
}
|
||||
|
||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
||||
|
||||
// Definitions for the VK_NV_external_memory_win32 extension
|
||||
@@ -288,7 +603,7 @@ VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
disp = loader_get_instance_dispatch(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
disp->GetPhysicalDeviceGeneratedCommandsPropertiesNVX(unwrapped_phys_dev,
|
||||
pFeatures, pLimits);
|
||||
}
|
||||
@@ -311,12 +626,94 @@ terminator_GetPhysicalDeviceGeneratedCommandsPropertiesNVX(
|
||||
}
|
||||
}
|
||||
|
||||
// GPA helpers for non-KHR extensions
|
||||
// GPA helpers for extensions
|
||||
|
||||
bool extension_instance_gpa(struct loader_instance *ptr_instance,
|
||||
const char *name, void **addr) {
|
||||
*addr = NULL;
|
||||
|
||||
// Functions for the VK_KHR_get_physical_device_properties2 extension
|
||||
|
||||
if (!strcmp("vkGetPhysicalDeviceFeatures2KHR", name)) {
|
||||
*addr = (ptr_instance->enabled_known_extensions
|
||||
.khr_get_physical_device_properties2 == 1)
|
||||
? (void *)vkGetPhysicalDeviceFeatures2KHR
|
||||
: NULL;
|
||||
return true;
|
||||
}
|
||||
if (!strcmp("vkGetPhysicalDeviceProperties2KHR", name)) {
|
||||
*addr = (ptr_instance->enabled_known_extensions
|
||||
.khr_get_physical_device_properties2 == 1)
|
||||
? (void *)vkGetPhysicalDeviceProperties2KHR
|
||||
: NULL;
|
||||
return true;
|
||||
}
|
||||
if (!strcmp("vkGetPhysicalDeviceFormatProperties2KHR", name)) {
|
||||
*addr = (ptr_instance->enabled_known_extensions
|
||||
.khr_get_physical_device_properties2 == 1)
|
||||
? (void *)vkGetPhysicalDeviceFormatProperties2KHR
|
||||
: NULL;
|
||||
return true;
|
||||
}
|
||||
if (!strcmp("vkGetPhysicalDeviceImageFormatProperties2KHR", name)) {
|
||||
*addr = (ptr_instance->enabled_known_extensions
|
||||
.khr_get_physical_device_properties2 == 1)
|
||||
? (void *)vkGetPhysicalDeviceImageFormatProperties2KHR
|
||||
: NULL;
|
||||
return true;
|
||||
}
|
||||
if (!strcmp("vkGetPhysicalDeviceQueueFamilyProperties2KHR", name)) {
|
||||
*addr = (ptr_instance->enabled_known_extensions
|
||||
.khr_get_physical_device_properties2 == 1)
|
||||
? (void *)vkGetPhysicalDeviceQueueFamilyProperties2KHR
|
||||
: NULL;
|
||||
return true;
|
||||
}
|
||||
if (!strcmp("vkGetPhysicalDeviceMemoryProperties2KHR", name)) {
|
||||
*addr = (ptr_instance->enabled_known_extensions
|
||||
.khr_get_physical_device_properties2 == 1)
|
||||
? (void *)vkGetPhysicalDeviceMemoryProperties2KHR
|
||||
: NULL;
|
||||
return true;
|
||||
}
|
||||
if (!strcmp("vkGetPhysicalDeviceSparseImageFormatProperties2KHR", name)) {
|
||||
*addr = (ptr_instance->enabled_known_extensions
|
||||
.khr_get_physical_device_properties2 == 1)
|
||||
? (void *)vkGetPhysicalDeviceSparseImageFormatProperties2KHR
|
||||
: NULL;
|
||||
return true;
|
||||
}
|
||||
|
||||
// Functions for the VK_KHR_maintenance1 extension
|
||||
|
||||
if (!strcmp("vkTrimCommandPoolKHR", name)) {
|
||||
*addr = (void *)vkTrimCommandPoolKHR;
|
||||
return true;
|
||||
}
|
||||
|
||||
// Functions for the VK_EXT_acquire_xlib_display extension
|
||||
|
||||
#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
|
||||
if (!strcmp("vkAcquireXlibDisplayEXT", name)) {
|
||||
*addr =
|
||||
(ptr_instance->enabled_known_extensions.ext_acquire_xlib_display ==
|
||||
1)
|
||||
? (void *)vkAcquireXlibDisplayEXT
|
||||
: NULL;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!strcmp("vkGetRandROutputDisplayEXT", name)) {
|
||||
*addr =
|
||||
(ptr_instance->enabled_known_extensions.ext_acquire_xlib_display ==
|
||||
1)
|
||||
? (void *)vkGetRandROutputDisplayEXT
|
||||
: NULL;
|
||||
return true;
|
||||
}
|
||||
|
||||
#endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
|
||||
|
||||
// Definitions for the VK_EXT_debug_marker extension commands which
|
||||
// need to have a terminator function. Since these are device
|
||||
// commands, we always need to return a valid value for them.
|
||||
@@ -330,12 +727,23 @@ bool extension_instance_gpa(struct loader_instance *ptr_instance,
|
||||
return true;
|
||||
}
|
||||
|
||||
// Functions for the VK_NV_external_memory_capabilities extension
|
||||
// Functions for the VK_EXT_direct_mode_display extension
|
||||
|
||||
if (!strcmp("vkGetPhysicalDeviceExternalImageFormatPropertiesNV", name)) {
|
||||
if (!strcmp("vkReleaseDisplayEXT", name)) {
|
||||
*addr =
|
||||
(ptr_instance->enabled_known_extensions.ext_direct_mode_display ==
|
||||
1)
|
||||
? (void *)vkReleaseDisplayEXT
|
||||
: NULL;
|
||||
return true;
|
||||
}
|
||||
|
||||
// Functions for the VK_EXT_display_surface_counter extension
|
||||
|
||||
if (!strcmp("vkGetPhysicalDeviceSurfaceCapabilities2EXT", name)) {
|
||||
*addr = (ptr_instance->enabled_known_extensions
|
||||
.nv_external_memory_capabilities == 1)
|
||||
? (void *)vkGetPhysicalDeviceExternalImageFormatPropertiesNV
|
||||
.ext_display_surface_counter == 1)
|
||||
? (void *)vkGetPhysicalDeviceSurfaceCapabilities2EXT
|
||||
: NULL;
|
||||
return true;
|
||||
}
|
||||
@@ -346,16 +754,23 @@ bool extension_instance_gpa(struct loader_instance *ptr_instance,
|
||||
*addr = (void *)vkCmdDrawIndirectCountAMD;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!strcmp("vkCmdDrawIndexedIndirectCountAMD", name)) {
|
||||
*addr = (void *)vkCmdDrawIndexedIndirectCountAMD;
|
||||
return true;
|
||||
}
|
||||
// Functions for the VK_NV_external_memory_capabilities extension
|
||||
|
||||
if (!strcmp("vkGetPhysicalDeviceExternalImageFormatPropertiesNV", name)) {
|
||||
*addr = (ptr_instance->enabled_known_extensions
|
||||
.nv_external_memory_capabilities == 1)
|
||||
? (void *)vkGetPhysicalDeviceExternalImageFormatPropertiesNV
|
||||
: NULL;
|
||||
return true;
|
||||
}
|
||||
|
||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
||||
|
||||
// Functions for the VK_NV_external_memory_win32 extension
|
||||
|
||||
if (!strcmp("vkGetMemoryWin32HandleNV", name)) {
|
||||
*addr = (void *)vkGetMemoryWin32HandleNV;
|
||||
return true;
|
||||
@@ -407,14 +822,29 @@ bool extension_instance_gpa(struct loader_instance *ptr_instance,
|
||||
|
||||
void extensions_create_instance(struct loader_instance *ptr_instance,
|
||||
const VkInstanceCreateInfo *pCreateInfo) {
|
||||
ptr_instance->enabled_known_extensions.nv_external_memory_capabilities = 0;
|
||||
|
||||
for (uint32_t i = 0; i < pCreateInfo->enabledExtensionCount; i++) {
|
||||
if (strcmp(pCreateInfo->ppEnabledExtensionNames[i],
|
||||
VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME) == 0) {
|
||||
if (0 ==
|
||||
strcmp(pCreateInfo->ppEnabledExtensionNames[i],
|
||||
VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME)) {
|
||||
ptr_instance->enabled_known_extensions
|
||||
.khr_get_physical_device_properties2 = 1;
|
||||
#ifdef VK_USE_PLATFORM_XLIB_KHR
|
||||
} else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i],
|
||||
VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME)) {
|
||||
ptr_instance->enabled_known_extensions.ext_acquire_xlib_display = 1;
|
||||
#endif
|
||||
} else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i],
|
||||
VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME)) {
|
||||
ptr_instance->enabled_known_extensions.ext_direct_mode_display = 1;
|
||||
} else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i],
|
||||
VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME)) {
|
||||
ptr_instance->enabled_known_extensions.ext_display_surface_counter =
|
||||
1;
|
||||
} else if (0 ==
|
||||
strcmp(pCreateInfo->ppEnabledExtensionNames[i],
|
||||
VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME)) {
|
||||
ptr_instance->enabled_known_extensions
|
||||
.nv_external_memory_capabilities = 1;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,8 +28,69 @@ bool extension_instance_gpa(struct loader_instance *ptr_instance,
|
||||
void extensions_create_instance(struct loader_instance *ptr_instance,
|
||||
const VkInstanceCreateInfo *pCreateInfo);
|
||||
|
||||
// Definitions for the VK_EXT_debug_marker extension
|
||||
// Instance extension terminators for the VK_KHR_get_physical_device_properties2
|
||||
// extension
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceFeatures2KHR(
|
||||
VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2KHR *pFeatures);
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceProperties2KHR(
|
||||
VkPhysicalDevice physicalDevice,
|
||||
VkPhysicalDeviceProperties2KHR *pProperties);
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceFormatProperties2KHR(
|
||||
VkPhysicalDevice physicalDevice, VkFormat format,
|
||||
VkFormatProperties2KHR *pFormatProperties);
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL
|
||||
terminator_GetPhysicalDeviceImageFormatProperties2KHR(
|
||||
VkPhysicalDevice physicalDevice,
|
||||
const VkPhysicalDeviceImageFormatInfo2KHR *pImageFormatInfo,
|
||||
VkImageFormatProperties2KHR *pImageFormatProperties);
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL
|
||||
terminator_GetPhysicalDeviceQueueFamilyProperties2KHR(
|
||||
VkPhysicalDevice physicalDevice, uint32_t *pQueueFamilyPropertyCount,
|
||||
VkQueueFamilyProperties2KHR *pQueueFamilyProperties);
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceMemoryProperties2KHR(
|
||||
VkPhysicalDevice physicalDevice,
|
||||
VkPhysicalDeviceMemoryProperties2KHR *pMemoryProperties);
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL
|
||||
terminator_GetPhysicalDeviceSparseImageFormatProperties2KHR(
|
||||
VkPhysicalDevice physicalDevice,
|
||||
const VkPhysicalDeviceSparseImageFormatInfo2KHR *pFormatInfo,
|
||||
uint32_t *pPropertyCount, VkSparseImageFormatProperties2KHR *pProperties);
|
||||
|
||||
// Instance extension terminators for the VK_EXT_acquire_xlib_display
|
||||
// extension
|
||||
|
||||
#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
|
||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_AcquireXlibDisplayEXT(
|
||||
VkPhysicalDevice physicalDevice, Display *dpy, VkDisplayKHR display);
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_GetRandROutputDisplayEXT(
|
||||
VkPhysicalDevice physicalDevice, Display *dpy, RROutput rrOutput,
|
||||
VkDisplayKHR *pDisplay);
|
||||
#endif /* VK_USE_PLATFORM_XLIB_XRANDR_EXT */
|
||||
|
||||
// Instance extension terminators for the VK_EXT_direct_mode_display
|
||||
// extension
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_ReleaseDisplayEXT(
|
||||
VkPhysicalDevice physicalDevice, VkDisplayKHR display);
|
||||
|
||||
// Instance extension terminators for the VK_EXT_display_surface_counter
|
||||
// extension
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL
|
||||
terminator_GetPhysicalDeviceSurfaceCapabilities2EXT(
|
||||
VkPhysicalDevice physicalDevice, VkSurfaceKHR surface,
|
||||
VkSurfaceCapabilities2EXT *pSurfaceCapabilities);
|
||||
|
||||
// Device extension terminators for the VK_NV_external_memory_capabilities
|
||||
// extension
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_DebugMarkerSetObjectTagEXT(
|
||||
VkDevice device, VkDebugMarkerObjectTagInfoEXT *pTagInfo);
|
||||
@@ -37,7 +98,8 @@ VKAPI_ATTR VkResult VKAPI_CALL terminator_DebugMarkerSetObjectTagEXT(
|
||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_DebugMarkerSetObjectNameEXT(
|
||||
VkDevice device, VkDebugMarkerObjectNameInfoEXT *pNameInfo);
|
||||
|
||||
// Definitions for the VK_NV_external_memory_capabilities extension
|
||||
// Instance extension terminators for the VK_NV_external_memory_capabilities
|
||||
// extension
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL
|
||||
terminator_GetPhysicalDeviceExternalImageFormatPropertiesNV(
|
||||
|
||||
|
Before Width: | Height: | Size: 17 KiB |
@@ -308,6 +308,11 @@ static inline void *trampolineGetProcAddr(struct loader_instance *inst,
|
||||
if (extension_instance_gpa(inst, funcName, &addr))
|
||||
return addr;
|
||||
|
||||
// Unknown physical device extensions
|
||||
if (loader_phys_dev_ext_gpa(inst, funcName, true, &addr, NULL))
|
||||
return addr;
|
||||
|
||||
// Unknown device extensions
|
||||
addr = loader_dev_ext_gpa(inst, funcName);
|
||||
return addr;
|
||||
}
|
||||
@@ -327,36 +332,6 @@ static inline void *globalGetProcAddr(const char *name) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* These functions require special handling by the loader.
|
||||
* They are not just generic trampoline code entrypoints.
|
||||
* Thus GPA must return loader entrypoint for these instead of first function
|
||||
* in the chain. */
|
||||
static inline void *loader_non_passthrough_gipa(const char *name) {
|
||||
if (!name || name[0] != 'v' || name[1] != 'k')
|
||||
return NULL;
|
||||
|
||||
name += 2;
|
||||
if (!strcmp(name, "CreateInstance"))
|
||||
return (void *)vkCreateInstance;
|
||||
if (!strcmp(name, "DestroyInstance"))
|
||||
return (void *)vkDestroyInstance;
|
||||
if (!strcmp(name, "GetDeviceProcAddr"))
|
||||
return (void *)vkGetDeviceProcAddr;
|
||||
// remove once no longer locks
|
||||
if (!strcmp(name, "EnumeratePhysicalDevices"))
|
||||
return (void *)vkEnumeratePhysicalDevices;
|
||||
if (!strcmp(name, "EnumerateDeviceExtensionProperties"))
|
||||
return (void *)vkEnumerateDeviceExtensionProperties;
|
||||
if (!strcmp(name, "EnumerateDeviceLayerProperties"))
|
||||
return (void *)vkEnumerateDeviceLayerProperties;
|
||||
if (!strcmp(name, "GetInstanceProcAddr"))
|
||||
return (void *)vkGetInstanceProcAddr;
|
||||
if (!strcmp(name, "CreateDevice"))
|
||||
return (void *)vkCreateDevice;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline void *loader_non_passthrough_gdpa(const char *name) {
|
||||
if (!name || name[0] != 'v' || name[1] != 'k')
|
||||
return NULL;
|
||||
|
||||
|
After Width: | Height: | Size: 113 KiB |
|
After Width: | Height: | Size: 118 KiB |
|
After Width: | Height: | Size: 131 KiB |
|
After Width: | Height: | Size: 138 KiB |
|
After Width: | Height: | Size: 90 KiB |
|
After Width: | Height: | Size: 94 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 35 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 39 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 49 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 58 KiB |
|
Before Width: | Height: | Size: 18 KiB |
@@ -52,6 +52,13 @@
|
||||
#define VK_MINOR(version) ((version >> 12) & 0x3ff)
|
||||
#define VK_PATCH(version) (version & 0xfff)
|
||||
|
||||
// This is defined in vk_layer.h, but if there's problems we need to create the define
|
||||
// here.
|
||||
#ifndef MAX_NUM_UNKNOWN_EXTS
|
||||
#define MAX_NUM_UNKNOWN_EXTS 250
|
||||
#endif
|
||||
|
||||
|
||||
enum layer_type {
|
||||
VK_LAYER_TYPE_INSTANCE_EXPLICIT = 0x1,
|
||||
VK_LAYER_TYPE_INSTANCE_IMPLICIT = 0x2,
|
||||
@@ -81,6 +88,11 @@ static const char std_validation_names[7][VK_MAX_EXTENSION_NAME_SIZE] = {
|
||||
"VK_LAYER_LUNARG_core_validation", "VK_LAYER_LUNARG_swapchain",
|
||||
"VK_LAYER_GOOGLE_unique_objects"};
|
||||
|
||||
struct VkStructureHeader {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
};
|
||||
|
||||
// form of all dynamic lists/arrays
|
||||
// only the list element should be changed
|
||||
struct loader_generic_list {
|
||||
@@ -115,13 +127,17 @@ struct loader_name_value {
|
||||
struct loader_layer_functions {
|
||||
char str_gipa[MAX_STRING_SIZE];
|
||||
char str_gdpa[MAX_STRING_SIZE];
|
||||
char str_negotiate_interface[MAX_STRING_SIZE];
|
||||
PFN_vkNegotiateLoaderLayerInterfaceVersion negotiate_layer_interface;
|
||||
PFN_vkGetInstanceProcAddr get_instance_proc_addr;
|
||||
PFN_vkGetDeviceProcAddr get_device_proc_addr;
|
||||
PFN_GetPhysicalDeviceProcAddr get_physical_device_proc_addr;
|
||||
};
|
||||
|
||||
struct loader_layer_properties {
|
||||
VkLayerProperties info;
|
||||
enum layer_type type;
|
||||
uint32_t interface_version; // PFN_vkNegotiateLoaderLayerInterfaceVersion
|
||||
char lib_name[MAX_STRING_SIZE];
|
||||
loader_platform_dl_handle lib_handle;
|
||||
struct loader_layer_functions functions;
|
||||
@@ -143,7 +159,7 @@ struct loader_dispatch_hash_list {
|
||||
uint32_t *index; // index into the dev_ext dispatch table
|
||||
};
|
||||
|
||||
#define MAX_NUM_DEV_EXTS 250
|
||||
|
||||
// loader_dispatch_hash_entry and loader_dev_ext_dispatch_table.dev_ext have
|
||||
// one to one correspondence; one loader_dispatch_hash_entry for one dev_ext
|
||||
// dispatch entry.
|
||||
@@ -155,7 +171,7 @@ struct loader_dispatch_hash_entry {
|
||||
|
||||
typedef void(VKAPI_PTR *PFN_vkDevExt)(VkDevice device);
|
||||
struct loader_dev_ext_dispatch_table {
|
||||
PFN_vkDevExt dev_ext[MAX_NUM_DEV_EXTS];
|
||||
PFN_vkDevExt dev_ext[MAX_NUM_UNKNOWN_EXTS];
|
||||
};
|
||||
|
||||
struct loader_dev_dispatch_table {
|
||||
@@ -199,19 +215,13 @@ struct loader_icd_term {
|
||||
PFN_vkEnumerateDeviceExtensionProperties EnumerateDeviceExtensionProperties;
|
||||
PFN_vkGetPhysicalDeviceSparseImageFormatProperties
|
||||
GetPhysicalDeviceSparseImageFormatProperties;
|
||||
PFN_vkCreateDebugReportCallbackEXT CreateDebugReportCallbackEXT;
|
||||
PFN_vkDestroyDebugReportCallbackEXT DestroyDebugReportCallbackEXT;
|
||||
PFN_vkDebugReportMessageEXT DebugReportMessageEXT;
|
||||
PFN_vkDebugMarkerSetObjectTagEXT DebugMarkerSetObjectTagEXT;
|
||||
PFN_vkDebugMarkerSetObjectNameEXT DebugMarkerSetObjectNameEXT;
|
||||
// WSI extensions
|
||||
PFN_vkGetPhysicalDeviceSurfaceSupportKHR GetPhysicalDeviceSurfaceSupportKHR;
|
||||
PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR
|
||||
GetPhysicalDeviceSurfaceCapabilitiesKHR;
|
||||
PFN_vkGetPhysicalDeviceSurfaceFormatsKHR GetPhysicalDeviceSurfaceFormatsKHR;
|
||||
PFN_vkGetPhysicalDeviceSurfacePresentModesKHR
|
||||
GetPhysicalDeviceSurfacePresentModesKHR;
|
||||
PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV
|
||||
GetPhysicalDeviceExternalImageFormatPropertiesNV;
|
||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
||||
PFN_vkCreateWin32SurfaceKHR CreateWin32SurfaceKHR;
|
||||
PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR
|
||||
@@ -249,12 +259,55 @@ struct loader_icd_term {
|
||||
PFN_vkCreateDisplayPlaneSurfaceKHR CreateDisplayPlaneSurfaceKHR;
|
||||
PFN_vkDestroySurfaceKHR DestroySurfaceKHR;
|
||||
PFN_vkCreateSwapchainKHR CreateSwapchainKHR;
|
||||
PFN_vkCreateSharedSwapchainsKHR CreateSharedSwapchainsKHR;
|
||||
|
||||
// KHR_get_physical_device_properties2
|
||||
PFN_vkGetPhysicalDeviceFeatures2KHR GetPhysicalDeviceFeatures2KHR;
|
||||
PFN_vkGetPhysicalDeviceProperties2KHR GetPhysicalDeviceProperties2KHR;
|
||||
PFN_vkGetPhysicalDeviceFormatProperties2KHR
|
||||
GetPhysicalDeviceFormatProperties2KHR;
|
||||
PFN_vkGetPhysicalDeviceImageFormatProperties2KHR
|
||||
GetPhysicalDeviceImageFormatProperties2KHR;
|
||||
PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR
|
||||
GetPhysicalDeviceQueueFamilyProperties2KHR;
|
||||
PFN_vkGetPhysicalDeviceMemoryProperties2KHR
|
||||
GetPhysicalDeviceMemoryProperties2KHR;
|
||||
PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR
|
||||
GetPhysicalDeviceSparseImageFormatProperties2KHR;
|
||||
|
||||
#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
|
||||
// EXT_acquire_xlib_display
|
||||
PFN_vkAcquireXlibDisplayEXT AcquireXlibDisplayEXT;
|
||||
PFN_vkGetRandROutputDisplayEXT GetRandROutputDisplayEXT;
|
||||
#endif
|
||||
|
||||
// EXT_debug_report
|
||||
PFN_vkCreateDebugReportCallbackEXT CreateDebugReportCallbackEXT;
|
||||
PFN_vkDestroyDebugReportCallbackEXT DestroyDebugReportCallbackEXT;
|
||||
PFN_vkDebugReportMessageEXT DebugReportMessageEXT;
|
||||
|
||||
// EXT_debug_marker (items needing a trampoline/terminator)
|
||||
PFN_vkDebugMarkerSetObjectTagEXT DebugMarkerSetObjectTagEXT;
|
||||
PFN_vkDebugMarkerSetObjectNameEXT DebugMarkerSetObjectNameEXT;
|
||||
|
||||
// EXT_direct_mode_display
|
||||
PFN_vkReleaseDisplayEXT ReleaseDisplayEXT;
|
||||
|
||||
// EXT_display_surface_counter
|
||||
PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT
|
||||
GetPhysicalDeviceSurfaceCapabilities2EXT;
|
||||
|
||||
// NV_external_memory_capabilities
|
||||
PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV
|
||||
GetPhysicalDeviceExternalImageFormatPropertiesNV;
|
||||
|
||||
// NVX_device_generated_commands
|
||||
PFN_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX
|
||||
GetPhysicalDeviceGeneratedCommandsPropertiesNVX;
|
||||
|
||||
struct loader_icd_term *next;
|
||||
|
||||
PFN_PhysDevExt phys_dev_ext[MAX_NUM_UNKNOWN_EXTS];
|
||||
};
|
||||
|
||||
// per ICD library structure
|
||||
@@ -266,15 +319,26 @@ struct loader_icd_tramp_list {
|
||||
|
||||
union loader_instance_extension_enables {
|
||||
struct {
|
||||
uint8_t khr_get_physical_device_properties2 : 1;
|
||||
uint8_t ext_acquire_xlib_display : 1;
|
||||
uint8_t ext_debug_report : 1;
|
||||
uint8_t ext_direct_mode_display : 1;
|
||||
uint8_t ext_display_surface_counter : 1;
|
||||
uint8_t nv_external_memory_capabilities : 1;
|
||||
};
|
||||
uint64_t padding[4];
|
||||
};
|
||||
|
||||
struct loader_instance_dispatch_table {
|
||||
VkLayerInstanceDispatchTable layer_inst_disp; // must be first entry in structure
|
||||
|
||||
// Physical device functions unknown to the loader
|
||||
PFN_PhysDevExt phys_dev_ext[MAX_NUM_UNKNOWN_EXTS];
|
||||
};
|
||||
|
||||
// per instance structure
|
||||
struct loader_instance {
|
||||
VkLayerInstanceDispatchTable *disp; // must be first entry in structure
|
||||
struct loader_instance_dispatch_table *disp; // must be first entry in structure
|
||||
|
||||
uint32_t total_gpu_count;
|
||||
uint32_t phys_dev_count_term;
|
||||
@@ -288,7 +352,8 @@ struct loader_instance {
|
||||
struct loader_icd_term *icd_terms;
|
||||
struct loader_icd_tramp_list icd_tramp_list;
|
||||
|
||||
struct loader_dispatch_hash_entry disp_hash[MAX_NUM_DEV_EXTS];
|
||||
struct loader_dispatch_hash_entry dev_ext_disp_hash[MAX_NUM_UNKNOWN_EXTS];
|
||||
struct loader_dispatch_hash_entry phys_dev_ext_disp_hash[MAX_NUM_UNKNOWN_EXTS];
|
||||
|
||||
struct loader_msg_callback_map_entry *icd_msg_callback_map;
|
||||
|
||||
@@ -344,14 +409,14 @@ struct loader_instance {
|
||||
/* per enumerated PhysicalDevice structure, used to wrap in trampoline code and
|
||||
also same structure used to wrap in terminator code */
|
||||
struct loader_physical_device_tramp {
|
||||
VkLayerInstanceDispatchTable *disp; // must be first entry in structure
|
||||
struct loader_instance_dispatch_table *disp; // must be first entry in structure
|
||||
struct loader_instance *this_instance;
|
||||
VkPhysicalDevice phys_dev; // object from layers/loader terminator
|
||||
};
|
||||
|
||||
/* per enumerated PhysicalDevice structure, used to wrap in terminator code */
|
||||
struct loader_physical_device_term {
|
||||
VkLayerInstanceDispatchTable *disp; // must be first entry in structure
|
||||
struct loader_instance_dispatch_table *disp; // must be first entry in structure
|
||||
struct loader_icd_term *this_icd_term;
|
||||
uint8_t icd_index;
|
||||
VkPhysicalDevice phys_dev; // object from ICD
|
||||
@@ -367,6 +432,7 @@ struct loader_scanned_icd {
|
||||
uint32_t api_version;
|
||||
uint32_t interface_version;
|
||||
PFN_vkGetInstanceProcAddr GetInstanceProcAddr;
|
||||
PFN_GetPhysicalDeviceProcAddr GetPhysicalDeviceProcAddr;
|
||||
PFN_vkCreateInstance CreateInstance;
|
||||
PFN_vkEnumerateInstanceExtensionProperties
|
||||
EnumerateInstanceExtensionProperties;
|
||||
@@ -397,10 +463,15 @@ loader_get_dev_dispatch(const void *obj) {
|
||||
}
|
||||
|
||||
static inline VkLayerInstanceDispatchTable *
|
||||
loader_get_instance_dispatch(const void *obj) {
|
||||
loader_get_instance_layer_dispatch(const void *obj) {
|
||||
return *((VkLayerInstanceDispatchTable **)obj);
|
||||
}
|
||||
|
||||
static inline struct loader_instance_dispatch_table *
|
||||
loader_get_instance_dispatch(const void *obj) {
|
||||
return *((struct loader_instance_dispatch_table **)obj);
|
||||
}
|
||||
|
||||
static inline void loader_init_dispatch(void *obj, const void *data) {
|
||||
#ifdef DEBUG
|
||||
assert(valid_loader_magic_value(obj) &&
|
||||
@@ -537,7 +608,10 @@ void loader_init_dispatch_dev_ext(struct loader_instance *inst,
|
||||
struct loader_device *dev);
|
||||
void *loader_dev_ext_gpa(struct loader_instance *inst, const char *funcName);
|
||||
void *loader_get_dev_ext_trampoline(uint32_t index);
|
||||
void loader_override_terminating_device_proc(struct loader_device *dev);
|
||||
bool loader_phys_dev_ext_gpa(struct loader_instance *inst, const char *funcName,
|
||||
bool perform_checking, void **tramp_addr, void **term_addr);
|
||||
void *loader_get_phys_dev_ext_tramp(uint32_t index);
|
||||
void *loader_get_phys_dev_ext_termin(uint32_t index);
|
||||
struct loader_instance *loader_get_instance(const VkInstance instance);
|
||||
void loader_deactivate_layers(const struct loader_instance *instance,
|
||||
struct loader_device *device,
|
||||
@@ -583,6 +657,7 @@ loader_create_device_chain(const struct loader_physical_device_tramp *pd,
|
||||
const VkAllocationCallbacks *pAllocator,
|
||||
const struct loader_instance *inst,
|
||||
struct loader_device *dev);
|
||||
|
||||
VkResult loader_validate_device_extensions(
|
||||
struct loader_physical_device_tramp *phys_dev,
|
||||
const struct loader_layer_list *activated_device_layers,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//
|
||||
// Copyright (c) 2014-2016 The Khronos Group Inc.
|
||||
// Copyright (c) 2014-2016 Valve Corporation
|
||||
// Copyright (c) 2014-2016 LunarG, Inc.
|
||||
// Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
// Copyright (c) 2014-2017 Valve Corporation
|
||||
// Copyright (c) 2014-2017 LunarG, Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
@@ -86,7 +86,7 @@ BEGIN
|
||||
BEGIN
|
||||
VALUE "FileDescription", VER_FILE_DESCRIPTION_STR
|
||||
VALUE "FileVersion", VER_FILE_VERSION_STR
|
||||
VALUE "LegalCopyright", "Copyright (C) 2015-2016"
|
||||
VALUE "LegalCopyright", "Copyright (C) 2015-2017"
|
||||
VALUE "ProductName", "Vulkan Runtime"
|
||||
VALUE "ProductVersion", VER_FILE_VERSION_STR
|
||||
END
|
||||
|
||||
@@ -0,0 +1,828 @@
|
||||
/*
|
||||
*
|
||||
* Copyright (c) 2016 The Khronos Group Inc.
|
||||
* Copyright (c) 2016 Valve Corporation
|
||||
* Copyright (c) 2016 LunarG, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* Author: Mark Young <marky@lunarg.com>
|
||||
*
|
||||
*/
|
||||
|
||||
// This code is used to enable generic instance extensions which use a physical device
|
||||
// as the first parameter. If the extension is already known by the loader, it will
|
||||
// not use this code, but instead use the more direct route. However, if it is
|
||||
// unknown to the loader, it will use this code. Technically, this is not trampoline
|
||||
// code since we don't want to optimize it out.
|
||||
|
||||
#include "vk_loader_platform.h"
|
||||
#include "loader.h"
|
||||
|
||||
#if defined(__GNUC__) && !defined(__clang__)
|
||||
#pragma GCC optimize(3) // force gcc to use tail-calls
|
||||
#endif
|
||||
|
||||
// Trampoline function macro for unknown physical device extension command.
|
||||
#define PhysDevExtTramp(num) \
|
||||
VKAPI_ATTR void VKAPI_CALL vkPhysDevExtTramp##num( \
|
||||
VkPhysicalDevice physical_device) { \
|
||||
const struct loader_instance_dispatch_table *disp; \
|
||||
disp = loader_get_instance_dispatch(physical_device); \
|
||||
disp->phys_dev_ext[num]( \
|
||||
loader_unwrap_physical_device(physical_device)); \
|
||||
}
|
||||
|
||||
// Terminator function macro for unknown physical device extension command.
|
||||
#define PhysDevExtTermin(num) \
|
||||
VKAPI_ATTR void VKAPI_CALL vkPhysDevExtTermin##num( \
|
||||
VkPhysicalDevice physical_device) { \
|
||||
struct loader_physical_device_term *phys_dev_term = \
|
||||
(struct loader_physical_device_term *)physical_device; \
|
||||
struct loader_icd_term *icd_term = phys_dev_term->this_icd_term; \
|
||||
struct loader_instance *inst = \
|
||||
(struct loader_instance *)icd_term->this_instance; \
|
||||
if (NULL == icd_term->phys_dev_ext[num]) { \
|
||||
loader_log(inst, VK_DEBUG_REPORT_ERROR_BIT_EXT, 0, \
|
||||
"Extension %s not supported for this physical device", \
|
||||
inst->phys_dev_ext_disp_hash[num].func_name); \
|
||||
} \
|
||||
icd_term->phys_dev_ext[num](phys_dev_term->phys_dev); \
|
||||
}
|
||||
|
||||
// Instantiations of the trampoline and terminator
|
||||
PhysDevExtTramp(0) PhysDevExtTermin(0)
|
||||
PhysDevExtTramp(1) PhysDevExtTermin(1)
|
||||
PhysDevExtTramp(2) PhysDevExtTermin(2)
|
||||
PhysDevExtTramp(3) PhysDevExtTermin(3)
|
||||
PhysDevExtTramp(4) PhysDevExtTermin(4)
|
||||
PhysDevExtTramp(5) PhysDevExtTermin(5)
|
||||
PhysDevExtTramp(6) PhysDevExtTermin(6)
|
||||
PhysDevExtTramp(7) PhysDevExtTermin(7)
|
||||
PhysDevExtTramp(8) PhysDevExtTermin(8)
|
||||
PhysDevExtTramp(9) PhysDevExtTermin(9)
|
||||
PhysDevExtTramp(10) PhysDevExtTermin(10)
|
||||
PhysDevExtTramp(11) PhysDevExtTermin(11)
|
||||
PhysDevExtTramp(12) PhysDevExtTermin(12)
|
||||
PhysDevExtTramp(13) PhysDevExtTermin(13)
|
||||
PhysDevExtTramp(14) PhysDevExtTermin(14)
|
||||
PhysDevExtTramp(15) PhysDevExtTermin(15)
|
||||
PhysDevExtTramp(16) PhysDevExtTermin(16)
|
||||
PhysDevExtTramp(17) PhysDevExtTermin(17)
|
||||
PhysDevExtTramp(18) PhysDevExtTermin(18)
|
||||
PhysDevExtTramp(19) PhysDevExtTermin(19)
|
||||
PhysDevExtTramp(20) PhysDevExtTermin(20)
|
||||
PhysDevExtTramp(21) PhysDevExtTermin(21)
|
||||
PhysDevExtTramp(22) PhysDevExtTermin(22)
|
||||
PhysDevExtTramp(23) PhysDevExtTermin(23)
|
||||
PhysDevExtTramp(24) PhysDevExtTermin(24)
|
||||
PhysDevExtTramp(25) PhysDevExtTermin(25)
|
||||
PhysDevExtTramp(26) PhysDevExtTermin(26)
|
||||
PhysDevExtTramp(27) PhysDevExtTermin(27)
|
||||
PhysDevExtTramp(28) PhysDevExtTermin(28)
|
||||
PhysDevExtTramp(29) PhysDevExtTermin(29)
|
||||
PhysDevExtTramp(30) PhysDevExtTermin(30)
|
||||
PhysDevExtTramp(31) PhysDevExtTermin(31)
|
||||
PhysDevExtTramp(32) PhysDevExtTermin(32)
|
||||
PhysDevExtTramp(33) PhysDevExtTermin(33)
|
||||
PhysDevExtTramp(34) PhysDevExtTermin(34)
|
||||
PhysDevExtTramp(35) PhysDevExtTermin(35)
|
||||
PhysDevExtTramp(36) PhysDevExtTermin(36)
|
||||
PhysDevExtTramp(37) PhysDevExtTermin(37)
|
||||
PhysDevExtTramp(38) PhysDevExtTermin(38)
|
||||
PhysDevExtTramp(39) PhysDevExtTermin(39)
|
||||
PhysDevExtTramp(40) PhysDevExtTermin(40)
|
||||
PhysDevExtTramp(41) PhysDevExtTermin(41)
|
||||
PhysDevExtTramp(42) PhysDevExtTermin(42)
|
||||
PhysDevExtTramp(43) PhysDevExtTermin(43)
|
||||
PhysDevExtTramp(44) PhysDevExtTermin(44)
|
||||
PhysDevExtTramp(45) PhysDevExtTermin(45)
|
||||
PhysDevExtTramp(46) PhysDevExtTermin(46)
|
||||
PhysDevExtTramp(47) PhysDevExtTermin(47)
|
||||
PhysDevExtTramp(48) PhysDevExtTermin(48)
|
||||
PhysDevExtTramp(49) PhysDevExtTermin(49)
|
||||
PhysDevExtTramp(50) PhysDevExtTermin(50)
|
||||
PhysDevExtTramp(51) PhysDevExtTermin(51)
|
||||
PhysDevExtTramp(52) PhysDevExtTermin(52)
|
||||
PhysDevExtTramp(53) PhysDevExtTermin(53)
|
||||
PhysDevExtTramp(54) PhysDevExtTermin(54)
|
||||
PhysDevExtTramp(55) PhysDevExtTermin(55)
|
||||
PhysDevExtTramp(56) PhysDevExtTermin(56)
|
||||
PhysDevExtTramp(57) PhysDevExtTermin(57)
|
||||
PhysDevExtTramp(58) PhysDevExtTermin(58)
|
||||
PhysDevExtTramp(59) PhysDevExtTermin(59)
|
||||
PhysDevExtTramp(60) PhysDevExtTermin(60)
|
||||
PhysDevExtTramp(61) PhysDevExtTermin(61)
|
||||
PhysDevExtTramp(62) PhysDevExtTermin(62)
|
||||
PhysDevExtTramp(63) PhysDevExtTermin(63)
|
||||
PhysDevExtTramp(64) PhysDevExtTermin(64)
|
||||
PhysDevExtTramp(65) PhysDevExtTermin(65)
|
||||
PhysDevExtTramp(66) PhysDevExtTermin(66)
|
||||
PhysDevExtTramp(67) PhysDevExtTermin(67)
|
||||
PhysDevExtTramp(68) PhysDevExtTermin(68)
|
||||
PhysDevExtTramp(69) PhysDevExtTermin(69)
|
||||
PhysDevExtTramp(70) PhysDevExtTermin(70)
|
||||
PhysDevExtTramp(71) PhysDevExtTermin(71)
|
||||
PhysDevExtTramp(72) PhysDevExtTermin(72)
|
||||
PhysDevExtTramp(73) PhysDevExtTermin(73)
|
||||
PhysDevExtTramp(74) PhysDevExtTermin(74)
|
||||
PhysDevExtTramp(75) PhysDevExtTermin(75)
|
||||
PhysDevExtTramp(76) PhysDevExtTermin(76)
|
||||
PhysDevExtTramp(77) PhysDevExtTermin(77)
|
||||
PhysDevExtTramp(78) PhysDevExtTermin(78)
|
||||
PhysDevExtTramp(79) PhysDevExtTermin(79)
|
||||
PhysDevExtTramp(80) PhysDevExtTermin(80)
|
||||
PhysDevExtTramp(81) PhysDevExtTermin(81)
|
||||
PhysDevExtTramp(82) PhysDevExtTermin(82)
|
||||
PhysDevExtTramp(83) PhysDevExtTermin(83)
|
||||
PhysDevExtTramp(84) PhysDevExtTermin(84)
|
||||
PhysDevExtTramp(85) PhysDevExtTermin(85)
|
||||
PhysDevExtTramp(86) PhysDevExtTermin(86)
|
||||
PhysDevExtTramp(87) PhysDevExtTermin(87)
|
||||
PhysDevExtTramp(88) PhysDevExtTermin(88)
|
||||
PhysDevExtTramp(89) PhysDevExtTermin(89)
|
||||
PhysDevExtTramp(90) PhysDevExtTermin(90)
|
||||
PhysDevExtTramp(91) PhysDevExtTermin(91)
|
||||
PhysDevExtTramp(92) PhysDevExtTermin(92)
|
||||
PhysDevExtTramp(93) PhysDevExtTermin(93)
|
||||
PhysDevExtTramp(94) PhysDevExtTermin(94)
|
||||
PhysDevExtTramp(95) PhysDevExtTermin(95)
|
||||
PhysDevExtTramp(96) PhysDevExtTermin(96)
|
||||
PhysDevExtTramp(97) PhysDevExtTermin(97)
|
||||
PhysDevExtTramp(98) PhysDevExtTermin(98)
|
||||
PhysDevExtTramp(99) PhysDevExtTermin(99)
|
||||
PhysDevExtTramp(100) PhysDevExtTermin(100)
|
||||
PhysDevExtTramp(101) PhysDevExtTermin(101)
|
||||
PhysDevExtTramp(102) PhysDevExtTermin(102)
|
||||
PhysDevExtTramp(103) PhysDevExtTermin(103)
|
||||
PhysDevExtTramp(104) PhysDevExtTermin(104)
|
||||
PhysDevExtTramp(105) PhysDevExtTermin(105)
|
||||
PhysDevExtTramp(106) PhysDevExtTermin(106)
|
||||
PhysDevExtTramp(107) PhysDevExtTermin(107)
|
||||
PhysDevExtTramp(108) PhysDevExtTermin(108)
|
||||
PhysDevExtTramp(109) PhysDevExtTermin(109)
|
||||
PhysDevExtTramp(110) PhysDevExtTermin(110)
|
||||
PhysDevExtTramp(111) PhysDevExtTermin(111)
|
||||
PhysDevExtTramp(112) PhysDevExtTermin(112)
|
||||
PhysDevExtTramp(113) PhysDevExtTermin(113)
|
||||
PhysDevExtTramp(114) PhysDevExtTermin(114)
|
||||
PhysDevExtTramp(115) PhysDevExtTermin(115)
|
||||
PhysDevExtTramp(116) PhysDevExtTermin(116)
|
||||
PhysDevExtTramp(117) PhysDevExtTermin(117)
|
||||
PhysDevExtTramp(118) PhysDevExtTermin(118)
|
||||
PhysDevExtTramp(119) PhysDevExtTermin(119)
|
||||
PhysDevExtTramp(120) PhysDevExtTermin(120)
|
||||
PhysDevExtTramp(121) PhysDevExtTermin(121)
|
||||
PhysDevExtTramp(122) PhysDevExtTermin(122)
|
||||
PhysDevExtTramp(123) PhysDevExtTermin(123)
|
||||
PhysDevExtTramp(124) PhysDevExtTermin(124)
|
||||
PhysDevExtTramp(125) PhysDevExtTermin(125)
|
||||
PhysDevExtTramp(126) PhysDevExtTermin(126)
|
||||
PhysDevExtTramp(127) PhysDevExtTermin(127)
|
||||
PhysDevExtTramp(128) PhysDevExtTermin(128)
|
||||
PhysDevExtTramp(129) PhysDevExtTermin(129)
|
||||
PhysDevExtTramp(130) PhysDevExtTermin(130)
|
||||
PhysDevExtTramp(131) PhysDevExtTermin(131)
|
||||
PhysDevExtTramp(132) PhysDevExtTermin(132)
|
||||
PhysDevExtTramp(133) PhysDevExtTermin(133)
|
||||
PhysDevExtTramp(134) PhysDevExtTermin(134)
|
||||
PhysDevExtTramp(135) PhysDevExtTermin(135)
|
||||
PhysDevExtTramp(136) PhysDevExtTermin(136)
|
||||
PhysDevExtTramp(137) PhysDevExtTermin(137)
|
||||
PhysDevExtTramp(138) PhysDevExtTermin(138)
|
||||
PhysDevExtTramp(139) PhysDevExtTermin(139)
|
||||
PhysDevExtTramp(140) PhysDevExtTermin(140)
|
||||
PhysDevExtTramp(141) PhysDevExtTermin(141)
|
||||
PhysDevExtTramp(142) PhysDevExtTermin(142)
|
||||
PhysDevExtTramp(143) PhysDevExtTermin(143)
|
||||
PhysDevExtTramp(144) PhysDevExtTermin(144)
|
||||
PhysDevExtTramp(145) PhysDevExtTermin(145)
|
||||
PhysDevExtTramp(146) PhysDevExtTermin(146)
|
||||
PhysDevExtTramp(147) PhysDevExtTermin(147)
|
||||
PhysDevExtTramp(148) PhysDevExtTermin(148)
|
||||
PhysDevExtTramp(149) PhysDevExtTermin(149)
|
||||
PhysDevExtTramp(150) PhysDevExtTermin(150)
|
||||
PhysDevExtTramp(151) PhysDevExtTermin(151)
|
||||
PhysDevExtTramp(152) PhysDevExtTermin(152)
|
||||
PhysDevExtTramp(153) PhysDevExtTermin(153)
|
||||
PhysDevExtTramp(154) PhysDevExtTermin(154)
|
||||
PhysDevExtTramp(155) PhysDevExtTermin(155)
|
||||
PhysDevExtTramp(156) PhysDevExtTermin(156)
|
||||
PhysDevExtTramp(157) PhysDevExtTermin(157)
|
||||
PhysDevExtTramp(158) PhysDevExtTermin(158)
|
||||
PhysDevExtTramp(159) PhysDevExtTermin(159)
|
||||
PhysDevExtTramp(160) PhysDevExtTermin(160)
|
||||
PhysDevExtTramp(161) PhysDevExtTermin(161)
|
||||
PhysDevExtTramp(162) PhysDevExtTermin(162)
|
||||
PhysDevExtTramp(163) PhysDevExtTermin(163)
|
||||
PhysDevExtTramp(164) PhysDevExtTermin(164)
|
||||
PhysDevExtTramp(165) PhysDevExtTermin(165)
|
||||
PhysDevExtTramp(166) PhysDevExtTermin(166)
|
||||
PhysDevExtTramp(167) PhysDevExtTermin(167)
|
||||
PhysDevExtTramp(168) PhysDevExtTermin(168)
|
||||
PhysDevExtTramp(169) PhysDevExtTermin(169)
|
||||
PhysDevExtTramp(170) PhysDevExtTermin(170)
|
||||
PhysDevExtTramp(171) PhysDevExtTermin(171)
|
||||
PhysDevExtTramp(172) PhysDevExtTermin(172)
|
||||
PhysDevExtTramp(173) PhysDevExtTermin(173)
|
||||
PhysDevExtTramp(174) PhysDevExtTermin(174)
|
||||
PhysDevExtTramp(175) PhysDevExtTermin(175)
|
||||
PhysDevExtTramp(176) PhysDevExtTermin(176)
|
||||
PhysDevExtTramp(177) PhysDevExtTermin(177)
|
||||
PhysDevExtTramp(178) PhysDevExtTermin(178)
|
||||
PhysDevExtTramp(179) PhysDevExtTermin(179)
|
||||
PhysDevExtTramp(180) PhysDevExtTermin(180)
|
||||
PhysDevExtTramp(181) PhysDevExtTermin(181)
|
||||
PhysDevExtTramp(182) PhysDevExtTermin(182)
|
||||
PhysDevExtTramp(183) PhysDevExtTermin(183)
|
||||
PhysDevExtTramp(184) PhysDevExtTermin(184)
|
||||
PhysDevExtTramp(185) PhysDevExtTermin(185)
|
||||
PhysDevExtTramp(186) PhysDevExtTermin(186)
|
||||
PhysDevExtTramp(187) PhysDevExtTermin(187)
|
||||
PhysDevExtTramp(188) PhysDevExtTermin(188)
|
||||
PhysDevExtTramp(189) PhysDevExtTermin(189)
|
||||
PhysDevExtTramp(190) PhysDevExtTermin(190)
|
||||
PhysDevExtTramp(191) PhysDevExtTermin(191)
|
||||
PhysDevExtTramp(192) PhysDevExtTermin(192)
|
||||
PhysDevExtTramp(193) PhysDevExtTermin(193)
|
||||
PhysDevExtTramp(194) PhysDevExtTermin(194)
|
||||
PhysDevExtTramp(195) PhysDevExtTermin(195)
|
||||
PhysDevExtTramp(196) PhysDevExtTermin(196)
|
||||
PhysDevExtTramp(197) PhysDevExtTermin(197)
|
||||
PhysDevExtTramp(198) PhysDevExtTermin(198)
|
||||
PhysDevExtTramp(199) PhysDevExtTermin(199)
|
||||
PhysDevExtTramp(200) PhysDevExtTermin(200)
|
||||
PhysDevExtTramp(201) PhysDevExtTermin(201)
|
||||
PhysDevExtTramp(202) PhysDevExtTermin(202)
|
||||
PhysDevExtTramp(203) PhysDevExtTermin(203)
|
||||
PhysDevExtTramp(204) PhysDevExtTermin(204)
|
||||
PhysDevExtTramp(205) PhysDevExtTermin(205)
|
||||
PhysDevExtTramp(206) PhysDevExtTermin(206)
|
||||
PhysDevExtTramp(207) PhysDevExtTermin(207)
|
||||
PhysDevExtTramp(208) PhysDevExtTermin(208)
|
||||
PhysDevExtTramp(209) PhysDevExtTermin(209)
|
||||
PhysDevExtTramp(210) PhysDevExtTermin(210)
|
||||
PhysDevExtTramp(211) PhysDevExtTermin(211)
|
||||
PhysDevExtTramp(212) PhysDevExtTermin(212)
|
||||
PhysDevExtTramp(213) PhysDevExtTermin(213)
|
||||
PhysDevExtTramp(214) PhysDevExtTermin(214)
|
||||
PhysDevExtTramp(215) PhysDevExtTermin(215)
|
||||
PhysDevExtTramp(216) PhysDevExtTermin(216)
|
||||
PhysDevExtTramp(217) PhysDevExtTermin(217)
|
||||
PhysDevExtTramp(218) PhysDevExtTermin(218)
|
||||
PhysDevExtTramp(219) PhysDevExtTermin(219)
|
||||
PhysDevExtTramp(220) PhysDevExtTermin(220)
|
||||
PhysDevExtTramp(221) PhysDevExtTermin(221)
|
||||
PhysDevExtTramp(222) PhysDevExtTermin(222)
|
||||
PhysDevExtTramp(223) PhysDevExtTermin(223)
|
||||
PhysDevExtTramp(224) PhysDevExtTermin(224)
|
||||
PhysDevExtTramp(225) PhysDevExtTermin(225)
|
||||
PhysDevExtTramp(226) PhysDevExtTermin(226)
|
||||
PhysDevExtTramp(227) PhysDevExtTermin(227)
|
||||
PhysDevExtTramp(228) PhysDevExtTermin(228)
|
||||
PhysDevExtTramp(229) PhysDevExtTermin(229)
|
||||
PhysDevExtTramp(230) PhysDevExtTermin(230)
|
||||
PhysDevExtTramp(231) PhysDevExtTermin(231)
|
||||
PhysDevExtTramp(232) PhysDevExtTermin(232)
|
||||
PhysDevExtTramp(233) PhysDevExtTermin(233)
|
||||
PhysDevExtTramp(234) PhysDevExtTermin(234)
|
||||
PhysDevExtTramp(235) PhysDevExtTermin(235)
|
||||
PhysDevExtTramp(236) PhysDevExtTermin(236)
|
||||
PhysDevExtTramp(237) PhysDevExtTermin(237)
|
||||
PhysDevExtTramp(238) PhysDevExtTermin(238)
|
||||
PhysDevExtTramp(239) PhysDevExtTermin(239)
|
||||
PhysDevExtTramp(240) PhysDevExtTermin(240)
|
||||
PhysDevExtTramp(241) PhysDevExtTermin(241)
|
||||
PhysDevExtTramp(242) PhysDevExtTermin(242)
|
||||
PhysDevExtTramp(243) PhysDevExtTermin(243)
|
||||
PhysDevExtTramp(244) PhysDevExtTermin(244)
|
||||
PhysDevExtTramp(245) PhysDevExtTermin(245)
|
||||
PhysDevExtTramp(246) PhysDevExtTermin(246)
|
||||
PhysDevExtTramp(247) PhysDevExtTermin(247)
|
||||
PhysDevExtTramp(248) PhysDevExtTermin(248)
|
||||
PhysDevExtTramp(249) PhysDevExtTermin(249)
|
||||
|
||||
|
||||
void *loader_get_phys_dev_ext_tramp(uint32_t index) {
|
||||
switch (index) {
|
||||
#define TRAMP_CASE_HANDLE(num) case num: return vkPhysDevExtTramp##num
|
||||
TRAMP_CASE_HANDLE(0);
|
||||
TRAMP_CASE_HANDLE(1);
|
||||
TRAMP_CASE_HANDLE(2);
|
||||
TRAMP_CASE_HANDLE(3);
|
||||
TRAMP_CASE_HANDLE(4);
|
||||
TRAMP_CASE_HANDLE(5);
|
||||
TRAMP_CASE_HANDLE(6);
|
||||
TRAMP_CASE_HANDLE(7);
|
||||
TRAMP_CASE_HANDLE(8);
|
||||
TRAMP_CASE_HANDLE(9);
|
||||
TRAMP_CASE_HANDLE(10);
|
||||
TRAMP_CASE_HANDLE(11);
|
||||
TRAMP_CASE_HANDLE(12);
|
||||
TRAMP_CASE_HANDLE(13);
|
||||
TRAMP_CASE_HANDLE(14);
|
||||
TRAMP_CASE_HANDLE(15);
|
||||
TRAMP_CASE_HANDLE(16);
|
||||
TRAMP_CASE_HANDLE(17);
|
||||
TRAMP_CASE_HANDLE(18);
|
||||
TRAMP_CASE_HANDLE(19);
|
||||
TRAMP_CASE_HANDLE(20);
|
||||
TRAMP_CASE_HANDLE(21);
|
||||
TRAMP_CASE_HANDLE(22);
|
||||
TRAMP_CASE_HANDLE(23);
|
||||
TRAMP_CASE_HANDLE(24);
|
||||
TRAMP_CASE_HANDLE(25);
|
||||
TRAMP_CASE_HANDLE(26);
|
||||
TRAMP_CASE_HANDLE(27);
|
||||
TRAMP_CASE_HANDLE(28);
|
||||
TRAMP_CASE_HANDLE(29);
|
||||
TRAMP_CASE_HANDLE(30);
|
||||
TRAMP_CASE_HANDLE(31);
|
||||
TRAMP_CASE_HANDLE(32);
|
||||
TRAMP_CASE_HANDLE(33);
|
||||
TRAMP_CASE_HANDLE(34);
|
||||
TRAMP_CASE_HANDLE(35);
|
||||
TRAMP_CASE_HANDLE(36);
|
||||
TRAMP_CASE_HANDLE(37);
|
||||
TRAMP_CASE_HANDLE(38);
|
||||
TRAMP_CASE_HANDLE(39);
|
||||
TRAMP_CASE_HANDLE(40);
|
||||
TRAMP_CASE_HANDLE(41);
|
||||
TRAMP_CASE_HANDLE(42);
|
||||
TRAMP_CASE_HANDLE(43);
|
||||
TRAMP_CASE_HANDLE(44);
|
||||
TRAMP_CASE_HANDLE(45);
|
||||
TRAMP_CASE_HANDLE(46);
|
||||
TRAMP_CASE_HANDLE(47);
|
||||
TRAMP_CASE_HANDLE(48);
|
||||
TRAMP_CASE_HANDLE(49);
|
||||
TRAMP_CASE_HANDLE(50);
|
||||
TRAMP_CASE_HANDLE(51);
|
||||
TRAMP_CASE_HANDLE(52);
|
||||
TRAMP_CASE_HANDLE(53);
|
||||
TRAMP_CASE_HANDLE(54);
|
||||
TRAMP_CASE_HANDLE(55);
|
||||
TRAMP_CASE_HANDLE(56);
|
||||
TRAMP_CASE_HANDLE(57);
|
||||
TRAMP_CASE_HANDLE(58);
|
||||
TRAMP_CASE_HANDLE(59);
|
||||
TRAMP_CASE_HANDLE(60);
|
||||
TRAMP_CASE_HANDLE(61);
|
||||
TRAMP_CASE_HANDLE(62);
|
||||
TRAMP_CASE_HANDLE(63);
|
||||
TRAMP_CASE_HANDLE(64);
|
||||
TRAMP_CASE_HANDLE(65);
|
||||
TRAMP_CASE_HANDLE(66);
|
||||
TRAMP_CASE_HANDLE(67);
|
||||
TRAMP_CASE_HANDLE(68);
|
||||
TRAMP_CASE_HANDLE(69);
|
||||
TRAMP_CASE_HANDLE(70);
|
||||
TRAMP_CASE_HANDLE(71);
|
||||
TRAMP_CASE_HANDLE(72);
|
||||
TRAMP_CASE_HANDLE(73);
|
||||
TRAMP_CASE_HANDLE(74);
|
||||
TRAMP_CASE_HANDLE(75);
|
||||
TRAMP_CASE_HANDLE(76);
|
||||
TRAMP_CASE_HANDLE(77);
|
||||
TRAMP_CASE_HANDLE(78);
|
||||
TRAMP_CASE_HANDLE(79);
|
||||
TRAMP_CASE_HANDLE(80);
|
||||
TRAMP_CASE_HANDLE(81);
|
||||
TRAMP_CASE_HANDLE(82);
|
||||
TRAMP_CASE_HANDLE(83);
|
||||
TRAMP_CASE_HANDLE(84);
|
||||
TRAMP_CASE_HANDLE(85);
|
||||
TRAMP_CASE_HANDLE(86);
|
||||
TRAMP_CASE_HANDLE(87);
|
||||
TRAMP_CASE_HANDLE(88);
|
||||
TRAMP_CASE_HANDLE(89);
|
||||
TRAMP_CASE_HANDLE(90);
|
||||
TRAMP_CASE_HANDLE(91);
|
||||
TRAMP_CASE_HANDLE(92);
|
||||
TRAMP_CASE_HANDLE(93);
|
||||
TRAMP_CASE_HANDLE(94);
|
||||
TRAMP_CASE_HANDLE(95);
|
||||
TRAMP_CASE_HANDLE(96);
|
||||
TRAMP_CASE_HANDLE(97);
|
||||
TRAMP_CASE_HANDLE(98);
|
||||
TRAMP_CASE_HANDLE(99);
|
||||
TRAMP_CASE_HANDLE(100);
|
||||
TRAMP_CASE_HANDLE(101);
|
||||
TRAMP_CASE_HANDLE(102);
|
||||
TRAMP_CASE_HANDLE(103);
|
||||
TRAMP_CASE_HANDLE(104);
|
||||
TRAMP_CASE_HANDLE(105);
|
||||
TRAMP_CASE_HANDLE(106);
|
||||
TRAMP_CASE_HANDLE(107);
|
||||
TRAMP_CASE_HANDLE(108);
|
||||
TRAMP_CASE_HANDLE(109);
|
||||
TRAMP_CASE_HANDLE(110);
|
||||
TRAMP_CASE_HANDLE(111);
|
||||
TRAMP_CASE_HANDLE(112);
|
||||
TRAMP_CASE_HANDLE(113);
|
||||
TRAMP_CASE_HANDLE(114);
|
||||
TRAMP_CASE_HANDLE(115);
|
||||
TRAMP_CASE_HANDLE(116);
|
||||
TRAMP_CASE_HANDLE(117);
|
||||
TRAMP_CASE_HANDLE(118);
|
||||
TRAMP_CASE_HANDLE(119);
|
||||
TRAMP_CASE_HANDLE(120);
|
||||
TRAMP_CASE_HANDLE(121);
|
||||
TRAMP_CASE_HANDLE(122);
|
||||
TRAMP_CASE_HANDLE(123);
|
||||
TRAMP_CASE_HANDLE(124);
|
||||
TRAMP_CASE_HANDLE(125);
|
||||
TRAMP_CASE_HANDLE(126);
|
||||
TRAMP_CASE_HANDLE(127);
|
||||
TRAMP_CASE_HANDLE(128);
|
||||
TRAMP_CASE_HANDLE(129);
|
||||
TRAMP_CASE_HANDLE(130);
|
||||
TRAMP_CASE_HANDLE(131);
|
||||
TRAMP_CASE_HANDLE(132);
|
||||
TRAMP_CASE_HANDLE(133);
|
||||
TRAMP_CASE_HANDLE(134);
|
||||
TRAMP_CASE_HANDLE(135);
|
||||
TRAMP_CASE_HANDLE(136);
|
||||
TRAMP_CASE_HANDLE(137);
|
||||
TRAMP_CASE_HANDLE(138);
|
||||
TRAMP_CASE_HANDLE(139);
|
||||
TRAMP_CASE_HANDLE(140);
|
||||
TRAMP_CASE_HANDLE(141);
|
||||
TRAMP_CASE_HANDLE(142);
|
||||
TRAMP_CASE_HANDLE(143);
|
||||
TRAMP_CASE_HANDLE(144);
|
||||
TRAMP_CASE_HANDLE(145);
|
||||
TRAMP_CASE_HANDLE(146);
|
||||
TRAMP_CASE_HANDLE(147);
|
||||
TRAMP_CASE_HANDLE(148);
|
||||
TRAMP_CASE_HANDLE(149);
|
||||
TRAMP_CASE_HANDLE(150);
|
||||
TRAMP_CASE_HANDLE(151);
|
||||
TRAMP_CASE_HANDLE(152);
|
||||
TRAMP_CASE_HANDLE(153);
|
||||
TRAMP_CASE_HANDLE(154);
|
||||
TRAMP_CASE_HANDLE(155);
|
||||
TRAMP_CASE_HANDLE(156);
|
||||
TRAMP_CASE_HANDLE(157);
|
||||
TRAMP_CASE_HANDLE(158);
|
||||
TRAMP_CASE_HANDLE(159);
|
||||
TRAMP_CASE_HANDLE(160);
|
||||
TRAMP_CASE_HANDLE(161);
|
||||
TRAMP_CASE_HANDLE(162);
|
||||
TRAMP_CASE_HANDLE(163);
|
||||
TRAMP_CASE_HANDLE(164);
|
||||
TRAMP_CASE_HANDLE(165);
|
||||
TRAMP_CASE_HANDLE(166);
|
||||
TRAMP_CASE_HANDLE(167);
|
||||
TRAMP_CASE_HANDLE(168);
|
||||
TRAMP_CASE_HANDLE(169);
|
||||
TRAMP_CASE_HANDLE(170);
|
||||
TRAMP_CASE_HANDLE(171);
|
||||
TRAMP_CASE_HANDLE(172);
|
||||
TRAMP_CASE_HANDLE(173);
|
||||
TRAMP_CASE_HANDLE(174);
|
||||
TRAMP_CASE_HANDLE(175);
|
||||
TRAMP_CASE_HANDLE(176);
|
||||
TRAMP_CASE_HANDLE(177);
|
||||
TRAMP_CASE_HANDLE(178);
|
||||
TRAMP_CASE_HANDLE(179);
|
||||
TRAMP_CASE_HANDLE(180);
|
||||
TRAMP_CASE_HANDLE(181);
|
||||
TRAMP_CASE_HANDLE(182);
|
||||
TRAMP_CASE_HANDLE(183);
|
||||
TRAMP_CASE_HANDLE(184);
|
||||
TRAMP_CASE_HANDLE(185);
|
||||
TRAMP_CASE_HANDLE(186);
|
||||
TRAMP_CASE_HANDLE(187);
|
||||
TRAMP_CASE_HANDLE(188);
|
||||
TRAMP_CASE_HANDLE(189);
|
||||
TRAMP_CASE_HANDLE(190);
|
||||
TRAMP_CASE_HANDLE(191);
|
||||
TRAMP_CASE_HANDLE(192);
|
||||
TRAMP_CASE_HANDLE(193);
|
||||
TRAMP_CASE_HANDLE(194);
|
||||
TRAMP_CASE_HANDLE(195);
|
||||
TRAMP_CASE_HANDLE(196);
|
||||
TRAMP_CASE_HANDLE(197);
|
||||
TRAMP_CASE_HANDLE(198);
|
||||
TRAMP_CASE_HANDLE(199);
|
||||
TRAMP_CASE_HANDLE(200);
|
||||
TRAMP_CASE_HANDLE(201);
|
||||
TRAMP_CASE_HANDLE(202);
|
||||
TRAMP_CASE_HANDLE(203);
|
||||
TRAMP_CASE_HANDLE(204);
|
||||
TRAMP_CASE_HANDLE(205);
|
||||
TRAMP_CASE_HANDLE(206);
|
||||
TRAMP_CASE_HANDLE(207);
|
||||
TRAMP_CASE_HANDLE(208);
|
||||
TRAMP_CASE_HANDLE(209);
|
||||
TRAMP_CASE_HANDLE(210);
|
||||
TRAMP_CASE_HANDLE(211);
|
||||
TRAMP_CASE_HANDLE(212);
|
||||
TRAMP_CASE_HANDLE(213);
|
||||
TRAMP_CASE_HANDLE(214);
|
||||
TRAMP_CASE_HANDLE(215);
|
||||
TRAMP_CASE_HANDLE(216);
|
||||
TRAMP_CASE_HANDLE(217);
|
||||
TRAMP_CASE_HANDLE(218);
|
||||
TRAMP_CASE_HANDLE(219);
|
||||
TRAMP_CASE_HANDLE(220);
|
||||
TRAMP_CASE_HANDLE(221);
|
||||
TRAMP_CASE_HANDLE(222);
|
||||
TRAMP_CASE_HANDLE(223);
|
||||
TRAMP_CASE_HANDLE(224);
|
||||
TRAMP_CASE_HANDLE(225);
|
||||
TRAMP_CASE_HANDLE(226);
|
||||
TRAMP_CASE_HANDLE(227);
|
||||
TRAMP_CASE_HANDLE(228);
|
||||
TRAMP_CASE_HANDLE(229);
|
||||
TRAMP_CASE_HANDLE(230);
|
||||
TRAMP_CASE_HANDLE(231);
|
||||
TRAMP_CASE_HANDLE(232);
|
||||
TRAMP_CASE_HANDLE(233);
|
||||
TRAMP_CASE_HANDLE(234);
|
||||
TRAMP_CASE_HANDLE(235);
|
||||
TRAMP_CASE_HANDLE(236);
|
||||
TRAMP_CASE_HANDLE(237);
|
||||
TRAMP_CASE_HANDLE(238);
|
||||
TRAMP_CASE_HANDLE(239);
|
||||
TRAMP_CASE_HANDLE(240);
|
||||
TRAMP_CASE_HANDLE(241);
|
||||
TRAMP_CASE_HANDLE(242);
|
||||
TRAMP_CASE_HANDLE(243);
|
||||
TRAMP_CASE_HANDLE(244);
|
||||
TRAMP_CASE_HANDLE(245);
|
||||
TRAMP_CASE_HANDLE(246);
|
||||
TRAMP_CASE_HANDLE(247);
|
||||
TRAMP_CASE_HANDLE(248);
|
||||
TRAMP_CASE_HANDLE(249);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void *loader_get_phys_dev_ext_termin(uint32_t index) {
|
||||
switch (index) {
|
||||
#define TERM_CASE_HANDLE(num) case num: return vkPhysDevExtTermin##num
|
||||
TERM_CASE_HANDLE(0);
|
||||
TERM_CASE_HANDLE(1);
|
||||
TERM_CASE_HANDLE(2);
|
||||
TERM_CASE_HANDLE(3);
|
||||
TERM_CASE_HANDLE(4);
|
||||
TERM_CASE_HANDLE(5);
|
||||
TERM_CASE_HANDLE(6);
|
||||
TERM_CASE_HANDLE(7);
|
||||
TERM_CASE_HANDLE(8);
|
||||
TERM_CASE_HANDLE(9);
|
||||
TERM_CASE_HANDLE(10);
|
||||
TERM_CASE_HANDLE(11);
|
||||
TERM_CASE_HANDLE(12);
|
||||
TERM_CASE_HANDLE(13);
|
||||
TERM_CASE_HANDLE(14);
|
||||
TERM_CASE_HANDLE(15);
|
||||
TERM_CASE_HANDLE(16);
|
||||
TERM_CASE_HANDLE(17);
|
||||
TERM_CASE_HANDLE(18);
|
||||
TERM_CASE_HANDLE(19);
|
||||
TERM_CASE_HANDLE(20);
|
||||
TERM_CASE_HANDLE(21);
|
||||
TERM_CASE_HANDLE(22);
|
||||
TERM_CASE_HANDLE(23);
|
||||
TERM_CASE_HANDLE(24);
|
||||
TERM_CASE_HANDLE(25);
|
||||
TERM_CASE_HANDLE(26);
|
||||
TERM_CASE_HANDLE(27);
|
||||
TERM_CASE_HANDLE(28);
|
||||
TERM_CASE_HANDLE(29);
|
||||
TERM_CASE_HANDLE(30);
|
||||
TERM_CASE_HANDLE(31);
|
||||
TERM_CASE_HANDLE(32);
|
||||
TERM_CASE_HANDLE(33);
|
||||
TERM_CASE_HANDLE(34);
|
||||
TERM_CASE_HANDLE(35);
|
||||
TERM_CASE_HANDLE(36);
|
||||
TERM_CASE_HANDLE(37);
|
||||
TERM_CASE_HANDLE(38);
|
||||
TERM_CASE_HANDLE(39);
|
||||
TERM_CASE_HANDLE(40);
|
||||
TERM_CASE_HANDLE(41);
|
||||
TERM_CASE_HANDLE(42);
|
||||
TERM_CASE_HANDLE(43);
|
||||
TERM_CASE_HANDLE(44);
|
||||
TERM_CASE_HANDLE(45);
|
||||
TERM_CASE_HANDLE(46);
|
||||
TERM_CASE_HANDLE(47);
|
||||
TERM_CASE_HANDLE(48);
|
||||
TERM_CASE_HANDLE(49);
|
||||
TERM_CASE_HANDLE(50);
|
||||
TERM_CASE_HANDLE(51);
|
||||
TERM_CASE_HANDLE(52);
|
||||
TERM_CASE_HANDLE(53);
|
||||
TERM_CASE_HANDLE(54);
|
||||
TERM_CASE_HANDLE(55);
|
||||
TERM_CASE_HANDLE(56);
|
||||
TERM_CASE_HANDLE(57);
|
||||
TERM_CASE_HANDLE(58);
|
||||
TERM_CASE_HANDLE(59);
|
||||
TERM_CASE_HANDLE(60);
|
||||
TERM_CASE_HANDLE(61);
|
||||
TERM_CASE_HANDLE(62);
|
||||
TERM_CASE_HANDLE(63);
|
||||
TERM_CASE_HANDLE(64);
|
||||
TERM_CASE_HANDLE(65);
|
||||
TERM_CASE_HANDLE(66);
|
||||
TERM_CASE_HANDLE(67);
|
||||
TERM_CASE_HANDLE(68);
|
||||
TERM_CASE_HANDLE(69);
|
||||
TERM_CASE_HANDLE(70);
|
||||
TERM_CASE_HANDLE(71);
|
||||
TERM_CASE_HANDLE(72);
|
||||
TERM_CASE_HANDLE(73);
|
||||
TERM_CASE_HANDLE(74);
|
||||
TERM_CASE_HANDLE(75);
|
||||
TERM_CASE_HANDLE(76);
|
||||
TERM_CASE_HANDLE(77);
|
||||
TERM_CASE_HANDLE(78);
|
||||
TERM_CASE_HANDLE(79);
|
||||
TERM_CASE_HANDLE(80);
|
||||
TERM_CASE_HANDLE(81);
|
||||
TERM_CASE_HANDLE(82);
|
||||
TERM_CASE_HANDLE(83);
|
||||
TERM_CASE_HANDLE(84);
|
||||
TERM_CASE_HANDLE(85);
|
||||
TERM_CASE_HANDLE(86);
|
||||
TERM_CASE_HANDLE(87);
|
||||
TERM_CASE_HANDLE(88);
|
||||
TERM_CASE_HANDLE(89);
|
||||
TERM_CASE_HANDLE(90);
|
||||
TERM_CASE_HANDLE(91);
|
||||
TERM_CASE_HANDLE(92);
|
||||
TERM_CASE_HANDLE(93);
|
||||
TERM_CASE_HANDLE(94);
|
||||
TERM_CASE_HANDLE(95);
|
||||
TERM_CASE_HANDLE(96);
|
||||
TERM_CASE_HANDLE(97);
|
||||
TERM_CASE_HANDLE(98);
|
||||
TERM_CASE_HANDLE(99);
|
||||
TERM_CASE_HANDLE(100);
|
||||
TERM_CASE_HANDLE(101);
|
||||
TERM_CASE_HANDLE(102);
|
||||
TERM_CASE_HANDLE(103);
|
||||
TERM_CASE_HANDLE(104);
|
||||
TERM_CASE_HANDLE(105);
|
||||
TERM_CASE_HANDLE(106);
|
||||
TERM_CASE_HANDLE(107);
|
||||
TERM_CASE_HANDLE(108);
|
||||
TERM_CASE_HANDLE(109);
|
||||
TERM_CASE_HANDLE(110);
|
||||
TERM_CASE_HANDLE(111);
|
||||
TERM_CASE_HANDLE(112);
|
||||
TERM_CASE_HANDLE(113);
|
||||
TERM_CASE_HANDLE(114);
|
||||
TERM_CASE_HANDLE(115);
|
||||
TERM_CASE_HANDLE(116);
|
||||
TERM_CASE_HANDLE(117);
|
||||
TERM_CASE_HANDLE(118);
|
||||
TERM_CASE_HANDLE(119);
|
||||
TERM_CASE_HANDLE(120);
|
||||
TERM_CASE_HANDLE(121);
|
||||
TERM_CASE_HANDLE(122);
|
||||
TERM_CASE_HANDLE(123);
|
||||
TERM_CASE_HANDLE(124);
|
||||
TERM_CASE_HANDLE(125);
|
||||
TERM_CASE_HANDLE(126);
|
||||
TERM_CASE_HANDLE(127);
|
||||
TERM_CASE_HANDLE(128);
|
||||
TERM_CASE_HANDLE(129);
|
||||
TERM_CASE_HANDLE(130);
|
||||
TERM_CASE_HANDLE(131);
|
||||
TERM_CASE_HANDLE(132);
|
||||
TERM_CASE_HANDLE(133);
|
||||
TERM_CASE_HANDLE(134);
|
||||
TERM_CASE_HANDLE(135);
|
||||
TERM_CASE_HANDLE(136);
|
||||
TERM_CASE_HANDLE(137);
|
||||
TERM_CASE_HANDLE(138);
|
||||
TERM_CASE_HANDLE(139);
|
||||
TERM_CASE_HANDLE(140);
|
||||
TERM_CASE_HANDLE(141);
|
||||
TERM_CASE_HANDLE(142);
|
||||
TERM_CASE_HANDLE(143);
|
||||
TERM_CASE_HANDLE(144);
|
||||
TERM_CASE_HANDLE(145);
|
||||
TERM_CASE_HANDLE(146);
|
||||
TERM_CASE_HANDLE(147);
|
||||
TERM_CASE_HANDLE(148);
|
||||
TERM_CASE_HANDLE(149);
|
||||
TERM_CASE_HANDLE(150);
|
||||
TERM_CASE_HANDLE(151);
|
||||
TERM_CASE_HANDLE(152);
|
||||
TERM_CASE_HANDLE(153);
|
||||
TERM_CASE_HANDLE(154);
|
||||
TERM_CASE_HANDLE(155);
|
||||
TERM_CASE_HANDLE(156);
|
||||
TERM_CASE_HANDLE(157);
|
||||
TERM_CASE_HANDLE(158);
|
||||
TERM_CASE_HANDLE(159);
|
||||
TERM_CASE_HANDLE(160);
|
||||
TERM_CASE_HANDLE(161);
|
||||
TERM_CASE_HANDLE(162);
|
||||
TERM_CASE_HANDLE(163);
|
||||
TERM_CASE_HANDLE(164);
|
||||
TERM_CASE_HANDLE(165);
|
||||
TERM_CASE_HANDLE(166);
|
||||
TERM_CASE_HANDLE(167);
|
||||
TERM_CASE_HANDLE(168);
|
||||
TERM_CASE_HANDLE(169);
|
||||
TERM_CASE_HANDLE(170);
|
||||
TERM_CASE_HANDLE(171);
|
||||
TERM_CASE_HANDLE(172);
|
||||
TERM_CASE_HANDLE(173);
|
||||
TERM_CASE_HANDLE(174);
|
||||
TERM_CASE_HANDLE(175);
|
||||
TERM_CASE_HANDLE(176);
|
||||
TERM_CASE_HANDLE(177);
|
||||
TERM_CASE_HANDLE(178);
|
||||
TERM_CASE_HANDLE(179);
|
||||
TERM_CASE_HANDLE(180);
|
||||
TERM_CASE_HANDLE(181);
|
||||
TERM_CASE_HANDLE(182);
|
||||
TERM_CASE_HANDLE(183);
|
||||
TERM_CASE_HANDLE(184);
|
||||
TERM_CASE_HANDLE(185);
|
||||
TERM_CASE_HANDLE(186);
|
||||
TERM_CASE_HANDLE(187);
|
||||
TERM_CASE_HANDLE(188);
|
||||
TERM_CASE_HANDLE(189);
|
||||
TERM_CASE_HANDLE(190);
|
||||
TERM_CASE_HANDLE(191);
|
||||
TERM_CASE_HANDLE(192);
|
||||
TERM_CASE_HANDLE(193);
|
||||
TERM_CASE_HANDLE(194);
|
||||
TERM_CASE_HANDLE(195);
|
||||
TERM_CASE_HANDLE(196);
|
||||
TERM_CASE_HANDLE(197);
|
||||
TERM_CASE_HANDLE(198);
|
||||
TERM_CASE_HANDLE(199);
|
||||
TERM_CASE_HANDLE(200);
|
||||
TERM_CASE_HANDLE(201);
|
||||
TERM_CASE_HANDLE(202);
|
||||
TERM_CASE_HANDLE(203);
|
||||
TERM_CASE_HANDLE(204);
|
||||
TERM_CASE_HANDLE(205);
|
||||
TERM_CASE_HANDLE(206);
|
||||
TERM_CASE_HANDLE(207);
|
||||
TERM_CASE_HANDLE(208);
|
||||
TERM_CASE_HANDLE(209);
|
||||
TERM_CASE_HANDLE(210);
|
||||
TERM_CASE_HANDLE(211);
|
||||
TERM_CASE_HANDLE(212);
|
||||
TERM_CASE_HANDLE(213);
|
||||
TERM_CASE_HANDLE(214);
|
||||
TERM_CASE_HANDLE(215);
|
||||
TERM_CASE_HANDLE(216);
|
||||
TERM_CASE_HANDLE(217);
|
||||
TERM_CASE_HANDLE(218);
|
||||
TERM_CASE_HANDLE(219);
|
||||
TERM_CASE_HANDLE(220);
|
||||
TERM_CASE_HANDLE(221);
|
||||
TERM_CASE_HANDLE(222);
|
||||
TERM_CASE_HANDLE(223);
|
||||
TERM_CASE_HANDLE(224);
|
||||
TERM_CASE_HANDLE(225);
|
||||
TERM_CASE_HANDLE(226);
|
||||
TERM_CASE_HANDLE(227);
|
||||
TERM_CASE_HANDLE(228);
|
||||
TERM_CASE_HANDLE(229);
|
||||
TERM_CASE_HANDLE(230);
|
||||
TERM_CASE_HANDLE(231);
|
||||
TERM_CASE_HANDLE(232);
|
||||
TERM_CASE_HANDLE(233);
|
||||
TERM_CASE_HANDLE(234);
|
||||
TERM_CASE_HANDLE(235);
|
||||
TERM_CASE_HANDLE(236);
|
||||
TERM_CASE_HANDLE(237);
|
||||
TERM_CASE_HANDLE(238);
|
||||
TERM_CASE_HANDLE(239);
|
||||
TERM_CASE_HANDLE(240);
|
||||
TERM_CASE_HANDLE(241);
|
||||
TERM_CASE_HANDLE(242);
|
||||
TERM_CASE_HANDLE(243);
|
||||
TERM_CASE_HANDLE(244);
|
||||
TERM_CASE_HANDLE(245);
|
||||
TERM_CASE_HANDLE(246);
|
||||
TERM_CASE_HANDLE(247);
|
||||
TERM_CASE_HANDLE(248);
|
||||
TERM_CASE_HANDLE(249);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
@@ -46,7 +46,7 @@ static inline void
|
||||
loader_init_device_dispatch_table(struct loader_dev_dispatch_table *dev_table,
|
||||
PFN_vkGetDeviceProcAddr gpa, VkDevice dev) {
|
||||
VkLayerDispatchTable *table = &dev_table->core_dispatch;
|
||||
for (uint32_t i = 0; i < MAX_NUM_DEV_EXTS; i++)
|
||||
for (uint32_t i = 0; i < MAX_NUM_UNKNOWN_EXTS; i++)
|
||||
dev_table->ext_dispatch.dev_ext[i] = (PFN_vkDevExt)vkDevExtError;
|
||||
|
||||
table->GetDeviceProcAddr =
|
||||
@@ -269,21 +269,30 @@ static inline void loader_init_device_extension_dispatch_table(
|
||||
(PFN_vkGetSwapchainImagesKHR)gpa(dev, "vkGetSwapchainImagesKHR");
|
||||
table->QueuePresentKHR =
|
||||
(PFN_vkQueuePresentKHR)gpa(dev, "vkQueuePresentKHR");
|
||||
table->CmdDrawIndirectCountAMD =
|
||||
(PFN_vkCmdDrawIndirectCountAMD)gpa(dev, "vkCmdDrawIndirectCountAMD");
|
||||
table->CmdDrawIndexedIndirectCountAMD =
|
||||
(PFN_vkCmdDrawIndexedIndirectCountAMD)gpa(
|
||||
dev, "vkCmdDrawIndexedIndirectCountAMD");
|
||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
||||
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");
|
||||
|
||||
// KHR_display_swapchain
|
||||
table->CreateSharedSwapchainsKHR = (PFN_vkCreateSharedSwapchainsKHR)gpa(
|
||||
dev, "vkCreateSharedSwapchainsKHR");
|
||||
|
||||
// KHR_maintenance1
|
||||
table->TrimCommandPoolKHR =
|
||||
(PFN_vkTrimCommandPoolKHR)gpa(dev, "vkTrimCommandPoolKHR");
|
||||
|
||||
// EXT_display_control
|
||||
table->DisplayPowerControlEXT =
|
||||
(PFN_vkDisplayPowerControlEXT)gpa(dev, "vkDisplayPowerControlEXT");
|
||||
table->RegisterDeviceEventEXT =
|
||||
(PFN_vkRegisterDeviceEventEXT)gpa(dev, "vkRegisterDeviceEventEXT");
|
||||
table->RegisterDisplayEventEXT =
|
||||
(PFN_vkRegisterDisplayEventEXT)gpa(dev, "vkRegisterDisplayEventEXT");
|
||||
table->GetSwapchainCounterEXT =
|
||||
(PFN_vkGetSwapchainCounterEXT)gpa(dev, "vkGetSwapchainCounterEXT");
|
||||
|
||||
// EXT_debug_marker
|
||||
table->DebugMarkerSetObjectTagEXT = (PFN_vkDebugMarkerSetObjectTagEXT)gpa(
|
||||
dev, "vkDebugMarkerSetObjectTagEXT");
|
||||
table->DebugMarkerSetObjectNameEXT = (PFN_vkDebugMarkerSetObjectNameEXT)gpa(
|
||||
dev, "vkDebugMarkerSetObjectNameEXT");
|
||||
table->CmdDebugMarkerBeginEXT =
|
||||
(PFN_vkCmdDebugMarkerBeginEXT)gpa(dev, "vkCmdDebugMarkerBeginEXT");
|
||||
table->CmdDebugMarkerEndEXT =
|
||||
@@ -291,6 +300,19 @@ static inline void loader_init_device_extension_dispatch_table(
|
||||
table->CmdDebugMarkerInsertEXT =
|
||||
(PFN_vkCmdDebugMarkerInsertEXT)gpa(dev, "vkCmdDebugMarkerInsertEXT");
|
||||
|
||||
// AMD_draw_indirect_count
|
||||
table->CmdDrawIndirectCountAMD =
|
||||
(PFN_vkCmdDrawIndirectCountAMD)gpa(dev, "vkCmdDrawIndirectCountAMD");
|
||||
table->CmdDrawIndexedIndirectCountAMD =
|
||||
(PFN_vkCmdDrawIndexedIndirectCountAMD)gpa(
|
||||
dev, "vkCmdDrawIndexedIndirectCountAMD");
|
||||
|
||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
||||
// NV_external_memory_win32
|
||||
table->GetMemoryWin32HandleNV =
|
||||
(PFN_vkGetMemoryWin32HandleNV)gpa(dev, "vkGetMemoryWin32HandleNV");
|
||||
#endif
|
||||
|
||||
// NVX_device_generated_commands
|
||||
table->CmdProcessCommandsNVX =
|
||||
(PFN_vkCmdProcessCommandsNVX)gpa(dev, "vkCmdProcessCommandsNVX");
|
||||
@@ -562,7 +584,6 @@ loader_lookup_device_dispatch_table(const VkLayerDispatchTable *table,
|
||||
return (void *)table->CmdEndRenderPass;
|
||||
if (!strcmp(name, "CmdExecuteCommands"))
|
||||
return (void *)table->CmdExecuteCommands;
|
||||
|
||||
if (!strcmp(name, "DestroySwapchainKHR"))
|
||||
return (void *)table->DestroySwapchainKHR;
|
||||
if (!strcmp(name, "GetSwapchainImagesKHR"))
|
||||
@@ -580,6 +601,8 @@ loader_lookup_device_dispatch_table(const VkLayerDispatchTable *table,
|
||||
// object before passing the appropriate info along to the ICD.
|
||||
if (!strcmp(name, "CreateSwapchainKHR")) {
|
||||
return (void *)vkCreateSwapchainKHR;
|
||||
} else if (!strcmp(name, "CreateSharedSwapchainsKHR")) {
|
||||
return (void *)vkCreateSharedSwapchainsKHR;
|
||||
} else if (!strcmp(name, "DebugMarkerSetObjectTagEXT")) {
|
||||
return (void *)vkDebugMarkerSetObjectTagEXT;
|
||||
} else if (!strcmp(name, "DebugMarkerSetObjectNameEXT")) {
|
||||
@@ -629,16 +652,9 @@ loader_init_instance_core_dispatch_table(VkLayerInstanceDispatchTable *table,
|
||||
static inline void loader_init_instance_extension_dispatch_table(
|
||||
VkLayerInstanceDispatchTable *table, PFN_vkGetInstanceProcAddr gpa,
|
||||
VkInstance inst) {
|
||||
// WSI extensions
|
||||
table->DestroySurfaceKHR =
|
||||
(PFN_vkDestroySurfaceKHR)gpa(inst, "vkDestroySurfaceKHR");
|
||||
table->CreateDebugReportCallbackEXT =
|
||||
(PFN_vkCreateDebugReportCallbackEXT)gpa(
|
||||
inst, "vkCreateDebugReportCallbackEXT");
|
||||
table->DestroyDebugReportCallbackEXT =
|
||||
(PFN_vkDestroyDebugReportCallbackEXT)gpa(
|
||||
inst, "vkDestroyDebugReportCallbackEXT");
|
||||
table->DebugReportMessageEXT =
|
||||
(PFN_vkDebugReportMessageEXT)gpa(inst, "vkDebugReportMessageEXT");
|
||||
table->GetPhysicalDeviceSurfaceSupportKHR =
|
||||
(PFN_vkGetPhysicalDeviceSurfaceSupportKHR)gpa(
|
||||
inst, "vkGetPhysicalDeviceSurfaceSupportKHR");
|
||||
@@ -651,9 +667,6 @@ static inline void loader_init_instance_extension_dispatch_table(
|
||||
table->GetPhysicalDeviceSurfacePresentModesKHR =
|
||||
(PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)gpa(
|
||||
inst, "vkGetPhysicalDeviceSurfacePresentModesKHR");
|
||||
table->GetPhysicalDeviceExternalImageFormatPropertiesNV =
|
||||
(PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV)gpa(
|
||||
inst, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
|
||||
#ifdef VK_USE_PLATFORM_MIR_KHR
|
||||
table->CreateMirSurfaceKHR =
|
||||
(PFN_vkCreateMirSurfaceKHR)gpa(inst, "vkCreateMirSurfaceKHR");
|
||||
@@ -709,12 +722,125 @@ static inline void loader_init_instance_extension_dispatch_table(
|
||||
(PFN_vkCreateDisplayPlaneSurfaceKHR)gpa(
|
||||
inst, "vkCreateDisplayPlaneSurfaceKHR");
|
||||
|
||||
// NVX_device_generated_commands (physical device commands)
|
||||
// KHR_get_physical_device_properties2
|
||||
table->GetPhysicalDeviceFeatures2KHR =
|
||||
(PFN_vkGetPhysicalDeviceFeatures2KHR)gpa(
|
||||
inst, "vkGetPhysicalDeviceFeatures2KHR");
|
||||
table->GetPhysicalDeviceProperties2KHR =
|
||||
(PFN_vkGetPhysicalDeviceProperties2KHR)gpa(
|
||||
inst, "vkGetPhysicalDeviceProperties2KHR");
|
||||
table->GetPhysicalDeviceFormatProperties2KHR =
|
||||
(PFN_vkGetPhysicalDeviceFormatProperties2KHR)gpa(
|
||||
inst, "vkGetPhysicalDeviceFormatProperties2KHR");
|
||||
table->GetPhysicalDeviceImageFormatProperties2KHR =
|
||||
(PFN_vkGetPhysicalDeviceImageFormatProperties2KHR)gpa(
|
||||
inst, "vkGetPhysicalDeviceImageFormatProperties2KHR");
|
||||
table->GetPhysicalDeviceQueueFamilyProperties2KHR =
|
||||
(PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR)gpa(
|
||||
inst, "vkGetPhysicalDeviceQueueFamilyProperties2KHR");
|
||||
table->GetPhysicalDeviceMemoryProperties2KHR =
|
||||
(PFN_vkGetPhysicalDeviceMemoryProperties2KHR)gpa(
|
||||
inst, "vkGetPhysicalDeviceMemoryProperties2KHR");
|
||||
table->GetPhysicalDeviceSparseImageFormatProperties2KHR =
|
||||
(PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR)gpa(
|
||||
inst, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
|
||||
|
||||
#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
|
||||
// EXT_acquire_xlib_display
|
||||
table->AcquireXlibDisplayEXT =
|
||||
(PFN_vkAcquireXlibDisplayEXT)gpa(inst, "vkAcquireXlibDisplayEXT");
|
||||
table->GetRandROutputDisplayEXT =
|
||||
(PFN_vkGetRandROutputDisplayEXT)gpa(inst, "vkGetRandROutputDisplayEXT");
|
||||
#endif
|
||||
|
||||
// EXT_debug_report
|
||||
table->CreateDebugReportCallbackEXT =
|
||||
(PFN_vkCreateDebugReportCallbackEXT)gpa(
|
||||
inst, "vkCreateDebugReportCallbackEXT");
|
||||
table->DestroyDebugReportCallbackEXT =
|
||||
(PFN_vkDestroyDebugReportCallbackEXT)gpa(
|
||||
inst, "vkDestroyDebugReportCallbackEXT");
|
||||
table->DebugReportMessageEXT =
|
||||
(PFN_vkDebugReportMessageEXT)gpa(inst, "vkDebugReportMessageEXT");
|
||||
|
||||
// EXT_direct_mode_display
|
||||
table->ReleaseDisplayEXT =
|
||||
(PFN_vkReleaseDisplayEXT)gpa(inst, "vkReleaseDisplayEXT");
|
||||
|
||||
// EXT_display_surface_counter
|
||||
table->GetPhysicalDeviceSurfaceCapabilities2EXT =
|
||||
(PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT)gpa(
|
||||
inst, "vkGetPhysicalDeviceSurfaceCapabilities2EXT");
|
||||
|
||||
// NV_external_memory_capabilities
|
||||
table->GetPhysicalDeviceExternalImageFormatPropertiesNV =
|
||||
(PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV)gpa(
|
||||
inst, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
|
||||
|
||||
// NVX_device_generated_commands (physical device command)
|
||||
table->GetPhysicalDeviceGeneratedCommandsPropertiesNVX =
|
||||
(PFN_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX)gpa(
|
||||
inst, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX");
|
||||
}
|
||||
|
||||
static inline void *loader_lookup_instance_extension_dispatch_table(
|
||||
const VkLayerInstanceDispatchTable *table, const char *name,
|
||||
bool *found_name) {
|
||||
|
||||
*found_name = true;
|
||||
|
||||
// KHR_get_physical_device_properties2
|
||||
if (!strcmp(name, "GetPhysicalDeviceFeatures2KHR"))
|
||||
return (void *)table->GetPhysicalDeviceFeatures2KHR;
|
||||
if (!strcmp(name, "GetPhysicalDeviceProperties2KHR"))
|
||||
return (void *)table->GetPhysicalDeviceProperties2KHR;
|
||||
if (!strcmp(name, "GetPhysicalDeviceFormatProperties2KHR"))
|
||||
return (void *)table->GetPhysicalDeviceFormatProperties2KHR;
|
||||
if (!strcmp(name, "GetPhysicalDeviceImageFormatProperties2KHR"))
|
||||
return (void *)table->GetPhysicalDeviceImageFormatProperties2KHR;
|
||||
if (!strcmp(name, "GetPhysicalDeviceQueueFamilyProperties2KHR"))
|
||||
return (void *)table->GetPhysicalDeviceQueueFamilyProperties2KHR;
|
||||
if (!strcmp(name, "GetPhysicalDeviceMemoryProperties2KHR"))
|
||||
return (void *)table->GetPhysicalDeviceMemoryProperties2KHR;
|
||||
if (!strcmp(name, "GetPhysicalDeviceSparseImageFormatProperties2KHR"))
|
||||
return (void *)table->GetPhysicalDeviceSparseImageFormatProperties2KHR;
|
||||
|
||||
// EXT_acquire_xlib_display
|
||||
#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
|
||||
if (!strcmp(name, "AcquireXlibDisplayEXT"))
|
||||
return (void *)table->AcquireXlibDisplayEXT;
|
||||
if (!strcmp(name, "GetRandROutputDisplayEXT"))
|
||||
return (void *)table->GetRandROutputDisplayEXT;
|
||||
#endif
|
||||
|
||||
// EXT_debug_report
|
||||
if (!strcmp(name, "CreateDebugReportCallbackEXT"))
|
||||
return (void *)table->CreateDebugReportCallbackEXT;
|
||||
if (!strcmp(name, "DestroyDebugReportCallbackEXT"))
|
||||
return (void *)table->DestroyDebugReportCallbackEXT;
|
||||
if (!strcmp(name, "DebugReportMessageEXT"))
|
||||
return (void *)table->DebugReportMessageEXT;
|
||||
|
||||
// EXT_direct_mode_display
|
||||
if (!strcmp(name, "ReleaseDisplayEXT"))
|
||||
return (void *)table->ReleaseDisplayEXT;
|
||||
|
||||
// EXT_display_surface_counter
|
||||
if (!strcmp(name, "GetPhysicalDeviceSurfaceCapabilities2EXT"))
|
||||
return (void *)table->GetPhysicalDeviceSurfaceCapabilities2EXT;
|
||||
|
||||
// NV_external_memory_capabilities
|
||||
if (!strcmp(name, "GetPhysicalDeviceExternalImageFormatPropertiesNV"))
|
||||
return (void *)table->GetPhysicalDeviceExternalImageFormatPropertiesNV;
|
||||
|
||||
// NVX_device_generated_commands
|
||||
if (!strcmp(name, "GetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
|
||||
return (void *)table->GetPhysicalDeviceGeneratedCommandsPropertiesNVX;
|
||||
|
||||
*found_name = false;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline void *
|
||||
loader_lookup_instance_dispatch_table(const VkLayerInstanceDispatchTable *table,
|
||||
const char *name, bool *found_name) {
|
||||
@@ -759,8 +885,6 @@ loader_lookup_instance_dispatch_table(const VkLayerInstanceDispatchTable *table,
|
||||
return (void *)table->GetPhysicalDeviceSurfaceFormatsKHR;
|
||||
if (!strcmp(name, "GetPhysicalDeviceSurfacePresentModesKHR"))
|
||||
return (void *)table->GetPhysicalDeviceSurfacePresentModesKHR;
|
||||
if (!strcmp(name, "GetPhysicalDeviceExternalImageFormatPropertiesNV"))
|
||||
return (void *)table->GetPhysicalDeviceExternalImageFormatPropertiesNV;
|
||||
#ifdef VK_USE_PLATFORM_MIR_KHR
|
||||
if (!strcmp(name, "CreateMirSurfaceKHR"))
|
||||
return (void *)table->CreateMirSurfaceKHR;
|
||||
@@ -806,17 +930,6 @@ loader_lookup_instance_dispatch_table(const VkLayerInstanceDispatchTable *table,
|
||||
if (!strcmp(name, "CreateDisplayPlaneSurfaceKHR"))
|
||||
return (void *)table->CreateDisplayPlaneSurfaceKHR;
|
||||
|
||||
if (!strcmp(name, "CreateDebugReportCallbackEXT"))
|
||||
return (void *)table->CreateDebugReportCallbackEXT;
|
||||
if (!strcmp(name, "DestroyDebugReportCallbackEXT"))
|
||||
return (void *)table->DestroyDebugReportCallbackEXT;
|
||||
if (!strcmp(name, "DebugReportMessageEXT"))
|
||||
return (void *)table->DebugReportMessageEXT;
|
||||
|
||||
// NVX_device_generated_commands
|
||||
if (!strcmp(name, "GetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
|
||||
return (void *)table->GetPhysicalDeviceGeneratedCommandsPropertiesNVX;
|
||||
|
||||
*found_name = false;
|
||||
return NULL;
|
||||
return loader_lookup_instance_extension_dispatch_table(table, name,
|
||||
found_name);
|
||||
}
|
||||
|
||||
@@ -409,6 +409,8 @@ LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(
|
||||
&created_instance);
|
||||
|
||||
if (res == VK_SUCCESS) {
|
||||
memset(ptr_instance->enabled_known_extensions.padding, 0, sizeof(uint64_t) * 4);
|
||||
|
||||
wsi_create_instance(ptr_instance, &ici);
|
||||
debug_report_create_instance(ptr_instance, &ici);
|
||||
extensions_create_instance(ptr_instance, &ici);
|
||||
@@ -484,7 +486,7 @@ LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyInstance(
|
||||
return;
|
||||
}
|
||||
|
||||
disp = loader_get_instance_dispatch(instance);
|
||||
disp = loader_get_instance_layer_dispatch(instance);
|
||||
|
||||
loader_platform_thread_lock_mutex(&loader_lock);
|
||||
|
||||
@@ -508,6 +510,7 @@ LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyInstance(
|
||||
|
||||
loader_deactivate_layers(ptr_instance, NULL,
|
||||
&ptr_instance->activated_layer_list);
|
||||
|
||||
if (ptr_instance->phys_devs_tramp) {
|
||||
for (uint32_t i = 0; i < ptr_instance->phys_dev_count_tramp; i++) {
|
||||
loader_instance_heap_free(ptr_instance,
|
||||
@@ -515,6 +518,7 @@ LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyInstance(
|
||||
}
|
||||
loader_instance_heap_free(ptr_instance, ptr_instance->phys_devs_tramp);
|
||||
}
|
||||
|
||||
if (callback_setup) {
|
||||
util_DestroyDebugReportCallbacks(ptr_instance, pAllocator,
|
||||
ptr_instance->num_tmp_callbacks,
|
||||
@@ -535,7 +539,7 @@ vkEnumeratePhysicalDevices(VkInstance instance, uint32_t *pPhysicalDeviceCount,
|
||||
VkResult res = VK_SUCCESS;
|
||||
uint32_t count, i;
|
||||
struct loader_instance *inst;
|
||||
disp = loader_get_instance_dispatch(instance);
|
||||
disp = loader_get_instance_layer_dispatch(instance);
|
||||
|
||||
loader_platform_thread_lock_mutex(&loader_lock);
|
||||
|
||||
@@ -594,7 +598,7 @@ LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures(
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
disp = loader_get_instance_dispatch(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
disp->GetPhysicalDeviceFeatures(unwrapped_phys_dev, pFeatures);
|
||||
}
|
||||
|
||||
@@ -604,7 +608,7 @@ LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties(
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
VkPhysicalDevice unwrapped_pd =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
disp = loader_get_instance_dispatch(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
disp->GetPhysicalDeviceFormatProperties(unwrapped_pd, format, pFormatInfo);
|
||||
}
|
||||
|
||||
@@ -616,7 +620,7 @@ vkGetPhysicalDeviceImageFormatProperties(
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
disp = loader_get_instance_dispatch(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
return disp->GetPhysicalDeviceImageFormatProperties(
|
||||
unwrapped_phys_dev, format, type, tiling, usage, flags,
|
||||
pImageFormatProperties);
|
||||
@@ -627,7 +631,7 @@ LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties(
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
disp = loader_get_instance_dispatch(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
disp->GetPhysicalDeviceProperties(unwrapped_phys_dev, pProperties);
|
||||
}
|
||||
|
||||
@@ -638,7 +642,7 @@ vkGetPhysicalDeviceQueueFamilyProperties(
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
disp = loader_get_instance_dispatch(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
disp->GetPhysicalDeviceQueueFamilyProperties(
|
||||
unwrapped_phys_dev, pQueueFamilyPropertyCount, pQueueProperties);
|
||||
}
|
||||
@@ -649,7 +653,7 @@ LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties(
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
disp = loader_get_instance_dispatch(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
disp->GetPhysicalDeviceMemoryProperties(unwrapped_phys_dev,
|
||||
pMemoryProperties);
|
||||
}
|
||||
@@ -682,7 +686,7 @@ LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateDevice(
|
||||
}
|
||||
|
||||
res = loader_add_device_extensions(
|
||||
inst, inst->disp->EnumerateDeviceExtensionProperties,
|
||||
inst, inst->disp->layer_inst_disp.EnumerateDeviceExtensionProperties,
|
||||
phys_dev->phys_dev, "Unknown", &icd_exts);
|
||||
if (res != VK_SUCCESS) {
|
||||
loader_log(inst, VK_DEBUG_REPORT_ERROR_BIT_EXT, 0,
|
||||
@@ -801,7 +805,7 @@ vkEnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice,
|
||||
if (pLayerName == NULL || strlen(pLayerName) == 0) {
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
|
||||
disp = loader_get_instance_dispatch(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
res = disp->EnumerateDeviceExtensionProperties(
|
||||
phys_dev->phys_dev, NULL, pPropertyCount, pProperties);
|
||||
} else {
|
||||
@@ -1147,7 +1151,7 @@ vkGetPhysicalDeviceSparseImageFormatProperties(
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
disp = loader_get_instance_dispatch(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
|
||||
disp->GetPhysicalDeviceSparseImageFormatProperties(
|
||||
unwrapped_phys_dev, format, type, samples, usage, tiling,
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
|
||||
;;;; Begin Copyright Notice ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;
|
||||
; Copyright (c) 2015-2016 The Khronos Group Inc.
|
||||
; Copyright (c) 2015-2016 Valve Corporation
|
||||
; Copyright (c) 2015-2016 LunarG, Inc.
|
||||
; Copyright (c) 2015-2017 The Khronos Group Inc.
|
||||
; Copyright (c) 2015-2017 Valve Corporation
|
||||
; Copyright (c) 2015-2017 LunarG, Inc.
|
||||
;
|
||||
; Licensed under the Apache License, Version 2.0 (the "License");
|
||||
; you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -152,7 +152,7 @@ LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL
|
||||
vkDestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface,
|
||||
const VkAllocationCallbacks *pAllocator) {
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
disp = loader_get_instance_dispatch(instance);
|
||||
disp = loader_get_instance_layer_dispatch(instance);
|
||||
disp->DestroySurfaceKHR(instance, surface, pAllocator);
|
||||
}
|
||||
|
||||
@@ -205,7 +205,7 @@ vkGetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice physicalDevice,
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
disp = loader_get_instance_dispatch(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
VkResult res = disp->GetPhysicalDeviceSurfaceSupportKHR(
|
||||
unwrapped_phys_dev, queueFamilyIndex, surface, pSupported);
|
||||
return res;
|
||||
@@ -261,7 +261,7 @@ vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
disp = loader_get_instance_dispatch(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
VkResult res = disp->GetPhysicalDeviceSurfaceCapabilitiesKHR(
|
||||
unwrapped_phys_dev, surface, pSurfaceCapabilities);
|
||||
return res;
|
||||
@@ -317,7 +317,7 @@ vkGetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice physicalDevice,
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
disp = loader_get_instance_dispatch(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
VkResult res = disp->GetPhysicalDeviceSurfaceFormatsKHR(
|
||||
unwrapped_phys_dev, surface, pSurfaceFormatCount, pSurfaceFormats);
|
||||
return res;
|
||||
@@ -373,7 +373,7 @@ vkGetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice physicalDevice,
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
disp = loader_get_instance_dispatch(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
VkResult res = disp->GetPhysicalDeviceSurfacePresentModesKHR(
|
||||
unwrapped_phys_dev, surface, pPresentModeCount, pPresentModes);
|
||||
return res;
|
||||
@@ -548,7 +548,7 @@ LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateWin32SurfaceKHR(
|
||||
VkInstance instance, const VkWin32SurfaceCreateInfoKHR *pCreateInfo,
|
||||
const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface) {
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
disp = loader_get_instance_dispatch(instance);
|
||||
disp = loader_get_instance_layer_dispatch(instance);
|
||||
VkResult res;
|
||||
|
||||
res = disp->CreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator,
|
||||
@@ -638,7 +638,7 @@ vkGetPhysicalDeviceWin32PresentationSupportKHR(VkPhysicalDevice physicalDevice,
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
disp = loader_get_instance_dispatch(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
VkBool32 res = disp->GetPhysicalDeviceWin32PresentationSupportKHR(
|
||||
unwrapped_phys_dev, queueFamilyIndex);
|
||||
return res;
|
||||
@@ -682,7 +682,7 @@ LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateMirSurfaceKHR(
|
||||
VkInstance instance, const VkMirSurfaceCreateInfoKHR *pCreateInfo,
|
||||
const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface) {
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
disp = loader_get_instance_dispatch(instance);
|
||||
disp = loader_get_instance_layer_dispatch(instance);
|
||||
VkResult res;
|
||||
|
||||
res =
|
||||
@@ -771,7 +771,7 @@ vkGetPhysicalDeviceMirPresentationSupportKHR(VkPhysicalDevice physicalDevice,
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
disp = loader_get_instance_dispatch(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
VkBool32 res = disp->GetPhysicalDeviceMirPresentationSupportKHR(
|
||||
unwrapped_phys_dev, queueFamilyIndex, connection);
|
||||
return res;
|
||||
@@ -818,7 +818,7 @@ LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateWaylandSurfaceKHR(
|
||||
VkInstance instance, const VkWaylandSurfaceCreateInfoKHR *pCreateInfo,
|
||||
const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface) {
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
disp = loader_get_instance_dispatch(instance);
|
||||
disp = loader_get_instance_layer_dispatch(instance);
|
||||
VkResult res;
|
||||
|
||||
res = disp->CreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator,
|
||||
@@ -907,7 +907,7 @@ vkGetPhysicalDeviceWaylandPresentationSupportKHR(
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
disp = loader_get_instance_dispatch(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
VkBool32 res = disp->GetPhysicalDeviceWaylandPresentationSupportKHR(
|
||||
unwrapped_phys_dev, queueFamilyIndex, display);
|
||||
return res;
|
||||
@@ -953,7 +953,7 @@ LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateXcbSurfaceKHR(
|
||||
VkInstance instance, const VkXcbSurfaceCreateInfoKHR *pCreateInfo,
|
||||
const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface) {
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
disp = loader_get_instance_dispatch(instance);
|
||||
disp = loader_get_instance_layer_dispatch(instance);
|
||||
VkResult res;
|
||||
|
||||
res =
|
||||
@@ -1043,7 +1043,7 @@ vkGetPhysicalDeviceXcbPresentationSupportKHR(VkPhysicalDevice physicalDevice,
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
disp = loader_get_instance_dispatch(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
VkBool32 res = disp->GetPhysicalDeviceXcbPresentationSupportKHR(
|
||||
unwrapped_phys_dev, queueFamilyIndex, connection, visual_id);
|
||||
return res;
|
||||
@@ -1089,7 +1089,7 @@ LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateXlibSurfaceKHR(
|
||||
VkInstance instance, const VkXlibSurfaceCreateInfoKHR *pCreateInfo,
|
||||
const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface) {
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
disp = loader_get_instance_dispatch(instance);
|
||||
disp = loader_get_instance_layer_dispatch(instance);
|
||||
VkResult res;
|
||||
|
||||
res =
|
||||
@@ -1178,7 +1178,7 @@ vkGetPhysicalDeviceXlibPresentationSupportKHR(VkPhysicalDevice physicalDevice,
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
disp = loader_get_instance_dispatch(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
VkBool32 res = disp->GetPhysicalDeviceXlibPresentationSupportKHR(
|
||||
unwrapped_phys_dev, queueFamilyIndex, dpy, visualID);
|
||||
return res;
|
||||
@@ -1224,7 +1224,7 @@ LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateAndroidSurfaceKHR(
|
||||
VkInstance instance, ANativeWindow *window,
|
||||
const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface) {
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
disp = loader_get_instance_dispatch(instance);
|
||||
disp = loader_get_instance_layer_dispatch(instance);
|
||||
VkResult res;
|
||||
|
||||
res = disp->CreateAndroidSurfaceKHR(instance, window, pAllocator, pSurface);
|
||||
@@ -1271,7 +1271,7 @@ vkGetPhysicalDeviceDisplayPropertiesKHR(VkPhysicalDevice physicalDevice,
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
disp = loader_get_instance_dispatch(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
VkResult res = disp->GetPhysicalDeviceDisplayPropertiesKHR(
|
||||
unwrapped_phys_dev, pPropertyCount, pProperties);
|
||||
return res;
|
||||
@@ -1309,7 +1309,7 @@ vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
disp = loader_get_instance_dispatch(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
VkResult res = disp->GetPhysicalDeviceDisplayPlanePropertiesKHR(
|
||||
unwrapped_phys_dev, pPropertyCount, pProperties);
|
||||
return res;
|
||||
@@ -1351,7 +1351,7 @@ vkGetDisplayPlaneSupportedDisplaysKHR(VkPhysicalDevice physicalDevice,
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
disp = loader_get_instance_dispatch(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
VkResult res = disp->GetDisplayPlaneSupportedDisplaysKHR(
|
||||
unwrapped_phys_dev, planeIndex, pDisplayCount, pDisplays);
|
||||
return res;
|
||||
@@ -1388,7 +1388,7 @@ LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModePropertiesKHR(
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
disp = loader_get_instance_dispatch(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
VkResult res = disp->GetDisplayModePropertiesKHR(
|
||||
unwrapped_phys_dev, display, pPropertyCount, pProperties);
|
||||
return res;
|
||||
@@ -1426,7 +1426,7 @@ LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayModeKHR(
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
disp = loader_get_instance_dispatch(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
VkResult res = disp->CreateDisplayModeKHR(unwrapped_phys_dev, display,
|
||||
pCreateInfo, pAllocator, pMode);
|
||||
return res;
|
||||
@@ -1464,7 +1464,7 @@ LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilitiesKHR(
|
||||
VkPhysicalDevice unwrapped_phys_dev =
|
||||
loader_unwrap_physical_device(physicalDevice);
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
disp = loader_get_instance_dispatch(physicalDevice);
|
||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
||||
VkResult res = disp->GetDisplayPlaneCapabilitiesKHR(
|
||||
unwrapped_phys_dev, mode, planeIndex, pCapabilities);
|
||||
return res;
|
||||
@@ -1499,7 +1499,7 @@ LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayPlaneSurfaceKHR(
|
||||
VkInstance instance, const VkDisplaySurfaceCreateInfoKHR *pCreateInfo,
|
||||
const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface) {
|
||||
const VkLayerInstanceDispatchTable *disp;
|
||||
disp = loader_get_instance_dispatch(instance);
|
||||
disp = loader_get_instance_layer_dispatch(instance);
|
||||
VkResult res;
|
||||
|
||||
res = disp->CreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator,
|
||||
@@ -1581,8 +1581,8 @@ out:
|
||||
return vkRes;
|
||||
}
|
||||
|
||||
// This is the trampoline entrypoint
|
||||
// for CreateSharedSwapchainsKHR
|
||||
// EXT_display_swapchain Extension command
|
||||
|
||||
LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateSharedSwapchainsKHR(
|
||||
VkDevice device, uint32_t swapchainCount,
|
||||
const VkSwapchainCreateInfoKHR *pCreateInfos,
|
||||
@@ -1593,6 +1593,47 @@ LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateSharedSwapchainsKHR(
|
||||
pAllocator, pSwapchains);
|
||||
}
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_vkCreateSharedSwapchainsKHR(
|
||||
VkDevice device, uint32_t swapchainCount,
|
||||
const VkSwapchainCreateInfoKHR *pCreateInfos,
|
||||
const VkAllocationCallbacks *pAllocator, VkSwapchainKHR *pSwapchains) {
|
||||
uint32_t icd_index = 0;
|
||||
struct loader_device *dev;
|
||||
struct loader_icd_term *icd_term =
|
||||
loader_get_icd_and_device(device, &dev, &icd_index);
|
||||
if (NULL != icd_term && NULL != icd_term->CreateSharedSwapchainsKHR) {
|
||||
VkIcdSurface *icd_surface =
|
||||
(VkIcdSurface *)(uintptr_t)pCreateInfos->surface;
|
||||
if (NULL != icd_surface->real_icd_surfaces) {
|
||||
if ((VkSurfaceKHR)NULL !=
|
||||
icd_surface->real_icd_surfaces[icd_index]) {
|
||||
// We found the ICD, and there is an ICD KHR surface
|
||||
// associated with it, so copy the CreateInfo struct
|
||||
// and point it at the ICD's surface.
|
||||
VkSwapchainCreateInfoKHR *pCreateCopy =
|
||||
loader_stack_alloc(sizeof(VkSwapchainCreateInfoKHR) *
|
||||
swapchainCount);
|
||||
if (NULL == pCreateCopy) {
|
||||
return VK_ERROR_OUT_OF_HOST_MEMORY;
|
||||
}
|
||||
memcpy(pCreateCopy, pCreateInfos,
|
||||
sizeof(VkSwapchainCreateInfoKHR) * swapchainCount);
|
||||
for (uint32_t sc = 0; sc < swapchainCount; sc++) {
|
||||
pCreateCopy[sc].surface =
|
||||
icd_surface->real_icd_surfaces[icd_index];
|
||||
}
|
||||
return icd_term->CreateSharedSwapchainsKHR(
|
||||
device, swapchainCount, pCreateCopy, pAllocator,
|
||||
pSwapchains);
|
||||
}
|
||||
}
|
||||
return icd_term->CreateSharedSwapchainsKHR(device, swapchainCount,
|
||||
pCreateInfos, pAllocator,
|
||||
pSwapchains);
|
||||
}
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
bool wsi_swapchain_instance_gpa(struct loader_instance *ptr_instance,
|
||||
const char *name, void **addr) {
|
||||
*addr = NULL;
|
||||
|
||||
@@ -169,4 +169,9 @@ VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateDisplayPlaneSurfaceKHR(
|
||||
VkInstance instance, const VkDisplaySurfaceCreateInfoKHR *pCreateInfo,
|
||||
const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_vkCreateSharedSwapchainsKHR(
|
||||
VkDevice device, uint32_t swapchainCount,
|
||||
const VkSwapchainCreateInfoKHR *pCreateInfos,
|
||||
const VkAllocationCallbacks *pAllocator, VkSwapchainKHR *pSwapchains);
|
||||
|
||||
#endif /* WSI_H */
|
||||
|
||||
@@ -492,6 +492,8 @@ class ParamCheckerOutputGenerator(OutputGenerator):
|
||||
def genVkStructureType(self, typename):
|
||||
# Add underscore between lowercase then uppercase
|
||||
value = re.sub('([a-z0-9])([A-Z])', r'\1_\2', typename)
|
||||
value = value.replace('D3_D12', 'D3D12')
|
||||
value = value.replace('Device_IDProp', 'Device_ID_Prop')
|
||||
# Change to uppercase
|
||||
value = value.upper()
|
||||
# Add STRUCTURE_TYPE_
|
||||
@@ -796,7 +798,11 @@ class ParamCheckerOutputGenerator(OutputGenerator):
|
||||
# Need to process all elements in the array
|
||||
indexName = lenValue.name.replace('Count', 'Index')
|
||||
expr[-1] += '\n'
|
||||
expr.append(indent + 'for (uint32_t {iname} = 0; {iname} < {}{}; ++{iname})\n'.format(prefix, lenValue.name, iname=indexName))
|
||||
if lenValue.ispointer:
|
||||
# If the length value is a pointer, de-reference it for the count.
|
||||
expr.append(indent + 'for (uint32_t {iname} = 0; {iname} < *{}{}; ++{iname})\n'.format(prefix, lenValue.name, iname=indexName))
|
||||
else:
|
||||
expr.append(indent + 'for (uint32_t {iname} = 0; {iname} < {}{}; ++{iname})\n'.format(prefix, lenValue.name, iname=indexName))
|
||||
expr.append(indent + '{')
|
||||
indent = self.incIndent(indent)
|
||||
# Prefix for value name to display in error message
|
||||
|
||||
@@ -400,9 +400,12 @@ class ThreadOutputGenerator(OutputGenerator):
|
||||
self.appendSection('command', decls[0])
|
||||
self.intercepts += [ ' {"%s", reinterpret_cast<PFN_vkVoidFunction>(%s)},' % (name,name[2:]) ]
|
||||
return
|
||||
if "KHR" in name:
|
||||
if ("KHR" in name) or ("KHX" in name):
|
||||
self.appendSection('command', '// TODO - not wrapping KHR function ' + name)
|
||||
return
|
||||
if ("NN" in name):
|
||||
self.appendSection('command', '// TODO - not wrapping NN function ' + name)
|
||||
return
|
||||
if ("DebugMarker" in name) and ("EXT" in name):
|
||||
self.appendSection('command', '// TODO - not wrapping EXT function ' + name)
|
||||
return
|
||||
|
||||
@@ -408,30 +408,29 @@ class UniqueObjectsOutputGenerator(OutputGenerator):
|
||||
# Generate source for creating a non-dispatchable object
|
||||
def generate_create_ndo_code(self, indent, proto, params, cmd_info):
|
||||
create_ndo_code = ''
|
||||
if True in [create_txt in proto.text for create_txt in ['Create', 'Allocate']]:
|
||||
handle_type = params[-1].find('type')
|
||||
if self.isHandleTypeNonDispatchable(handle_type.text):
|
||||
# Check for special case where multiple handles are returned
|
||||
ndo_array = False
|
||||
if cmd_info[-1].len is not None:
|
||||
ndo_array = True;
|
||||
handle_name = params[-1].find('name')
|
||||
create_ndo_code += '%sif (VK_SUCCESS == result) {\n' % (indent)
|
||||
handle_type = params[-1].find('type')
|
||||
if self.isHandleTypeNonDispatchable(handle_type.text):
|
||||
# Check for special case where multiple handles are returned
|
||||
ndo_array = False
|
||||
if cmd_info[-1].len is not None:
|
||||
ndo_array = True;
|
||||
handle_name = params[-1].find('name')
|
||||
create_ndo_code += '%sif (VK_SUCCESS == result) {\n' % (indent)
|
||||
indent = self.incIndent(indent)
|
||||
create_ndo_code += '%sstd::lock_guard<std::mutex> lock(global_lock);\n' % (indent)
|
||||
ndo_dest = '*%s' % handle_name.text
|
||||
if ndo_array == True:
|
||||
create_ndo_code += '%sfor (uint32_t index0 = 0; index0 < %s; index0++) {\n' % (indent, cmd_info[-1].len)
|
||||
indent = self.incIndent(indent)
|
||||
create_ndo_code += '%sstd::lock_guard<std::mutex> lock(global_lock);\n' % (indent)
|
||||
ndo_dest = '*%s' % handle_name.text
|
||||
if ndo_array == True:
|
||||
create_ndo_code += '%sfor (uint32_t index0 = 0; index0 < %s; index0++) {\n' % (indent, cmd_info[-1].len)
|
||||
indent = self.incIndent(indent)
|
||||
ndo_dest = '%s[index0]' % cmd_info[-1].name
|
||||
create_ndo_code += '%suint64_t unique_id = global_unique_id++;\n' % (indent)
|
||||
create_ndo_code += '%sdev_data->unique_id_mapping[unique_id] = reinterpret_cast<uint64_t &>(%s);\n' % (indent, ndo_dest)
|
||||
create_ndo_code += '%s%s = reinterpret_cast<%s&>(unique_id);\n' % (indent, ndo_dest, handle_type.text)
|
||||
if ndo_array == True:
|
||||
indent = self.decIndent(indent)
|
||||
create_ndo_code += '%s}\n' % indent
|
||||
ndo_dest = '%s[index0]' % cmd_info[-1].name
|
||||
create_ndo_code += '%suint64_t unique_id = global_unique_id++;\n' % (indent)
|
||||
create_ndo_code += '%sdev_data->unique_id_mapping[unique_id] = reinterpret_cast<uint64_t &>(%s);\n' % (indent, ndo_dest)
|
||||
create_ndo_code += '%s%s = reinterpret_cast<%s&>(unique_id);\n' % (indent, ndo_dest, handle_type.text)
|
||||
if ndo_array == True:
|
||||
indent = self.decIndent(indent)
|
||||
create_ndo_code += '%s}\n' % (indent)
|
||||
create_ndo_code += '%s}\n' % indent
|
||||
indent = self.decIndent(indent)
|
||||
create_ndo_code += '%s}\n' % (indent)
|
||||
return create_ndo_code
|
||||
#
|
||||
# Generate source for destroying a non-dispatchable object
|
||||
@@ -685,7 +684,7 @@ class UniqueObjectsOutputGenerator(OutputGenerator):
|
||||
islocal = True
|
||||
|
||||
isdestroy = True if True in [destroy_txt in cmdname for destroy_txt in ['Destroy', 'Free']] else False
|
||||
iscreate = True if True in [create_txt in cmdname for create_txt in ['Create', 'Allocate']] else False
|
||||
iscreate = True if True in [create_txt in cmdname for create_txt in ['Create', 'Allocate', 'GetRandROutputDisplayEXT', 'RegisterDeviceEvent', 'RegisterDisplayEvent']] else False
|
||||
|
||||
membersInfo.append(self.CommandParam(type=type,
|
||||
name=name,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<registry>
|
||||
<comment>
|
||||
Copyright (c) 2015-2016 The Khronos Group Inc.
|
||||
Copyright (c) 2015-2017 The Khronos Group Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and/or associated documentation files (the
|
||||
@@ -62,6 +62,7 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
|
||||
<tag name="SEC" author="Samsung Electronics Co., Ltd." contact="Alon Or-bach @alonorbach"/>
|
||||
<tag name="TIZEN" author="Samsung Electronics Co., Ltd." contact="Alon Or-bach @alonorbach"/>
|
||||
<tag name="RENDERDOC" author="RenderDoc (renderdoc.org)" contact="baldurk@baldurk.org"/>
|
||||
<tag name="NN" author="Nintendo Co., Ltd." contact="Yasuhiro Yoshioka @yoshioka_yasuhiro"/>
|
||||
</tags>
|
||||
|
||||
<!-- SECTION: Vulkan type definitions -->
|
||||
@@ -70,6 +71,7 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
|
||||
<!-- WSI extensions -->
|
||||
<type category="include">#include "<name>vulkan.h</name>"</type>
|
||||
<type category="include">#include <<name>X11/Xlib.h</name>></type>
|
||||
<type category="include">#include <<name>X11/extensions/Xrandr.h</name>></type>
|
||||
<type category="include">#include <<name>android/native_window.h</name>></type>
|
||||
<type category="include">#include <<name>mir_toolkit/client_types.h</name>></type>
|
||||
<type category="include">#include <<name>wayland-client.h</name>></type>
|
||||
@@ -79,6 +81,7 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
|
||||
<type requires="X11/Xlib.h" name="Display"/>
|
||||
<type requires="X11/Xlib.h" name="VisualID"/>
|
||||
<type requires="X11/Xlib.h" name="Window"/>
|
||||
<type requires="X11/extensions/Xrandr.h" name="RROutput"/>
|
||||
<type requires="android/native_window.h" name="ANativeWindow"/>
|
||||
<type requires="mir_toolkit/client_types.h" name="MirConnection"/>
|
||||
<type requires="mir_toolkit/client_types.h" name="MirSurface"/>
|
||||
@@ -104,7 +107,7 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
|
||||
<type category="define">// Vulkan 1.0 version number
|
||||
#define <name>VK_API_VERSION_1_0</name> <type>VK_MAKE_VERSION</type>(1, 0, 0)</type> <!-- The patch version here should never be set to anything other than 0 -->
|
||||
<type category="define">// Version of this file
|
||||
#define <name>VK_HEADER_VERSION</name> 38</type>
|
||||
#define <name>VK_HEADER_VERSION</name> 39</type>
|
||||
|
||||
<type category="define">
|
||||
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
|
||||
@@ -208,14 +211,17 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
|
||||
<type category="bitmask">typedef <type>VkFlags</type> <name>VkDisplaySurfaceCreateFlagsKHR</name>;</type> <!-- creation flags -->
|
||||
<type category="bitmask">typedef <type>VkFlags</type> <name>VkAndroidSurfaceCreateFlagsKHR</name>;</type> <!-- creation flags -->
|
||||
<type category="bitmask">typedef <type>VkFlags</type> <name>VkMirSurfaceCreateFlagsKHR</name>;</type> <!-- creation flags -->
|
||||
<type category="bitmask">typedef <type>VkFlags</type> <name>VkViSurfaceCreateFlagsNN</name>;</type> <!-- creation flags -->
|
||||
<type category="bitmask">typedef <type>VkFlags</type> <name>VkWaylandSurfaceCreateFlagsKHR</name>;</type> <!-- creation flags -->
|
||||
<type category="bitmask">typedef <type>VkFlags</type> <name>VkWin32SurfaceCreateFlagsKHR</name>;</type> <!-- creation flags -->
|
||||
<type category="bitmask">typedef <type>VkFlags</type> <name>VkXlibSurfaceCreateFlagsKHR</name>;</type> <!-- creation flags -->
|
||||
<type category="bitmask">typedef <type>VkFlags</type> <name>VkXcbSurfaceCreateFlagsKHR</name>;</type> <!-- creation flags -->
|
||||
|
||||
<type requires="VkDebugReportFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkDebugReportFlagsEXT</name>;</type>
|
||||
<type category="bitmask">typedef <type>VkFlags</type> <name>VkCommandPoolTrimFlagsKHR</name>;</type>
|
||||
<type requires="VkExternalMemoryHandleTypeFlagBitsNV" category="bitmask">typedef <type>VkFlags</type> <name>VkExternalMemoryHandleTypeFlagsNV</name>;</type>
|
||||
<type requires="VkExternalMemoryFeatureFlagBitsNV" category="bitmask">typedef <type>VkFlags</type> <name>VkExternalMemoryFeatureFlagsNV</name>;</type>
|
||||
<type requires="VkSurfaceCounterFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkSurfaceCounterFlagsEXT</name>;</type>
|
||||
|
||||
<!-- Types which can be void pointers or class pointers, selected at compile time -->
|
||||
<type category="handle"><type>VK_DEFINE_HANDLE</type>(<name>VkInstance</name>)</type>
|
||||
@@ -357,6 +363,10 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
|
||||
<type name="VkExternalMemoryHandleTypeFlagBitsNV" category="enum"/>
|
||||
<type name="VkExternalMemoryFeatureFlagBitsNV" category="enum"/>
|
||||
<type name="VkValidationCheckEXT" category="enum"/>
|
||||
<type name="VkSurfaceCounterFlagBitsEXT" category="enum"/>
|
||||
<type name="VkDisplayPowerStateEXT" category="enum"/>
|
||||
<type name="VkDeviceEventTypeEXT" category="enum"/>
|
||||
<type name="VkDisplayEventTypeEXT" category="enum"/>
|
||||
|
||||
<!-- The PFN_vk*Function types are used by VkAllocationCallbacks below -->
|
||||
<type category="funcpointer">typedef void (VKAPI_PTR *<name>PFN_vkInternalAllocationNotification</name>)(
|
||||
@@ -492,7 +502,7 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
|
||||
</type>
|
||||
<type category="struct" name="VkDeviceCreateInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure -->
|
||||
<member validextensionstructs="VkPhysicalDeviceFeatures2KHR">const <type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure -->
|
||||
<member optional="true"><type>VkDeviceCreateFlags</type> <name>flags</name></member> <!-- Reserved -->
|
||||
<member><type>uint32_t</type> <name>queueCreateInfoCount</name></member>
|
||||
<member len="queueCreateInfoCount">const <type>VkDeviceQueueCreateInfo</type>* <name>pQueueCreateInfos</name></member>
|
||||
@@ -1463,6 +1473,12 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
|
||||
<member noautovalidity="true"><type>MirConnection</type>* <name>connection</name></member>
|
||||
<member noautovalidity="true"><type>MirSurface</type>* <name>mirSurface</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkViSurfaceCreateInfoNN">
|
||||
<member values="VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure -->
|
||||
<member optional="true"><type>VkViSurfaceCreateFlagsNN</type> <name>flags</name></member> <!-- Reserved -->
|
||||
<member><type>void</type>* <name>window</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkWaylandSurfaceCreateInfoKHR">
|
||||
<member values="VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure -->
|
||||
@@ -1517,7 +1533,7 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
|
||||
</type>
|
||||
<type category="struct" name="VkPresentInfoKHR">
|
||||
<member values="VK_STRUCTURE_TYPE_PRESENT_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure -->
|
||||
<member validextensionstructs="VkDisplayPresentInfoKHR">const <type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure -->
|
||||
<member optional="true"><type>uint32_t</type> <name>waitSemaphoreCount</name></member> <!-- Number of semaphores to wait for before presenting -->
|
||||
<member optional="true" len="waitSemaphoreCount">const <type>VkSemaphore</type>* <name>pWaitSemaphores</name></member> <!-- Semaphores to wait for before presenting -->
|
||||
<member><type>uint32_t</type> <name>swapchainCount</name></member> <!-- Number of swap chains to present in this call -->
|
||||
@@ -1713,6 +1729,7 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
|
||||
<member><type>VkObjectEntryTypeNVX</type> <name>type</name></member>
|
||||
<member><type>VkObjectEntryUsageFlagsNVX</type> <name>flags</name></member>
|
||||
<member><type>VkBuffer</type> <name>buffer</name></member>
|
||||
<member><type>VkIndexType</type> <name>indexType</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkObjectTablePushConstantEntryNVX">
|
||||
<member><type>VkObjectEntryTypeNVX</type> <name>type</name></member>
|
||||
@@ -1720,6 +1737,94 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
|
||||
<member><type>VkPipelineLayout</type> <name>pipelineLayout</name></member>
|
||||
<member><type>VkShaderStageFlags</type> <name>stageFlags</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkPhysicalDeviceFeatures2KHR">
|
||||
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member><type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure -->
|
||||
<member><type>VkPhysicalDeviceFeatures</type> <name>features</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkPhysicalDeviceProperties2KHR" returnedonly="true">
|
||||
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member><type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure -->
|
||||
<member><type>VkPhysicalDeviceProperties</type> <name>properties</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkFormatProperties2KHR" returnedonly="true">
|
||||
<member values="VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member><type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure -->
|
||||
<member><type>VkFormatProperties</type> <name>formatProperties</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkImageFormatProperties2KHR" returnedonly="true">
|
||||
<member values="VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member><type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure -->
|
||||
<member><type>VkImageFormatProperties</type> <name>imageFormatProperties</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkPhysicalDeviceImageFormatInfo2KHR">
|
||||
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure -->
|
||||
<member><type>VkFormat</type> <name>format</name></member>
|
||||
<member><type>VkImageType</type> <name>type</name></member>
|
||||
<member><type>VkImageTiling</type> <name>tiling</name></member>
|
||||
<member><type>VkImageUsageFlags</type> <name>usage</name></member>
|
||||
<member optional="true"><type>VkImageCreateFlags</type> <name>flags</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkQueueFamilyProperties2KHR" returnedonly="true">
|
||||
<member values="VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member><type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure -->
|
||||
<member><type>VkQueueFamilyProperties</type> <name>queueFamilyProperties</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkPhysicalDeviceMemoryProperties2KHR" returnedonly="true">
|
||||
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member><type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure -->
|
||||
<member><type>VkPhysicalDeviceMemoryProperties</type> <name>memoryProperties</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkSparseImageFormatProperties2KHR" returnedonly="true">
|
||||
<member values="VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member><type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure -->
|
||||
<member><type>VkSparseImageFormatProperties</type> <name>properties</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkPhysicalDeviceSparseImageFormatInfo2KHR">
|
||||
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure -->
|
||||
<member><type>VkFormat</type> <name>format</name></member>
|
||||
<member><type>VkImageType</type> <name>type</name></member>
|
||||
<member><type>VkSampleCountFlagBits</type> <name>samples</name></member>
|
||||
<member><type>VkImageUsageFlags</type> <name>usage</name></member>
|
||||
<member><type>VkImageTiling</type> <name>tiling</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkSurfaceCapabilities2EXT" returnedonly="true">
|
||||
<member values="VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member><type>void</type>* <name>pNext</name></member>
|
||||
<member><type>uint32_t</type> <name>minImageCount</name></member> <!-- Supported minimum number of images for the surface -->
|
||||
<member><type>uint32_t</type> <name>maxImageCount</name></member> <!-- Supported maximum number of images for the surface, 0 for unlimited -->
|
||||
<member><type>VkExtent2D</type> <name>currentExtent</name></member> <!-- Current image width and height for the surface, (0, 0) if undefined -->
|
||||
<member><type>VkExtent2D</type> <name>minImageExtent</name></member> <!-- Supported minimum image width and height for the surface -->
|
||||
<member><type>VkExtent2D</type> <name>maxImageExtent</name></member> <!-- Supported maximum image width and height for the surface -->
|
||||
<member><type>uint32_t</type> <name>maxImageArrayLayers</name></member> <!-- Supported maximum number of image layers for the surface -->
|
||||
<member optional="true"><type>VkSurfaceTransformFlagsKHR</type> <name>supportedTransforms</name></member> <!-- 1 or more bits representing the transforms supported -->
|
||||
<member><type>VkSurfaceTransformFlagBitsKHR</type> <name>currentTransform</name></member> <!-- The surface's current transform relative to the device's natural orientation -->
|
||||
<member optional="true"><type>VkCompositeAlphaFlagsKHR</type> <name>supportedCompositeAlpha</name></member> <!-- 1 or more bits representing the alpha compositing modes supported -->
|
||||
<member optional="true"><type>VkImageUsageFlags</type> <name>supportedUsageFlags</name></member> <!-- Supported image usage flags for the surface -->
|
||||
<member optional="true"><type>VkSurfaceCounterFlagsEXT</type> <name>supportedSurfaceCounters</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkDisplayPowerInfoEXT">
|
||||
<member values="VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member><type>VkDisplayPowerStateEXT</type> <name>powerState</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkDeviceEventInfoEXT">
|
||||
<member values="VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member><type>VkDeviceEventTypeEXT</type> <name>deviceEvent</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkDisplayEventInfoEXT">
|
||||
<member values="VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member><type>VkDisplayEventTypeEXT</type> <name>displayEvent</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkSwapchainCounterCreateInfoEXT">
|
||||
<member values="VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member optional="true"><type>VkSurfaceCounterFlagsEXT</type> <name>surfaceCounters</name></member>
|
||||
</type>
|
||||
</types>
|
||||
|
||||
<!-- SECTION: Vulkan enumerant (token) definitions. -->
|
||||
@@ -2575,6 +2680,21 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
|
||||
<enum value="3" name="VK_OBJECT_ENTRY_VERTEX_BUFFER_NVX"/>
|
||||
<enum value="4" name="VK_OBJECT_ENTRY_PUSH_CONSTANT_NVX"/>
|
||||
</enums>
|
||||
<enums name="VkSurfaceCounterFlagBitsEXT" type="bitmask">
|
||||
<enum bitpos="0" name="VK_SURFACE_COUNTER_VBLANK_EXT"/>
|
||||
</enums>
|
||||
<enums name="VkDisplayPowerStateEXT" type="enum">
|
||||
<enum value="0" name="VK_DISPLAY_POWER_STATE_OFF_EXT"/>
|
||||
<enum value="1" name="VK_DISPLAY_POWER_STATE_SUSPEND_EXT"/>
|
||||
<enum value="2" name="VK_DISPLAY_POWER_STATE_ON_EXT"/>
|
||||
</enums>
|
||||
<enums name="VkDeviceEventTypeEXT" type="enum">
|
||||
<enum value="0" name="VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT"/>
|
||||
</enums>
|
||||
<enums name="VkDisplayEventTypeEXT" type="enum">
|
||||
<enum value="0" name="VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT"/>
|
||||
</enums>
|
||||
|
||||
<!-- SECTION: Vulkan command definitions -->
|
||||
<commands>
|
||||
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_LAYER_NOT_PRESENT,VK_ERROR_EXTENSION_NOT_PRESENT,VK_ERROR_INCOMPATIBLE_DRIVER">
|
||||
@@ -3372,7 +3492,7 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
|
||||
<param><type>VkDeviceSize</type> <name>dataSize</name></param>
|
||||
<param len="dataSize">const <type>void</type>* <name>pData</name></param>
|
||||
</command>
|
||||
<command queues="graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary" pipeline="transfer">
|
||||
<command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary" pipeline="transfer" comment="transfer support is only available when VK_KHR_maintenance1 is enabled, as documented in valid usage language in the specification">
|
||||
<proto><type>void</type> <name>vkCmdFillBuffer</name></proto>
|
||||
<param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
|
||||
<param><type>VkBuffer</type> <name>dstBuffer</name></param>
|
||||
@@ -3666,6 +3786,13 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
|
||||
<param externsync="true"><type>VkQueue</type> <name>queue</name></param>
|
||||
<param externsync="pPresentInfo.pWaitSemaphores[],pPresentInfo.pSwapchains[]">const <type>VkPresentInfoKHR</type>* <name>pPresentInfo</name></param>
|
||||
</command>
|
||||
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_NATIVE_WINDOW_IN_USE_KHR">
|
||||
<proto><type>VkResult</type> <name>vkCreateViSurfaceNN</name></proto>
|
||||
<param><type>VkInstance</type> <name>instance</name></param>
|
||||
<param>const <type>VkViSurfaceCreateInfoNN</type>* <name>pCreateInfo</name></param>
|
||||
<param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
|
||||
<param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
|
||||
</command>
|
||||
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
|
||||
<proto><type>VkResult</type> <name>vkCreateWaylandSurfaceKHR</name></proto>
|
||||
<param><type>VkInstance</type> <name>instance</name></param>
|
||||
@@ -3863,6 +3990,104 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
|
||||
<param><type>VkDeviceGeneratedCommandsFeaturesNVX</type>* <name>pFeatures</name></param>
|
||||
<param><type>VkDeviceGeneratedCommandsLimitsNVX</type>* <name>pLimits</name></param>
|
||||
</command>
|
||||
<command>
|
||||
<proto><type>void</type> <name>vkGetPhysicalDeviceFeatures2KHR</name></proto>
|
||||
<param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
|
||||
<param><type>VkPhysicalDeviceFeatures2KHR</type>* <name>pFeatures</name></param>
|
||||
</command>
|
||||
<command>
|
||||
<proto><type>void</type> <name>vkGetPhysicalDeviceProperties2KHR</name></proto>
|
||||
<param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
|
||||
<param><type>VkPhysicalDeviceProperties2KHR</type>* <name>pProperties</name></param>
|
||||
</command>
|
||||
<command>
|
||||
<proto><type>void</type> <name>vkGetPhysicalDeviceFormatProperties2KHR</name></proto>
|
||||
<param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
|
||||
<param><type>VkFormat</type> <name>format</name></param>
|
||||
<param><type>VkFormatProperties2KHR</type>* <name>pFormatProperties</name></param>
|
||||
</command>
|
||||
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_FORMAT_NOT_SUPPORTED">
|
||||
<proto><type>VkResult</type> <name>vkGetPhysicalDeviceImageFormatProperties2KHR</name></proto>
|
||||
<param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
|
||||
<param>const <type>VkPhysicalDeviceImageFormatInfo2KHR</type>* <name>pImageFormatInfo</name></param>
|
||||
<param><type>VkImageFormatProperties2KHR</type>* <name>pImageFormatProperties</name></param>
|
||||
</command>
|
||||
<command>
|
||||
<proto><type>void</type> <name>vkGetPhysicalDeviceQueueFamilyProperties2KHR</name></proto>
|
||||
<param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
|
||||
<param optional="false,true"><type>uint32_t</type>* <name>pQueueFamilyPropertyCount</name></param>
|
||||
<param optional="true" len="pQueueFamilyPropertyCount"><type>VkQueueFamilyProperties2KHR</type>* <name>pQueueFamilyProperties</name></param>
|
||||
</command>
|
||||
<command>
|
||||
<proto><type>void</type> <name>vkGetPhysicalDeviceMemoryProperties2KHR</name></proto>
|
||||
<param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
|
||||
<param><type>VkPhysicalDeviceMemoryProperties2KHR</type>* <name>pMemoryProperties</name></param>
|
||||
</command>
|
||||
<command>
|
||||
<proto><type>void</type> <name>vkGetPhysicalDeviceSparseImageFormatProperties2KHR</name></proto>
|
||||
<param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
|
||||
<param>const <type>VkPhysicalDeviceSparseImageFormatInfo2KHR</type>* <name>pFormatInfo</name></param>
|
||||
<param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
|
||||
<param optional="true" len="pPropertyCount"><type>VkSparseImageFormatProperties2KHR</type>* <name>pProperties</name></param>
|
||||
</command>
|
||||
<command>
|
||||
<proto><type>void</type> <name>vkTrimCommandPoolKHR</name></proto>
|
||||
<param><type>VkDevice</type> <name>device</name></param>
|
||||
<param externsync="true"><type>VkCommandPool</type> <name>commandPool</name></param>
|
||||
<param optional="true"><type>VkCommandPoolTrimFlagsKHR</type> <name>flags</name></param>
|
||||
</command>
|
||||
<command successcodes="VK_SUCCESS">
|
||||
<proto><type>VkResult</type> <name>vkReleaseDisplayEXT</name></proto>
|
||||
<param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
|
||||
<param><type>VkDisplayKHR</type> <name>display</name></param>
|
||||
</command>
|
||||
<command successcodes="VK_SUCCESS">
|
||||
<proto><type>VkResult</type> <name>vkAcquireXlibDisplayEXT</name></proto>
|
||||
<param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
|
||||
<param><type>Display</type>* <name>dpy</name></param>
|
||||
<param><type>VkDisplayKHR</type> <name>display</name></param>
|
||||
</command>
|
||||
<command successcodes="VK_SUCCESS">
|
||||
<proto><type>VkResult</type> <name>vkGetRandROutputDisplayEXT</name></proto>
|
||||
<param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
|
||||
<param><type>Display</type>* <name>dpy</name></param>
|
||||
<param><type>RROutput</type> <name>rrOutput</name></param>
|
||||
<param><type>VkDisplayKHR</type>* <name>pDisplay</name></param>
|
||||
</command>
|
||||
<command successcodes="VK_SUCCESS">
|
||||
<proto><type>VkResult</type> <name>vkDisplayPowerControlEXT</name></proto>
|
||||
<param><type>VkDevice</type> <name>device</name></param>
|
||||
<param><type>VkDisplayKHR</type> <name>display</name></param>
|
||||
<param>const <type>VkDisplayPowerInfoEXT</type>* <name>pDisplayPowerInfo</name></param>
|
||||
</command>
|
||||
<command successcodes="VK_SUCCESS">
|
||||
<proto><type>VkResult</type> <name>vkRegisterDeviceEventEXT</name></proto>
|
||||
<param><type>VkDevice</type> <name>device</name></param>
|
||||
<param>const <type>VkDeviceEventInfoEXT</type>* <name>pDeviceEventInfo</name></param>
|
||||
<param>const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
|
||||
<param><type>VkFence</type>* <name>pFence</name></param>
|
||||
</command>
|
||||
<command successcodes="VK_SUCCESS">
|
||||
<proto><type>VkResult</type> <name>vkRegisterDisplayEventEXT</name></proto>
|
||||
<param><type>VkDevice</type> <name>device</name></param>
|
||||
<param><type>VkDisplayKHR</type> <name>display</name></param>
|
||||
<param>const <type>VkDisplayEventInfoEXT</type>* <name>pDisplayEventInfo</name></param>
|
||||
<param>const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
|
||||
<param><type>VkFence</type>* <name>pFence</name></param>
|
||||
</command>
|
||||
<command successcodes="VK_SUCCESS,VK_ERROR_DEVICE_LOST,VK_ERROR_OUT_OF_DATE_KHR">
|
||||
<proto><type>VkResult</type> <name>vkGetSwapchainCounterEXT</name></proto>
|
||||
<param><type>VkDevice</type> <name>device</name></param>
|
||||
<param><type>VkSwapchainKHR</type> <name>swapchain</name></param>
|
||||
<param><type>VkSurfaceCounterFlagBitsEXT</type> <name>counter</name></param>
|
||||
<param><type>uint64_t</type>* <name>pCounterValue</name></param>
|
||||
</command>
|
||||
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR">
|
||||
<proto><type>VkResult</type> <name>vkGetPhysicalDeviceSurfaceCapabilities2EXT</name></proto>
|
||||
<param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
|
||||
<param><type>VkSurfaceKHR</type> <name>surface</name></param>
|
||||
<param><type>VkSurfaceCapabilities2EXT</type>* <name>pSurfaceCapabilities</name></param>
|
||||
</command>
|
||||
</commands>
|
||||
|
||||
<!-- SECTION: Vulkan API interface definitions -->
|
||||
@@ -4581,10 +4806,35 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
|
||||
<type name="VkWin32KeyedMutexAcquireReleaseInfoNV"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_KHR_extension_60" number="60" author="KHR" contact="Jeff Bolz @jbolz" supported="disabled">
|
||||
<extension name="VK_KHR_get_physical_device_properties2" number="60" author="KHR" contact="Jeff Bolz @jbolz" supported="vulkan">
|
||||
<require>
|
||||
<enum value="0" name="VK_KHR_EXTENSION_60_SPEC_VERSION"/>
|
||||
<enum value=""VK_KHR_extension_60"" name="VK_KHR_EXTENSION_60_EXTENSION_NAME"/>
|
||||
<enum value="1" name="VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION"/>
|
||||
<enum value=""VK_KHR_get_physical_device_properties2"" name="VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME"/>
|
||||
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR"/>
|
||||
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR"/>
|
||||
<enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR"/>
|
||||
<enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR"/>
|
||||
<enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR"/>
|
||||
<enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR"/>
|
||||
<enum offset="6" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR"/>
|
||||
<enum offset="7" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR"/>
|
||||
<enum offset="8" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR"/>
|
||||
<type name="VkPhysicalDeviceFeatures2KHR"/>
|
||||
<type name="VkPhysicalDeviceProperties2KHR"/>
|
||||
<type name="VkFormatProperties2KHR"/>
|
||||
<type name="VkImageFormatProperties2KHR"/>
|
||||
<type name="VkPhysicalDeviceImageFormatInfo2KHR"/>
|
||||
<type name="VkQueueFamilyProperties2KHR"/>
|
||||
<type name="VkPhysicalDeviceMemoryProperties2KHR"/>
|
||||
<type name="VkSparseImageFormatProperties2KHR"/>
|
||||
<type name="VkPhysicalDeviceSparseImageFormatInfo2KHR"/>
|
||||
<command name="vkGetPhysicalDeviceFeatures2KHR"/>
|
||||
<command name="vkGetPhysicalDeviceProperties2KHR"/>
|
||||
<command name="vkGetPhysicalDeviceFormatProperties2KHR"/>
|
||||
<command name="vkGetPhysicalDeviceImageFormatProperties2KHR"/>
|
||||
<command name="vkGetPhysicalDeviceQueueFamilyProperties2KHR"/>
|
||||
<command name="vkGetPhysicalDeviceMemoryProperties2KHR"/>
|
||||
<command name="vkGetPhysicalDeviceSparseImageFormatProperties2KHR"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_KHR_extension_61" number="61" author="KHR" contact="Jeff Bolz @jbolz" supported="disabled">
|
||||
@@ -4601,28 +4851,32 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
|
||||
<type name="VkValidationFlagsEXT"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_NV_extension_63" number="63" author="NVIDIA" contact="Mathias Heyer @mheyer" supported="disabled">
|
||||
<extension name="VK_NN_vi_surface" number="63" author="NN" contact="Mathias Heyer @mheyer" type="instance" requires="VK_KHR_surface" protect="VK_USE_PLATFORM_VI_NN" supported="vulkan">
|
||||
<require>
|
||||
<enum value="0" name="VK_NV_EXTENSION_63_SPEC_VERSION"/>
|
||||
<enum value=""VK_NV_extension_63"" name="VK_NV_EXTENSION_63_EXTENSION_NAME"/>
|
||||
<enum value="1" name="VK_NN_VI_SURFACE_SPEC_VERSION"/>
|
||||
<enum value=""VK_NN_vi_surface"" name="VK_NN_VI_SURFACE_EXTENSION_NAME"/>
|
||||
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN"/>
|
||||
<type name="VkViSurfaceCreateFlagsNN"/>
|
||||
<type name="VkViSurfaceCreateInfoNN"/>
|
||||
<command name="vkCreateViSurfaceNN"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_KHR_extension_64" number="64" author="KHR" contact="Daniel Koch @dgkoch" supported="disabled">
|
||||
<extension name="VK_KHR_shader_draw_parameters" number="64" type="device" author="KHR" contact="Daniel Koch @dgkoch" supported="vulkan">
|
||||
<require>
|
||||
<enum value="0" name="VK_KHR_EXTENSION_64_SPEC_VERSION"/>
|
||||
<enum value=""VK_KHR_extension_64"" name="VK_KHR_EXTENSION_64_EXTENSION_NAME"/>
|
||||
<enum value="1" name="VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION"/>
|
||||
<enum value=""VK_KHR_shader_draw_parameters"" name="VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_NV_extension_65" number="65" author="NVIDIA" contact="Daniel Koch @dgkoch" supported="disabled">
|
||||
<extension name="VK_EXT_shader_subgroup_ballot" number="65" author="NVIDIA" contact="Daniel Koch @dgkoch" supported="vulkan">
|
||||
<require>
|
||||
<enum value="0" name="VK_NV_EXTENSION_65_SPEC_VERSION"/>
|
||||
<enum value=""VK_NV_extension_65"" name="VK_NV_EXTENSION_65_EXTENSION_NAME"/>
|
||||
<enum value="1" name="VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION"/>
|
||||
<enum value=""VK_EXT_shader_subgroup_ballot"" name="VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_NV_extension_66" number="66" author="NVIDIA" contact="Daniel Koch @dgkoch" supported="disabled">
|
||||
<extension name="VK_EXT_shader_subgroup_vote" number="66" author="NVIDIA" contact="Daniel Koch @dgkoch" supported="vulkan">
|
||||
<require>
|
||||
<enum value="0" name="VK_NV_EXTENSION_66_SPEC_VERSION"/>
|
||||
<enum value=""VK_NV_extension_66"" name="VK_NV_EXTENSION_66_EXTENSION_NAME"/>
|
||||
<enum value="1" name="VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION"/>
|
||||
<enum value=""VK_EXT_shader_subgroup_vote"" name="VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_ARM_extension_01" number="67" type="device" author="ARM" contact="Jan-Harald Fredriksen @janharald" supported="disabled">
|
||||
@@ -4643,10 +4897,15 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
|
||||
<enum value=""VK_IMG_extension_69"" name="VK_IMG_EXTENSION_69_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_KHR_extension_70" number="70" author="KHR" contact="Piers Daniell @pdaniell" supported="disabled">
|
||||
<extension name="VK_KHR_maintenance1" number="70" author="KHR" contact="Piers Daniell @pdaniell" supported="vulkan">
|
||||
<require>
|
||||
<enum value="0" name="VK_KHR_EXTENSION_70_SPEC_VERSION"/>
|
||||
<enum value=""VK_KHR_extension_70"" name="VK_KHR_EXTENSION_70_EXTENSION_NAME"/>
|
||||
<enum value="1" name="VK_KHR_MAINTENANCE1_SPEC_VERSION"/>
|
||||
<enum value=""VK_KHR_maintenance1"" name="VK_KHR_MAINTENANCE1_EXTENSION_NAME"/>
|
||||
<enum offset="0" dir="-" extends="VkResult" name="VK_ERROR_OUT_OF_POOL_MEMORY_KHR"/>
|
||||
<enum bitpos="14" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR" comment="Format can be used as the source image of image transfer commands"/>
|
||||
<enum bitpos="15" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR" comment="Format can be used as the destination image of image transfer commands"/>
|
||||
<enum bitpos="5" extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR" comment="The 3D image can be viewed as a 2D or 2D array image"/>
|
||||
<command name="vkTrimCommandPoolKHR"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_KHR_extension_71" number="71" author="KHR" contact="Jeff Bolz @jbolz" supported="disabled">
|
||||
@@ -4797,29 +5056,52 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
|
||||
<enum value=""VK_KHR_extension_88"" name="VK_KHR_EXTENSION_88_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_EXT_extension_89" number="89" author="NV" contact="James Jones @cubanismo" supported="disabled">
|
||||
<extension name="VK_EXT_direct_mode_display" number="89" type="instance" requires="VK_KHR_display" author="NVIDIA" contact="James Jones @cubanismo" supported="vulkan">
|
||||
<require>
|
||||
<enum value="0" name="VK_EXT_EXTENSION_89_SPEC_VERSION"/>
|
||||
<enum value=""VK_EXT_extension_89"" name="VK_EXT_EXTENSION_89_EXTENSION_NAME"/>
|
||||
</require>
|
||||
<enum value="1" name="VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION"/>
|
||||
<enum value=""VK_EXT_direct_mode_display"" name="VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME"/>
|
||||
<command name="vkReleaseDisplayEXT"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_EXT_extension_90" number="90" author="NV" contact="James Jones @cubanismo" supported="disabled">
|
||||
<extension name="VK_EXT_acquire_xlib_display" number="90" type="instance" requires="VK_EXT_direct_mode_display,VK_KHR_display" author="NVIDIA" contact="James Jones @cubanismo" protect="VK_USE_PLATFORM_XLIB_XRANDR_EXT" supported="vulkan">
|
||||
<require>
|
||||
<enum value="0" name="VK_EXT_EXTENSION_90_SPEC_VERSION"/>
|
||||
<enum value=""VK_EXT_extension_90"" name="VK_EXT_EXTENSION_90_EXTENSION_NAME"/>
|
||||
</require>
|
||||
<enum value="1" name="VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION"/>
|
||||
<enum value=""VK_EXT_acquire_xlib_display"" name="VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME"/>
|
||||
<command name="vkAcquireXlibDisplayEXT"/>
|
||||
<command name="vkGetRandROutputDisplayEXT"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_EXT_extension_91" number="91" author="NV" contact="James Jones @cubanismo" supported="disabled">
|
||||
<extension name="VK_EXT_display_surface_counter" number="91" type="instance" requires="VK_KHR_display" author="NVIDIA" contact="James Jones @cubanismo" supported="vulkan">
|
||||
<require>
|
||||
<enum value="0" name="VK_EXT_EXTENSION_91_SPEC_VERSION"/>
|
||||
<enum value=""VK_EXT_extension_91"" name="VK_EXT_EXTENSION_91_EXTENSION_NAME"/>
|
||||
</require>
|
||||
<enum value="1" name="VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION"/>
|
||||
<enum value=""VK_EXT_display_surface_counter"" name="VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME"/>
|
||||
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT"/>
|
||||
<type name="VkSurfaceCounterFlagsEXT"/>
|
||||
<type name="VkSurfaceCounterFlagBitsEXT"/>
|
||||
<type name="VkSurfaceCapabilities2EXT"/>
|
||||
<command name="vkGetPhysicalDeviceSurfaceCapabilities2EXT"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_EXT_extension_92" number="92" author="NV" contact="James Jones @cubanismo" supported="disabled">
|
||||
<extension name="VK_EXT_display_control" number="92" type="device" requires="VK_KHR_display,VK_EXT_display_surface_counter,VK_KHR_swapchain" author="NVIDIA" contact="James Jones @cubanismo" supported="vulkan">
|
||||
<require>
|
||||
<enum value="0" name="VK_EXT_EXTENSION_92_SPEC_VERSION"/>
|
||||
<enum value=""VK_EXT_extension_92"" name="VK_EXT_EXTENSION_92_EXTENSION_NAME"/>
|
||||
</require>
|
||||
<enum value="1" name="VK_EXT_DISPLAY_CONTROL_SPEC_VERSION"/>
|
||||
<enum value=""VK_EXT_display_control"" name="VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME"/>
|
||||
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT"/>
|
||||
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT"/>
|
||||
<enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT"/>
|
||||
<enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT"/>
|
||||
<type name="VkDisplayPowerStateEXT"/>
|
||||
<type name="VkDeviceEventTypeEXT"/>
|
||||
<type name="VkDisplayEventTypeEXT"/>
|
||||
<type name="VkDisplayPowerInfoEXT"/>
|
||||
<type name="VkDeviceEventInfoEXT"/>
|
||||
<type name="VkDisplayEventInfoEXT"/>
|
||||
<type name="VkSwapchainCounterCreateInfoEXT"/>
|
||||
<command name="vkDisplayPowerControlEXT"/>
|
||||
<command name="vkRegisterDeviceEventEXT"/>
|
||||
<command name="vkRegisterDisplayEventEXT"/>
|
||||
<command name="vkGetSwapchainCounterEXT"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_KHR_extension_93" number="93" author="GOOGLE" contact="Ian Elliott @ianelliott" supported="disabled">
|
||||
<require>
|
||||
@@ -4893,10 +5175,94 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
|
||||
<enum value=""VK_NV_extension_104"" name="VK_NV_EXTENSION_104_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_EXT_extension_105" number="105" author="GOOGLE" contact="Courtney Goeltzenleuchter @courtneygo" supported="disabled">
|
||||
<extension name="VK_EXT_swapchain_colorspace" number="105" author="GOOGLE" contact="Courtney Goeltzenleuchter @courtneygo" requires="VK_KHR_surface" supported="vulkan">
|
||||
<require>
|
||||
<enum value="0" name="VK_KHR_EXTENSION_105_SPEC_VERSION"/>
|
||||
<enum value=""VK_EXT_extension_105"" name="VK_KHR_EXTENSION_105_EXTENSION_NAME"/>
|
||||
<enum value="1" name="VK_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION"/>
|
||||
<enum value=""VK_EXT_swapchain_colorspace"" name="VK_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME"/>
|
||||
<enum offset="1" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT"/>
|
||||
<enum offset="2" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT"/>
|
||||
<enum offset="3" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_SCRGB_LINEAR_EXT"/>
|
||||
<enum offset="4" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_SCRGB_NONLINEAR_EXT"/>
|
||||
<enum offset="5" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_DCI_P3_LINEAR_EXT"/>
|
||||
<enum offset="6" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT"/>
|
||||
<enum offset="7" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_BT709_LINEAR_EXT"/>
|
||||
<enum offset="8" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_BT709_NONLINEAR_EXT"/>
|
||||
<enum offset="9" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_BT2020_LINEAR_EXT"/>
|
||||
<enum offset="10" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_BT2020_NONLINEAR_EXT"/>
|
||||
<enum offset="11" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT"/>
|
||||
<enum offset="12" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_EXT_extension_106" number="106" author="GOOGLE" contact="Courtney Goeltzenleuchter @courtneygo" supported="disabled">
|
||||
<require>
|
||||
<enum value="0" name="VK_KHR_EXTENSION_106_SPEC_VERSION"/>
|
||||
<enum value=""VK_EXT_extension_106"" name="VK_KHR_EXTENSION_106_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_IMG_extension_107" number="107" author="IMG" contact="Michael Worcester @michaelworcester" supported="disabled">
|
||||
<require>
|
||||
<enum value="0" name="VK_IMG_EXTENSION_107_SPEC_VERSION"/>
|
||||
<enum value=""VK_IMG_extension_107"" name="VK_IMG_EXTENSION_107_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_IMG_extension_108" number="108" author="IMG" contact="Michael Worcester @michaelworcester" supported="disabled">
|
||||
<require>
|
||||
<enum value="0" name="VK_IMG_EXTENSION_108_SPEC_VERSION"/>
|
||||
<enum value=""VK_IMG_extension_108"" name="VK_IMG_EXTENSION_108_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_IMG_extension_109" number="109" author="IMG" contact="Michael Worcester @michaelworcester" supported="disabled">
|
||||
<require>
|
||||
<enum value="0" name="VK_IMG_EXTENSION_109_SPEC_VERSION"/>
|
||||
<enum value=""VK_IMG_extension_109"" name="VK_IMG_EXTENSION_109_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_IMG_extension_110" number="110" author="IMG" contact="Michael Worcester @michaelworcester" supported="disabled">
|
||||
<require>
|
||||
<enum value="0" name="VK_IMG_EXTENSION_110_SPEC_VERSION"/>
|
||||
<enum value=""VK_IMG_extension_110"" name="VK_IMG_EXTENSION_110_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_IMG_extension_111" number="111" author="IMG" contact="Michael Worcester @michaelworcester" supported="disabled">
|
||||
<require>
|
||||
<enum value="0" name="VK_IMG_EXTENSION_111_SPEC_VERSION"/>
|
||||
<enum value=""VK_IMG_extension_111"" name="VK_IMG_EXTENSION_111_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_KHR_extension_112" number="112" author="KHR" contact="Alon Or-bach @alonorbach" supported="disabled">
|
||||
<require>
|
||||
<enum value="0" name="VK_KHR_EXTENSION_112_SPEC_VERSION"/>
|
||||
<enum value=""VK_KHR_extension_112"" name="VK_KHR_EXTENSION_112_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_KHR_extension_113" number="113" author="KHX" contact="Cass Everitt @casseveritt" supported="disabled">
|
||||
<require>
|
||||
<enum value="0" name="VK_KHR_EXTENSION_113_SPEC_VERSION"/>
|
||||
<enum value=""VK_KHR_extension_113"" name="VK_KHR_EXTENSION_113_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_KHR_extension_114" number="114" author="KHX" contact="Cass Everitt @casseveritt" supported="disabled">
|
||||
<require>
|
||||
<enum value="0" name="VK_KHR_EXTENSION_114_SPEC_VERSION"/>
|
||||
<enum value=""VK_KHR_extension_114"" name="VK_KHR_EXTENSION_114_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_KHR_extension_115" number="115" author="KHX" contact="Cass Everitt @casseveritt" supported="disabled">
|
||||
<require>
|
||||
<enum value="0" name="VK_KHR_EXTENSION_115_SPEC_VERSION"/>
|
||||
<enum value=""VK_KHR_extension_115"" name="VK_KHR_EXTENSION_115_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_KHR_extension_116" number="116" author="KHX" contact="Cass Everitt @casseveritt" supported="disabled">
|
||||
<require>
|
||||
<enum value="0" name="VK_KHR_EXTENSION_116_SPEC_VERSION"/>
|
||||
<enum value=""VK_KHR_extension_116"" name="VK_KHR_EXTENSION_116_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_KHR_extension_117" number="117" author="KHR" contact="Kenneth Benzie @kbenzie" supported="disabled">
|
||||
<require>
|
||||
<enum value="0" name="VK_KHR_EXTENSION_117_SPEC_VERSION"/>
|
||||
<enum value=""VK_KHR_extension_117"" name="VK_KHR_EXTENSION_117_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</extension>
|
||||
</extensions>
|
||||
|
||||
@@ -35,6 +35,8 @@ struct layer_data {
|
||||
layer_data() : instance(VK_NULL_HANDLE), instance_dispatch_table(nullptr) {};
|
||||
};
|
||||
|
||||
static uint32_t loader_layer_if_version = CURRENT_LOADER_LAYER_INTERFACE_VERSION;
|
||||
|
||||
static std::unordered_map<void *, layer_data *> layer_data_map;
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL CreateInstance(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator,
|
||||
@@ -64,7 +66,6 @@ VKAPI_ATTR VkResult VKAPI_CALL CreateInstance(const VkInstanceCreateInfo* pCreat
|
||||
instance_data->instance = *pInstance;
|
||||
instance_data->instance_dispatch_table = new VkLayerInstanceDispatchTable;
|
||||
layer_init_instance_dispatch_table(*pInstance, instance_data->instance_dispatch_table, fpGetInstanceProcAddr);
|
||||
|
||||
// Marker for testing.
|
||||
std::cout << "VK_LAYER_LUNARG_test: CreateInstance" << '\n';
|
||||
|
||||
@@ -117,6 +118,19 @@ VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL GetInstanceProcAddr(VkInstance instance
|
||||
return pTable->GetInstanceProcAddr(instance, funcName);
|
||||
}
|
||||
|
||||
VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL GetPhysicalDeviceProcAddr(VkInstance instance, const char *funcName) {
|
||||
assert(instance);
|
||||
|
||||
layer_data *instance_data = get_my_data_ptr(get_dispatch_key(instance), layer_data_map);
|
||||
VkLayerInstanceDispatchTable *pTable = instance_data->instance_dispatch_table;
|
||||
if (pTable->GetPhysicalDeviceProcAddr == nullptr)
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return pTable->GetPhysicalDeviceProcAddr(instance, funcName);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
VK_LAYER_EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(VkInstance instance, const char* funcName)
|
||||
@@ -138,3 +152,27 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceLayerPropertie
|
||||
{
|
||||
return VK_ERROR_LAYER_NOT_PRESENT;
|
||||
}
|
||||
|
||||
VK_LAYER_EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_layerGetPhysicalDeviceProcAddr(VkInstance instance, const char *funcName) {
|
||||
return test::GetPhysicalDeviceProcAddr(instance, funcName);
|
||||
}
|
||||
|
||||
VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkNegotiateLoaderLayerInterfaceVersion(VkNegotiateLayerInterface *pVersionStruct) {
|
||||
assert(pVersionStruct != NULL);
|
||||
assert(pVersionStruct->sType == LAYER_NEGOTIATE_INTERFACE_STRUCT);
|
||||
|
||||
// Fill in the function pointers if our version is at least capable of having the structure contain them.
|
||||
if (pVersionStruct->loaderLayerInterfaceVersion >= 2) {
|
||||
pVersionStruct->pfnGetInstanceProcAddr = vkGetInstanceProcAddr;
|
||||
pVersionStruct->pfnGetDeviceProcAddr = vkGetDeviceProcAddr;
|
||||
pVersionStruct->pfnGetPhysicalDeviceProcAddr = vk_layerGetPhysicalDeviceProcAddr;
|
||||
}
|
||||
|
||||
if (pVersionStruct->loaderLayerInterfaceVersion < CURRENT_LOADER_LAYER_INTERFACE_VERSION) {
|
||||
test::loader_layer_if_version = pVersionStruct->loaderLayerInterfaceVersion;
|
||||
} else if (pVersionStruct->loaderLayerInterfaceVersion > CURRENT_LOADER_LAYER_INTERFACE_VERSION) {
|
||||
pVersionStruct->loaderLayerInterfaceVersion = CURRENT_LOADER_LAYER_INTERFACE_VERSION;
|
||||
}
|
||||
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -34,6 +34,8 @@ static const VkLayerProperties global_layer = {
|
||||
"VK_LAYER_LUNARG_wrap_objects", VK_LAYER_API_VERSION, 1, "LunarG Test Layer",
|
||||
};
|
||||
|
||||
static uint32_t loader_layer_if_version = CURRENT_LOADER_LAYER_INTERFACE_VERSION;
|
||||
|
||||
//TODO Add wrapping of Vkdevice, Vkqueue, VkcommandBuffer
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance)
|
||||
@@ -1565,6 +1567,18 @@ VK_LAYER_EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(V
|
||||
return pTable->GetInstanceProcAddr(instance, funcName);
|
||||
}
|
||||
|
||||
VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL GetPhysicalDeviceProcAddr(VkInstance instance, const char *funcName) {
|
||||
assert(instance);
|
||||
|
||||
wrapped_inst_obj *inst;
|
||||
(void)unwrap_instance(instance, &inst);
|
||||
VkLayerInstanceDispatchTable* pTable = &inst->layer_disp;
|
||||
|
||||
if (pTable->GetPhysicalDeviceProcAddr == NULL)
|
||||
return NULL;
|
||||
return pTable->GetPhysicalDeviceProcAddr(instance, funcName);
|
||||
}
|
||||
|
||||
} // namespace wrap_objects
|
||||
|
||||
// loader-layer interface v0, just wrappers since there is only a layer
|
||||
@@ -1602,3 +1616,27 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceExtensionPropert
|
||||
assert(physicalDevice == VK_NULL_HANDLE);
|
||||
return wrap_objects::vkEnumerateDeviceExtensionProperties(VK_NULL_HANDLE, pLayerName, pCount, pProperties);
|
||||
}
|
||||
|
||||
VK_LAYER_EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_layerGetPhysicalDeviceProcAddr(VkInstance instance, const char *funcName) {
|
||||
return wrap_objects::GetPhysicalDeviceProcAddr(instance, funcName);
|
||||
}
|
||||
|
||||
VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkNegotiateLoaderLayerInterfaceVersion(VkNegotiateLayerInterface *pVersionStruct) {
|
||||
assert(pVersionStruct != NULL);
|
||||
assert(pVersionStruct->sType == LAYER_NEGOTIATE_INTERFACE_STRUCT);
|
||||
|
||||
// Fill in the function pointers if our version is at least capable of having the structure contain them.
|
||||
if (pVersionStruct->loaderLayerInterfaceVersion >= 2) {
|
||||
pVersionStruct->pfnGetInstanceProcAddr = vkGetInstanceProcAddr;
|
||||
pVersionStruct->pfnGetDeviceProcAddr = vkGetDeviceProcAddr;
|
||||
pVersionStruct->pfnGetPhysicalDeviceProcAddr = vk_layerGetPhysicalDeviceProcAddr;
|
||||
}
|
||||
|
||||
if (pVersionStruct->loaderLayerInterfaceVersion < CURRENT_LOADER_LAYER_INTERFACE_VERSION) {
|
||||
wrap_objects::loader_layer_if_version = pVersionStruct->loaderLayerInterfaceVersion;
|
||||
} else if (pVersionStruct->loaderLayerInterfaceVersion > CURRENT_LOADER_LAYER_INTERFACE_VERSION) {
|
||||
pVersionStruct->loaderLayerInterfaceVersion = CURRENT_LOADER_LAYER_INTERFACE_VERSION;
|
||||
}
|
||||
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||