diff options
| author | Jeremy Hayes <jeremy@lunarg.com> | 2017-05-04 18:08:49 -0600 |
|---|---|---|
| committer | Jeremy Hayes <jeremy-lunarg@users.noreply.github.com> | 2017-05-05 15:43:46 -0600 |
| commit | d24613355c7a0a9e5b49a5bc29d5d5cd67af76d3 (patch) | |
| tree | 06a995e6c8ba641e4ffa2d2fa9489f1887861dfe | |
| parent | bc4a9e58c724cbe907cd098ea2110c5296e2f48e (diff) | |
| download | usermoji-d24613355c7a0a9e5b49a5bc29d5d5cd67af76d3.tar.xz | |
layers: Add VkVertexInputBindingDescription VUs
Change-Id: Id9cb603dce7a49b21f9f8252baef692b4f6787f7
| -rw-r--r-- | layers/parameter_validation.cpp | 26 | ||||
| -rw-r--r-- | layers/vk_validation_error_database.txt | 4 |
2 files changed, 28 insertions, 2 deletions
diff --git a/layers/parameter_validation.cpp b/layers/parameter_validation.cpp index c8bf83ea..991e2488 100644 --- a/layers/parameter_validation.cpp +++ b/layers/parameter_validation.cpp @@ -2921,6 +2921,32 @@ VKAPI_ATTR VkResult VKAPI_CALL CreateGraphicsPipelines(VkDevice device, VkPipeli if (pCreateInfos != nullptr) { for (uint32_t i = 0; i < createInfoCount; ++i) { // Validation for parameters excluded from the generated validation code due to a 'noautovalidity' tag in vk.xml + if (pCreateInfos[i].pVertexInputState != nullptr) { + auto const &vertex_input_state = pCreateInfos[i].pVertexInputState; + for (uint32_t d = 0; d < vertex_input_state->vertexBindingDescriptionCount; ++d) { + auto const &vertex_bind_desc = vertex_input_state->pVertexBindingDescriptions[d]; + if (vertex_bind_desc.binding >= device_data->device_limits.maxVertexInputBindings) { + skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, + __LINE__, VALIDATION_ERROR_01407, LayerName, + "vkCreateGraphicsPipelines: parameter " + "pCreateInfos[%u].pVertexInputState->pVertexBindingDescriptions[%u].binding (%u) is " + "greater than or equal to VkPhysicalDeviceLimits::maxVertexInputBindings (%u). %s", + i, d, vertex_bind_desc.binding, device_data->device_limits.maxVertexInputBindings, + validation_error_map[VALIDATION_ERROR_01407]); + } + + if (vertex_bind_desc.stride >= device_data->device_limits.maxVertexInputBindingStride) { + skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, + __LINE__, VALIDATION_ERROR_01408, LayerName, + "vkCreateGraphicsPipelines: parameter " + "pCreateInfos[%u].pVertexInputState->pVertexBindingDescriptions[%u].stride (%u) is greater " + "than VkPhysicalDeviceLimits::maxVertexInputBindingStride (%u). %s", + i, d, vertex_bind_desc.stride, device_data->device_limits.maxVertexInputBindingStride, + validation_error_map[VALIDATION_ERROR_01408]); + } + } + } + if (pCreateInfos[i].pStages != nullptr) { bool has_control = false; bool has_eval = false; diff --git a/layers/vk_validation_error_database.txt b/layers/vk_validation_error_database.txt index 52edec15..51414113 100644 --- a/layers/vk_validation_error_database.txt +++ b/layers/vk_validation_error_database.txt @@ -1352,8 +1352,8 @@ VALIDATION_ERROR_01403~^~N~^~Unknown~^~vkCmdDrawIndexedIndirectCountAMD~^~For mo VALIDATION_ERROR_01404~^~N~^~Unknown~^~vkCmdDrawIndexedIndirectCountAMD~^~For more information refer to Vulkan Spec Section '20.2. Vertex Input Description' which states 'flags must be 0' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineVertexInputStateCreateInfo)~^~implicit, TBD in parameter validation layer. VALIDATION_ERROR_01405~^~N~^~Unknown~^~vkCmdDrawIndexedIndirectCountAMD~^~For more information refer to Vulkan Spec Section '20.2. Vertex Input Description' which states 'If vertexBindingDescriptionCount is not 0, pVertexBindingDescriptions must be a pointer to an array of vertexBindingDescriptionCount valid VkVertexInputBindingDescription structures' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineVertexInputStateCreateInfo)~^~implicit VALIDATION_ERROR_01406~^~N~^~Unknown~^~vkCmdDrawIndexedIndirectCountAMD~^~For more information refer to Vulkan Spec Section '20.2. Vertex Input Description' which states 'If vertexAttributeDescriptionCount is not 0, pVertexAttributeDescriptions must be a pointer to an array of vertexAttributeDescriptionCount valid VkVertexInputAttributeDescription structures' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineVertexInputStateCreateInfo)~^~implicit -VALIDATION_ERROR_01407~^~N~^~Unknown~^~vkCmdDrawIndexedIndirectCountAMD~^~For more information refer to Vulkan Spec Section '20.2. Vertex Input Description' which states 'binding must be less than VkPhysicalDeviceLimits::maxVertexInputBindings' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkVertexInputRate)~^~ -VALIDATION_ERROR_01408~^~N~^~Unknown~^~vkCmdDrawIndexedIndirectCountAMD~^~For more information refer to Vulkan Spec Section '20.2. Vertex Input Description' which states 'stride must be less than or equal to VkPhysicalDeviceLimits::maxVertexInputBindingStride' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkVertexInputRate)~^~ +VALIDATION_ERROR_01407~^~Y~^~VALIDATION_ERROR_01407~^~vkCmdDrawIndexedIndirectCountAMD~^~For more information refer to Vulkan Spec Section '20.2. Vertex Input Description' which states 'binding must be less than VkPhysicalDeviceLimits::maxVertexInputBindings' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkVertexInputRate)~^~ +VALIDATION_ERROR_01408~^~Y~^~VALIDATION_ERROR_01408~^~vkCmdDrawIndexedIndirectCountAMD~^~For more information refer to Vulkan Spec Section '20.2. Vertex Input Description' which states 'stride must be less than or equal to VkPhysicalDeviceLimits::maxVertexInputBindingStride' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkVertexInputRate)~^~ VALIDATION_ERROR_01409~^~N~^~Unknown~^~vkCmdDrawIndexedIndirectCountAMD~^~For more information refer to Vulkan Spec Section '20.2. Vertex Input Description' which states 'inputRate must be a valid VkVertexInputRate value' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkVertexInputRate)~^~implicit VALIDATION_ERROR_01410~^~N~^~Unknown~^~vkCmdDrawIndexedIndirectCountAMD~^~For more information refer to Vulkan Spec Section '20.2. Vertex Input Description' which states 'location must be less than VkPhysicalDeviceLimits::maxVertexInputAttributes' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkVertexInputAttributeDescription)~^~ VALIDATION_ERROR_01411~^~N~^~Unknown~^~vkCmdDrawIndexedIndirectCountAMD~^~For more information refer to Vulkan Spec Section '20.2. Vertex Input Description' which states 'binding must be less than VkPhysicalDeviceLimits::maxVertexInputBindings' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkVertexInputAttributeDescription)~^~ |
