diff options
| author | Courtney Goeltzenleuchter <courtneygo@google.com> | 2016-02-12 13:46:04 -0700 |
|---|---|---|
| committer | Jon Ashburn <jon@lunarg.com> | 2016-02-18 14:48:57 -0700 |
| commit | ec0cf1e96fb838397095358ab0db1f623791bf57 (patch) | |
| tree | 04c871936dfa6b037a1bb6955321271aa6b14e87 /layers | |
| parent | d2dd5425702556c111db4eb85230d16c204da723 (diff) | |
| download | usermoji-ec0cf1e96fb838397095358ab0db1f623791bf57.tar.xz | |
layers: MR221: Android needs Enumerate*Properties
Android queries information about layers and extensions
from the layers via the Enumerate*Properties calls so
need them to function correctly. This patch adds missing
functions.
---------------------------
Diffstat (limited to 'layers')
| -rw-r--r-- | layers/device_limits.cpp | 26 | ||||
| -rw-r--r-- | layers/draw_state.cpp | 1 | ||||
| -rw-r--r-- | layers/swapchain.cpp | 44 |
3 files changed, 59 insertions, 12 deletions
diff --git a/layers/device_limits.cpp b/layers/device_limits.cpp index f363ed25..690a1617 100644 --- a/layers/device_limits.cpp +++ b/layers/device_limits.cpp @@ -163,6 +163,21 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceExtensionPrope return util_GetExtensionProperties(1, instance_extensions, pCount, pProperties); } +VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL +vkEnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice, + const char *pLayerName, uint32_t *pCount, + VkExtensionProperties *pProperties) { + if (pLayerName == NULL) { + dispatch_key key = get_dispatch_key(physicalDevice); + layer_data *my_data = get_my_data_ptr(key, layer_data_map); + return my_data->instance_dispatch_table + ->EnumerateDeviceExtensionProperties(physicalDevice, NULL, pCount, + pProperties); + } else { + return util_GetExtensionProperties(0, nullptr, pCount, pProperties); + } +} + static const VkLayerProperties dl_global_layers[] = { { "VK_LAYER_LUNARG_device_limits", @@ -181,6 +196,13 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceLayerPropertie pCount, pProperties); } +VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceLayerProperties( + VkPhysicalDevice physicalDevice, uint32_t *pCount, + VkLayerProperties *pProperties) { + return util_GetLayerProperties(ARRAY_SIZE(dl_global_layers), + dl_global_layers, pCount, pProperties); +} + VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance) { VkLayerInstanceCreateInfo *chain_info = get_chain_info(pCreateInfo, VK_LAYER_LINK_INFO); @@ -812,8 +834,12 @@ VK_LAYER_EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(V return (PFN_vkVoidFunction) vkGetPhysicalDeviceSparseImageFormatProperties; if (!strcmp(funcName, "vkEnumerateInstanceLayerProperties")) return (PFN_vkVoidFunction) vkEnumerateInstanceLayerProperties; + if (!strcmp(funcName, "vkEnumerateDeviceLayerProperties")) + return (PFN_vkVoidFunction)vkEnumerateDeviceLayerProperties; if (!strcmp(funcName, "vkEnumerateInstanceExtensionProperties")) return (PFN_vkVoidFunction) vkEnumerateInstanceExtensionProperties; + if (!strcmp(funcName, "vkEnumerateInstanceDeviceProperties")) + return (PFN_vkVoidFunction)vkEnumerateDeviceExtensionProperties; if (!instance) return NULL; diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp index b957ff52..1e7df0de 100644 --- a/layers/draw_state.cpp +++ b/layers/draw_state.cpp @@ -3656,7 +3656,6 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceExtensionPropert uint32_t* pCount, VkExtensionProperties* pProperties) { - // DrawState does not have any physical device extensions if (pLayerName == NULL) { dispatch_key key = get_dispatch_key(physicalDevice); layer_data *my_data = get_my_data_ptr(key, layer_data_map); diff --git a/layers/swapchain.cpp b/layers/swapchain.cpp index 68a8738f..af22511b 100644 --- a/layers/swapchain.cpp +++ b/layers/swapchain.cpp @@ -56,25 +56,43 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceExtensionPrope uint32_t *pCount, VkExtensionProperties* pProperties) { - return util_GetExtensionProperties(1, instance_extensions, pCount, pProperties); + return util_GetExtensionProperties(ARRAY_SIZE(instance_extensions), + instance_extensions, pCount, + pProperties); } -static const VkLayerProperties swapchain_global_layers[] = { - { - "VK_LAYER_LUNARG_swapchain", - VK_API_VERSION, - 1, - "LunarG Validation Layer", +VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL +vkEnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice, + const char *pLayerName, uint32_t *pCount, + VkExtensionProperties *pProperties) { + if (pLayerName == NULL) { + dispatch_key key = get_dispatch_key(physicalDevice); + layer_data *my_data = get_my_data_ptr(key, layer_data_map); + return my_data->instance_dispatch_table + ->EnumerateDeviceExtensionProperties(physicalDevice, NULL, pCount, + pProperties); + } else { + return util_GetExtensionProperties(0, nullptr, pCount, pProperties); } -}; +} + +static const VkLayerProperties swapchain_layers[] = {{ + "VK_LAYER_LUNARG_swapchain", VK_API_VERSION, 1, "LunarG Validation Layer", +}}; VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceLayerProperties( uint32_t *pCount, VkLayerProperties* pProperties) { - return util_GetLayerProperties(ARRAY_SIZE(swapchain_global_layers), - swapchain_global_layers, - pCount, pProperties); + return util_GetLayerProperties(ARRAY_SIZE(swapchain_layers), + swapchain_layers, pCount, pProperties); +} + +VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceLayerProperties( + VkPhysicalDevice physicalDevice, uint32_t *pCount, + VkLayerProperties *pProperties) { + return util_GetLayerProperties(ARRAY_SIZE(swapchain_layers), + swapchain_layers, pCount, pProperties); } static void createDeviceRegisterExtensions(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, VkDevice device) @@ -2402,8 +2420,12 @@ VK_LAYER_EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(V return (PFN_vkVoidFunction) vkEnumeratePhysicalDevices; if (!strcmp(funcName, "vkEnumerateInstanceLayerProperties")) return (PFN_vkVoidFunction) vkEnumerateInstanceLayerProperties; + if (!strcmp(funcName, "vkEnumerateDeviceLayerProperties")) + return (PFN_vkVoidFunction)vkEnumerateDeviceLayerProperties; if (!strcmp(funcName, "vkEnumerateInstanceExtensionProperties")) return (PFN_vkVoidFunction) vkEnumerateInstanceExtensionProperties; + if (!strcmp(funcName, "vkEnumerateDeviceExtensionProperties")) + return (PFN_vkVoidFunction)vkEnumerateDeviceExtensionProperties; if (!strcmp(funcName, "vkGetPhysicalDeviceQueueFamilyProperties")) return (PFN_vkVoidFunction) vkGetPhysicalDeviceQueueFamilyProperties; |
