From 3c5ed46566ec903fd91f47c24fb0505e3e97be65 Mon Sep 17 00:00:00 2001 From: Mike Schuchardt Date: Tue, 3 Jan 2017 15:21:24 -0700 Subject: [PATCH] layers: Add valid usage enums to core_validation (VL-60) Update valid usage enums in subsection of core validation from validate_and_capture_pipeline_shader_state() to checkGraphicsOrComputeBit() inclusive. Change-Id: I8b71c63de26e42eb073a1eac1abd121d5e57f5c7 --- layers/core_validation.cpp | 111 ++++++++++++++++++-------------- layers/vk_validation_error_database.txt | 24 +++---- 2 files changed, 74 insertions(+), 61 deletions(-) diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index 9d29f0d..a1c1771 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -3138,6 +3138,7 @@ static bool verifyPipelineCreateState(layer_data *my_data, std::vectorgraphicsPipelineCI.basePipelineHandle != VK_NULL_HANDLE) ^ (pPipeline->graphicsPipelineCI.basePipelineIndex != -1))) { + // This check is a superset of VALIDATION_ERROR_00526 and VALIDATION_ERROR_00528 skip_call |= log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0, __LINE__, DRAWSTATE_INVALID_PIPELINE_CREATE_STATE, "DS", "Invalid Pipeline CreateInfo: exactly one of base pipeline index and handle must be specified"); @@ -3145,8 +3146,9 @@ static bool verifyPipelineCreateState(layer_data *my_data, std::vectorgraphicsPipelineCI.basePipelineIndex >= pipelineIndex) { skip_call |= log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0, __LINE__, - DRAWSTATE_INVALID_PIPELINE_CREATE_STATE, "DS", - "Invalid Pipeline CreateInfo: base pipeline must occur earlier in array than derivative pipeline."); + VALIDATION_ERROR_00518, "DS", + "Invalid Pipeline CreateInfo: base pipeline must occur earlier in array than derivative pipeline. %s", + validation_error_map[VALIDATION_ERROR_00518]); } else { pBasePipeline = pPipelines[pPipeline->graphicsPipelineCI.basePipelineIndex]; } @@ -3171,10 +3173,11 @@ static bool verifyPipelineCreateState(layer_data *my_data, std::vector(pAttachments), static_cast(&pAttachments[i]), sizeof(pAttachments[0]))) { - skip_call |= log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0, - __LINE__, DRAWSTATE_INDEPENDENT_BLEND, "DS", - "Invalid Pipeline CreateInfo: If independent blend feature not " - "enabled, all elements of pAttachments must be identical"); + skip_call |= + log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0, __LINE__, + VALIDATION_ERROR_01532, "DS", "Invalid Pipeline CreateInfo: If independent blend feature not " + "enabled, all elements of pAttachments must be identical. %s", + validation_error_map[VALIDATION_ERROR_01532]); break; } } @@ -3184,8 +3187,9 @@ static bool verifyPipelineCreateState(layer_data *my_data, std::vectorgraphicsPipelineCI.pColorBlendState->logicOpEnable != VK_FALSE)) { skip_call |= log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0, __LINE__, - DRAWSTATE_DISABLED_LOGIC_OP, "DS", - "Invalid Pipeline CreateInfo: If logic operations feature not enabled, logicOpEnable must be VK_FALSE"); + VALIDATION_ERROR_01533, "DS", + "Invalid Pipeline CreateInfo: If logic operations feature not enabled, logicOpEnable must be VK_FALSE. %s", + validation_error_map[VALIDATION_ERROR_01533]); } } @@ -3195,9 +3199,10 @@ static bool verifyPipelineCreateState(layer_data *my_data, std::vectorgraphicsPipelineCI.renderPass); if (renderPass && pPipeline->graphicsPipelineCI.subpass >= renderPass->createInfo.subpassCount) { skip_call |= log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0, __LINE__, - DRAWSTATE_INVALID_PIPELINE_CREATE_STATE, "DS", "Invalid Pipeline CreateInfo State: Subpass index %u " - "is out of range for this renderpass (0..%u)", - pPipeline->graphicsPipelineCI.subpass, renderPass->createInfo.subpassCount - 1); + VALIDATION_ERROR_02122, "DS", "Invalid Pipeline CreateInfo State: Subpass index %u " + "is out of range for this renderpass (0..%u). %s", + pPipeline->graphicsPipelineCI.subpass, renderPass->createInfo.subpassCount - 1, + validation_error_map[VALIDATION_ERROR_02122]); } if (!validate_and_capture_pipeline_shader_state(my_data->report_data, pPipeline, &my_data->enabled_features, @@ -3217,25 +3222,31 @@ static bool verifyPipelineCreateState(layer_data *my_data, std::vectoractive_shaders & VK_SHADER_STAGE_VERTEX_BIT)) { - skip_call |= - log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0, __LINE__, - DRAWSTATE_INVALID_PIPELINE_CREATE_STATE, "DS", "Invalid Pipeline CreateInfo State: Vertex Shader required"); + skip_call |= log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0, __LINE__, + VALIDATION_ERROR_00532, "DS", "Invalid Pipeline CreateInfo State: Vertex Shader required. %s", + validation_error_map[VALIDATION_ERROR_00532]); } // Either both or neither TC/TE shaders should be defined - if (((pPipeline->active_shaders & VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT) == 0) != - ((pPipeline->active_shaders & VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT) == 0)) { + if ((pPipeline->active_shaders & VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT) && + !(pPipeline->active_shaders & VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT)) { + skip_call |= log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0, __LINE__, + VALIDATION_ERROR_00534, "DS", + "Invalid Pipeline CreateInfo State: TE and TC shaders must be included or excluded as a pair. %s", + validation_error_map[VALIDATION_ERROR_00534]); + } + if (!(pPipeline->active_shaders & VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT) && + (pPipeline->active_shaders & VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT)) { skip_call |= log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0, __LINE__, - DRAWSTATE_INVALID_PIPELINE_CREATE_STATE, "DS", - "Invalid Pipeline CreateInfo State: TE and TC shaders must be included or excluded as a pair"); + VALIDATION_ERROR_00535, "DS", + "Invalid Pipeline CreateInfo State: TE and TC shaders must be included or excluded as a pair. %s", + validation_error_map[VALIDATION_ERROR_00535]); } // Compute shaders should be specified independent of Gfx shaders - if ((pPipeline->active_shaders & VK_SHADER_STAGE_COMPUTE_BIT) && - (pPipeline->active_shaders & - (VK_SHADER_STAGE_VERTEX_BIT | VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT | VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT | - VK_SHADER_STAGE_GEOMETRY_BIT | VK_SHADER_STAGE_FRAGMENT_BIT))) { + if (pPipeline->active_shaders & VK_SHADER_STAGE_COMPUTE_BIT) { skip_call |= log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0, __LINE__, - DRAWSTATE_INVALID_PIPELINE_CREATE_STATE, "DS", - "Invalid Pipeline CreateInfo State: Do not specify Compute Shader for Gfx Pipeline"); + VALIDATION_ERROR_00533, "DS", + "Invalid Pipeline CreateInfo State: Do not specify Compute Shader for Gfx Pipeline. %s", + validation_error_map[VALIDATION_ERROR_00533]); } // VK_PRIMITIVE_TOPOLOGY_PATCH_LIST primitive topology is only valid for tessellation pipelines. // Mismatching primitive topology and tessellation fails graphics pipeline creation. @@ -3243,35 +3254,36 @@ static bool verifyPipelineCreateState(layer_data *my_data, std::vectorgraphicsPipelineCI.pInputAssemblyState || pPipeline->graphicsPipelineCI.pInputAssemblyState->topology != VK_PRIMITIVE_TOPOLOGY_PATCH_LIST)) { skip_call |= log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0, __LINE__, - DRAWSTATE_INVALID_PIPELINE_CREATE_STATE, "DS", "Invalid Pipeline CreateInfo State: " - "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST must be set as IA " - "topology for tessellation pipelines"); + VALIDATION_ERROR_02099, "DS", "Invalid Pipeline CreateInfo State: " + "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST must be set as IA " + "topology for tessellation pipelines. %s", + validation_error_map[VALIDATION_ERROR_02099]); } if (pPipeline->graphicsPipelineCI.pInputAssemblyState && pPipeline->graphicsPipelineCI.pInputAssemblyState->topology == VK_PRIMITIVE_TOPOLOGY_PATCH_LIST) { if (~pPipeline->active_shaders & VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT) { - skip_call |= - log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0, __LINE__, - DRAWSTATE_INVALID_PIPELINE_CREATE_STATE, "DS", "Invalid Pipeline CreateInfo State: " - "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST primitive " - "topology is only valid for tessellation pipelines"); - } - if (!pPipeline->graphicsPipelineCI.pTessellationState) { skip_call |= log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0, __LINE__, - DRAWSTATE_INVALID_PIPELINE_CREATE_STATE, "DS", - "Invalid Pipeline CreateInfo State: " - "pTessellationState is NULL when VK_PRIMITIVE_TOPOLOGY_PATCH_LIST primitive " - "topology used. pTessellationState must not be NULL in this case."); - } else if (!pPipeline->graphicsPipelineCI.pTessellationState->patchControlPoints || - (pPipeline->graphicsPipelineCI.pTessellationState->patchControlPoints > 32)) { - skip_call |= log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0, __LINE__, - DRAWSTATE_INVALID_PIPELINE_CREATE_STATE, "DS", "Invalid Pipeline CreateInfo State: " - "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST primitive " - "topology used with patchControlPoints value %u." - " patchControlPoints should be >0 and <=32.", - pPipeline->graphicsPipelineCI.pTessellationState->patchControlPoints); + VALIDATION_ERROR_02100, "DS", "Invalid Pipeline CreateInfo State: " + "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST primitive " + "topology is only valid for tessellation pipelines. %s", + validation_error_map[VALIDATION_ERROR_02100]); } } + + if (pPipeline->graphicsPipelineCI.pTessellationState && + ((pPipeline->graphicsPipelineCI.pTessellationState->patchControlPoints == 0) || + (pPipeline->graphicsPipelineCI.pTessellationState->patchControlPoints > + my_data->phys_dev_properties.properties.limits.maxTessellationPatchSize))) { + skip_call |= log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0, __LINE__, + VALIDATION_ERROR_01426, "DS", "Invalid Pipeline CreateInfo State: " + "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST primitive " + "topology used with patchControlPoints value %u." + " patchControlPoints should be >0 and <=%u. %s", + pPipeline->graphicsPipelineCI.pTessellationState->patchControlPoints, + my_data->phys_dev_properties.properties.limits.maxTessellationPatchSize, + validation_error_map[VALIDATION_ERROR_01426]); + } + // If a rasterization state is provided, make sure that the line width conforms to the HW. if (pPipeline->graphicsPipelineCI.pRasterizationState) { if (!isDynamic(pPipeline, VK_DYNAMIC_STATE_LINE_WIDTH)) { @@ -3289,11 +3301,12 @@ static bool verifyPipelineCreateState(layer_data *my_data, std::vectorpDepthStencilAttachment && subpass_desc->pDepthStencilAttachment->attachment != VK_ATTACHMENT_UNUSED) { if (!pPipeline->graphicsPipelineCI.pDepthStencilState) { - skip_call |= log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, - __LINE__, DRAWSTATE_INVALID_PIPELINE_CREATE_STATE, "DS", + skip_call |= log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, + 0, __LINE__, VALIDATION_ERROR_02115, "DS", "Invalid Pipeline CreateInfo State: " "pDepthStencilState is NULL when rasterization is enabled and subpass uses a " - "depth/stencil attachment"); + "depth/stencil attachment. %s", + validation_error_map[VALIDATION_ERROR_02115]); } } } diff --git a/layers/vk_validation_error_database.txt b/layers/vk_validation_error_database.txt index 9a03653..1e7ffd6 100644 --- a/layers/vk_validation_error_database.txt +++ b/layers/vk_validation_error_database.txt @@ -507,7 +507,7 @@ VALIDATION_ERROR_00514~^~N~^~Unknown~^~vkCreateComputePipelines~^~For more infor VALIDATION_ERROR_00515~^~Y~^~None~^~vkCreateComputePipelines~^~For more information refer to Vulkan Spec Section '9.1. Compute Pipelines' which states 'module must be a valid VkShaderModule handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkShaderStageFlagBits)~^~This error applies to both vkCreateComputePipelines and vkCreateGraphicsPipelines. VALIDATION_ERROR_00516~^~N~^~Unknown~^~vkCreateComputePipelines~^~For more information refer to Vulkan Spec Section '9.1. Compute Pipelines' which states 'pName must be a null-terminated string' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkShaderStageFlagBits)~^~ VALIDATION_ERROR_00517~^~N~^~Unknown~^~vkCreateComputePipelines~^~For more information refer to Vulkan Spec Section '9.1. Compute Pipelines' which states 'If pSpecializationInfo is not NULL, pSpecializationInfo must be a pointer to a valid VkSpecializationInfo structure' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkShaderStageFlagBits)~^~ -VALIDATION_ERROR_00518~^~U~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If the flags member of any given element of pCreateInfos contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and the basePipelineIndex member of that same element is not -1, basePipelineIndex must be less than the index into pCreateInfos that corresponds to that element' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCreateGraphicsPipelines)~^~ +VALIDATION_ERROR_00518~^~Y~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If the flags member of any given element of pCreateInfos contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and the basePipelineIndex member of that same element is not -1, basePipelineIndex must be less than the index into pCreateInfos that corresponds to that element' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCreateGraphicsPipelines)~^~ VALIDATION_ERROR_00519~^~Y~^~None~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'device must be a valid VkDevice handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCreateGraphicsPipelines)~^~ VALIDATION_ERROR_00520~^~Y~^~None~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pipelineCache is not VK_NULL_HANDLE, pipelineCache must be a valid VkPipelineCache handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCreateGraphicsPipelines)~^~ VALIDATION_ERROR_00521~^~U~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'pCreateInfos must be a pointer to an array of createInfoCount valid VkGraphicsPipelineCreateInfo structures' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCreateGraphicsPipelines)~^~ @@ -521,10 +521,10 @@ VALIDATION_ERROR_00528~^~Y~^~Unknown~^~vkCreateGraphicsPipelines~^~For more info VALIDATION_ERROR_00529~^~Y~^~None~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If flags contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and basePipelineHandle is not VK_NULL_HANDLE, basePipelineHandle must be a valid VkPipeline handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ VALIDATION_ERROR_00530~^~U~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If flags contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and basePipelineHandle is not VK_NULL_HANDLE, it must be a valid handle to a graphics VkPipeline' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ VALIDATION_ERROR_00531~^~U~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'The stage member of each element of pStages must be unique' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ -VALIDATION_ERROR_00532~^~U~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'The stage member of one element of pStages must be VK_SHADER_STAGE_VERTEX_BIT' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ -VALIDATION_ERROR_00533~^~U~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'The stage member of any given element of pStages must not be VK_SHADER_STAGE_COMPUTE_BIT' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ -VALIDATION_ERROR_00534~^~U~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pStages includes a tessellation control shader stage, it must include a tessellation evaluation shader stage' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ -VALIDATION_ERROR_00535~^~U~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pStages includes a tessellation evaluation shader stage, it must include a tessellation control shader stage' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ +VALIDATION_ERROR_00532~^~Y~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'The stage member of one element of pStages must be VK_SHADER_STAGE_VERTEX_BIT' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ +VALIDATION_ERROR_00533~^~Y~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'The stage member of any given element of pStages must not be VK_SHADER_STAGE_COMPUTE_BIT' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ +VALIDATION_ERROR_00534~^~Y~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pStages includes a tessellation control shader stage, it must include a tessellation evaluation shader stage' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ +VALIDATION_ERROR_00535~^~Y~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pStages includes a tessellation evaluation shader stage, it must include a tessellation control shader stage' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ VALIDATION_ERROR_00536~^~Y~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pStages includes a tessellation control shader stage and a tessellation evaluation shader stage, pTessellationState must not be NULL' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ VALIDATION_ERROR_00537~^~U~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pStages includes tessellation shader stages, the shader code of at least one stage must contain an OpExecutionMode instruction that specifies the type of subdivision in the pipeline' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ VALIDATION_ERROR_00538~^~Y~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'sType must be VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~TBD in parameter validation layer. @@ -1412,7 +1412,7 @@ VALIDATION_ERROR_01422~^~U~^~Unknown~^~vkCmdBindVertexBuffers~^~For more informa VALIDATION_ERROR_01423~^~U~^~Unknown~^~vkCmdBindVertexBuffers~^~For more information refer to Vulkan Spec Section '20.2. Vertex Input Description' which states 'The VkCommandPool that commandBuffer was allocated from must support graphics operations' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdBindVertexBuffers)~^~ VALIDATION_ERROR_01424~^~U~^~Unknown~^~vkCmdBindVertexBuffers~^~For more information refer to Vulkan Spec Section '20.2. Vertex Input Description' which states 'bindingCount must be greater than 0' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdBindVertexBuffers)~^~ VALIDATION_ERROR_01425~^~U~^~Unknown~^~vkCmdBindVertexBuffers~^~For more information refer to Vulkan Spec Section '20.2. Vertex Input Description' which states 'Both of commandBuffer, and the elements of pBuffers must have been created, allocated, or retrieved from the same VkDevice' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdBindVertexBuffers)~^~ -VALIDATION_ERROR_01426~^~U~^~Unknown~^~vkCmdBindVertexBuffers~^~For more information refer to Vulkan Spec Section '21.7. Tessellation Pipeline State' which states 'patchControlPoints must be greater than zero and less than or equal to VkPhysicalDeviceLimits::maxTessellationPatchSize' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineTessellationStateCreateInfo)~^~ +VALIDATION_ERROR_01426~^~Y~^~Unknown~^~vkCmdBindVertexBuffers~^~For more information refer to Vulkan Spec Section '21.7. Tessellation Pipeline State' which states 'patchControlPoints must be greater than zero and less than or equal to VkPhysicalDeviceLimits::maxTessellationPatchSize' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineTessellationStateCreateInfo)~^~ VALIDATION_ERROR_01427~^~N~^~Unknown~^~vkCmdBindVertexBuffers~^~For more information refer to Vulkan Spec Section '21.7. Tessellation Pipeline State' which states 'sType must be VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineTessellationStateCreateInfo)~^~TBD in parameter validation layer. VALIDATION_ERROR_01428~^~N~^~Unknown~^~vkCmdBindVertexBuffers~^~For more information refer to Vulkan Spec Section '21.7. Tessellation Pipeline State' which states 'pNext must be NULL' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineTessellationStateCreateInfo)~^~TBD in parameter validation layer. VALIDATION_ERROR_01429~^~N~^~Unknown~^~vkCmdBindVertexBuffers~^~For more information refer to Vulkan Spec Section '21.7. Tessellation Pipeline State' which states 'flags must be 0' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineTessellationStateCreateInfo)~^~TBD in parameter validation layer. @@ -1513,8 +1513,8 @@ VALIDATION_ERROR_01528~^~U~^~Unknown~^~vkCmdSetStencilReference~^~For more infor VALIDATION_ERROR_01529~^~U~^~Unknown~^~vkCmdSetStencilReference~^~For more information refer to Vulkan Spec Section '25.9. Stencil Test' which states 'faceMask must not be 0' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdSetStencilReference)~^~ VALIDATION_ERROR_01530~^~U~^~Unknown~^~vkCmdSetStencilReference~^~For more information refer to Vulkan Spec Section '25.9. Stencil Test' which states 'commandBuffer must be in the recording state' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdSetStencilReference)~^~ VALIDATION_ERROR_01531~^~U~^~Unknown~^~vkCmdSetStencilReference~^~For more information refer to Vulkan Spec Section '25.9. Stencil Test' which states 'The VkCommandPool that commandBuffer was allocated from must support graphics operations' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdSetStencilReference)~^~ -VALIDATION_ERROR_01532~^~U~^~Unknown~^~vkCmdSetStencilReference~^~For more information refer to Vulkan Spec Section '26.1. Blending' which states 'If the independent blending feature is not enabled, all elements of pAttachments must be identical' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineColorBlendStateCreateInfo)~^~ -VALIDATION_ERROR_01533~^~U~^~Unknown~^~vkCmdSetStencilReference~^~For more information refer to Vulkan Spec Section '26.1. Blending' which states 'If the logic operations feature is not enabled, logicOpEnable must be VK_FALSE' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineColorBlendStateCreateInfo)~^~ +VALIDATION_ERROR_01532~^~Y~^~Unknown~^~vkCmdSetStencilReference~^~For more information refer to Vulkan Spec Section '26.1. Blending' which states 'If the independent blending feature is not enabled, all elements of pAttachments must be identical' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineColorBlendStateCreateInfo)~^~ +VALIDATION_ERROR_01533~^~Y~^~Unknown~^~vkCmdSetStencilReference~^~For more information refer to Vulkan Spec Section '26.1. Blending' which states 'If the logic operations feature is not enabled, logicOpEnable must be VK_FALSE' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineColorBlendStateCreateInfo)~^~ VALIDATION_ERROR_01534~^~U~^~Unknown~^~vkCmdSetStencilReference~^~For more information refer to Vulkan Spec Section '26.1. Blending' which states 'If logicOpEnable is VK_TRUE, logicOp must be a valid VkLogicOp value' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineColorBlendStateCreateInfo)~^~ VALIDATION_ERROR_01535~^~N~^~Unknown~^~vkCmdSetStencilReference~^~For more information refer to Vulkan Spec Section '26.1. Blending' which states 'sType must be VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineColorBlendStateCreateInfo)~^~TBD in parameter validation layer. VALIDATION_ERROR_01536~^~N~^~Unknown~^~vkCmdSetStencilReference~^~For more information refer to Vulkan Spec Section '26.1. Blending' which states 'pNext must be NULL' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineColorBlendStateCreateInfo)~^~TBD in parameter validation layer. @@ -2028,8 +2028,8 @@ VALIDATION_ERROR_02095~^~U~^~Unknown~^~vkCreateComputePipelines~^~For more infor VALIDATION_ERROR_02096~^~U~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pStages includes tessellation shader stages, and the shader code of both stages contain an OpExecutionMode instruction that specifies the type of subdivision in the pipeline, they must both specify the same subdivision mode' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ VALIDATION_ERROR_02097~^~U~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pStages includes tessellation shader stages, the shader code of at least one stage must contain an OpExecutionMode instruction that specifies the output patch size in the pipeline' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ VALIDATION_ERROR_02098~^~U~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pStages includes tessellation shader stages, and the shader code of both contain an OpExecutionMode instruction that specifies the out patch size in the pipeline, they must both specify the same patch size' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ -VALIDATION_ERROR_02099~^~U~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pStages includes tessellation shader stages, the topology member of pInputAssembly must be VK_PRIMITIVE_TOPOLOGY_PATCH_LIST' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ -VALIDATION_ERROR_02100~^~U~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If the topology member of pInputAssembly is VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, pStages must include tessellation shader stages' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ +VALIDATION_ERROR_02099~^~Y~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pStages includes tessellation shader stages, the topology member of pInputAssembly must be VK_PRIMITIVE_TOPOLOGY_PATCH_LIST' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ +VALIDATION_ERROR_02100~^~Y~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If the topology member of pInputAssembly is VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, pStages must include tessellation shader stages' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ VALIDATION_ERROR_02101~^~U~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pStages includes a geometry shader stage, and does not include any tessellation shader stages, its shader code must contain an OpExecutionMode instruction that specifies an input primitive type that is compatible with the primitive topology specified in pInputAssembly' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ VALIDATION_ERROR_02102~^~U~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pStages includes a geometry shader stage, and also includes tessellation shader stages, its shader code must contain an OpExecutionMode instruction that specifies an input primitive type that is compatible with the primitive topology that is output by the tessellation stages' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ VALIDATION_ERROR_02103~^~U~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pStages includes a fragment shader stage and a geometry shader stage, and the fragment shader code reads from an input variable that is decorated with PrimitiveID, then the geometry shader code must write to a matching output variable, decorated with PrimitiveID, in all execution paths' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ @@ -2044,14 +2044,14 @@ VALIDATION_ERROR_02111~^~Y~^~PSOScissorCountWithoutDataAndDynViewportMismatch~^~ VALIDATION_ERROR_02112~^~U~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If the wide lines feature is not enabled, and no element of the pDynamicStates member of pDynamicState is VK_DYNAMIC_STATE_LINE_WIDTH, the lineWidth member of pRasterizationState must be 1.0' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ VALIDATION_ERROR_02113~^~Y~^~PSOViewportStateNotSet~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If the rasterizerDiscardEnable member of pRasterizationState is VK_FALSE, pViewportState must be a pointer to a valid VkPipelineViewportStateCreateInfo structure' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ VALIDATION_ERROR_02114~^~Y~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If the rasterizerDiscardEnable member of pRasterizationState is VK_FALSE, pMultisampleState must be a pointer to a valid VkPipelineMultisampleStateCreateInfo structure' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ -VALIDATION_ERROR_02115~^~U~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If the rasterizerDiscardEnable member of pRasterizationState is VK_FALSE, and subpass uses a depth/stencil attachment, pDepthStencilState must be a pointer to a valid VkPipelineDepthStencilStateCreateInfo structure' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ +VALIDATION_ERROR_02115~^~Y~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If the rasterizerDiscardEnable member of pRasterizationState is VK_FALSE, and subpass uses a depth/stencil attachment, pDepthStencilState must be a pointer to a valid VkPipelineDepthStencilStateCreateInfo structure' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ VALIDATION_ERROR_02116~^~U~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If the rasterizerDiscardEnable member of pRasterizationState is VK_FALSE, and subpass uses color attachments, pColorBlendState must be a pointer to a valid VkPipelineColorBlendStateCreateInfo structure' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ VALIDATION_ERROR_02117~^~U~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If the depth bias clamping feature is not enabled, no element of the pDynamicStates member of pDynamicState is VK_DYNAMIC_STATE_DEPTH_BIAS, and the depthBiasEnable member of pDepthStencil is VK_TRUE, the depthBiasClamp member of pDepthStencil must be 0.0' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ VALIDATION_ERROR_02118~^~U~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If no element of the pDynamicStates member of pDynamicState is VK_DYNAMIC_STATE_DEPTH_BOUNDS, and the depthBoundsTestEnable member of pDepthStencil is VK_TRUE, the minDepthBounds and maxDepthBounds members of pDepthStencil must be between 0.0 and 1.0, inclusive' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ VALIDATION_ERROR_02119~^~U~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'layout must be consistent with all shaders specified in pStages' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ VALIDATION_ERROR_02120~^~U~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If subpass uses color and/or depth/stencil attachments, then the rasterizationSamples member of pMultisampleState must be the same as the sample count for those subpass attachments' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ VALIDATION_ERROR_02121~^~U~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If subpass does not use any color and/or depth/stencil attachments, then the rasterizationSamples member of pMultisampleState must follow the rules for a zero-attachment subpass' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ -VALIDATION_ERROR_02122~^~U~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'subpass must be a valid subpass within renderpass' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ +VALIDATION_ERROR_02122~^~Y~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'subpass must be a valid subpass within renderpass' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCreateFlagBits)~^~ VALIDATION_ERROR_02123~^~U~^~Unknown~^~vkCreatePipelineCache~^~For more information refer to Vulkan Spec Section '9.6. Pipeline Cache' which states 'If initialDataSize is not 0, pInitialData must have been retrieved from a previous call to vkGetPipelineCacheData' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkPipelineCacheCreateInfo)~^~ VALIDATION_ERROR_02124~^~U~^~Unknown~^~vkCreateBufferView~^~For more information refer to Vulkan Spec Section '11.2. Buffer Views' which states 'If buffer was created with usage containing VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, format must be supported for storage texel buffers, as specified by the VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT flag in VkFormatProperties::bufferFeatures returned by vkGetPhysicalDeviceFormatProperties' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkBufferViewCreateInfo)~^~ VALIDATION_ERROR_02125~^~U~^~Unknown~^~vkCreateImage~^~For more information refer to Vulkan Spec Section '11.3. Images' which states 'If imageType is VK_IMAGE_TYPE_2D and flags does not contain VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT, extent.width and extent.height must be less than or equal to VkPhysicalDeviceLimits::maxImageDimension2D, or VkImageFormatProperties::maxExtent.width/height (as returned by vkGetPhysicalDeviceImageFormatProperties with format, type, tiling, usage, and flags equal to those in this structure) - whichever is higher' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkImageCreateInfo)~^~ -- 2.7.4