aboutsummaryrefslogtreecommitdiff
path: root/layers
diff options
context:
space:
mode:
authorJeremy Kniager <jeremyk@lunarg.com>2018-01-19 10:55:01 -0700
committerMark Lobodzinski <mark@lunarg.com>2018-03-01 09:39:02 -0700
commitbe11b7ca84093dc6b2f44ecbae4cb4c9f3b4ecff (patch)
tree17b3ad2bd70adf96ee9bc1f9c700adbcb98e56a7 /layers
parent602e418f5ace55b7fc67531bd1fada3a2a54ca83 (diff)
downloadusermoji-be11b7ca84093dc6b2f44ecbae4cb4c9f3b4ecff.tar.xz
layers: Add VU check for VkSwapchainCreateInfoKHR
Added validation check for zero values in imageExtent of VkSwapchainCreateInfoKHR. No test included for this VU check as there is currently no clean method for creating a VkSurfaceKHR object in layer_validation_tests.cpp. Change-Id: I5b04543a837d1f1f7d8c20cec4f446df503a81ce
Diffstat (limited to 'layers')
-rw-r--r--layers/core_validation.cpp9
-rw-r--r--layers/vk_validation_error_database.txt4
2 files changed, 11 insertions, 2 deletions
diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp
index e34f0cc9..d88ef476 100644
--- a/layers/core_validation.cpp
+++ b/layers/core_validation.cpp
@@ -10118,6 +10118,15 @@ static bool PreCallValidateCreateSwapchainKHR(layer_data *dev_data, const char *
"%s: pCreateInfo->oldSwapchain's surface is not pCreateInfo->surface", func_name))
return true;
}
+
+ if ((pCreateInfo->imageExtent.width == 0) || (pCreateInfo->imageExtent.height == 0)) {
+ if (log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
+ HandleToUint64(dev_data->device), __LINE__, VALIDATION_ERROR_14600d32, "DS",
+ "%s: pCreateInfo->imageExtent = (%d, %d) which is illegal. %s", func_name, pCreateInfo->imageExtent.width,
+ pCreateInfo->imageExtent.height, validation_error_map[VALIDATION_ERROR_14600d32]))
+ return true;
+ }
+
auto physical_device_state = GetPhysicalDeviceState(dev_data->instance_data, dev_data->physical_device);
if (physical_device_state->vkGetPhysicalDeviceSurfaceCapabilitiesKHRState == UNCALLED) {
if (log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT,
diff --git a/layers/vk_validation_error_database.txt b/layers/vk_validation_error_database.txt
index 3f6829e2..b9ca132d 100644
--- a/layers/vk_validation_error_database.txt
+++ b/layers/vk_validation_error_database.txt
@@ -1487,7 +1487,7 @@ VALIDATION_ERROR_14019a01~^~Y~^~Unknown~^~vkCreateRenderPass~^~VUID-VkSubpassDes
VALIDATION_ERROR_1401f001~^~Y~^~Unknown~^~vkCreateRenderPass~^~VUID-VkSubpassDescription-pPreserveAttachments-parameter~^~core~^~The spec valid usage text states 'If preserveAttachmentCount is not 0, pPreserveAttachments must be a valid pointer to an array of preserveAttachmentCount uint32_t values' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkSubpassDescription-pPreserveAttachments-parameter)~^~implicit
VALIDATION_ERROR_14021c01~^~N~^~Unknown~^~vkCreateRenderPass~^~VUID-VkSubpassDescription-pResolveAttachments-parameter~^~core~^~The spec valid usage text states 'If colorAttachmentCount is not 0, and pResolveAttachments is not NULL, pResolveAttachments must be a valid pointer to an array of colorAttachmentCount valid VkAttachmentReference structures' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkSubpassDescription-pResolveAttachments-parameter)~^~implicit
VALIDATION_ERROR_14027e01~^~Y~^~Unknown~^~vkCreateRenderPass~^~VUID-VkSubpassDescription-pipelineBindPoint-parameter~^~core~^~The spec valid usage text states 'pipelineBindPoint must be a valid VkPipelineBindPoint value' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkSubpassDescription-pipelineBindPoint-parameter)~^~implicit
-VALIDATION_ERROR_142009bc~^~N~^~Unknown~^~vkGetPhysicalDeviceSurfaceCapabilities2EXT~^~VUID-VkSurfaceCapabilities2EXT-supportedSurfaceCounters-01246~^~(VK_KHR_surface)+(VK_EXT_display_surface_counter)~^~The spec valid usage text states 'supportedSurfaceCounters must not include VK_SURFACE_COUNTER_VBLANK_EXT unless the surface queried is a display surface.' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VUID-VkSurfaceCapabilities2EXT-supportedSurfaceCounters-01246)~^~
+VALIDATION_ERROR_142009bc~^~N~^~Unknown~^~vkGetPhysicalDeviceSurfaceCapabilities2EXT~^~VUID-VkSurfaceCapabilities2EXT-supportedSurfaceCounters-01246~^~(VK_KHR_surface)+(VK_EXT_display_surface_counter)~^~The spec valid usage text states 'supportedSurfaceCounters must not include VK_SURFACE_COUNTER_VBLANK_EXT unless the surface queried is a &amp;lt;&amp;lt;wsi-display-surfaces,display surface&amp;gt;&amp;gt;.' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VUID-VkSurfaceCapabilities2EXT-supportedSurfaceCounters-01246)~^~
VALIDATION_ERROR_1421c40d~^~N~^~None~^~VkSurfaceCapabilities2EXT~^~VUID-VkSurfaceCapabilities2EXT-pNext-pNext~^~(VK_KHR_surface)+(VK_EXT_display_surface_counter)~^~The spec valid usage text states 'pNext must be NULL' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VUID-VkSurfaceCapabilities2EXT-pNext-pNext)~^~implicit
VALIDATION_ERROR_1422b00b~^~Y~^~None~^~VkSurfaceCapabilities2EXT~^~VUID-VkSurfaceCapabilities2EXT-sType-sType~^~(VK_KHR_surface)+(VK_EXT_display_surface_counter)~^~The spec valid usage text states 'sType must be VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VUID-VkSurfaceCapabilities2EXT-sType-sType)~^~implicit
VALIDATION_ERROR_144009b8~^~N~^~Unknown~^~vkCreateSwapchainKHR~^~VUID-VkSwapchainCounterCreateInfoEXT-surfaceCounters-01244~^~(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_display_control)~^~The spec valid usage text states 'The bits in surfaceCounters must be supported by VkSwapchainCreateInfoKHR::surface, as reported by vkGetPhysicalDeviceSurfaceCapabilities2EXT.' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VUID-VkSwapchainCounterCreateInfoEXT-surfaceCounters-01244)~^~
@@ -1514,7 +1514,7 @@ VALIDATION_ERROR_14600b26~^~N~^~None~^~VkSwapchainCreateInfoKHR~^~VUID-VkSwapcha
VALIDATION_ERROR_14600b28~^~N~^~None~^~VkSwapchainCreateInfoKHR~^~VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01428~^~(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_get_physical_device_properties2)~^~The spec valid usage text states 'If imageSharingMode is VK_SHARING_MODE_CONCURRENT, each element of pQueueFamilyIndices must be unique and must be less than pQueueFamilyPropertyCount returned by either vkGetPhysicalDeviceQueueFamilyProperties or vkGetPhysicalDeviceQueueFamilyProperties2KHR for the physicalDevice that was used to create device' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01428)~^~
VALIDATION_ERROR_14600b2a~^~N~^~None~^~VkSwapchainCreateInfoKHR~^~VUID-VkSwapchainCreateInfoKHR-physicalDeviceCount-01429~^~(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHX_device_group)~^~The spec valid usage text states 'If the logical device was created with VkDeviceGroupDeviceCreateInfoKHX::physicalDeviceCount equal to 1, flags must not contain VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VUID-VkSwapchainCreateInfoKHR-physicalDeviceCount-01429)~^~
VALIDATION_ERROR_14600d14~^~N~^~None~^~VkSwapchainCreateInfoKHR~^~VUID-VkSwapchainCreateInfoKHR-oldSwapchain-01674~^~(VK_KHR_surface)+(VK_KHR_swapchain)~^~The spec valid usage text states 'oldSwapchain must not be in the retired state' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VUID-VkSwapchainCreateInfoKHR-oldSwapchain-01674)~^~
-VALIDATION_ERROR_14600d32~^~N~^~None~^~VkSwapchainCreateInfoKHR~^~VUID-VkSwapchainCreateInfoKHR-imageExtent-01689~^~(VK_KHR_surface)+(VK_KHR_swapchain)~^~The spec valid usage text states 'imageExtent members width and height must both be non-zero' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VUID-VkSwapchainCreateInfoKHR-imageExtent-01689)~^~
+VALIDATION_ERROR_14600d32~^~Y~^~None~^~VkSwapchainCreateInfoKHR~^~VUID-VkSwapchainCreateInfoKHR-imageExtent-01689~^~(VK_KHR_surface)+(VK_KHR_swapchain)~^~The spec valid usage text states 'imageExtent members width and height must both be non-zero' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VUID-VkSwapchainCreateInfoKHR-imageExtent-01689)~^~
VALIDATION_ERROR_14600de4~^~N~^~None~^~VkSwapchainCreateInfoKHR~^~VUID-VkSwapchainCreateInfoKHR-imageFormat-01778~^~(VK_KHR_surface)+(VK_KHR_swapchain)~^~The spec valid usage text states 'imageFormat, imageUsage, imageExtent, and imageArrayLayers must be supported for VK_IMAGE_TYPE_2D VK_IMAGE_TILING_OPTIMAL images as reported by vkGetPhysicalDeviceImageFormatProperties.' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VUID-VkSwapchainCreateInfoKHR-imageFormat-01778)~^~
VALIDATION_ERROR_14602e01~^~Y~^~Unknown~^~vkCreateSwapchainKHR~^~VUID-VkSwapchainCreateInfoKHR-compositeAlpha-parameter~^~(VK_KHR_surface)+(VK_KHR_swapchain)~^~The spec valid usage text states 'compositeAlpha must be a valid VkCompositeAlphaFlagBitsKHR value' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VUID-VkSwapchainCreateInfoKHR-compositeAlpha-parameter)~^~implicit
VALIDATION_ERROR_14609001~^~Y~^~Unknown~^~vkCreateSwapchainKHR~^~VUID-VkSwapchainCreateInfoKHR-flags-parameter~^~(VK_KHR_surface)+(VK_KHR_swapchain)~^~The spec valid usage text states 'flags must be a valid combination of VkSwapchainCreateFlagBitsKHR values' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VUID-VkSwapchainCreateInfoKHR-flags-parameter)~^~implicit