From f576a3edbd003797df3ca6995160e093f14c9f9d Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Sun, 21 Jun 2015 22:55:02 +1200 Subject: vulkan.h: Remove vkGetFormatInfo, add features/limits (#12827, v125) NOTES: 1/ Some layers impact from vkGetFormatInfo -> vkGetPhysicalDeviceFormatInfo; some checks are currently disabled in ParamChecker pending discussion on the best way to do this. Similar checks in Image layer implemented via additional layer_data member to link back from VkDevice -> VkPhysicalDevice. 2/ VkPhysicalDeviceFeatures, VkPhysicalDeviceLimits members all zero for now; also some further churn to be done to the contents of these structures. Signed-off-by: Chris Forbes --- layers/image.cpp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'layers/image.cpp') diff --git a/layers/image.cpp b/layers/image.cpp index cac66a5a..28caa389 100644 --- a/layers/image.cpp +++ b/layers/image.cpp @@ -46,6 +46,7 @@ typedef struct _layer_data { debug_report_data *report_data; VkDbgMsgCallback logging_callback; + VkPhysicalDevice physicalDevice; } layer_data; static std::unordered_map layer_data_map; @@ -177,6 +178,7 @@ VK_LAYER_EXPORT VkResult VKAPI vkCreateDevice(VkPhysicalDevice physicalDevice, c layer_data *instance_data = get_my_data_ptr(get_dispatch_key(physicalDevice), layer_data_map); layer_data *device_data = get_my_data_ptr(get_dispatch_key(*pDevice), layer_data_map); device_data->report_data = layer_debug_report_create_device(instance_data->report_data, *pDevice); + device_data->physicalDevice = physicalDevice; } return result; @@ -293,10 +295,10 @@ VK_LAYER_EXPORT VkResult VKAPI vkCreateImage(VkDevice device, const VkImageCreat { if(pCreateInfo->format != VK_FORMAT_UNDEFINED) { + layer_data *device_data = (layer_data *) mdd(device); VkFormatProperties properties; - size_t size = sizeof(properties); - VkResult result = get_dispatch_table(image_device_table_map, device)->GetFormatInfo(device, pCreateInfo->format, - VK_FORMAT_INFO_TYPE_PROPERTIES, &size, &properties); + VkResult result = get_dispatch_table(image_instance_table_map, device_data->physicalDevice)->GetPhysicalDeviceFormatInfo( + device_data->physicalDevice, pCreateInfo->format, &properties); if(result != VK_SUCCESS) { char const str[] = "vkCreateImage parameter, VkFormat pCreateInfo->format, cannot be validated"; @@ -321,10 +323,10 @@ VK_LAYER_EXPORT VkResult VKAPI vkCreateRenderPass(VkDevice device, const VkRende { if(pCreateInfo->pColorFormats[i] != VK_FORMAT_UNDEFINED) { + layer_data *device_data = (layer_data *) mdd(device); VkFormatProperties properties; - size_t size = sizeof(properties); - VkResult result = get_dispatch_table(image_device_table_map, device)->GetFormatInfo(device, pCreateInfo->pColorFormats[i], - VK_FORMAT_INFO_TYPE_PROPERTIES, &size, &properties); + VkResult result = get_dispatch_table(image_instance_table_map, device_data->physicalDevice)->GetPhysicalDeviceFormatInfo( + device_data->physicalDevice, pCreateInfo->pColorFormats[i], &properties); if(result != VK_SUCCESS) { std::stringstream ss; @@ -384,10 +386,10 @@ VK_LAYER_EXPORT VkResult VKAPI vkCreateRenderPass(VkDevice device, const VkRende if(pCreateInfo->depthStencilFormat != VK_FORMAT_UNDEFINED) { + layer_data *device_data = (layer_data *) mdd(device); VkFormatProperties properties; - size_t size = sizeof(properties); - VkResult result = get_dispatch_table(image_device_table_map, device)->GetFormatInfo(device, pCreateInfo->depthStencilFormat, - VK_FORMAT_INFO_TYPE_PROPERTIES, &size, &properties); + VkResult result = get_dispatch_table(image_instance_table_map, device_data->physicalDevice)->GetPhysicalDeviceFormatInfo( + device_data->physicalDevice, pCreateInfo->depthStencilFormat, &properties); if(result != VK_SUCCESS) { char const str[] = "vkCreateRenderPass parameter, VkFormat pCreateInfo->depthStencilFormat, cannot be validated"; -- cgit v1.2.3