From 141e92a9ff34279bae736f5650d83a8741e22b54 Mon Sep 17 00:00:00 2001 From: Mark Lobodzinski Date: Fri, 30 Mar 2018 10:09:03 -0600 Subject: layers: Remove VUID spec text from log_msg strings Removed format specifiers from log_msg text strings Removed validation_error_map specifiers from log_msg parameter lists Change-Id: I5bd22c60dabf534382ca4d371ef4dffff1829f6d --- layers/core_validation.cpp | 1007 +++++++++++++++++++------------------------- 1 file changed, 437 insertions(+), 570 deletions(-) (limited to 'layers/core_validation.cpp') diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index d07fbc3a..0e6040af 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -580,18 +580,18 @@ bool VerifyBoundMemoryIsValid(const layer_data *dev_data, VkDeviceMemory mem, ui const char *type_name, UNIQUE_VALIDATION_ERROR_CODE error_code) { bool result = false; if (VK_NULL_HANDLE == mem) { - result = log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT, handle, - __LINE__, error_code, "MEM", - "%s: Vk%s object 0x%" PRIx64 - " used with no memory bound. Memory should be bound by calling vkBind%sMemory(). %s", - api_name, type_name, handle, type_name, validation_error_map[error_code]); + result = + log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT, handle, __LINE__, + error_code, "MEM", + "%s: Vk%s object 0x%" PRIx64 " used with no memory bound. Memory should be bound by calling vkBind%sMemory().", + api_name, type_name, handle, type_name); } else if (MEMORY_UNBOUND == mem) { result = log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT, handle, __LINE__, error_code, "MEM", "%s: Vk%s object 0x%" PRIx64 " used with no memory bound and previously bound memory was freed. Memory must not be freed prior to this " - "operation. %s", - api_name, type_name, handle, validation_error_map[error_code]); + "operation.", + api_name, type_name, handle); } return result; } @@ -673,8 +673,8 @@ static bool ValidateSetMemBinding(layer_data *dev_data, VkDeviceMemory mem, uint skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT, HandleToUint64(mem), __LINE__, error_code, "MEM", "In %s, attempting to bind memory (0x%" PRIx64 ") to object (0x%" PRIx64 - ") which was created with sparse memory flags (VK_%s_CREATE_SPARSE_*_BIT). %s", - apiName, HandleToUint64(mem), handle, handle_type, validation_error_map[error_code]); + ") which was created with sparse memory flags (VK_%s_CREATE_SPARSE_*_BIT).", + apiName, HandleToUint64(mem), handle, handle_type); } DEVICE_MEM_INFO *mem_info = GetMemObjInfo(dev_data, mem); if (mem_info) { @@ -689,9 +689,8 @@ static bool ValidateSetMemBinding(layer_data *dev_data, VkDeviceMemory mem, uint skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT, HandleToUint64(mem), __LINE__, error_code, "MEM", "In %s, attempting to bind memory (0x%" PRIx64 ") to object (0x%" PRIx64 - ") which has already been bound to mem object 0x%" PRIx64 ". %s", - apiName, HandleToUint64(mem), handle, HandleToUint64(prev_binding->mem), - validation_error_map[error_code]); + ") which has already been bound to mem object 0x%" PRIx64 ".", + apiName, HandleToUint64(mem), handle, HandleToUint64(prev_binding->mem)); } else if (mem_binding->binding.mem == MEMORY_UNBOUND) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT, HandleToUint64(mem), __LINE__, MEMTRACK_REBIND_OBJECT, "MEM", @@ -735,10 +734,9 @@ static bool SetSparseMemBinding(layer_data *dev_data, MEM_BINDING binding, uint6 static bool validate_status(layer_data *dev_data, GLOBAL_CB_NODE *pNode, CBStatusFlags status_mask, VkFlags msg_flags, const char *fail_msg, UNIQUE_VALIDATION_ERROR_CODE const msg_code) { if (!(pNode->status & status_mask)) { - char const *const message = validation_error_map[msg_code]; return log_msg(dev_data->report_data, msg_flags, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, - HandleToUint64(pNode->commandBuffer), __LINE__, msg_code, "DS", - "command buffer object 0x%" PRIx64 ": %s. %s.", HandleToUint64(pNode->commandBuffer), fail_msg, message); + HandleToUint64(pNode->commandBuffer), __LINE__, msg_code, "DS", "command buffer object 0x%" PRIx64 ": %s..", + HandleToUint64(pNode->commandBuffer), fail_msg); } return false; } @@ -858,9 +856,9 @@ static bool logInvalidAttachmentMessage(layer_data const *dev_data, const char * return log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT, HandleToUint64(rp1_state->renderPass), __LINE__, error_code, "DS", "%s: RenderPasses incompatible between %s w/ renderPass 0x%" PRIx64 " and %s w/ renderPass 0x%" PRIx64 - " Attachment %u is not compatible with %u: %s. %s", + " Attachment %u is not compatible with %u: %s.", caller, type1_string, HandleToUint64(rp1_state->renderPass), type2_string, HandleToUint64(rp2_state->renderPass), - primary_attach, secondary_attach, msg, validation_error_map[error_code]); + primary_attach, secondary_attach, msg); } static bool validateAttachmentCompatibility(layer_data const *dev_data, const char *type1_string, @@ -966,13 +964,12 @@ static bool validateRenderPassCompatibility(layer_data const *dev_data, const ch bool skip = false; if (rp1_state->createInfo.subpassCount != rp2_state->createInfo.subpassCount) { - skip |= - log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT, - HandleToUint64(rp1_state->renderPass), __LINE__, error_code, "DS", - "%s: RenderPasses incompatible between %s w/ renderPass 0x%" PRIx64 - " with a subpassCount of %u and %s w/ renderPass 0x%" PRIx64 " with a subpassCount of %u. %s", - caller, type1_string, HandleToUint64(rp1_state->renderPass), rp1_state->createInfo.subpassCount, type2_string, - HandleToUint64(rp2_state->renderPass), rp2_state->createInfo.subpassCount, validation_error_map[error_code]); + skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT, + HandleToUint64(rp1_state->renderPass), __LINE__, error_code, "DS", + "%s: RenderPasses incompatible between %s w/ renderPass 0x%" PRIx64 + " with a subpassCount of %u and %s w/ renderPass 0x%" PRIx64 " with a subpassCount of %u.", + caller, type1_string, HandleToUint64(rp1_state->renderPass), rp1_state->createInfo.subpassCount, + type2_string, HandleToUint64(rp2_state->renderPass), rp2_state->createInfo.subpassCount); } else { for (uint32_t i = 0; i < rp1_state->createInfo.subpassCount; ++i) { skip |= validateSubpassCompatibility(dev_data, type1_string, rp1_state, type2_string, rp2_state, i, caller, error_code); @@ -1156,8 +1153,8 @@ static bool ValidatePipelineDrawtimeState(layer_data const *dev_data, LAST_BOUND if (pPipeline->graphicsPipelineCI.subpass != pCB->activeSubpass) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT, HandleToUint64(pPipeline->pipeline), __LINE__, sp_error, "DS", - "Pipeline was built for subpass %u but used in subpass %u. %s", pPipeline->graphicsPipelineCI.subpass, - pCB->activeSubpass, validation_error_map[sp_error]); + "Pipeline was built for subpass %u but used in subpass %u.", pPipeline->graphicsPipelineCI.subpass, + pCB->activeSubpass); } } @@ -1304,11 +1301,9 @@ static bool ValidatePipelineLocked(layer_data *dev_data, std::vectorgraphicsPipelineCI.basePipelineIndex != -1) { if (pPipeline->graphicsPipelineCI.basePipelineIndex >= pipelineIndex) { - skip |= - log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT, - HandleToUint64(pPipeline->pipeline), __LINE__, VALIDATION_ERROR_208005a0, "DS", - "Invalid Pipeline CreateInfo: base pipeline must occur earlier in array than derivative pipeline. %s", - validation_error_map[VALIDATION_ERROR_208005a0]); + skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT, + HandleToUint64(pPipeline->pipeline), __LINE__, VALIDATION_ERROR_208005a0, "DS", + "Invalid Pipeline CreateInfo: base pipeline must occur earlier in array than derivative pipeline."); } else { pBasePipeline = pPipelines[pPipeline->graphicsPipelineCI.basePipelineIndex].get(); } @@ -1340,9 +1335,8 @@ static bool ValidatePipelineUnlocked(layer_data *dev_data, std::vectorgraphicsPipelineCI.subpass >= pPipeline->rp_state->createInfo.subpassCount) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT, HandleToUint64(pPipeline->pipeline), __LINE__, VALIDATION_ERROR_096005ee, "DS", - "Invalid Pipeline CreateInfo State: Subpass index %u is out of range for this renderpass (0..%u). %s", - pPipeline->graphicsPipelineCI.subpass, pPipeline->rp_state->createInfo.subpassCount - 1, - validation_error_map[VALIDATION_ERROR_096005ee]); + "Invalid Pipeline CreateInfo State: Subpass index %u is out of range for this renderpass (0..%u).", + pPipeline->graphicsPipelineCI.subpass, pPipeline->rp_state->createInfo.subpassCount - 1); subpass_desc = nullptr; } @@ -1353,10 +1347,9 @@ static bool ValidatePipelineUnlocked(layer_data *dev_data, std::vectorreport_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT, HandleToUint64(pPipeline->pipeline), __LINE__, VALIDATION_ERROR_096005d4, "DS", "vkCreateGraphicsPipelines(): Render pass (0x%" PRIx64 - ") subpass %u has colorAttachmentCount of %u which doesn't match the pColorBlendState->attachmentCount of %u. %s", + ") subpass %u has colorAttachmentCount of %u which doesn't match the pColorBlendState->attachmentCount of %u.", HandleToUint64(pPipeline->rp_state->renderPass), pPipeline->graphicsPipelineCI.subpass, - subpass_desc->colorAttachmentCount, color_blend_state->attachmentCount, - validation_error_map[VALIDATION_ERROR_096005d4]); + subpass_desc->colorAttachmentCount, color_blend_state->attachmentCount); } if (!dev_data->enabled_features.independentBlend) { if (pPipeline->attachments.size() > 1) { @@ -1371,8 +1364,7 @@ static bool ValidatePipelineUnlocked(layer_data *dev_data, std::vectorreport_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT, HandleToUint64(pPipeline->pipeline), __LINE__, VALIDATION_ERROR_0f4004ba, "DS", "Invalid Pipeline CreateInfo: If independent blend feature not enabled, all elements of " - "pAttachments must be identical. %s", - validation_error_map[VALIDATION_ERROR_0f4004ba]); + "pAttachments must be identical."); break; } } @@ -1382,8 +1374,7 @@ static bool ValidatePipelineUnlocked(layer_data *dev_data, std::vectorreport_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT, HandleToUint64(pPipeline->pipeline), __LINE__, VALIDATION_ERROR_0f4004bc, "DS", - "Invalid Pipeline CreateInfo: If logic operations feature not enabled, logicOpEnable must be VK_FALSE. %s", - validation_error_map[VALIDATION_ERROR_0f4004bc]); + "Invalid Pipeline CreateInfo: If logic operations feature not enabled, logicOpEnable must be VK_FALSE."); } } @@ -1405,8 +1396,7 @@ static bool ValidatePipelineUnlocked(layer_data *dev_data, std::vectoractive_shaders & VK_SHADER_STAGE_VERTEX_BIT)) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT, HandleToUint64(pPipeline->pipeline), __LINE__, VALIDATION_ERROR_096005ae, "DS", - "Invalid Pipeline CreateInfo State: Vertex Shader required. %s", - validation_error_map[VALIDATION_ERROR_096005ae]); + "Invalid Pipeline CreateInfo State: Vertex Shader required."); } // Either both or neither TC/TE shaders should be defined bool has_control = (pPipeline->active_shaders & VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT) != 0; @@ -1414,21 +1404,18 @@ static bool ValidatePipelineUnlocked(layer_data *dev_data, std::vectorreport_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT, HandleToUint64(pPipeline->pipeline), __LINE__, VALIDATION_ERROR_096005b2, "DS", - "Invalid Pipeline CreateInfo State: TE and TC shaders must be included or excluded as a pair. %s", - validation_error_map[VALIDATION_ERROR_096005b2]); + "Invalid Pipeline CreateInfo State: TE and TC shaders must be included or excluded as a pair."); } if (!has_control && has_eval) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT, HandleToUint64(pPipeline->pipeline), __LINE__, VALIDATION_ERROR_096005b4, "DS", - "Invalid Pipeline CreateInfo State: TE and TC shaders must be included or excluded as a pair. %s", - validation_error_map[VALIDATION_ERROR_096005b4]); + "Invalid Pipeline CreateInfo State: TE and TC shaders must be included or excluded as a pair."); } // Compute shaders should be specified independent of Gfx shaders if (pPipeline->active_shaders & VK_SHADER_STAGE_COMPUTE_BIT) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT, HandleToUint64(pPipeline->pipeline), __LINE__, VALIDATION_ERROR_096005b0, "DS", - "Invalid Pipeline CreateInfo State: Do not specify Compute Shader for Gfx Pipeline. %s", - validation_error_map[VALIDATION_ERROR_096005b0]); + "Invalid Pipeline CreateInfo State: Do not specify Compute Shader for Gfx Pipeline."); } // VK_PRIMITIVE_TOPOLOGY_PATCH_LIST primitive topology is only valid for tessellation pipelines. // Mismatching primitive topology and tessellation fails graphics pipeline creation. @@ -1438,8 +1425,7 @@ static bool ValidatePipelineUnlocked(layer_data *dev_data, std::vectorreport_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT, HandleToUint64(pPipeline->pipeline), __LINE__, VALIDATION_ERROR_096005c0, "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_096005c0]); + "tessellation pipelines."); } if (pPipeline->graphicsPipelineCI.pInputAssemblyState && pPipeline->graphicsPipelineCI.pInputAssemblyState->topology == VK_PRIMITIVE_TOPOLOGY_PATCH_LIST) { @@ -1447,8 +1433,7 @@ static bool ValidatePipelineUnlocked(layer_data *dev_data, std::vectorreport_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT, HandleToUint64(pPipeline->pipeline), __LINE__, VALIDATION_ERROR_096005c2, "DS", "Invalid Pipeline CreateInfo State: VK_PRIMITIVE_TOPOLOGY_PATCH_LIST primitive topology is only valid " - "for tessellation pipelines. %s", - validation_error_map[VALIDATION_ERROR_096005c2]); + "for tessellation pipelines."); } } @@ -1459,8 +1444,7 @@ static bool ValidatePipelineUnlocked(layer_data *dev_data, std::vectorreport_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT, HandleToUint64(pPipeline->pipeline), __LINE__, VALIDATION_ERROR_1020061c, "DS", "vkCreateGraphicsPipelines(): the depthClamp device feature is disabled: the depthClampEnable member " - "of the VkPipelineRasterizationStateCreateInfo structure must be set to VK_FALSE. %s", - validation_error_map[VALIDATION_ERROR_1020061c]); + "of the VkPipelineRasterizationStateCreateInfo structure must be set to VK_FALSE."); } if (!isDynamic(pPipeline, VK_DYNAMIC_STATE_DEPTH_BIAS) && @@ -1480,8 +1464,7 @@ static bool ValidatePipelineUnlocked(layer_data *dev_data, std::vectorreport_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT, HandleToUint64(pPipeline->pipeline), __LINE__, VALIDATION_ERROR_10000622, "DS", "vkCreateGraphicsPipelines(): the alphaToOne device feature is disabled: the alphaToOneEnable " - "member of the VkPipelineMultisampleStateCreateInfo structure must be set to VK_FALSE. %s", - validation_error_map[VALIDATION_ERROR_10000622]); + "member of the VkPipelineMultisampleStateCreateInfo structure must be set to VK_FALSE."); } // If subpass uses a depth/stencil attachment, pDepthStencilState must be a pointer to a valid structure @@ -1491,8 +1474,7 @@ static bool ValidatePipelineUnlocked(layer_data *dev_data, std::vectorreport_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT, HandleToUint64(pPipeline->pipeline), __LINE__, VALIDATION_ERROR_096005e0, "DS", "Invalid Pipeline CreateInfo State: pDepthStencilState is NULL when rasterization is enabled " - "and subpass uses a depth/stencil attachment. %s", - validation_error_map[VALIDATION_ERROR_096005e0]); + "and subpass uses a depth/stencil attachment."); } else if ((pPipeline->graphicsPipelineCI.pDepthStencilState->depthBoundsTestEnable == VK_TRUE) && (!dev_data->enabled_features.depthBounds)) { @@ -1500,8 +1482,7 @@ static bool ValidatePipelineUnlocked(layer_data *dev_data, std::vectorpipeline), __LINE__, VALIDATION_ERROR_0f6004ac, "DS", "vkCreateGraphicsPipelines(): the depthBounds device feature is disabled: the " "depthBoundsTestEnable member of the VkPipelineDepthStencilStateCreateInfo structure must be " - "set to VK_FALSE. %s", - validation_error_map[VALIDATION_ERROR_0f6004ac]); + "set to VK_FALSE."); } } @@ -1517,8 +1498,7 @@ static bool ValidatePipelineUnlocked(layer_data *dev_data, std::vectorreport_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT, HandleToUint64(pPipeline->pipeline), __LINE__, VALIDATION_ERROR_096005e2, "DS", "Invalid Pipeline CreateInfo State: pColorBlendState is NULL when rasterization is enabled and " - "subpass uses color attachments. %s", - validation_error_map[VALIDATION_ERROR_096005e2]); + "subpass uses color attachments."); } } } @@ -1537,8 +1517,8 @@ static bool ValidatePipelineUnlocked(layer_data *dev_data, std::vectorreport_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_14a004de, "IMAGE", "vkCreateGraphicsPipelines: pCreateInfo[%d].pVertexInputState->vertexAttributeDescriptions[%d].format " - "(%s) is not a supported vertex buffer format. %s", - pipelineIndex, j, string_VkFormat(format), validation_error_map[VALIDATION_ERROR_14a004de]); + "(%s) is not a supported vertex buffer format.", + pipelineIndex, j, string_VkFormat(format)); } } } @@ -1561,11 +1541,10 @@ static bool ValidatePipelineUnlocked(layer_data *dev_data, std::vectorreport_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT, HandleToUint64(pPipeline->pipeline), __LINE__, VALIDATION_ERROR_09600bc2, "DS", "vkCreateGraphicsPipelines: pCreateInfo[%d].pMultisampleState->rasterizationSamples (%s) != max " - "attachment samples (%s) used in subpass %u. %s", + "attachment samples (%s) used in subpass %u.", pipelineIndex, string_VkSampleCountFlagBits(pPipeline->graphicsPipelineCI.pMultisampleState->rasterizationSamples), - string_VkSampleCountFlagBits(max_sample_count), pPipeline->graphicsPipelineCI.subpass, - validation_error_map[VALIDATION_ERROR_09600bc2]); + string_VkSampleCountFlagBits(max_sample_count), pPipeline->graphicsPipelineCI.subpass); } } @@ -1601,8 +1580,8 @@ static bool validateIdleDescriptorSet(const layer_data *dev_data, VkDescriptorSe if (set_node->second->in_use.load()) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT, HandleToUint64(set), __LINE__, VALIDATION_ERROR_2860026a, "DS", - "Cannot call %s() on descriptor set 0x%" PRIx64 " that is in use by a command buffer. %s", - func_str.c_str(), HandleToUint64(set), validation_error_map[VALIDATION_ERROR_2860026a]); + "Cannot call %s() on descriptor set 0x%" PRIx64 " that is in use by a command buffer.", + func_str.c_str(), HandleToUint64(set)); } } return skip; @@ -1686,8 +1665,8 @@ bool ValidateCmdQueueFlags(layer_data *dev_data, const GLOBAL_CB_NODE *cb_node, } return log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(cb_node->commandBuffer), __LINE__, error_code, "DS", - "Cannot call %s on a command buffer allocated from a pool without %s capabilities. %s.", caller_name, - required_flags_string.c_str(), validation_error_map[error_code]); + "Cannot call %s on a command buffer allocated from a pool without %s capabilities..", caller_name, + required_flags_string.c_str()); } } return false; @@ -1800,8 +1779,7 @@ bool ValidateCmd(layer_data *dev_data, const GLOBAL_CB_NODE *cb_state, const CMD const auto error = error_it->second; return log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(cb_state->commandBuffer), __LINE__, error, "DS", - "You must call vkBeginCommandBuffer() before this call to %s. %s", caller_name, - validation_error_map[error]); + "You must call vkBeginCommandBuffer() before this call to %s.", caller_name); } } @@ -2010,8 +1988,8 @@ bool insideRenderPass(const layer_data *dev_data, const GLOBAL_CB_NODE *pCB, con if (pCB->activeRenderPass) { inside = log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(pCB->commandBuffer), __LINE__, msgCode, "DS", - "%s: It is invalid to issue this call inside an active render pass (0x%" PRIx64 "). %s", apiName, - HandleToUint64(pCB->activeRenderPass->renderPass), validation_error_map[msgCode]); + "%s: It is invalid to issue this call inside an active render pass (0x%" PRIx64 ").", apiName, + HandleToUint64(pCB->activeRenderPass->renderPass)); } return inside; } @@ -2025,7 +2003,7 @@ bool outsideRenderPass(const layer_data *dev_data, GLOBAL_CB_NODE *pCB, const ch !(pCB->beginInfo.flags & VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT))) { outside = log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(pCB->commandBuffer), __LINE__, msgCode, "DS", - "%s: This call must be issued inside an active render pass. %s", apiName, validation_error_map[msgCode]); + "%s: This call must be issued inside an active render pass.", apiName); } return outside; } @@ -2116,11 +2094,9 @@ VKAPI_ATTR void VKAPI_CALL DestroyInstance(VkInstance instance, const VkAllocati static bool ValidatePhysicalDeviceQueueFamily(instance_layer_data *instance_data, const PHYSICAL_DEVICE_STATE *pd_state, uint32_t requested_queue_family, int32_t err_code, const char *cmd_name, - const char *queue_family_var_name, const char *vu_note = nullptr) { + const char *queue_family_var_name) { bool skip = false; - if (!vu_note) vu_note = validation_error_map[err_code]; - const char *conditional_ext_cmd = instance_data->extensions.vk_khr_get_physical_device_properties_2 ? "or vkGetPhysicalDeviceQueueFamilyProperties2[KHR]" : ""; @@ -2134,8 +2110,8 @@ static bool ValidatePhysicalDeviceQueueFamily(instance_layer_data *instance_data HandleToUint64(pd_state->phys_device), __LINE__, err_code, "DL", "%s: %s (= %" PRIu32 ") is not less than any previously obtained pQueueFamilyPropertyCount from " - "vkGetPhysicalDeviceQueueFamilyProperties%s (%s). %s", - cmd_name, queue_family_var_name, requested_queue_family, conditional_ext_cmd, count_note.c_str(), vu_note); + "vkGetPhysicalDeviceQueueFamilyProperties%s (%s).", + cmd_name, queue_family_var_name, requested_queue_family, conditional_ext_cmd, count_note.c_str()); } return skip; } @@ -2174,10 +2150,8 @@ static bool ValidateDeviceQueueCreateInfos(instance_layer_data *instance_data, c HandleToUint64(pd_state->phys_device), __LINE__, VALIDATION_ERROR_06c002fc, "DL", "vkCreateDevice: pCreateInfo->pQueueCreateInfos[%" PRIu32 "].queueCount (=%" PRIu32 ") is not less than or equal to available queue count for this pCreateInfo->pQueueCreateInfos[%" PRIu32 - "].queueFamilyIndex} (=%" PRIu32 - ") obtained previously from vkGetPhysicalDeviceQueueFamilyProperties%s (%s). %s", - i, requested_queue_count, i, requested_queue_family, conditional_ext_cmd, count_note.c_str(), - validation_error_map[VALIDATION_ERROR_06c002fc]); + "].queueFamilyIndex} (=%" PRIu32 ") obtained previously from vkGetPhysicalDeviceQueueFamilyProperties%s (%s).", + i, requested_queue_count, i, requested_queue_family, conditional_ext_cmd, count_note.c_str()); } } } @@ -2370,8 +2344,8 @@ static bool ValidateStageMaskGsTsEnables(layer_data *dev_data, VkPipelineStageFl skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, geo_error_id, "DL", "%s call includes a stageMask with VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT bit set when device does not have " - "geometryShader feature enabled. %s", - caller, validation_error_map[geo_error_id]); + "geometryShader feature enabled.", + caller); } if (!dev_data->enabled_features.tessellationShader && (stageMask & (VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT | VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT))) { @@ -2379,8 +2353,8 @@ static bool ValidateStageMaskGsTsEnables(layer_data *dev_data, VkPipelineStageFl tess_error_id, "DL", "%s call includes a stageMask with VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT and/or " "VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT bit(s) set when device does not have " - "tessellationShader feature enabled. %s", - caller, validation_error_map[tess_error_id]); + "tessellationShader feature enabled.", + caller); } return skip; } @@ -2593,8 +2567,8 @@ static bool validateCommandBufferSimultaneousUse(layer_data *dev_data, GLOBAL_CB !(pCB->beginInfo.flags & VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT)) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, 0, __LINE__, VALIDATION_ERROR_31a0008e, "DS", - "Command Buffer 0x%" PRIx64 " is already in use and is not marked for simultaneous use. %s", - HandleToUint64(pCB->commandBuffer), validation_error_map[VALIDATION_ERROR_31a0008e]); + "Command Buffer 0x%" PRIx64 " is already in use and is not marked for simultaneous use.", + HandleToUint64(pCB->commandBuffer)); } return skip; } @@ -2624,8 +2598,8 @@ static bool validateCommandBufferState(layer_data *dev_data, GLOBAL_CB_NODE *cb_ case CB_NEW: skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, (uint64_t)(cb_state->commandBuffer), __LINE__, vu_id, "DS", - "Command buffer 0x%" PRIx64 " used in the call to %s is unrecorded and contains no commands. %s", - HandleToUint64(cb_state->commandBuffer), call_source, validation_error_map[vu_id]); + "Command buffer 0x%" PRIx64 " used in the call to %s is unrecorded and contains no commands.", + HandleToUint64(cb_state->commandBuffer), call_source); break; case CB_RECORDING: @@ -2698,9 +2672,9 @@ static bool validateQueueFamilyIndices(layer_data *dev_data, GLOBAL_CB_NODE *pCB skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(pCB->commandBuffer), __LINE__, VALIDATION_ERROR_31a00094, "DS", "vkQueueSubmit: Primary command buffer 0x%" PRIx64 - " created in queue family %d is being submitted on queue 0x%" PRIx64 " from queue family %d. %s", + " created in queue family %d is being submitted on queue 0x%" PRIx64 " from queue family %d.", HandleToUint64(pCB->commandBuffer), pPool->queueFamilyIndex, HandleToUint64(queue), - queue_state->queueFamilyIndex, validation_error_map[VALIDATION_ERROR_31a00094]); + queue_state->queueFamilyIndex); } // Ensure that any bound images or buffers created with SHARING_MODE_CONCURRENT have access to the current queue family @@ -2743,9 +2717,9 @@ static bool validatePrimaryCommandBufferState(layer_data *dev_data, GLOBAL_CB_NO __LINE__, VALIDATION_ERROR_31a00092, "DS", "Commandbuffer 0x%" PRIx64 " was submitted with secondary buffer 0x%" PRIx64 " but that buffer has subsequently been bound to primary cmd buffer 0x%" PRIx64 - " and it does not have VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT set. %s", + " and it does not have VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT set.", HandleToUint64(pCB->commandBuffer), HandleToUint64(pSubCB->commandBuffer), - HandleToUint64(pSubCB->primaryCommandBuffer), validation_error_map[VALIDATION_ERROR_31a00092]); + HandleToUint64(pSubCB->primaryCommandBuffer)); } } @@ -3022,10 +2996,10 @@ bool ValidateObjectNotInUse(const layer_data *dev_data, BASE_NODE *obj_node, VK_ if (dev_data->instance_data->disabled.object_in_use) return false; bool skip = false; if (obj_node->in_use.load()) { - skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, get_debug_report_enum[obj_struct.type], - obj_struct.handle, __LINE__, error_code, "DS", - "Cannot call %s on %s 0x%" PRIx64 " that is currently in use by a command buffer. %s", caller_name, - object_string[obj_struct.type], obj_struct.handle, validation_error_map[error_code]); + skip |= + log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, get_debug_report_enum[obj_struct.type], obj_struct.handle, + __LINE__, error_code, "DS", "Cannot call %s on %s 0x%" PRIx64 " that is currently in use by a command buffer.", + caller_name, object_string[obj_struct.type], obj_struct.handle); } return skip; } @@ -3121,9 +3095,8 @@ static bool ValidateMapMemRange(layer_data *dev_data, VkDeviceMemory mem, VkDevi if ((offset + size) > mem_info->alloc_info.allocationSize) { skip = log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT, HandleToUint64(mem), __LINE__, VALIDATION_ERROR_31200552, "MEM", - "Mapping Memory from 0x%" PRIx64 " to 0x%" PRIx64 " oversteps total array size 0x%" PRIx64 ". %s", - offset, size + offset, mem_info->alloc_info.allocationSize, - validation_error_map[VALIDATION_ERROR_31200552]); + "Mapping Memory from 0x%" PRIx64 " to 0x%" PRIx64 " oversteps total array size 0x%" PRIx64 ".", + offset, size + offset, mem_info->alloc_info.allocationSize); } } } @@ -3146,8 +3119,7 @@ static bool deleteMemRanges(layer_data *dev_data, VkDeviceMemory mem) { // Valid Usage: memory must currently be mapped skip = log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT, HandleToUint64(mem), __LINE__, VALIDATION_ERROR_33600562, "MEM", - "Unmapping Memory without memory being mapped: mem obj 0x%" PRIx64 ". %s", HandleToUint64(mem), - validation_error_map[VALIDATION_ERROR_33600562]); + "Unmapping Memory without memory being mapped: mem obj 0x%" PRIx64 ".", HandleToUint64(mem)); } mem_info->mem_range.size = 0; if (mem_info->shadow_copy) { @@ -3389,8 +3361,8 @@ static bool PreCallValidateDestroyFence(layer_data *dev_data, VkFence fence, FEN if (*fence_node) { if ((*fence_node)->scope == kSyncScopeInternal && (*fence_node)->state == FENCE_INFLIGHT) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT, - HandleToUint64(fence), __LINE__, VALIDATION_ERROR_24e008c0, "DS", "Fence 0x%" PRIx64 " is in use. %s", - HandleToUint64(fence), validation_error_map[VALIDATION_ERROR_24e008c0]); + HandleToUint64(fence), __LINE__, VALIDATION_ERROR_24e008c0, "DS", "Fence 0x%" PRIx64 " is in use.", + HandleToUint64(fence)); } } return skip; @@ -3514,12 +3486,12 @@ static bool PreCallValidateGetQueryPoolResults(layer_data *dev_data, VkQueryPool auto query_pool_state = dev_data->queryPoolMap.find(query_pool); if (query_pool_state != dev_data->queryPoolMap.end()) { if ((query_pool_state->second.createInfo.queryType == VK_QUERY_TYPE_TIMESTAMP) && (flags & VK_QUERY_RESULT_PARTIAL_BIT)) { - skip |= log_msg( - dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT, 0, __LINE__, - VALIDATION_ERROR_2fa00664, "DS", - "QueryPool 0x%" PRIx64 - " was created with a queryType of VK_QUERY_TYPE_TIMESTAMP but flags contains VK_QUERY_RESULT_PARTIAL_BIT. %s", - HandleToUint64(query_pool), validation_error_map[VALIDATION_ERROR_2fa00664]); + skip |= + log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT, 0, + __LINE__, VALIDATION_ERROR_2fa00664, "DS", + "QueryPool 0x%" PRIx64 + " was created with a queryType of VK_QUERY_TYPE_TIMESTAMP but flags contains VK_QUERY_RESULT_PARTIAL_BIT.", + HandleToUint64(query_pool)); } } @@ -3707,9 +3679,9 @@ static bool ValidateInsertMemoryRange(layer_data const *dev_data, uint64_t handl skip = log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT, HandleToUint64(mem_info->mem), __LINE__, error_code, "MEM", "In %s, attempting to bind memory (0x%" PRIx64 ") to object (0x%" PRIx64 "), memoryOffset=0x%" PRIxLEAST64 - " must be less than the memory allocation size 0x%" PRIxLEAST64 ". %s", + " must be less than the memory allocation size 0x%" PRIxLEAST64 ".", api_name, HandleToUint64(mem_info->mem), HandleToUint64(handle), memoryOffset, - mem_info->alloc_info.allocationSize, validation_error_map[error_code]); + mem_info->alloc_info.allocationSize); } return skip; @@ -3855,9 +3827,8 @@ static bool ValidateMemoryTypes(const layer_data *dev_data, const DEVICE_MEM_INF skip = log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT, HandleToUint64(mem_info->mem), __LINE__, msgCode, "MT", "%s(): MemoryRequirements->memoryTypeBits (0x%X) for this object type are not compatible with the memory " - "type (0x%X) of this memory object 0x%" PRIx64 ". %s", - funcName, memory_type_bits, mem_info->alloc_info.memoryTypeIndex, HandleToUint64(mem_info->mem), - validation_error_map[msgCode]); + "type (0x%X) of this memory object 0x%" PRIx64 ".", + funcName, memory_type_bits, mem_info->alloc_info.memoryTypeIndex, HandleToUint64(mem_info->mem)); } return skip; } @@ -3899,9 +3870,8 @@ static bool PreCallValidateBindBufferMemory(layer_data *dev_data, VkBuffer buffe buffer_handle, __LINE__, VALIDATION_ERROR_17000818, "DS", "%s: memoryOffset is 0x%" PRIxLEAST64 " but must be an integer multiple of the VkMemoryRequirements::alignment value 0x%" PRIxLEAST64 - ", returned from a call to vkGetBufferMemoryRequirements with buffer. %s", - api_name, memoryOffset, buffer_state->requirements.alignment, - validation_error_map[VALIDATION_ERROR_17000818]); + ", returned from a call to vkGetBufferMemoryRequirements with buffer.", + api_name, memoryOffset, buffer_state->requirements.alignment); } if (mem_info) { @@ -3911,27 +3881,24 @@ static bool PreCallValidateBindBufferMemory(layer_data *dev_data, VkBuffer buffe buffer_handle, __LINE__, VALIDATION_ERROR_1700081a, "DS", "%s: memory size minus memoryOffset is 0x%" PRIxLEAST64 " but must be at least as large as VkMemoryRequirements::size value 0x%" PRIxLEAST64 - ", returned from a call to vkGetBufferMemoryRequirements with buffer. %s", - api_name, mem_info->alloc_info.allocationSize - memoryOffset, buffer_state->requirements.size, - validation_error_map[VALIDATION_ERROR_1700081a]); + ", returned from a call to vkGetBufferMemoryRequirements with buffer.", + api_name, mem_info->alloc_info.allocationSize - memoryOffset, buffer_state->requirements.size); } // Validate dedicated allocation if (mem_info->is_dedicated && ((mem_info->dedicated_buffer != buffer) || (memoryOffset != 0))) { // TODO: Add vkBindBufferMemory2KHR error message when added to spec. auto validation_error = VALIDATION_ERROR_UNDEFINED; - const char *validation_error_msg = ""; if (strcmp(api_name, "vkBindBufferMemory()") == 0) { validation_error = VALIDATION_ERROR_17000bc8; - validation_error_msg = validation_error_map[validation_error]; } - skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT, - buffer_handle, __LINE__, validation_error, "DS", - "%s: for dedicated memory allocation 0x%" PRIxLEAST64 - ", VkMemoryDedicatedAllocateInfoKHR::buffer 0x%" PRIXLEAST64 - " must be equal to buffer 0x%" PRIxLEAST64 " and memoryOffset 0x%" PRIxLEAST64 " must be zero. %s", - api_name, HandleToUint64(mem), HandleToUint64(mem_info->dedicated_buffer), buffer_handle, - memoryOffset, validation_error_msg); + skip |= + log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT, + buffer_handle, __LINE__, validation_error, "DS", + "%s: for dedicated memory allocation 0x%" PRIxLEAST64 + ", VkMemoryDedicatedAllocateInfoKHR::buffer 0x%" PRIXLEAST64 " must be equal to buffer 0x%" PRIxLEAST64 + " and memoryOffset 0x%" PRIxLEAST64 " must be zero.", + api_name, HandleToUint64(mem), HandleToUint64(mem_info->dedicated_buffer), buffer_handle, memoryOffset); } } @@ -3962,9 +3929,8 @@ static bool PreCallValidateBindBufferMemory(layer_data *dev_data, VkBuffer buffe skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT, buffer_handle, __LINE__, msgCode[i], "DS", "%s: %s memoryOffset is 0x%" PRIxLEAST64 - " but must be a multiple of device limit %s 0x%" PRIxLEAST64 ". %s", - api_name, memory_type[i], memoryOffset, offset_name[i], offset_requirement[i], - validation_error_map[msgCode[i]]); + " but must be a multiple of device limit %s 0x%" PRIxLEAST64 ".", + api_name, memory_type[i], memoryOffset, offset_name[i], offset_requirement[i]); } } } @@ -4392,8 +4358,8 @@ static bool checkCommandBufferInFlight(layer_data *dev_data, const GLOBAL_CB_NOD if (cb_node->in_use.load()) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(cb_node->commandBuffer), __LINE__, error_code, "DS", - "Attempt to %s command buffer (0x%" PRIx64 ") which is in use. %s", action, - HandleToUint64(cb_node->commandBuffer), validation_error_map[error_code]); + "Attempt to %s command buffer (0x%" PRIx64 ") which is in use.", action, + HandleToUint64(cb_node->commandBuffer)); } return skip; } @@ -4472,8 +4438,7 @@ VKAPI_ATTR VkResult VKAPI_CALL CreateQueryPool(VkDevice device, const VkQueryPoo skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT, 0, __LINE__, VALIDATION_ERROR_11c0062e, "DS", "Query pool with type VK_QUERY_TYPE_PIPELINE_STATISTICS created on a device with " - "VkDeviceCreateInfo.pEnabledFeatures.pipelineStatisticsQuery == VK_FALSE. %s", - validation_error_map[VALIDATION_ERROR_11c0062e]); + "VkDeviceCreateInfo.pEnabledFeatures.pipelineStatisticsQuery == VK_FALSE."); } } @@ -4555,10 +4520,9 @@ VKAPI_ATTR VkResult VKAPI_CALL ResetFences(VkDevice device, uint32_t fenceCount, for (uint32_t i = 0; i < fenceCount; ++i) { auto pFence = GetFenceNode(dev_data, pFences[i]); if (pFence && pFence->scope == kSyncScopeInternal && pFence->state == FENCE_INFLIGHT) { - skip |= - log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT, - HandleToUint64(pFences[i]), __LINE__, VALIDATION_ERROR_32e008c6, "DS", "Fence 0x%" PRIx64 " is in use. %s", - HandleToUint64(pFences[i]), validation_error_map[VALIDATION_ERROR_32e008c6]); + skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT, + HandleToUint64(pFences[i]), __LINE__, VALIDATION_ERROR_32e008c6, "DS", "Fence 0x%" PRIx64 " is in use.", + HandleToUint64(pFences[i])); } } lock.unlock(); @@ -4875,8 +4839,8 @@ VKAPI_ATTR VkResult VKAPI_CALL MergeValidationCachesEXT(VkDevice device, VkValid if (src[i] == dst) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT, 0, __LINE__, VALIDATION_ERROR_3e600c00, "DS", - "vkMergeValidationCachesEXT: dstCache (0x%" PRIx64 ") must not appear in pSrcCaches array. %s", - HandleToUint64(dstCache), validation_error_map[VALIDATION_ERROR_3e600c00]); + "vkMergeValidationCachesEXT: dstCache (0x%" PRIx64 ") must not appear in pSrcCaches array.", + HandleToUint64(dstCache)); result = VK_ERROR_VALIDATION_FAILED_EXT; } if (!skip) { @@ -5084,32 +5048,30 @@ static bool validatePushConstantRange(const layer_data *dev_data, const uint32_t skip |= log_msg( dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_11a0024c, "DS", - "%s call has push constants index %u with offset %u that exceeds this device's maxPushConstantSize of %u. %s", - caller_name, index, offset, maxPushConstantsSize, validation_error_map[VALIDATION_ERROR_11a0024c]); + "%s call has push constants index %u with offset %u that exceeds this device's maxPushConstantSize of %u.", + caller_name, index, offset, maxPushConstantsSize); } if (size > maxPushConstantsSize - offset) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_11a00254, "DS", "%s call has push constants index %u with offset %u and size %u that exceeds this device's " - "maxPushConstantSize of %u. %s", - caller_name, index, offset, size, maxPushConstantsSize, - validation_error_map[VALIDATION_ERROR_11a00254]); + "maxPushConstantSize of %u.", + caller_name, index, offset, size, maxPushConstantsSize); } } else if (0 == strcmp(caller_name, "vkCmdPushConstants()")) { if (offset >= maxPushConstantsSize) { skip |= log_msg( dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_1bc002e4, "DS", - "%s call has push constants index %u with offset %u that exceeds this device's maxPushConstantSize of %u. %s", - caller_name, index, offset, maxPushConstantsSize, validation_error_map[VALIDATION_ERROR_1bc002e4]); + "%s call has push constants index %u with offset %u that exceeds this device's maxPushConstantSize of %u.", + caller_name, index, offset, maxPushConstantsSize); } if (size > maxPushConstantsSize - offset) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_1bc002e6, "DS", "%s call has push constants index %u with offset %u and size %u that exceeds this device's " - "maxPushConstantSize of %u. %s", - caller_name, index, offset, size, maxPushConstantsSize, - validation_error_map[VALIDATION_ERROR_1bc002e6]); + "maxPushConstantSize of %u.", + caller_name, index, offset, size, maxPushConstantsSize); } } else { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, @@ -5122,27 +5084,27 @@ static bool validatePushConstantRange(const layer_data *dev_data, const uint32_t if (size == 0) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_11a00250, "DS", - "%s call has push constants index %u with size %u. Size must be greater than zero. %s", caller_name, - index, size, validation_error_map[VALIDATION_ERROR_11a00250]); + "%s call has push constants index %u with size %u. Size must be greater than zero.", caller_name, + index, size); } if (size & 0x3) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_11a00252, "DS", - "%s call has push constants index %u with size %u. Size must be a multiple of 4. %s", caller_name, - index, size, validation_error_map[VALIDATION_ERROR_11a00252]); + "%s call has push constants index %u with size %u. Size must be a multiple of 4.", caller_name, + index, size); } } else if (0 == strcmp(caller_name, "vkCmdPushConstants()")) { if (size == 0) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_1bc2c21b, "DS", - "%s call has push constants index %u with size %u. Size must be greater than zero. %s", caller_name, - index, size, validation_error_map[VALIDATION_ERROR_1bc2c21b]); + "%s call has push constants index %u with size %u. Size must be greater than zero.", caller_name, + index, size); } if (size & 0x3) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_1bc002e2, "DS", - "%s call has push constants index %u with size %u. Size must be a multiple of 4. %s", caller_name, - index, size, validation_error_map[VALIDATION_ERROR_1bc002e2]); + "%s call has push constants index %u with size %u. Size must be a multiple of 4.", caller_name, + index, size); } } else { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, @@ -5154,13 +5116,12 @@ static bool validatePushConstantRange(const layer_data *dev_data, const uint32_t if (0 == strcmp(caller_name, "vkCreatePipelineLayout()")) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_11a0024e, "DS", - "%s call has push constants index %u with offset %u. Offset must be a multiple of 4. %s", caller_name, - index, offset, validation_error_map[VALIDATION_ERROR_11a0024e]); + "%s call has push constants index %u with offset %u. Offset must be a multiple of 4.", caller_name, + index, offset); } else if (0 == strcmp(caller_name, "vkCmdPushConstants()")) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_1bc002e0, "DS", - "%s call has push constants with offset %u. Offset must be a multiple of 4. %s", caller_name, offset, - validation_error_map[VALIDATION_ERROR_1bc002e0]); + "%s call has push constants with offset %u. Offset must be a multiple of 4.", caller_name, offset); } else { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, DRAWSTATE_INTERNAL_ERROR, "DS", "%s caller not supported.", caller_name); @@ -5266,12 +5227,10 @@ static bool PreCallValiateCreatePipelineLayout(const layer_data *dev_data, const // Validate layout count against device physical limit if (pCreateInfo->setLayoutCount > dev_data->phys_dev_props.limits.maxBoundDescriptorSets) { - skip |= - log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, - VALIDATION_ERROR_0fe0023c, "DS", - "vkCreatePipelineLayout(): setLayoutCount (%d) exceeds physical device maxBoundDescriptorSets limit (%d). %s", - pCreateInfo->setLayoutCount, dev_data->phys_dev_props.limits.maxBoundDescriptorSets, - validation_error_map[VALIDATION_ERROR_0fe0023c]); + skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, + VALIDATION_ERROR_0fe0023c, "DS", + "vkCreatePipelineLayout(): setLayoutCount (%d) exceeds physical device maxBoundDescriptorSets limit (%d).", + pCreateInfo->setLayoutCount, dev_data->phys_dev_props.limits.maxBoundDescriptorSets); } // Validate Push Constant ranges @@ -5281,8 +5240,7 @@ static bool PreCallValiateCreatePipelineLayout(const layer_data *dev_data, const pCreateInfo->pPushConstantRanges[i].size, "vkCreatePipelineLayout()", i); if (0 == pCreateInfo->pPushConstantRanges[i].stageFlags) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, - __LINE__, VALIDATION_ERROR_11a2dc03, "DS", "vkCreatePipelineLayout() call has no stageFlags set. %s", - validation_error_map[VALIDATION_ERROR_11a2dc03]); + __LINE__, VALIDATION_ERROR_11a2dc03, "DS", "vkCreatePipelineLayout() call has no stageFlags set."); } } @@ -5292,8 +5250,7 @@ static bool PreCallValiateCreatePipelineLayout(const layer_data *dev_data, const if (0 != (pCreateInfo->pPushConstantRanges[i].stageFlags & pCreateInfo->pPushConstantRanges[j].stageFlags)) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_0fe00248, "DS", - "vkCreatePipelineLayout() Duplicate stage flags found in ranges %d and %d. %s", i, j, - validation_error_map[VALIDATION_ERROR_0fe00248]); + "vkCreatePipelineLayout() Duplicate stage flags found in ranges %d and %d.", i, j); } } } @@ -5313,20 +5270,19 @@ static bool PreCallValiateCreatePipelineLayout(const layer_data *dev_data, const if (push_descriptor_set_count > 1) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, - VALIDATION_ERROR_0fe0024a, "DS", "vkCreatePipelineLayout() Multiple push descriptor sets found. %s", - validation_error_map[VALIDATION_ERROR_0fe0024a]); + VALIDATION_ERROR_0fe0024a, "DS", "vkCreatePipelineLayout() Multiple push descriptor sets found."); } // Max descriptors by type, within a single pipeline stage std::valarray max_descriptors_per_stage = GetDescriptorCountMaxPerStage(dev_data, set_layouts); // Samplers if (max_descriptors_per_stage[DSL_TYPE_SAMPLERS] > dev_data->phys_dev_props.limits.maxPerStageDescriptorSamplers) { - skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, - VALIDATION_ERROR_0fe0023e, "DS", - "vkCreatePipelineLayout(): max per-stage sampler bindings count (%d) exceeds device " - "maxPerStageDescriptorSamplers limit (%d). %s", - max_descriptors_per_stage[DSL_TYPE_SAMPLERS], dev_data->phys_dev_props.limits.maxPerStageDescriptorSamplers, - validation_error_map[VALIDATION_ERROR_0fe0023e]); + skip |= + log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, + VALIDATION_ERROR_0fe0023e, "DS", + "vkCreatePipelineLayout(): max per-stage sampler bindings count (%d) exceeds device " + "maxPerStageDescriptorSamplers limit (%d).", + max_descriptors_per_stage[DSL_TYPE_SAMPLERS], dev_data->phys_dev_props.limits.maxPerStageDescriptorSamplers); } // Uniform buffers @@ -5334,10 +5290,9 @@ static bool PreCallValiateCreatePipelineLayout(const layer_data *dev_data, const skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_0fe00240, "DS", "vkCreatePipelineLayout(): max per-stage uniform buffer bindings count (%d) exceeds device " - "maxPerStageDescriptorUniformBuffers limit (%d). %s", + "maxPerStageDescriptorUniformBuffers limit (%d).", max_descriptors_per_stage[DSL_TYPE_UNIFORM_BUFFERS], - dev_data->phys_dev_props.limits.maxPerStageDescriptorUniformBuffers, - validation_error_map[VALIDATION_ERROR_0fe00240]); + dev_data->phys_dev_props.limits.maxPerStageDescriptorUniformBuffers); } // Storage buffers @@ -5345,10 +5300,9 @@ static bool PreCallValiateCreatePipelineLayout(const layer_data *dev_data, const skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_0fe00242, "DS", "vkCreatePipelineLayout(): max per-stage storage buffer bindings count (%d) exceeds device " - "maxPerStageDescriptorStorageBuffers limit (%d). %s", + "maxPerStageDescriptorStorageBuffers limit (%d).", max_descriptors_per_stage[DSL_TYPE_STORAGE_BUFFERS], - dev_data->phys_dev_props.limits.maxPerStageDescriptorStorageBuffers, - validation_error_map[VALIDATION_ERROR_0fe00242]); + dev_data->phys_dev_props.limits.maxPerStageDescriptorStorageBuffers); } // Sampled images @@ -5356,10 +5310,9 @@ static bool PreCallValiateCreatePipelineLayout(const layer_data *dev_data, const skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_0fe00244, "DS", "vkCreatePipelineLayout(): max per-stage sampled image bindings count (%d) exceeds device " - "maxPerStageDescriptorSampledImages limit (%d). %s", + "maxPerStageDescriptorSampledImages limit (%d).", max_descriptors_per_stage[DSL_TYPE_SAMPLED_IMAGES], - dev_data->phys_dev_props.limits.maxPerStageDescriptorSampledImages, - validation_error_map[VALIDATION_ERROR_0fe00244]); + dev_data->phys_dev_props.limits.maxPerStageDescriptorSampledImages); } // Storage images @@ -5367,10 +5320,9 @@ static bool PreCallValiateCreatePipelineLayout(const layer_data *dev_data, const skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_0fe00246, "DS", "vkCreatePipelineLayout(): max per-stage storage image bindings count (%d) exceeds device " - "maxPerStageDescriptorStorageImages limit (%d). %s", + "maxPerStageDescriptorStorageImages limit (%d).", max_descriptors_per_stage[DSL_TYPE_STORAGE_IMAGES], - dev_data->phys_dev_props.limits.maxPerStageDescriptorStorageImages, - validation_error_map[VALIDATION_ERROR_0fe00246]); + dev_data->phys_dev_props.limits.maxPerStageDescriptorStorageImages); } // Input attachments @@ -5379,10 +5331,9 @@ static bool PreCallValiateCreatePipelineLayout(const layer_data *dev_data, const skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_0fe00d18, "DS", "vkCreatePipelineLayout(): max per-stage input attachment bindings count (%d) exceeds device " - "maxPerStageDescriptorInputAttachments limit (%d). %s", + "maxPerStageDescriptorInputAttachments limit (%d).", max_descriptors_per_stage[DSL_TYPE_INPUT_ATTACHMENTS], - dev_data->phys_dev_props.limits.maxPerStageDescriptorInputAttachments, - validation_error_map[VALIDATION_ERROR_0fe00d18]); + dev_data->phys_dev_props.limits.maxPerStageDescriptorInputAttachments); } // Total descriptors by type @@ -5394,9 +5345,9 @@ static bool PreCallValiateCreatePipelineLayout(const layer_data *dev_data, const skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_0fe00d1a, "DS", "vkCreatePipelineLayout(): sum of sampler bindings among all stages (%d) exceeds device " - "maxDescriptorSetSamplers limit (%d). %s", + "maxDescriptorSetSamplers limit (%d).", sum_all_stages[VK_DESCRIPTOR_TYPE_SAMPLER] + sum_all_stages[VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER], - dev_data->phys_dev_props.limits.maxDescriptorSetSamplers, validation_error_map[VALIDATION_ERROR_0fe00d1a]); + dev_data->phys_dev_props.limits.maxDescriptorSetSamplers); } // Uniform buffers @@ -5404,10 +5355,9 @@ static bool PreCallValiateCreatePipelineLayout(const layer_data *dev_data, const skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_0fe00d1c, "DS", "vkCreatePipelineLayout(): sum of uniform buffer bindings among all stages (%d) exceeds device " - "maxDescriptorSetUniformBuffers limit (%d). %s", + "maxDescriptorSetUniformBuffers limit (%d).", sum_all_stages[VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER], - dev_data->phys_dev_props.limits.maxDescriptorSetUniformBuffers, - validation_error_map[VALIDATION_ERROR_0fe00d1c]); + dev_data->phys_dev_props.limits.maxDescriptorSetUniformBuffers); } // Dynamic uniform buffers @@ -5416,10 +5366,9 @@ static bool PreCallValiateCreatePipelineLayout(const layer_data *dev_data, const skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_0fe00d1e, "DS", "vkCreatePipelineLayout(): sum of dynamic uniform buffer bindings among all stages (%d) exceeds device " - "maxDescriptorSetUniformBuffersDynamic limit (%d). %s", + "maxDescriptorSetUniformBuffersDynamic limit (%d).", sum_all_stages[VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC], - dev_data->phys_dev_props.limits.maxDescriptorSetUniformBuffersDynamic, - validation_error_map[VALIDATION_ERROR_0fe00d1e]); + dev_data->phys_dev_props.limits.maxDescriptorSetUniformBuffersDynamic); } // Storage buffers @@ -5427,10 +5376,9 @@ static bool PreCallValiateCreatePipelineLayout(const layer_data *dev_data, const skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_0fe00d20, "DS", "vkCreatePipelineLayout(): sum of storage buffer bindings among all stages (%d) exceeds device " - "maxDescriptorSetStorageBuffers limit (%d). %s", + "maxDescriptorSetStorageBuffers limit (%d).", sum_all_stages[VK_DESCRIPTOR_TYPE_STORAGE_BUFFER], - dev_data->phys_dev_props.limits.maxDescriptorSetStorageBuffers, - validation_error_map[VALIDATION_ERROR_0fe00d20]); + dev_data->phys_dev_props.limits.maxDescriptorSetStorageBuffers); } // Dynamic storage buffers @@ -5439,10 +5387,9 @@ static bool PreCallValiateCreatePipelineLayout(const layer_data *dev_data, const skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_0fe00d22, "DS", "vkCreatePipelineLayout(): sum of dynamic storage buffer bindings among all stages (%d) exceeds device " - "maxDescriptorSetStorageBuffersDynamic limit (%d). %s", + "maxDescriptorSetStorageBuffersDynamic limit (%d).", sum_all_stages[VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC], - dev_data->phys_dev_props.limits.maxDescriptorSetStorageBuffersDynamic, - validation_error_map[VALIDATION_ERROR_0fe00d22]); + dev_data->phys_dev_props.limits.maxDescriptorSetStorageBuffersDynamic); } // Sampled images @@ -5452,22 +5399,21 @@ static bool PreCallValiateCreatePipelineLayout(const layer_data *dev_data, const log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_0fe00d24, "DS", "vkCreatePipelineLayout(): sum of sampled image bindings among all stages (%d) exceeds device " - "maxDescriptorSetSampledImages limit (%d). %s", + "maxDescriptorSetSampledImages limit (%d).", sum_all_stages[VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE] + sum_all_stages[VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER] + sum_all_stages[VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER], - dev_data->phys_dev_props.limits.maxDescriptorSetSampledImages, validation_error_map[VALIDATION_ERROR_0fe00d24]); + dev_data->phys_dev_props.limits.maxDescriptorSetSampledImages); } // Storage images if ((sum_all_stages[VK_DESCRIPTOR_TYPE_STORAGE_IMAGE] + sum_all_stages[VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER]) > dev_data->phys_dev_props.limits.maxDescriptorSetStorageImages) { - skip |= - log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, - VALIDATION_ERROR_0fe00d26, "DS", - "vkCreatePipelineLayout(): sum of storage image bindings among all stages (%d) exceeds device " - "maxDescriptorSetStorageImages limit (%d). %s", - sum_all_stages[VK_DESCRIPTOR_TYPE_STORAGE_IMAGE] + sum_all_stages[VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER], - dev_data->phys_dev_props.limits.maxDescriptorSetStorageImages, validation_error_map[VALIDATION_ERROR_0fe00d26]); + skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, + VALIDATION_ERROR_0fe00d26, "DS", + "vkCreatePipelineLayout(): sum of storage image bindings among all stages (%d) exceeds device " + "maxDescriptorSetStorageImages limit (%d).", + sum_all_stages[VK_DESCRIPTOR_TYPE_STORAGE_IMAGE] + sum_all_stages[VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER], + dev_data->phys_dev_props.limits.maxDescriptorSetStorageImages); } // Input attachments @@ -5475,10 +5421,9 @@ static bool PreCallValiateCreatePipelineLayout(const layer_data *dev_data, const skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_0fe00d28, "DS", "vkCreatePipelineLayout(): sum of input attachment bindings among all stages (%d) exceeds device " - "maxDescriptorSetInputAttachments limit (%d). %s", + "maxDescriptorSetInputAttachments limit (%d).", sum_all_stages[VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT], - dev_data->phys_dev_props.limits.maxDescriptorSetInputAttachments, - validation_error_map[VALIDATION_ERROR_0fe00d28]); + dev_data->phys_dev_props.limits.maxDescriptorSetInputAttachments); } return skip; @@ -5662,8 +5607,7 @@ static bool PreCallValidateFreeDescriptorSets(const layer_data *dev_data, VkDesc skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT, HandleToUint64(pool), __LINE__, VALIDATION_ERROR_28600270, "DS", "It is invalid to call vkFreeDescriptorSets() with a pool created without setting " - "VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT. %s", - validation_error_map[VALIDATION_ERROR_28600270]); + "VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT."); } return skip; } @@ -5800,8 +5744,8 @@ VKAPI_ATTR VkResult VKAPI_CALL BeginCommandBuffer(VkCommandBuffer commandBuffer, skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_16e00062, "MEM", "Calling vkBeginCommandBuffer() on active command buffer %" PRIx64 - " before it has completed. You must check command buffer fence before this call. %s", - HandleToUint64(commandBuffer), validation_error_map[VALIDATION_ERROR_16e00062]); + " before it has completed. You must check command buffer fence before this call.", + HandleToUint64(commandBuffer)); } clear_cmd_buf_and_mem_references(dev_data, cb_node); if (cb_node->createInfo.level != VK_COMMAND_BUFFER_LEVEL_PRIMARY) { @@ -5811,8 +5755,8 @@ VKAPI_ATTR VkResult VKAPI_CALL BeginCommandBuffer(VkCommandBuffer commandBuffer, skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_16e00066, "DS", - "vkBeginCommandBuffer(): Secondary Command Buffer (0x%" PRIx64 ") must have inheritance info. %s", - HandleToUint64(commandBuffer), validation_error_map[VALIDATION_ERROR_16e00066]); + "vkBeginCommandBuffer(): Secondary Command Buffer (0x%" PRIx64 ") must have inheritance info.", + HandleToUint64(commandBuffer)); } else { if (pBeginInfo->flags & VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT) { assert(pInfo->renderPass); @@ -5837,8 +5781,8 @@ VKAPI_ATTR VkResult VKAPI_CALL BeginCommandBuffer(VkCommandBuffer commandBuffer, VALIDATION_ERROR_16e00068, "DS", "vkBeginCommandBuffer(): Secondary Command Buffer (0x%" PRIx64 ") must not have VK_QUERY_CONTROL_PRECISE_BIT if occulusionQuery is disabled or the device " - "does not support precise occlusion queries. %s", - HandleToUint64(commandBuffer), validation_error_map[VALIDATION_ERROR_16e00068]); + "does not support precise occlusion queries.", + HandleToUint64(commandBuffer)); } } if (pInfo && pInfo->renderPass != VK_NULL_HANDLE) { @@ -5849,9 +5793,8 @@ VKAPI_ATTR VkResult VKAPI_CALL BeginCommandBuffer(VkCommandBuffer commandBuffer, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_0280006c, "DS", "vkBeginCommandBuffer(): Secondary Command Buffers (0x%" PRIx64 - ") must have a subpass index (%d) that is less than the number of subpasses (%d). %s", - HandleToUint64(commandBuffer), pInfo->subpass, renderPass->createInfo.subpassCount, - validation_error_map[VALIDATION_ERROR_0280006c]); + ") must have a subpass index (%d) that is less than the number of subpasses (%d).", + HandleToUint64(commandBuffer), pInfo->subpass, renderPass->createInfo.subpassCount); } } } @@ -5860,19 +5803,19 @@ VKAPI_ATTR VkResult VKAPI_CALL BeginCommandBuffer(VkCommandBuffer commandBuffer, skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_16e00062, "DS", "vkBeginCommandBuffer(): Cannot call Begin on command buffer (0x%" PRIx64 - ") in the RECORDING state. Must first call vkEndCommandBuffer(). %s", - HandleToUint64(commandBuffer), validation_error_map[VALIDATION_ERROR_16e00062]); + ") in the RECORDING state. Must first call vkEndCommandBuffer().", + HandleToUint64(commandBuffer)); } else if (CB_RECORDED == cb_node->state || CB_INVALID_COMPLETE == cb_node->state) { VkCommandPool cmdPool = cb_node->createInfo.commandPool; auto pPool = GetCommandPoolNode(dev_data, cmdPool); if (!(VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT & pPool->createFlags)) { - skip |= log_msg( - dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, - HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_16e00064, "DS", - "Call to vkBeginCommandBuffer() on command buffer (0x%" PRIx64 - ") attempts to implicitly reset cmdBuffer created from command pool (0x%" PRIx64 - ") that does NOT have the VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT bit set. %s", - HandleToUint64(commandBuffer), HandleToUint64(cmdPool), validation_error_map[VALIDATION_ERROR_16e00064]); + skip |= + log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, + HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_16e00064, "DS", + "Call to vkBeginCommandBuffer() on command buffer (0x%" PRIx64 + ") attempts to implicitly reset cmdBuffer created from command pool (0x%" PRIx64 + ") that does NOT have the VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT bit set.", + HandleToUint64(commandBuffer), HandleToUint64(cmdPool)); } ResetCommandBufferState(dev_data, commandBuffer); } @@ -5924,8 +5867,8 @@ VKAPI_ATTR VkResult VKAPI_CALL EndCommandBuffer(VkCommandBuffer commandBuffer) { for (auto query : pCB->activeQueries) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_2740007a, "DS", - "Ending command buffer with in progress query: queryPool 0x%" PRIx64 ", index %d. %s", - HandleToUint64(query.pool), query.index, validation_error_map[VALIDATION_ERROR_2740007a]); + "Ending command buffer with in progress query: queryPool 0x%" PRIx64 ", index %d.", + HandleToUint64(query.pool), query.index); } } if (!skip) { @@ -5953,8 +5896,8 @@ VKAPI_ATTR VkResult VKAPI_CALL ResetCommandBuffer(VkCommandBuffer commandBuffer, skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_3260005c, "DS", "Attempt to reset command buffer (0x%" PRIx64 ") created from command pool (0x%" PRIx64 - ") that does NOT have the VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT bit set. %s", - HandleToUint64(commandBuffer), HandleToUint64(cmdPool), validation_error_map[VALIDATION_ERROR_3260005c]); + ") that does NOT have the VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT bit set.", + HandleToUint64(commandBuffer), HandleToUint64(cmdPool)); } skip |= checkCommandBufferInFlight(dev_data, pCB, "reset", VALIDATION_ERROR_3260005a); lock.unlock(); @@ -6007,8 +5950,7 @@ VKAPI_ATTR void VKAPI_CALL CmdSetViewport(VkCommandBuffer commandBuffer, uint32_ if (pCB->static_status & CBSTATUS_VIEWPORT_SET) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_1e00098a, "DS", - "vkCmdSetViewport(): pipeline was created without VK_DYNAMIC_STATE_VIEWPORT flag. %s.", - validation_error_map[VALIDATION_ERROR_1e00098a]); + "vkCmdSetViewport(): pipeline was created without VK_DYNAMIC_STATE_VIEWPORT flag.."); } if (!skip) { pCB->viewportMask |= ((1u << viewportCount) - 1u) << firstViewport; @@ -6031,8 +5973,7 @@ VKAPI_ATTR void VKAPI_CALL CmdSetScissor(VkCommandBuffer commandBuffer, uint32_t if (pCB->static_status & CBSTATUS_SCISSOR_SET) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_1d80049c, "DS", - "vkCmdSetScissor(): pipeline was created without VK_DYNAMIC_STATE_SCISSOR flag. %s.", - validation_error_map[VALIDATION_ERROR_1d80049c]); + "vkCmdSetScissor(): pipeline was created without VK_DYNAMIC_STATE_SCISSOR flag.."); } if (!skip) { pCB->scissorMask |= ((1u << scissorCount) - 1u) << firstScissor; @@ -6055,8 +5996,7 @@ VKAPI_ATTR void VKAPI_CALL CmdSetLineWidth(VkCommandBuffer commandBuffer, float if (pCB->static_status & CBSTATUS_LINE_WIDTH_SET) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_1d600626, "DS", - "vkCmdSetLineWidth called but pipeline was created without VK_DYNAMIC_STATE_LINE_WIDTH flag. %s", - validation_error_map[VALIDATION_ERROR_1d600626]); + "vkCmdSetLineWidth called but pipeline was created without VK_DYNAMIC_STATE_LINE_WIDTH flag."); } if (!skip) { pCB->status |= CBSTATUS_LINE_WIDTH_SET; @@ -6078,15 +6018,13 @@ VKAPI_ATTR void VKAPI_CALL CmdSetDepthBias(VkCommandBuffer commandBuffer, float if (pCB->static_status & CBSTATUS_DEPTH_BIAS_SET) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_1cc0062a, "DS", - "vkCmdSetDepthBias(): pipeline was created without VK_DYNAMIC_STATE_DEPTH_BIAS flag. %s.", - validation_error_map[VALIDATION_ERROR_1cc0062a]); + "vkCmdSetDepthBias(): pipeline was created without VK_DYNAMIC_STATE_DEPTH_BIAS flag.."); } if ((depthBiasClamp != 0.0) && (!dev_data->enabled_features.depthBiasClamp)) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_1cc0062c, "DS", "vkCmdSetDepthBias(): the depthBiasClamp device feature is disabled: the depthBiasClamp parameter must " - "be set to 0.0. %s", - validation_error_map[VALIDATION_ERROR_1cc0062c]); + "be set to 0.0."); } if (!skip) { pCB->status |= CBSTATUS_DEPTH_BIAS_SET; @@ -6108,8 +6046,7 @@ VKAPI_ATTR void VKAPI_CALL CmdSetBlendConstants(VkCommandBuffer commandBuffer, c if (pCB->static_status & CBSTATUS_BLEND_CONSTANTS_SET) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_1ca004c8, "DS", - "vkCmdSetBlendConstants(): pipeline was created without VK_DYNAMIC_STATE_BLEND_CONSTANTS flag. %s.", - validation_error_map[VALIDATION_ERROR_1ca004c8]); + "vkCmdSetBlendConstants(): pipeline was created without VK_DYNAMIC_STATE_BLEND_CONSTANTS flag.."); } if (!skip) { pCB->status |= CBSTATUS_BLEND_CONSTANTS_SET; @@ -6130,8 +6067,7 @@ VKAPI_ATTR void VKAPI_CALL CmdSetDepthBounds(VkCommandBuffer commandBuffer, floa if (pCB->static_status & CBSTATUS_DEPTH_BOUNDS_SET) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_1ce004ae, "DS", - "vkCmdSetDepthBounds(): pipeline was created without VK_DYNAMIC_STATE_DEPTH_BOUNDS flag. %s.", - validation_error_map[VALIDATION_ERROR_1ce004ae]); + "vkCmdSetDepthBounds(): pipeline was created without VK_DYNAMIC_STATE_DEPTH_BOUNDS flag.."); } if (!skip) { pCB->status |= CBSTATUS_DEPTH_BOUNDS_SET; @@ -6152,11 +6088,10 @@ VKAPI_ATTR void VKAPI_CALL CmdSetStencilCompareMask(VkCommandBuffer commandBuffe ValidateCmdQueueFlags(dev_data, pCB, "vkCmdSetStencilCompareMask()", VK_QUEUE_GRAPHICS_BIT, VALIDATION_ERROR_1da02415); skip |= ValidateCmd(dev_data, pCB, CMD_SETSTENCILCOMPAREMASK, "vkCmdSetStencilCompareMask()"); if (pCB->static_status & CBSTATUS_STENCIL_READ_MASK_SET) { - skip |= log_msg( - dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, - HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_1da004b4, "DS", - "vkCmdSetStencilCompareMask(): pipeline was created without VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK flag. %s.", - validation_error_map[VALIDATION_ERROR_1da004b4]); + skip |= + log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, + HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_1da004b4, "DS", + "vkCmdSetStencilCompareMask(): pipeline was created without VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK flag.."); } if (!skip) { pCB->status |= CBSTATUS_STENCIL_READ_MASK_SET; @@ -6176,11 +6111,9 @@ VKAPI_ATTR void VKAPI_CALL CmdSetStencilWriteMask(VkCommandBuffer commandBuffer, ValidateCmdQueueFlags(dev_data, pCB, "vkCmdSetStencilWriteMask()", VK_QUEUE_GRAPHICS_BIT, VALIDATION_ERROR_1de02415); skip |= ValidateCmd(dev_data, pCB, CMD_SETSTENCILWRITEMASK, "vkCmdSetStencilWriteMask()"); if (pCB->static_status & CBSTATUS_STENCIL_WRITE_MASK_SET) { - skip |= - log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, - HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_1de004b6, "DS", - "vkCmdSetStencilWriteMask(): pipeline was created without VK_DYNAMIC_STATE_STENCIL_WRITE_MASK flag. %s.", - validation_error_map[VALIDATION_ERROR_1de004b6]); + skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, + HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_1de004b6, "DS", + "vkCmdSetStencilWriteMask(): pipeline was created without VK_DYNAMIC_STATE_STENCIL_WRITE_MASK flag.."); } if (!skip) { pCB->status |= CBSTATUS_STENCIL_WRITE_MASK_SET; @@ -6202,8 +6135,7 @@ VKAPI_ATTR void VKAPI_CALL CmdSetStencilReference(VkCommandBuffer commandBuffer, if (pCB->static_status & CBSTATUS_STENCIL_REFERENCE_SET) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_1dc004b8, "DS", - "vkCmdSetStencilReference(): pipeline was created without VK_DYNAMIC_STATE_STENCIL_REFERENCE flag. %s.", - validation_error_map[VALIDATION_ERROR_1dc004b8]); + "vkCmdSetStencilReference(): pipeline was created without VK_DYNAMIC_STATE_STENCIL_REFERENCE flag.."); } if (!skip) { pCB->status |= CBSTATUS_STENCIL_REFERENCE_SET; @@ -6370,9 +6302,8 @@ static bool PreCallValidateCmdBindDescriptorSets(layer_data *device_data, GLOBAL log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT, HandleToUint64(pDescriptorSets[set_idx]), __LINE__, VALIDATION_ERROR_17c002cc, "DS", "descriptorSet #%u being bound is not compatible with overlapping descriptorSetLayout at index %u of " - "pipelineLayout 0x%" PRIx64 " due to: %s. %s", - set_idx, set_idx + firstSet, HandleToUint64(layout), error_string.c_str(), - validation_error_map[VALIDATION_ERROR_17c002cc]); + "pipelineLayout 0x%" PRIx64 " due to: %s.", + set_idx, set_idx + firstSet, HandleToUint64(layout), error_string.c_str()); } auto set_dynamic_descriptor_count = descriptor_set->GetDynamicDescriptorCount(); @@ -6399,10 +6330,9 @@ static bool PreCallValidateCmdBindDescriptorSets(layer_data *device_data, GLOBAL VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT, 0, __LINE__, VALIDATION_ERROR_17c002d4, "DS", "vkCmdBindDescriptorSets(): pDynamicOffsets[%d] is %d but must be a multiple of " - "device limit minUniformBufferOffsetAlignment 0x%" PRIxLEAST64 ". %s", + "device limit minUniformBufferOffsetAlignment 0x%" PRIxLEAST64 ".", cur_dyn_offset, pDynamicOffsets[cur_dyn_offset], - device_data->phys_dev_properties.properties.limits.minUniformBufferOffsetAlignment, - validation_error_map[VALIDATION_ERROR_17c002d4]); + device_data->phys_dev_properties.properties.limits.minUniformBufferOffsetAlignment); } cur_dyn_offset++; } else if (descriptor_set->GetTypeFromGlobalIndex(d) == VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC) { @@ -6413,10 +6343,9 @@ static bool PreCallValidateCmdBindDescriptorSets(layer_data *device_data, GLOBAL VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT, 0, __LINE__, VALIDATION_ERROR_17c002d4, "DS", "vkCmdBindDescriptorSets(): pDynamicOffsets[%d] is %d but must be a multiple of " - "device limit minStorageBufferOffsetAlignment 0x%" PRIxLEAST64 ". %s", + "device limit minStorageBufferOffsetAlignment 0x%" PRIxLEAST64 ".", cur_dyn_offset, pDynamicOffsets[cur_dyn_offset], - device_data->phys_dev_properties.properties.limits.minStorageBufferOffsetAlignment, - validation_error_map[VALIDATION_ERROR_17c002d4]); + device_data->phys_dev_properties.properties.limits.minStorageBufferOffsetAlignment); } cur_dyn_offset++; } @@ -6437,8 +6366,8 @@ static bool PreCallValidateCmdBindDescriptorSets(layer_data *device_data, GLOBAL skip |= log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(cb_state->commandBuffer), __LINE__, VALIDATION_ERROR_17c002ce, "DS", "Attempting to bind %u descriptorSets with %u dynamic descriptors, but dynamicOffsetCount is %u. It should " - "exactly match the number of dynamic descriptors. %s", - setCount, total_dynamic_descriptors, dynamicOffsetCount, validation_error_map[VALIDATION_ERROR_17c002ce]); + "exactly match the number of dynamic descriptors.", + setCount, total_dynamic_descriptors, dynamicOffsetCount); } return skip; } @@ -6484,8 +6413,8 @@ bool ValidatePipelineBindPoint(layer_data *device_data, GLOBAL_CB_NODE *cb_state skip |= log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, cb_u64, __LINE__, error, "DS", "%s: CommandBuffer 0x%" PRIxLEAST64 " was allocated from VkCommandPool 0x%" PRIxLEAST64 - " that does not support bindpoint %s. %s", - func_name, cb_u64, cp_u64, string_VkPipelineBindPoint(bind_point), validation_error_map[error]); + " that does not support bindpoint %s.", + func_name, cb_u64, cp_u64, string_VkPipelineBindPoint(bind_point)); } } return skip; @@ -6514,16 +6443,15 @@ static bool PreCallValidateCmdPushDescriptorSetKHR(layer_data *device_data, GLOB log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT, layout_u64, __LINE__, VALIDATION_ERROR_1be002da, "DS", "%s: Set index %" PRIu32 - " does not match push descriptor set layout index for VkPipelineLayout 0x%" PRIxLEAST64 ". %s", - func_name, set, layout_u64, validation_error_map[VALIDATION_ERROR_1be002da]); + " does not match push descriptor set layout index for VkPipelineLayout 0x%" PRIxLEAST64 ".", + func_name, set, layout_u64); } } else { skip = log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT, layout_u64, __LINE__, VALIDATION_ERROR_1be002d8, "DS", "%s: Set index %" PRIu32 " is outside of range for VkPipelineLayout 0x%" PRIxLEAST64 " (set < %" PRIu32 - "). %s", - func_name, set, layout_u64, static_cast(set_layouts.size()), - validation_error_map[VALIDATION_ERROR_1be002d8]); + ").", + func_name, set, layout_u64, static_cast(set_layouts.size())); } } @@ -6593,8 +6521,8 @@ VKAPI_ATTR void VKAPI_CALL CmdBindIndexBuffer(VkCommandBuffer commandBuffer, VkB if (offset % offset_align) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_17e00360, "DS", - "vkCmdBindIndexBuffer() offset (0x%" PRIxLEAST64 ") does not fall on alignment (%s) boundary. %s", offset, - string_VkIndexType(indexType), validation_error_map[VALIDATION_ERROR_17e00360]); + "vkCmdBindIndexBuffer() offset (0x%" PRIxLEAST64 ") does not fall on alignment (%s) boundary.", offset, + string_VkIndexType(indexType)); } if (skip) return; @@ -6641,8 +6569,7 @@ VKAPI_ATTR void VKAPI_CALL CmdBindVertexBuffers(VkCommandBuffer commandBuffer, u if (pOffsets[i] >= buffer_state->createInfo.size) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT, HandleToUint64(buffer_state->buffer), __LINE__, VALIDATION_ERROR_182004e4, "DS", - "vkCmdBindVertexBuffers() offset (0x%" PRIxLEAST64 ") is beyond the end of the buffer. %s", pOffsets[i], - validation_error_map[VALIDATION_ERROR_182004e4]); + "vkCmdBindVertexBuffers() offset (0x%" PRIxLEAST64 ") is beyond the end of the buffer.", pOffsets[i]); } } @@ -6955,9 +6882,9 @@ bool ValidateImageSampleCount(layer_data *dev_data, IMAGE_STATE *image_state, Vk if (image_state->createInfo.samples != sample_count) { skip = log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT, HandleToUint64(image_state->image), 0, msgCode, "DS", - "%s for image 0x%" PRIx64 " was created with a sample count of %s but must be %s. %s", location, + "%s for image 0x%" PRIx64 " was created with a sample count of %s but must be %s.", location, HandleToUint64(image_state->image), string_VkSampleCountFlagBits(image_state->createInfo.samples), - string_VkSampleCountFlagBits(sample_count), validation_error_map[msgCode]); + string_VkSampleCountFlagBits(sample_count)); } return skip; } @@ -7294,37 +7221,33 @@ static bool ValidateImageBarrierImage(layer_data *device_data, const char *funcN device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT, rp_handle, __LINE__, VALIDATION_ERROR_1b800936, "CORE", "%s: Barrier pImageMemoryBarriers[%d].image (0x%" PRIx64 - ") is not referenced by the VkSubpassDescription for active subpass (%d) of current renderPass (0x%" PRIx64 "). %s", - funcName, img_index, HandleToUint64(img_bar_image), active_subpass, rp_handle, - validation_error_map[VALIDATION_ERROR_1b800936]); + ") is not referenced by the VkSubpassDescription for active subpass (%d) of current renderPass (0x%" PRIx64 ").", + funcName, img_index, HandleToUint64(img_bar_image), active_subpass, rp_handle); } } else { // !image_match auto const fb_handle = HandleToUint64(fb_state->framebuffer); - skip |= - log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT, fb_handle, - __LINE__, VALIDATION_ERROR_1b800936, "CORE", - "%s: Barrier pImageMemoryBarriers[%d].image (0x%" PRIx64 - ") does not match an image from the current framebuffer (0x%" PRIx64 "). %s", - funcName, img_index, HandleToUint64(img_bar_image), fb_handle, validation_error_map[VALIDATION_ERROR_1b800936]); + skip |= log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT, + fb_handle, __LINE__, VALIDATION_ERROR_1b800936, "CORE", + "%s: Barrier pImageMemoryBarriers[%d].image (0x%" PRIx64 + ") does not match an image from the current framebuffer (0x%" PRIx64 ").", + funcName, img_index, HandleToUint64(img_bar_image), fb_handle); } if (img_barrier.oldLayout != img_barrier.newLayout) { - skip |= - log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, - HandleToUint64(cb_state->commandBuffer), __LINE__, VALIDATION_ERROR_1b80093a, "CORE", - "%s: As the Image Barrier for image 0x%" PRIx64 - " is being executed within a render pass instance, oldLayout must equal newLayout yet they are %s and %s. %s", - funcName, HandleToUint64(img_barrier.image), string_VkImageLayout(img_barrier.oldLayout), - string_VkImageLayout(img_barrier.newLayout), validation_error_map[VALIDATION_ERROR_1b80093a]); + skip |= log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, + HandleToUint64(cb_state->commandBuffer), __LINE__, VALIDATION_ERROR_1b80093a, "CORE", + "%s: As the Image Barrier for image 0x%" PRIx64 + " is being executed within a render pass instance, oldLayout must equal newLayout yet they are %s and %s.", + funcName, HandleToUint64(img_barrier.image), string_VkImageLayout(img_barrier.oldLayout), + string_VkImageLayout(img_barrier.newLayout)); } else { if (sub_image_found && sub_image_layout != img_barrier.oldLayout) { skip |= log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT, rp_handle, __LINE__, VALIDATION_ERROR_1b800938, "CORE", "%s: Barrier pImageMemoryBarriers[%d].image (0x%" PRIx64 ") is referenced by the VkSubpassDescription for active subpass (%d) of current renderPass (0x%" PRIx64 - ") as having layout %s, but image barrier has layout %s. %s", + ") as having layout %s, but image barrier has layout %s.", funcName, img_index, HandleToUint64(img_bar_image), active_subpass, rp_handle, - string_VkImageLayout(img_barrier.oldLayout), string_VkImageLayout(sub_image_layout), - validation_error_map[VALIDATION_ERROR_1b800938]); + string_VkImageLayout(img_barrier.oldLayout), string_VkImageLayout(sub_image_layout)); } } return skip; @@ -7343,27 +7266,24 @@ static bool ValidateRenderPassImageBarriers(layer_data *device_data, const char skip |= log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT, rp_handle, __LINE__, VALIDATION_ERROR_1b80092e, "CORE", "%s: Barrier pImageMemoryBarriers[%d].srcAccessMask(0x%X) is not a subset of VkSubpassDependency " - "srcAccessMask(0x%X) of subpass %d of renderPass 0x%" PRIx64 ". %s", - funcName, i, img_src_access_mask, sub_src_access_mask, active_subpass, rp_handle, - validation_error_map[VALIDATION_ERROR_1b80092e]); + "srcAccessMask(0x%X) of subpass %d of renderPass 0x%" PRIx64 ".", + funcName, i, img_src_access_mask, sub_src_access_mask, active_subpass, rp_handle); } const auto &img_dst_access_mask = img_barrier.dstAccessMask; if (img_dst_access_mask != (sub_dst_access_mask & img_dst_access_mask)) { skip |= log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT, rp_handle, __LINE__, VALIDATION_ERROR_1b800930, "CORE", "%s: Barrier pImageMemoryBarriers[%d].dstAccessMask(0x%X) is not a subset of VkSubpassDependency " - "dstAccessMask(0x%X) of subpass %d of renderPass 0x%" PRIx64 ". %s", - funcName, i, img_dst_access_mask, sub_dst_access_mask, active_subpass, rp_handle, - validation_error_map[VALIDATION_ERROR_1b800930]); + "dstAccessMask(0x%X) of subpass %d of renderPass 0x%" PRIx64 ".", + funcName, i, img_dst_access_mask, sub_dst_access_mask, active_subpass, rp_handle); } if (VK_QUEUE_FAMILY_IGNORED != img_barrier.srcQueueFamilyIndex || VK_QUEUE_FAMILY_IGNORED != img_barrier.dstQueueFamilyIndex) { skip |= log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT, rp_handle, __LINE__, VALIDATION_ERROR_1b80093c, "CORE", "%s: Barrier pImageMemoryBarriers[%d].srcQueueFamilyIndex is %d and " - "pImageMemoryBarriers[%d].dstQueueFamilyIndex is %d but both must be VK_QUEUE_FAMILY_IGNORED. %s", - funcName, i, img_barrier.srcQueueFamilyIndex, i, img_barrier.dstQueueFamilyIndex, - validation_error_map[VALIDATION_ERROR_1b80093c]); + "pImageMemoryBarriers[%d].dstQueueFamilyIndex is %d but both must be VK_QUEUE_FAMILY_IGNORED.", + funcName, i, img_barrier.srcQueueFamilyIndex, i, img_barrier.dstQueueFamilyIndex); } // Secondary CBs can have null framebuffer so queue up validation in that case 'til FB is known if (VK_NULL_HANDLE == cb_state->activeFramebuffer) { @@ -7394,11 +7314,11 @@ static bool ValidateRenderPassPipelineBarriers(layer_data *device_data, const ch const auto active_subpass = cb_state->activeSubpass; auto rp_handle = HandleToUint64(rp_state->renderPass); if (!rp_state->hasSelfDependency[active_subpass]) { - skip |= log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT, - rp_handle, __LINE__, VALIDATION_ERROR_1b800928, "CORE", - "%s: Barriers cannot be set during subpass %d of renderPass 0x%" PRIx64 - " with no self-dependency specified. %s", - funcName, active_subpass, rp_handle, validation_error_map[VALIDATION_ERROR_1b800928]); + skip |= + log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT, rp_handle, + __LINE__, VALIDATION_ERROR_1b800928, "CORE", + "%s: Barriers cannot be set during subpass %d of renderPass 0x%" PRIx64 " with no self-dependency specified.", + funcName, active_subpass, rp_handle); } else { assert(rp_state->subpass_to_dependency_index[cb_state->activeSubpass] != -1); // Grab ref to current subpassDescription up-front for use below @@ -7411,25 +7331,22 @@ static bool ValidateRenderPassPipelineBarriers(layer_data *device_data, const ch skip |= log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT, rp_handle, __LINE__, VALIDATION_ERROR_1b80092a, "CORE", "%s: Barrier srcStageMask(0x%X) is not a subset of VkSubpassDependency srcStageMask(0x%X) of subpass " - "%d of renderPass 0x%" PRIx64 ". %s", - funcName, src_stage_mask, sub_src_stage_mask, active_subpass, rp_handle, - validation_error_map[VALIDATION_ERROR_1b80092a]); + "%d of renderPass 0x%" PRIx64 ".", + funcName, src_stage_mask, sub_src_stage_mask, active_subpass, rp_handle); } if ((sub_dst_stage_mask != VK_PIPELINE_STAGE_ALL_COMMANDS_BIT) && (dst_stage_mask != (sub_dst_stage_mask & dst_stage_mask))) { skip |= log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT, rp_handle, __LINE__, VALIDATION_ERROR_1b80092c, "CORE", "%s: Barrier dstStageMask(0x%X) is not a subset of VkSubpassDependency dstStageMask(0x%X) of subpass " - "%d of renderPass 0x%" PRIx64 ". %s", - funcName, dst_stage_mask, sub_dst_stage_mask, active_subpass, rp_handle, - validation_error_map[VALIDATION_ERROR_1b80092c]); + "%d of renderPass 0x%" PRIx64 ".", + funcName, dst_stage_mask, sub_dst_stage_mask, active_subpass, rp_handle); } if (0 != buffer_mem_barrier_count) { - skip |= - log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT, - rp_handle, __LINE__, VALIDATION_ERROR_1b800934, "CORE", - "%s: bufferMemoryBarrierCount is non-zero (%d) for subpass %d of renderPass 0x%" PRIx64 ". %s", funcName, - buffer_mem_barrier_count, active_subpass, rp_handle, validation_error_map[VALIDATION_ERROR_1b800934]); + skip |= log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT, + rp_handle, __LINE__, VALIDATION_ERROR_1b800934, "CORE", + "%s: bufferMemoryBarrierCount is non-zero (%d) for subpass %d of renderPass 0x%" PRIx64 ".", funcName, + buffer_mem_barrier_count, active_subpass, rp_handle); } const auto &sub_src_access_mask = sub_dep.srcAccessMask; const auto &sub_dst_access_mask = sub_dep.dstAccessMask; @@ -7439,18 +7356,16 @@ static bool ValidateRenderPassPipelineBarriers(layer_data *device_data, const ch skip |= log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT, rp_handle, __LINE__, VALIDATION_ERROR_1b80092e, "CORE", "%s: Barrier pMemoryBarriers[%d].srcAccessMask(0x%X) is not a subset of VkSubpassDependency " - "srcAccessMask(0x%X) of subpass %d of renderPass 0x%" PRIx64 ". %s", - funcName, i, mb_src_access_mask, sub_src_access_mask, active_subpass, rp_handle, - validation_error_map[VALIDATION_ERROR_1b80092e]); + "srcAccessMask(0x%X) of subpass %d of renderPass 0x%" PRIx64 ".", + funcName, i, mb_src_access_mask, sub_src_access_mask, active_subpass, rp_handle); } const auto &mb_dst_access_mask = mem_barriers[i].dstAccessMask; if (mb_dst_access_mask != (sub_dst_access_mask & mb_dst_access_mask)) { skip |= log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT, rp_handle, __LINE__, VALIDATION_ERROR_1b800930, "CORE", "%s: Barrier pMemoryBarriers[%d].dstAccessMask(0x%X) is not a subset of VkSubpassDependency " - "dstAccessMask(0x%X) of subpass %d of renderPass 0x%" PRIx64 ". %s", - funcName, i, mb_dst_access_mask, sub_dst_access_mask, active_subpass, rp_handle, - validation_error_map[VALIDATION_ERROR_1b800930]); + "dstAccessMask(0x%X) of subpass %d of renderPass 0x%" PRIx64 ".", + funcName, i, mb_dst_access_mask, sub_dst_access_mask, active_subpass, rp_handle); } } skip |= ValidateRenderPassImageBarriers(device_data, funcName, cb_state, active_subpass, sub_desc, rp_handle, @@ -7459,9 +7374,8 @@ static bool ValidateRenderPassPipelineBarriers(layer_data *device_data, const ch skip |= log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT, rp_handle, __LINE__, VALIDATION_ERROR_1b800932, "CORE", "%s: dependencyFlags param (0x%X) does not equal VkSubpassDependency dependencyFlags value (0x%X) for " - "subpass %d of renderPass 0x%" PRIx64 ". %s", - funcName, dependency_flags, sub_dep.dependencyFlags, cb_state->activeSubpass, rp_handle, - validation_error_map[VALIDATION_ERROR_1b800932]); + "subpass %d of renderPass 0x%" PRIx64 ".", + funcName, dependency_flags, sub_dep.dependencyFlags, cb_state->activeSubpass, rp_handle); } } return skip; @@ -7609,10 +7523,9 @@ class ValidatorState { const UNIQUE_VALIDATION_ERROR_CODE val_code = val_codes_[vu_index]; const char *annotation = GetFamilyAnnotation(family); return log_msg(report_data_, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, cb_handle64_, - location, val_code, "DS", - "%s: Barrier using %s 0x%" PRIx64 " created with sharingMode %s, has %s %u%s. %s %s", func_name_, - GetTypeString(), barrier_handle64_, GetModeString(), param_name, family, annotation, vu_summary[vu_index], - validation_error_map[val_code]); + location, val_code, "DS", "%s: Barrier using %s 0x%" PRIx64 " created with sharingMode %s, has %s %u%s. %s", + func_name_, GetTypeString(), barrier_handle64_, GetModeString(), param_name, family, annotation, + vu_summary[vu_index]); } bool LogMsg(VuIndex vu_index, size_t location, uint32_t src_family, uint32_t dst_family) const { @@ -7622,9 +7535,9 @@ class ValidatorState { return log_msg(report_data_, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, cb_handle64_, location, val_code, "DS", "%s: Barrier using %s 0x%" PRIx64 - " created with sharingMode %s, has srcQueueFamilyIndex %u%s and dstQueueFamilyIndex %u%s. %s %s", + " created with sharingMode %s, has srcQueueFamilyIndex %u%s and dstQueueFamilyIndex %u%s. %s", func_name_, GetTypeString(), barrier_handle64_, GetModeString(), src_family, src_annotation, dst_family, - dst_annotation, vu_summary[vu_index], validation_error_map[val_code]); + dst_annotation, vu_summary[vu_index]); } // This abstract Vu can only be tested at submit time, thus we need a callback from the closure containing the needed @@ -7643,10 +7556,9 @@ class ValidatorState { return log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT, HandleToUint64(queue), __LINE__, val_code, "DS", "%s: Barrier submitted to queue with family index %u, using %s 0x%" PRIx64 - " created with sharingMode %s, has srcQueueFamilyIndex %u%s and dstQueueFamilyIndex %u%s. %s %s", + " created with sharingMode %s, has srcQueueFamilyIndex %u%s and dstQueueFamilyIndex %u%s. %s", "vkQueueSubmit", queue_family, val.GetTypeString(), val.barrier_handle64_, val.GetModeString(), - src_family, src_annotation, dst_family, dst_annotation, vu_summary[kSubmitQueueMustMatchSrcOrDst], - validation_error_map[val_code]); + src_family, src_annotation, dst_family, dst_annotation, vu_summary[kSubmitQueueMustMatchSrcOrDst]); } return false; } @@ -7795,14 +7707,14 @@ static bool ValidateBarriers(layer_data *device_data, const char *funcName, GLOB if (!ValidateAccessMaskPipelineStage(mem_barrier.srcAccessMask, src_stage_mask)) { skip |= log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(cb_state->commandBuffer), __LINE__, VALIDATION_ERROR_1b800940, "DS", - "%s: pMemBarriers[%d].srcAccessMask (0x%X) is not supported by srcStageMask (0x%X). %s", funcName, i, - mem_barrier.srcAccessMask, src_stage_mask, validation_error_map[VALIDATION_ERROR_1b800940]); + "%s: pMemBarriers[%d].srcAccessMask (0x%X) is not supported by srcStageMask (0x%X).", funcName, i, + mem_barrier.srcAccessMask, src_stage_mask); } if (!ValidateAccessMaskPipelineStage(mem_barrier.dstAccessMask, dst_stage_mask)) { skip |= log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(cb_state->commandBuffer), __LINE__, VALIDATION_ERROR_1b800942, "DS", - "%s: pMemBarriers[%d].dstAccessMask (0x%X) is not supported by dstStageMask (0x%X). %s", funcName, i, - mem_barrier.dstAccessMask, dst_stage_mask, validation_error_map[VALIDATION_ERROR_1b800942]); + "%s: pMemBarriers[%d].dstAccessMask (0x%X) is not supported by dstStageMask (0x%X).", funcName, i, + mem_barrier.dstAccessMask, dst_stage_mask); } } for (uint32_t i = 0; i < imageMemBarrierCount; ++i) { @@ -7810,14 +7722,14 @@ static bool ValidateBarriers(layer_data *device_data, const char *funcName, GLOB if (!ValidateAccessMaskPipelineStage(mem_barrier->srcAccessMask, src_stage_mask)) { skip |= log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(cb_state->commandBuffer), __LINE__, VALIDATION_ERROR_1b800940, "DS", - "%s: pImageMemBarriers[%d].srcAccessMask (0x%X) is not supported by srcStageMask (0x%X). %s", funcName, - i, mem_barrier->srcAccessMask, src_stage_mask, validation_error_map[VALIDATION_ERROR_1b800940]); + "%s: pImageMemBarriers[%d].srcAccessMask (0x%X) is not supported by srcStageMask (0x%X).", funcName, i, + mem_barrier->srcAccessMask, src_stage_mask); } if (!ValidateAccessMaskPipelineStage(mem_barrier->dstAccessMask, dst_stage_mask)) { skip |= log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(cb_state->commandBuffer), __LINE__, VALIDATION_ERROR_1b800942, "DS", - "%s: pImageMemBarriers[%d].dstAccessMask (0x%X) is not supported by dstStageMask (0x%X). %s", funcName, - i, mem_barrier->dstAccessMask, dst_stage_mask, validation_error_map[VALIDATION_ERROR_1b800942]); + "%s: pImageMemBarriers[%d].dstAccessMask (0x%X) is not supported by dstStageMask (0x%X).", funcName, i, + mem_barrier->dstAccessMask, dst_stage_mask); } auto image_data = GetImageState(device_data, mem_barrier->image); @@ -7826,8 +7738,7 @@ static bool ValidateBarriers(layer_data *device_data, const char *funcName, GLOB if (mem_barrier->newLayout == VK_IMAGE_LAYOUT_UNDEFINED || mem_barrier->newLayout == VK_IMAGE_LAYOUT_PREINITIALIZED) { skip |= log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(cb_state->commandBuffer), __LINE__, VALIDATION_ERROR_0a00095c, "DS", - "%s: Image Layout cannot be transitioned to UNDEFINED or PREINITIALIZED. %s", funcName, - validation_error_map[VALIDATION_ERROR_0a00095c]); + "%s: Image Layout cannot be transitioned to UNDEFINED or PREINITIALIZED.", funcName); } if (image_data) { @@ -7853,14 +7764,14 @@ static bool ValidateBarriers(layer_data *device_data, const char *funcName, GLOB if (!ValidateAccessMaskPipelineStage(mem_barrier->srcAccessMask, src_stage_mask)) { skip |= log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(cb_state->commandBuffer), __LINE__, VALIDATION_ERROR_1b800940, "DS", - "%s: pBufferMemBarriers[%d].srcAccessMask (0x%X) is not supported by srcStageMask (0x%X). %s", funcName, - i, mem_barrier->srcAccessMask, src_stage_mask, validation_error_map[VALIDATION_ERROR_1b800940]); + "%s: pBufferMemBarriers[%d].srcAccessMask (0x%X) is not supported by srcStageMask (0x%X).", funcName, i, + mem_barrier->srcAccessMask, src_stage_mask); } if (!ValidateAccessMaskPipelineStage(mem_barrier->dstAccessMask, dst_stage_mask)) { skip |= log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(cb_state->commandBuffer), __LINE__, VALIDATION_ERROR_1b800942, "DS", - "%s: pBufferMemBarriers[%d].dstAccessMask (0x%X) is not supported by dstStageMask (0x%X). %s", funcName, - i, mem_barrier->dstAccessMask, dst_stage_mask, validation_error_map[VALIDATION_ERROR_1b800942]); + "%s: pBufferMemBarriers[%d].dstAccessMask (0x%X) is not supported by dstStageMask (0x%X).", funcName, i, + mem_barrier->dstAccessMask, dst_stage_mask); } // Validate buffer barrier queue family indices auto buffer_state = GetBufferState(device_data, mem_barrier->buffer); @@ -7878,18 +7789,17 @@ static bool ValidateBarriers(layer_data *device_data, const char *funcName, GLOB skip |= log_msg( device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(cb_state->commandBuffer), __LINE__, VALIDATION_ERROR_01800946, "DS", - "%s: Buffer Barrier 0x%" PRIx64 " has offset 0x%" PRIx64 " which is not less than total size 0x%" PRIx64 ". %s", - funcName, HandleToUint64(mem_barrier->buffer), HandleToUint64(mem_barrier->offset), HandleToUint64(buffer_size), - validation_error_map[VALIDATION_ERROR_01800946]); + "%s: Buffer Barrier 0x%" PRIx64 " has offset 0x%" PRIx64 " which is not less than total size 0x%" PRIx64 ".", + funcName, HandleToUint64(mem_barrier->buffer), HandleToUint64(mem_barrier->offset), + HandleToUint64(buffer_size)); } else if (mem_barrier->size != VK_WHOLE_SIZE && (mem_barrier->offset + mem_barrier->size > buffer_size)) { skip |= log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(cb_state->commandBuffer), __LINE__, VALIDATION_ERROR_0180094a, "DS", "%s: Buffer Barrier 0x%" PRIx64 " has offset 0x%" PRIx64 " and size 0x%" PRIx64 - " whose sum is greater than total size 0x%" PRIx64 ". %s", + " whose sum is greater than total size 0x%" PRIx64 ".", funcName, HandleToUint64(mem_barrier->buffer), HandleToUint64(mem_barrier->offset), - HandleToUint64(mem_barrier->size), HandleToUint64(buffer_size), - validation_error_map[VALIDATION_ERROR_0180094a]); + HandleToUint64(mem_barrier->size), HandleToUint64(buffer_size)); } } } @@ -7926,8 +7836,8 @@ bool validateEventStageMask(VkQueue queue, GLOBAL_CB_NODE *pCB, uint32_t eventCo HandleToUint64(pCB->commandBuffer), __LINE__, VALIDATION_ERROR_1e62d401, "DS", "Submitting cmdbuffer with call to VkCmdWaitEvents using srcStageMask 0x%X which must be the bitwise OR of " "the stageMask parameters used in calls to vkCmdSetEvent and VK_PIPELINE_STAGE_HOST_BIT if used with " - "vkSetEvent but instead is 0x%X. %s", - sourceStageMask, stageMask, validation_error_map[VALIDATION_ERROR_1e62d401]); + "vkSetEvent but instead is 0x%X.", + sourceStageMask, stageMask); } return skip; } @@ -7975,9 +7885,8 @@ bool CheckStageMaskQueueCompatibility(layer_data *dev_data, VkCommandBuffer comm skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(command_buffer), __LINE__, error_code, "DL", - "%s(): %s flag %s is not compatible with the queue family properties of this command buffer. %s", - function, src_or_dest, string_VkPipelineStageFlagBits(static_cast(item)), - validation_error_map[error_code]); + "%s(): %s flag %s is not compatible with the queue family properties of this command buffer.", function, + src_or_dest, string_VkPipelineStageFlagBits(static_cast(item))); } } } @@ -8214,8 +8123,8 @@ VKAPI_ATTR void VKAPI_CALL CmdEndQuery(VkCommandBuffer commandBuffer, VkQueryPoo if (!cb_state->activeQueries.count(query)) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_1ae00652, "DS", - "Ending a query before it was started: queryPool 0x%" PRIx64 ", index %d. %s", - HandleToUint64(queryPool), slot, validation_error_map[VALIDATION_ERROR_1ae00652]); + "Ending a query before it was started: queryPool 0x%" PRIx64 ", index %d.", HandleToUint64(queryPool), + slot); } skip |= ValidateCmdQueueFlags(dev_data, cb_state, "VkCmdEndQuery()", VK_QUEUE_GRAPHICS_BIT | VK_QUEUE_COMPUTE_BIT, VALIDATION_ERROR_1ae02415); @@ -8346,7 +8255,7 @@ VKAPI_ATTR void VKAPI_CALL CmdPushConstants(VkCommandBuffer commandBuffer, VkPip if (0 == stageFlags) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_1bc2dc03, "DS", - "vkCmdPushConstants() call has no stageFlags set. %s", validation_error_map[VALIDATION_ERROR_1bc2dc03]); + "vkCmdPushConstants() call has no stageFlags set."); } // Check if pipeline_layout VkPushConstantRange(s) overlapping offset, size have stageFlags set for each stage in the command @@ -8365,9 +8274,9 @@ VKAPI_ATTR void VKAPI_CALL CmdPushConstants(VkCommandBuffer commandBuffer, VkPip "vkCmdPushConstants(): stageFlags (0x%" PRIx32 ", offset (%" PRIu32 "), and size (%" PRIu32 "), " "must contain all stages in overlapping VkPushConstantRange stageFlags (0x%" PRIx32 - "), offset (%" PRIu32 "), and size (%" PRIu32 ") in pipeline layout 0x%" PRIx64 ". %s", + "), offset (%" PRIu32 "), and size (%" PRIu32 ") in pipeline layout 0x%" PRIx64 ".", (uint32_t)stageFlags, offset, size, (uint32_t)range.stageFlags, range.offset, range.size, - HandleToUint64(layout), validation_error_map[VALIDATION_ERROR_1bc00e08]); + HandleToUint64(layout)); } // Accumulate all stages we've found @@ -8380,9 +8289,8 @@ VKAPI_ATTR void VKAPI_CALL CmdPushConstants(VkCommandBuffer commandBuffer, VkPip skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_1bc00e06, "DS", "vkCmdPushConstants(): stageFlags = 0x%" PRIx32 ", VkPushConstantRange in pipeline layout 0x%" PRIx64 - " overlapping offset = %d and size = %d, do not contain stageFlags 0x%" PRIx32 ". %s", - (uint32_t)stageFlags, HandleToUint64(layout), offset, size, missing_stages, - validation_error_map[VALIDATION_ERROR_1bc00e06]); + " overlapping offset = %d and size = %d, do not contain stageFlags 0x%" PRIx32 ".", + (uint32_t)stageFlags, HandleToUint64(layout), offset, size, missing_stages); } } lock.unlock(); @@ -8432,9 +8340,8 @@ static bool MatchUsage(layer_data *dev_data, uint32_t count, const VkAttachmentR skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, error_code, "DS", "vkCreateFramebuffer: Framebuffer Attachment (%d) conflicts with the image's " - "IMAGE_USAGE flags (%s). %s", - attachments[attach].attachment, string_VkImageUsageFlagBits(usage_flag), - validation_error_map[error_code]); + "IMAGE_USAGE flags (%s).", + attachments[attach].attachment, string_VkImageUsageFlagBits(usage_flag)); } } } @@ -8463,9 +8370,8 @@ static bool ValidateFramebufferCreateInfo(layer_data *dev_data, const VkFramebuf skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT, HandleToUint64(pCreateInfo->renderPass), __LINE__, VALIDATION_ERROR_094006d8, "DS", "vkCreateFramebuffer(): VkFramebufferCreateInfo attachmentCount of %u does not match attachmentCount " - "of %u of renderPass (0x%" PRIx64 ") being used to create Framebuffer. %s", - pCreateInfo->attachmentCount, rpci->attachmentCount, HandleToUint64(pCreateInfo->renderPass), - validation_error_map[VALIDATION_ERROR_094006d8]); + "of %u of renderPass (0x%" PRIx64 ") being used to create Framebuffer.", + pCreateInfo->attachmentCount, rpci->attachmentCount, HandleToUint64(pCreateInfo->renderPass)); } else { // attachmentCounts match, so make sure corresponding attachment details line up const VkImageView *image_views = pCreateInfo->pAttachments; @@ -8477,9 +8383,9 @@ static bool ValidateFramebufferCreateInfo(layer_data *dev_data, const VkFramebuf log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT, HandleToUint64(pCreateInfo->renderPass), __LINE__, VALIDATION_ERROR_094006e0, "DS", "vkCreateFramebuffer(): VkFramebufferCreateInfo attachment #%u has format of %s that does not " - "match the format of %s used by the corresponding attachment for renderPass (0x%" PRIx64 "). %s", + "match the format of %s used by the corresponding attachment for renderPass (0x%" PRIx64 ").", i, string_VkFormat(ivci.format), string_VkFormat(rpci->pAttachments[i].format), - HandleToUint64(pCreateInfo->renderPass), validation_error_map[VALIDATION_ERROR_094006e0]); + HandleToUint64(pCreateInfo->renderPass)); } const VkImageCreateInfo *ici = &GetImageState(dev_data, ivci.image)->createInfo; if (ici->samples != rpci->pAttachments[i].samples) { @@ -8487,17 +8393,17 @@ static bool ValidateFramebufferCreateInfo(layer_data *dev_data, const VkFramebuf dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT, HandleToUint64(pCreateInfo->renderPass), __LINE__, VALIDATION_ERROR_094006e2, "DS", "vkCreateFramebuffer(): VkFramebufferCreateInfo attachment #%u has %s samples that do not match the %s " - "samples used by the corresponding attachment for renderPass (0x%" PRIx64 "). %s", + "samples used by the corresponding attachment for renderPass (0x%" PRIx64 ").", i, string_VkSampleCountFlagBits(ici->samples), string_VkSampleCountFlagBits(rpci->pAttachments[i].samples), - HandleToUint64(pCreateInfo->renderPass), validation_error_map[VALIDATION_ERROR_094006e2]); + HandleToUint64(pCreateInfo->renderPass)); } // Verify that view only has a single mip level if (ivci.subresourceRange.levelCount != 1) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_094006e6, "DS", "vkCreateFramebuffer(): VkFramebufferCreateInfo attachment #%u has mip levelCount of %u but " - "only a single mip level (levelCount == 1) is allowed when creating a Framebuffer. %s", - i, ivci.subresourceRange.levelCount, validation_error_map[VALIDATION_ERROR_094006e6]); + "only a single mip level (levelCount == 1) is allowed when creating a Framebuffer.", + i, ivci.subresourceRange.levelCount); } const uint32_t mip_level = ivci.subresourceRange.baseMipLevel; uint32_t mip_width = max(1u, ici->extent.width >> mip_level); @@ -8511,10 +8417,9 @@ static bool ValidateFramebufferCreateInfo(layer_data *dev_data, const VkFramebuf "attachment #%u, framebuffer:\n" "width: %u, %u\n" "height: %u, %u\n" - "layerCount: %u, %u\n%s", + "layerCount: %u, %u\n", i, ivci.subresourceRange.baseMipLevel, i, mip_width, pCreateInfo->width, mip_height, - pCreateInfo->height, ivci.subresourceRange.layerCount, pCreateInfo->layers, - validation_error_map[VALIDATION_ERROR_094006e4]); + pCreateInfo->height, ivci.subresourceRange.layerCount, pCreateInfo->layers); } if (((ivci.components.r != VK_COMPONENT_SWIZZLE_IDENTITY) && (ivci.components.r != VK_COMPONENT_SWIZZLE_R)) || ((ivci.components.g != VK_COMPONENT_SWIZZLE_IDENTITY) && (ivci.components.g != VK_COMPONENT_SWIZZLE_G)) || @@ -8528,11 +8433,9 @@ static bool ValidateFramebufferCreateInfo(layer_data *dev_data, const VkFramebuf "r swizzle = %s\n" "g swizzle = %s\n" "b swizzle = %s\n" - "a swizzle = %s\n" - "%s", + "a swizzle = %s\n", i, string_VkComponentSwizzle(ivci.components.r), string_VkComponentSwizzle(ivci.components.g), - string_VkComponentSwizzle(ivci.components.b), string_VkComponentSwizzle(ivci.components.a), - validation_error_map[VALIDATION_ERROR_094006e8]); + string_VkComponentSwizzle(ivci.components.b), string_VkComponentSwizzle(ivci.components.a)); } } } @@ -8558,44 +8461,38 @@ static bool ValidateFramebufferCreateInfo(layer_data *dev_data, const VkFramebuf skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_094006ec, "DS", "vkCreateFramebuffer(): Requested VkFramebufferCreateInfo width exceeds physical device limits. Requested " - "width: %u, device max: %u\n%s", - pCreateInfo->width, dev_data->phys_dev_properties.properties.limits.maxFramebufferWidth, - validation_error_map[VALIDATION_ERROR_094006ec]); + "width: %u, device max: %u\n", + pCreateInfo->width, dev_data->phys_dev_properties.properties.limits.maxFramebufferWidth); } if (pCreateInfo->height > dev_data->phys_dev_properties.properties.limits.maxFramebufferHeight) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_094006f0, "DS", "vkCreateFramebuffer(): Requested VkFramebufferCreateInfo height exceeds physical device limits. Requested " - "height: %u, device max: %u\n%s", - pCreateInfo->height, dev_data->phys_dev_properties.properties.limits.maxFramebufferHeight, - validation_error_map[VALIDATION_ERROR_094006f0]); + "height: %u, device max: %u\n", + pCreateInfo->height, dev_data->phys_dev_properties.properties.limits.maxFramebufferHeight); } if (pCreateInfo->layers > dev_data->phys_dev_properties.properties.limits.maxFramebufferLayers) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_094006f4, "DS", "vkCreateFramebuffer(): Requested VkFramebufferCreateInfo layers exceeds physical device limits. Requested " - "layers: %u, device max: %u\n%s", - pCreateInfo->layers, dev_data->phys_dev_properties.properties.limits.maxFramebufferLayers, - validation_error_map[VALIDATION_ERROR_094006f4]); + "layers: %u, device max: %u\n", + pCreateInfo->layers, dev_data->phys_dev_properties.properties.limits.maxFramebufferLayers); } // Verify FB dimensions are greater than zero if (pCreateInfo->width <= 0) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_094006ea, "DS", - "vkCreateFramebuffer(): Requested VkFramebufferCreateInfo width must be greater than zero. %s", - validation_error_map[VALIDATION_ERROR_094006ea]); + "vkCreateFramebuffer(): Requested VkFramebufferCreateInfo width must be greater than zero."); } if (pCreateInfo->height <= 0) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_094006ee, "DS", - "vkCreateFramebuffer(): Requested VkFramebufferCreateInfo height must be greater than zero. %s", - validation_error_map[VALIDATION_ERROR_094006ee]); + "vkCreateFramebuffer(): Requested VkFramebufferCreateInfo height must be greater than zero."); } if (pCreateInfo->layers <= 0) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_094006f2, "DS", - "vkCreateFramebuffer(): Requested VkFramebufferCreateInfo layers must be greater than zero. %s", - validation_error_map[VALIDATION_ERROR_094006f2]); + "vkCreateFramebuffer(): Requested VkFramebufferCreateInfo layers must be greater than zero."); } return skip; } @@ -8791,14 +8688,14 @@ static bool ValidateDependencies(const layer_data *dev_data, FRAMEBUFFER_STATE c if (!(pCreateInfo->pAttachments[attachment].flags & VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT)) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT, HandleToUint64(framebuffer->framebuffer), __LINE__, VALIDATION_ERROR_12200682, "DS", - "Attachment %d aliases attachment %d but doesn't set VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT. %s", - attachment, other_attachment, validation_error_map[VALIDATION_ERROR_12200682]); + "Attachment %d aliases attachment %d but doesn't set VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT.", + attachment, other_attachment); } if (!(pCreateInfo->pAttachments[other_attachment].flags & VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT)) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT, HandleToUint64(framebuffer->framebuffer), __LINE__, VALIDATION_ERROR_12200682, "DS", - "Attachment %d aliases attachment %d but doesn't set VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT. %s", - other_attachment, attachment, validation_error_map[VALIDATION_ERROR_12200682]); + "Attachment %d aliases attachment %d but doesn't set VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT.", + other_attachment, attachment); } } } @@ -8926,8 +8823,8 @@ static bool ValidateAttachmentIndex(layer_data *dev_data, uint32_t attachment, u if (attachment >= attachment_count && attachment != VK_ATTACHMENT_UNUSED) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_12200684, "DS", - "CreateRenderPass: %s attachment %d must be less than the total number of attachments %d. %s", type, - attachment, attachment_count, validation_error_map[VALIDATION_ERROR_12200684]); + "CreateRenderPass: %s attachment %d must be less than the total number of attachments %d.", type, + attachment, attachment_count); } return skip; } @@ -8941,8 +8838,7 @@ static bool ValidateRenderpassAttachmentUsage(layer_data *dev_data, const VkRend if (subpass.pipelineBindPoint != VK_PIPELINE_BIND_POINT_GRAPHICS) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_14000698, "DS", - "CreateRenderPass: Pipeline bind point for subpass %d must be VK_PIPELINE_BIND_POINT_GRAPHICS. %s", i, - validation_error_map[VALIDATION_ERROR_14000698]); + "CreateRenderPass: Pipeline bind point for subpass %d must be VK_PIPELINE_BIND_POINT_GRAPHICS.", i); } for (uint32_t j = 0; j < subpass.preserveAttachmentCount; ++j) { @@ -8950,8 +8846,7 @@ static bool ValidateRenderpassAttachmentUsage(layer_data *dev_data, const VkRend if (attachment == VK_ATTACHMENT_UNUSED) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_140006aa, "DS", - "CreateRenderPass: Preserve attachment (%d) must not be VK_ATTACHMENT_UNUSED. %s", j, - validation_error_map[VALIDATION_ERROR_140006aa]); + "CreateRenderPass: Preserve attachment (%d) must not be VK_ATTACHMENT_UNUSED.", j); } else { skip |= ValidateAttachmentIndex(dev_data, attachment, pCreateInfo->attachmentCount, "Preserve"); @@ -8967,8 +8862,8 @@ static bool ValidateRenderpassAttachmentUsage(layer_data *dev_data, const VkRend skip |= log_msg( dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_140006ac, "DS", - "CreateRenderPass: subpass %u pPreserveAttachments[%u] (%u) must not be used elsewhere in the subpass. %s", - i, j, attachment, validation_error_map[VALIDATION_ERROR_140006ac]); + "CreateRenderPass: subpass %u pPreserveAttachments[%u] (%u) must not be used elsewhere in the subpass.", i, + j, attachment); } } } @@ -8991,9 +8886,8 @@ static bool ValidateRenderpassAttachmentUsage(layer_data *dev_data, const VkRend skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_140006a2, "DS", "CreateRenderPass: Subpass %u requests multisample resolve into attachment %u, which must " - "have VK_SAMPLE_COUNT_1_BIT but has %s. %s", - i, attachment, string_VkSampleCountFlagBits(pCreateInfo->pAttachments[attachment].samples), - validation_error_map[VALIDATION_ERROR_140006a2]); + "have VK_SAMPLE_COUNT_1_BIT but has %s.", + i, attachment, string_VkSampleCountFlagBits(pCreateInfo->pAttachments[attachment].samples)); } if (!skip && subpass.pResolveAttachments[j].attachment != VK_ATTACHMENT_UNUSED && @@ -9001,8 +8895,8 @@ static bool ValidateRenderpassAttachmentUsage(layer_data *dev_data, const VkRend skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_1400069e, "DS", "CreateRenderPass: Subpass %u requests multisample resolve from attachment %u which has " - "attachment=VK_ATTACHMENT_UNUSED. %s", - i, attachment, validation_error_map[VALIDATION_ERROR_1400069e]); + "attachment=VK_ATTACHMENT_UNUSED.", + i, attachment); } } attachment = subpass.pColorAttachments[j].attachment; @@ -9015,20 +8909,19 @@ static bool ValidateRenderpassAttachmentUsage(layer_data *dev_data, const VkRend skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_140006a0, "DS", "CreateRenderPass: Subpass %u requests multisample resolve from attachment %u which has " - "VK_SAMPLE_COUNT_1_BIT. %s", - i, attachment, validation_error_map[VALIDATION_ERROR_140006a0]); + "VK_SAMPLE_COUNT_1_BIT.", + i, attachment); } if (subpass_performs_resolve && subpass.pResolveAttachments[j].attachment != VK_ATTACHMENT_UNUSED) { const auto &color_desc = pCreateInfo->pAttachments[attachment]; const auto &resolve_desc = pCreateInfo->pAttachments[subpass.pResolveAttachments[j].attachment]; if (color_desc.format != resolve_desc.format) { - skip |= - log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, - 0, __LINE__, VALIDATION_ERROR_140006a4, "DS", - "CreateRenderPass: Subpass %u pColorAttachments[%u] resolves to an attachment with a " - "different format. color format: %u, resolve format: %u. %s", - i, j, color_desc.format, resolve_desc.format, validation_error_map[VALIDATION_ERROR_140006a4]); + skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, + VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_140006a4, "DS", + "CreateRenderPass: Subpass %u pColorAttachments[%u] resolves to an attachment with a " + "different format. color format: %u, resolve format: %u.", + i, j, color_desc.format, resolve_desc.format); } } @@ -9040,10 +8933,9 @@ static bool ValidateRenderpassAttachmentUsage(layer_data *dev_data, const VkRend skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_14000bc4, "DS", "CreateRenderPass: Subpass %u pColorAttachments[%u] has %s which is larger than " - "depth/stencil attachment %s. %s", + "depth/stencil attachment %s.", i, j, string_VkSampleCountFlagBits(pCreateInfo->pAttachments[attachment].samples), - string_VkSampleCountFlagBits(depth_stencil_sample_count), - validation_error_map[VALIDATION_ERROR_14000bc4]); + string_VkSampleCountFlagBits(depth_stencil_sample_count)); } } } @@ -9066,8 +8958,7 @@ static bool ValidateRenderpassAttachmentUsage(layer_data *dev_data, const VkRend if (!dev_data->extensions.vk_amd_mixed_attachment_samples && sample_count && !IsPowerOfTwo(sample_count)) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_0082b401, "DS", - "CreateRenderPass: Subpass %u attempts to render to attachments with inconsistent sample counts. %s", - i, validation_error_map[VALIDATION_ERROR_0082b401]); + "CreateRenderPass: Subpass %u attempts to render to attachments with inconsistent sample counts.", i); } } return skip; @@ -9148,7 +9039,7 @@ static bool validatePrimaryCommandBuffer(const layer_data *dev_data, const GLOBA if (pCB->createInfo.level != VK_COMMAND_BUFFER_LEVEL_PRIMARY) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(pCB->commandBuffer), __LINE__, error_code, "DS", - "Cannot execute command %s on a secondary command buffer. %s", cmd_name, validation_error_map[error_code]); + "Cannot execute command %s on a secondary command buffer.", cmd_name); } return skip; } @@ -9240,9 +9131,9 @@ VKAPI_ATTR void VKAPI_CALL CmdBeginRenderPass(VkCommandBuffer commandBuffer, con "renderPass 0x%" PRIx64 " that uses VK_ATTACHMENT_LOAD_OP_CLEAR is %u. Note that the pClearValues array is indexed by " "attachment number so even if some pClearValues entries between 0 and %u correspond to attachments " - "that aren't cleared they will be ignored. %s", + "that aren't cleared they will be ignored.", pRenderPassBegin->clearValueCount, clear_op_size, HandleToUint64(render_pass_state->renderPass), - clear_op_size, clear_op_size - 1, validation_error_map[VALIDATION_ERROR_1200070c]); + clear_op_size, clear_op_size - 1); } skip |= VerifyRenderAreaBounds(dev_data, pRenderPassBegin); skip |= VerifyFramebufferAndRenderPassLayouts(dev_data, cb_node, pRenderPassBegin, @@ -9294,8 +9185,7 @@ VKAPI_ATTR void VKAPI_CALL CmdNextSubpass(VkCommandBuffer commandBuffer, VkSubpa if (pCB->activeSubpass == subpassCount - 1) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_1b60071a, "DS", - "vkCmdNextSubpass(): Attempted to advance beyond final subpass. %s", - validation_error_map[VALIDATION_ERROR_1b60071a]); + "vkCmdNextSubpass(): Attempted to advance beyond final subpass."); } } lock.unlock(); @@ -9326,8 +9216,7 @@ VKAPI_ATTR void VKAPI_CALL CmdEndRenderPass(VkCommandBuffer commandBuffer) { if (pCB->activeSubpass != rp_state->createInfo.subpassCount - 1) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(commandBuffer), __LINE__, - VALIDATION_ERROR_1b00071c, "DS", "vkCmdEndRenderPass(): Called before reaching final subpass. %s", - validation_error_map[VALIDATION_ERROR_1b00071c]); + VALIDATION_ERROR_1b00071c, "DS", "vkCmdEndRenderPass(): Called before reaching final subpass."); } for (size_t i = 0; i < rp_state->createInfo.attachmentCount; ++i) { @@ -9384,9 +9273,8 @@ static bool validateFramebuffer(layer_data *dev_data, VkCommandBuffer primaryBuf HandleToUint64(primaryBuffer), __LINE__, VALIDATION_ERROR_1b2000c6, "DS", "vkCmdExecuteCommands() called w/ invalid secondary command buffer 0x%" PRIx64 " which has a framebuffer 0x%" PRIx64 - " that is not the same as the primary command buffer's current active framebuffer 0x%" PRIx64 ". %s", - HandleToUint64(secondaryBuffer), HandleToUint64(secondary_fb), HandleToUint64(primary_fb), - validation_error_map[VALIDATION_ERROR_1b2000c6]); + " that is not the same as the primary command buffer's current active framebuffer 0x%" PRIx64 ".", + HandleToUint64(secondaryBuffer), HandleToUint64(secondary_fb), HandleToUint64(primary_fb)); } auto fb = GetFramebufferState(dev_data, secondary_fb); if (!fb) { @@ -9416,9 +9304,8 @@ static bool validateSecondaryCommandBufferState(layer_data *dev_data, GLOBAL_CB_ HandleToUint64(pCB->commandBuffer), __LINE__, VALIDATION_ERROR_1b2000d0, "DS", "vkCmdExecuteCommands() called w/ invalid Cmd Buffer 0x%" PRIx64 " which has invalid active query pool 0x%" PRIx64 - ". Pipeline statistics is being queried so the command buffer must have all bits set on the queryPool. %s", - HandleToUint64(pCB->commandBuffer), HandleToUint64(queryPoolData->first), - validation_error_map[VALIDATION_ERROR_1b2000d0]); + ". Pipeline statistics is being queried so the command buffer must have all bits set on the queryPool.", + HandleToUint64(pCB->commandBuffer), HandleToUint64(queryPoolData->first)); } } activeTypes.insert(queryPoolData->second.createInfo.queryType); @@ -9463,12 +9350,12 @@ VKAPI_ATTR void VKAPI_CALL CmdExecuteCommands(VkCommandBuffer commandBuffer, uin pSubCB = GetCBNode(dev_data, pCommandBuffers[i]); assert(pSubCB); if (VK_COMMAND_BUFFER_LEVEL_PRIMARY == pSubCB->createInfo.level) { - skip |= log_msg( - dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, - HandleToUint64(pCommandBuffers[i]), __LINE__, VALIDATION_ERROR_1b2000b0, "DS", - "vkCmdExecuteCommands() called w/ Primary Cmd Buffer 0x%" PRIx64 - " in element %u of pCommandBuffers array. All cmd buffers in pCommandBuffers array must be secondary. %s", - HandleToUint64(pCommandBuffers[i]), i, validation_error_map[VALIDATION_ERROR_1b2000b0]); + skip |= + log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, + HandleToUint64(pCommandBuffers[i]), __LINE__, VALIDATION_ERROR_1b2000b0, "DS", + "vkCmdExecuteCommands() called w/ Primary Cmd Buffer 0x%" PRIx64 + " in element %u of pCommandBuffers array. All cmd buffers in pCommandBuffers array must be secondary.", + HandleToUint64(pCommandBuffers[i]), i); } else if (pCB->activeRenderPass) { // Secondary CB w/i RenderPass must have *CONTINUE_BIT set if (pSubCB->beginInfo.pInheritanceInfo != nullptr) { auto secondary_rp_state = GetRenderPassState(dev_data, pSubCB->beginInfo.pInheritanceInfo->renderPass); @@ -9479,9 +9366,8 @@ VKAPI_ATTR void VKAPI_CALL CmdExecuteCommands(VkCommandBuffer commandBuffer, uin "vkCmdExecuteCommands(): Secondary Command Buffer (0x%" PRIx64 ") executed within render pass (0x%" PRIx64 ") must have had vkBeginCommandBuffer() called w/ " - "VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT set. %s", - HandleToUint64(pCommandBuffers[i]), HandleToUint64(pCB->activeRenderPass->renderPass), - validation_error_map[VALIDATION_ERROR_1b2000c0]); + "VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT set.", + HandleToUint64(pCommandBuffers[i]), HandleToUint64(pCB->activeRenderPass->renderPass)); } else { // Make sure render pass is compatible with parent command buffer pass if has continue if (pCB->activeRenderPass->renderPass != secondary_rp_state->renderPass) { @@ -9510,8 +9396,8 @@ VKAPI_ATTR void VKAPI_CALL CmdExecuteCommands(VkCommandBuffer commandBuffer, uin VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(pCB->commandBuffer), __LINE__, VALIDATION_ERROR_1b2000b4, "DS", "Attempt to simultaneously execute command buffer 0x%" PRIx64 - " without VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT set! %s", - HandleToUint64(pCB->commandBuffer), validation_error_map[VALIDATION_ERROR_1b2000b4]); + " without VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT set!", + HandleToUint64(pCB->commandBuffer)); } if (pCB->beginInfo.flags & VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT) { // Warn that non-simultaneous secondary cmd buffer renders primary non-simultaneous @@ -9532,8 +9418,8 @@ VKAPI_ATTR void VKAPI_CALL CmdExecuteCommands(VkCommandBuffer commandBuffer, uin log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(pCommandBuffers[i]), __LINE__, VALIDATION_ERROR_1b2000ca, "DS", "vkCmdExecuteCommands(): Secondary Command Buffer (0x%" PRIx64 - ") cannot be submitted with a query in flight and inherited queries not supported on this device. %s", - HandleToUint64(pCommandBuffers[i]), validation_error_map[VALIDATION_ERROR_1b2000ca]); + ") cannot be submitted with a query in flight and inherited queries not supported on this device.", + HandleToUint64(pCommandBuffers[i])); } // TODO: separate validate from update! This is very tangled. // Propagate layout transitions to the primary cmd buffer @@ -9589,8 +9475,8 @@ VKAPI_ATTR VkResult VKAPI_CALL MapMemory(VkDevice device, VkDeviceMemory mem, Vk VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT) == 0) { skip = log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT, HandleToUint64(mem), __LINE__, VALIDATION_ERROR_31200554, "MEM", - "Mapping Memory without VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT set: mem obj 0x%" PRIx64 ". %s", - HandleToUint64(mem), validation_error_map[VALIDATION_ERROR_31200554]); + "Mapping Memory without VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT set: mem obj 0x%" PRIx64 ".", + HandleToUint64(mem)); } } skip |= ValidateMapMemRange(dev_data, mem, offset, size); @@ -9629,13 +9515,12 @@ static bool validateMemoryIsMapped(layer_data *dev_data, const char *funcName, u if (mem_info) { if (pMemRanges[i].size == VK_WHOLE_SIZE) { if (mem_info->mem_range.offset > pMemRanges[i].offset) { - skip |= - log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT, - HandleToUint64(pMemRanges[i].memory), __LINE__, VALIDATION_ERROR_0c20055c, "MEM", - "%s: Flush/Invalidate offset (" PRINTF_SIZE_T_SPECIFIER - ") is less than Memory Object's offset (" PRINTF_SIZE_T_SPECIFIER "). %s", - funcName, static_cast(pMemRanges[i].offset), - static_cast(mem_info->mem_range.offset), validation_error_map[VALIDATION_ERROR_0c20055c]); + skip |= log_msg( + dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT, + HandleToUint64(pMemRanges[i].memory), __LINE__, VALIDATION_ERROR_0c20055c, "MEM", + "%s: Flush/Invalidate offset (" PRINTF_SIZE_T_SPECIFIER + ") is less than Memory Object's offset (" PRINTF_SIZE_T_SPECIFIER ").", + funcName, static_cast(pMemRanges[i].offset), static_cast(mem_info->mem_range.offset)); } } else { const uint64_t data_end = (mem_info->mem_range.size == VK_WHOLE_SIZE) @@ -9647,10 +9532,9 @@ static bool validateMemoryIsMapped(layer_data *dev_data, const char *funcName, u log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT, HandleToUint64(pMemRanges[i].memory), __LINE__, VALIDATION_ERROR_0c20055a, "MEM", "%s: Flush/Invalidate size or offset (" PRINTF_SIZE_T_SPECIFIER ", " PRINTF_SIZE_T_SPECIFIER - ") exceed the Memory Object's upper-bound (" PRINTF_SIZE_T_SPECIFIER "). %s", + ") exceed the Memory Object's upper-bound (" PRINTF_SIZE_T_SPECIFIER ").", funcName, static_cast(pMemRanges[i].offset + pMemRanges[i].size), - static_cast(pMemRanges[i].offset), static_cast(data_end), - validation_error_map[VALIDATION_ERROR_0c20055a]); + static_cast(pMemRanges[i].offset), static_cast(data_end)); } } } @@ -9714,15 +9598,15 @@ static bool ValidateMappedMemoryRangeDeviceLimits(layer_data *dev_data, const ch skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT, HandleToUint64(mem_ranges->memory), __LINE__, VALIDATION_ERROR_0c20055e, "MEM", "%s: Offset in pMemRanges[%d] is 0x%" PRIxLEAST64 - ", which is not a multiple of VkPhysicalDeviceLimits::nonCoherentAtomSize (0x%" PRIxLEAST64 "). %s", - func_name, i, mem_ranges[i].offset, atom_size, validation_error_map[VALIDATION_ERROR_0c20055e]); + ", which is not a multiple of VkPhysicalDeviceLimits::nonCoherentAtomSize (0x%" PRIxLEAST64 ").", + func_name, i, mem_ranges[i].offset, atom_size); } if ((mem_ranges[i].size != VK_WHOLE_SIZE) && (SafeModulo(mem_ranges[i].size, atom_size) != 0)) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT, HandleToUint64(mem_ranges->memory), __LINE__, VALIDATION_ERROR_0c200adc, "MEM", "%s: Size in pMemRanges[%d] is 0x%" PRIxLEAST64 - ", which is not a multiple of VkPhysicalDeviceLimits::nonCoherentAtomSize (0x%" PRIxLEAST64 "). %s", - func_name, i, mem_ranges[i].size, atom_size, validation_error_map[VALIDATION_ERROR_0c200adc]); + ", which is not a multiple of VkPhysicalDeviceLimits::nonCoherentAtomSize (0x%" PRIxLEAST64 ").", + func_name, i, mem_ranges[i].size, atom_size); } } return skip; @@ -9815,9 +9699,8 @@ static bool PreCallValidateBindImageMemory(layer_data *dev_data, VkImage image, image_handle, __LINE__, VALIDATION_ERROR_17400830, "DS", "%s: memoryOffset is 0x%" PRIxLEAST64 " but must be an integer multiple of the VkMemoryRequirements::alignment value 0x%" PRIxLEAST64 - ", returned from a call to vkGetImageMemoryRequirements with image. %s", - api_name, memoryOffset, image_state->requirements.alignment, - validation_error_map[VALIDATION_ERROR_17400830]); + ", returned from a call to vkGetImageMemoryRequirements with image.", + api_name, memoryOffset, image_state->requirements.alignment); } if (mem_info) { @@ -9827,27 +9710,24 @@ static bool PreCallValidateBindImageMemory(layer_data *dev_data, VkImage image, image_handle, __LINE__, VALIDATION_ERROR_17400832, "DS", "%s: memory size minus memoryOffset is 0x%" PRIxLEAST64 " but must be at least as large as VkMemoryRequirements::size value 0x%" PRIxLEAST64 - ", returned from a call to vkGetImageMemoryRequirements with image. %s", - api_name, mem_info->alloc_info.allocationSize - memoryOffset, image_state->requirements.size, - validation_error_map[VALIDATION_ERROR_17400832]); + ", returned from a call to vkGetImageMemoryRequirements with image.", + api_name, mem_info->alloc_info.allocationSize - memoryOffset, image_state->requirements.size); } // Validate dedicated allocation if (mem_info->is_dedicated && ((mem_info->dedicated_image != image) || (memoryOffset != 0))) { // TODO: Add vkBindImageMemory2KHR error message when added to spec. auto validation_error = VALIDATION_ERROR_UNDEFINED; - const char *validation_error_msg = ""; if (strcmp(api_name, "vkBindImageMemory()") == 0) { validation_error = VALIDATION_ERROR_17400bca; - validation_error_msg = validation_error_map[validation_error]; } - skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT, - image_handle, __LINE__, validation_error, "DS", - "%s: for dedicated memory allocation 0x%" PRIxLEAST64 - ", VkMemoryDedicatedAllocateInfoKHR::image 0x%" PRIXLEAST64 - " must be equal to image 0x%" PRIxLEAST64 " and memoryOffset 0x%" PRIxLEAST64 " must be zero. %s", - api_name, HandleToUint64(mem), HandleToUint64(mem_info->dedicated_image), image_handle, - memoryOffset, validation_error_msg); + skip |= + log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT, + image_handle, __LINE__, validation_error, "DS", + "%s: for dedicated memory allocation 0x%" PRIxLEAST64 + ", VkMemoryDedicatedAllocateInfoKHR::image 0x%" PRIXLEAST64 " must be equal to image 0x%" PRIxLEAST64 + " and memoryOffset 0x%" PRIxLEAST64 " must be zero.", + api_name, HandleToUint64(mem), HandleToUint64(mem_info->dedicated_image), image_handle, memoryOffset); } } } @@ -10439,8 +10319,8 @@ static bool PreCallValidateCreateSwapchainKHR(layer_data *dev_data, const char * HandleToUint64(dev_data->device), __LINE__, VALIDATION_ERROR_146009ec, "DS", "%s: pCreateInfo->surface is not known at this time to be supported for presentation by this device. The " "vkGetPhysicalDeviceSurfaceSupportKHR() must be called beforehand, and it must return VK_TRUE support with " - "this surface for at least one queue family of this device. %s", - func_name, validation_error_map[VALIDATION_ERROR_146009ec])) + "this surface for at least one queue family of this device.", + func_name)) return true; } } @@ -10461,8 +10341,8 @@ static bool PreCallValidateCreateSwapchainKHR(layer_data *dev_data, const char * 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])) + "%s: pCreateInfo->imageExtent = (%d, %d) which is illegal.", func_name, pCreateInfo->imageExtent.width, + pCreateInfo->imageExtent.height)) return true; } @@ -10479,9 +10359,8 @@ static bool PreCallValidateCreateSwapchainKHR(layer_data *dev_data, const char * 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_146009ee, "DS", "%s called with minImageCount = %d, which is outside the bounds returned by " - "vkGetPhysicalDeviceSurfaceCapabilitiesKHR() (i.e. minImageCount = %d, maxImageCount = %d). %s", - func_name, pCreateInfo->minImageCount, capabilities.minImageCount, capabilities.maxImageCount, - validation_error_map[VALIDATION_ERROR_146009ee])) + "vkGetPhysicalDeviceSurfaceCapabilitiesKHR() (i.e. minImageCount = %d, maxImageCount = %d).", + func_name, pCreateInfo->minImageCount, capabilities.minImageCount, capabilities.maxImageCount)) return true; } @@ -10489,9 +10368,8 @@ static bool PreCallValidateCreateSwapchainKHR(layer_data *dev_data, const char * 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_146009f0, "DS", "%s called with minImageCount = %d, which is outside the bounds returned by " - "vkGetPhysicalDeviceSurfaceCapabilitiesKHR() (i.e. minImageCount = %d, maxImageCount = %d). %s", - func_name, pCreateInfo->minImageCount, capabilities.minImageCount, capabilities.maxImageCount, - validation_error_map[VALIDATION_ERROR_146009f0])) + "vkGetPhysicalDeviceSurfaceCapabilitiesKHR() (i.e. minImageCount = %d, maxImageCount = %d).", + func_name, pCreateInfo->minImageCount, capabilities.minImageCount, capabilities.maxImageCount)) return true; } @@ -10504,11 +10382,11 @@ static bool PreCallValidateCreateSwapchainKHR(layer_data *dev_data, const char * HandleToUint64(dev_data->device), __LINE__, VALIDATION_ERROR_146009f4, "DS", "%s called with imageExtent = (%d,%d), which is outside the bounds returned by " "vkGetPhysicalDeviceSurfaceCapabilitiesKHR(): currentExtent = (%d,%d), minImageExtent = (%d,%d), " - "maxImageExtent = (%d,%d). %s", + "maxImageExtent = (%d,%d).", func_name, pCreateInfo->imageExtent.width, pCreateInfo->imageExtent.height, capabilities.currentExtent.width, capabilities.currentExtent.height, capabilities.minImageExtent.width, - capabilities.minImageExtent.height, capabilities.maxImageExtent.width, capabilities.maxImageExtent.height, - validation_error_map[VALIDATION_ERROR_146009f4])) + capabilities.minImageExtent.height, capabilities.maxImageExtent.width, + capabilities.maxImageExtent.height)) return true; } // pCreateInfo->preTransform should have exactly one bit set, and that bit must also be set in @@ -10533,8 +10411,7 @@ static bool PreCallValidateCreateSwapchainKHR(layer_data *dev_data, const char * } // Log the message that we've built up: 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_146009fe, "DS", "%s. %s", errorString.c_str(), - validation_error_map[VALIDATION_ERROR_146009fe])) + HandleToUint64(dev_data->device), __LINE__, VALIDATION_ERROR_146009fe, "DS", "%s.", errorString.c_str())) return true; } @@ -10560,26 +10437,23 @@ static bool PreCallValidateCreateSwapchainKHR(layer_data *dev_data, const char * } // Log the message that we've built up: 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_14600a00, "DS", "%s. %s", errorString.c_str(), - validation_error_map[VALIDATION_ERROR_14600a00])) + HandleToUint64(dev_data->device), __LINE__, VALIDATION_ERROR_14600a00, "DS", "%s.", errorString.c_str())) return true; } // Validate pCreateInfo->imageArrayLayers against VkSurfaceCapabilitiesKHR::maxImageArrayLayers: if (pCreateInfo->imageArrayLayers > capabilities.maxImageArrayLayers) { 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_146009f6, "DS", - "%s called with a non-supported imageArrayLayers (i.e. %d). Maximum value is %d. %s", func_name, - pCreateInfo->imageArrayLayers, capabilities.maxImageArrayLayers, - validation_error_map[VALIDATION_ERROR_146009f6])) + "%s called with a non-supported imageArrayLayers (i.e. %d). Maximum value is %d.", func_name, + pCreateInfo->imageArrayLayers, capabilities.maxImageArrayLayers)) return true; } // Validate pCreateInfo->imageUsage against VkSurfaceCapabilitiesKHR::supportedUsageFlags: if (pCreateInfo->imageUsage != (pCreateInfo->imageUsage & capabilities.supportedUsageFlags)) { 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_146009f8, "DS", - "%s called with a non-supported pCreateInfo->imageUsage (i.e. 0x%08x). Supported flag bits are 0x%08x. %s", - func_name, pCreateInfo->imageUsage, capabilities.supportedUsageFlags, - validation_error_map[VALIDATION_ERROR_146009f8])) + "%s called with a non-supported pCreateInfo->imageUsage (i.e. 0x%08x). Supported flag bits are 0x%08x.", + func_name, pCreateInfo->imageUsage, capabilities.supportedUsageFlags)) return true; } } @@ -10613,15 +10487,15 @@ static bool PreCallValidateCreateSwapchainKHR(layer_data *dev_data, const char * if (!foundFormat) { 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_146009f2, "DS", - "%s called with a non-supported pCreateInfo->imageFormat (i.e. %d). %s", func_name, - pCreateInfo->imageFormat, validation_error_map[VALIDATION_ERROR_146009f2])) + "%s called with a non-supported pCreateInfo->imageFormat (i.e. %d).", func_name, + pCreateInfo->imageFormat)) return true; } if (!foundColorSpace) { 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_146009f2, "DS", - "%s called with a non-supported pCreateInfo->imageColorSpace (i.e. %d). %s", func_name, - pCreateInfo->imageColorSpace, validation_error_map[VALIDATION_ERROR_146009f2])) + "%s called with a non-supported pCreateInfo->imageColorSpace (i.e. %d).", func_name, + pCreateInfo->imageColorSpace)) return true; } } @@ -10643,8 +10517,8 @@ static bool PreCallValidateCreateSwapchainKHR(layer_data *dev_data, const char * if (!foundMatch) { 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_14600a02, "DS", - "%s called with a non-supported presentMode (i.e. %s). %s", func_name, - string_VkPresentModeKHR(pCreateInfo->presentMode), validation_error_map[VALIDATION_ERROR_14600a02])) + "%s called with a non-supported presentMode (i.e. %s).", func_name, + string_VkPresentModeKHR(pCreateInfo->presentMode))) return true; } } @@ -10662,9 +10536,8 @@ static bool PreCallValidateCreateSwapchainKHR(layer_data *dev_data, const char * 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_14600ace, "DS", "%s called with presentMode %s, but minImageCount value is %d. For shared presentable image, minImageCount " - "must be 1. %s", - func_name, string_VkPresentModeKHR(pCreateInfo->presentMode), pCreateInfo->minImageCount, - validation_error_map[VALIDATION_ERROR_14600ace])) + "must be 1.", + func_name, string_VkPresentModeKHR(pCreateInfo->presentMode), pCreateInfo->minImageCount)) return true; } } @@ -10890,8 +10763,8 @@ VKAPI_ATTR VkResult VKAPI_CALL QueuePresentKHR(VkQueue queue, const VkPresentInf log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT, HandleToUint64(queue), __LINE__, VALIDATION_ERROR_11200a20, "DS", "Images passed to present must be in layout VK_IMAGE_LAYOUT_PRESENT_SRC_KHR or " - "VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR but is in %s. %s", - string_VkImageLayout(layout), validation_error_map[VALIDATION_ERROR_11200a20]); + "VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR but is in %s.", + string_VkImageLayout(layout)); } } } @@ -10913,8 +10786,7 @@ VKAPI_ATTR VkResult VKAPI_CALL QueuePresentKHR(VkQueue queue, const VkPresentInf skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT, HandleToUint64(pPresentInfo->pSwapchains[i]), __LINE__, VALIDATION_ERROR_31800a18, "DS", - "vkQueuePresentKHR: Presenting image on queue that cannot present to this surface. %s", - validation_error_map[VALIDATION_ERROR_31800a18]); + "vkQueuePresentKHR: Presenting image on queue that cannot present to this surface."); } } } @@ -10935,9 +10807,8 @@ VKAPI_ATTR VkResult VKAPI_CALL QueuePresentKHR(VkQueue queue, const VkPresentInf __LINE__, VALIDATION_ERROR_11e009da, "DS", "vkQueuePresentKHR(): For VkPresentRegionKHR down pNext chain, " "pRegion[%i].pRectangles[%i], the sum of offset.x (%i) and extent.width (%i) is greater " - "than the corresponding swapchain's imageExtent.width (%i). %s", - i, j, rect.offset.x, rect.extent.width, swapchain_data->createInfo.imageExtent.width, - validation_error_map[VALIDATION_ERROR_11e009da]); + "than the corresponding swapchain's imageExtent.width (%i).", + i, j, rect.offset.x, rect.extent.width, swapchain_data->createInfo.imageExtent.width); } if ((rect.offset.y + rect.extent.height) > swapchain_data->createInfo.imageExtent.height) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, @@ -10945,18 +10816,16 @@ VKAPI_ATTR VkResult VKAPI_CALL QueuePresentKHR(VkQueue queue, const VkPresentInf __LINE__, VALIDATION_ERROR_11e009da, "DS", "vkQueuePresentKHR(): For VkPresentRegionKHR down pNext chain, " "pRegion[%i].pRectangles[%i], the sum of offset.y (%i) and extent.height (%i) is greater " - "than the corresponding swapchain's imageExtent.height (%i). %s", - i, j, rect.offset.y, rect.extent.height, swapchain_data->createInfo.imageExtent.height, - validation_error_map[VALIDATION_ERROR_11e009da]); + "than the corresponding swapchain's imageExtent.height (%i).", + i, j, rect.offset.y, rect.extent.height, swapchain_data->createInfo.imageExtent.height); } if (rect.layer > swapchain_data->createInfo.imageArrayLayers) { skip |= log_msg( dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT, HandleToUint64(pPresentInfo->pSwapchains[i]), __LINE__, VALIDATION_ERROR_11e009dc, "DS", "vkQueuePresentKHR(): For VkPresentRegionKHR down pNext chain, pRegion[%i].pRectangles[%i], the layer " - "(%i) is greater than the corresponding swapchain's imageArrayLayers (%i). %s", - i, j, rect.layer, swapchain_data->createInfo.imageArrayLayers, - validation_error_map[VALIDATION_ERROR_11e009dc]); + "(%i) is greater than the corresponding swapchain's imageArrayLayers (%i).", + i, j, rect.layer, swapchain_data->createInfo.imageArrayLayers); } } } @@ -11102,8 +10971,7 @@ static bool PreCallValidateAcquireNextImageKHR(layer_data *dev_data, VkDevice de if (pSemaphore && pSemaphore->scope == kSyncScopeInternal && pSemaphore->signaled) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT, HandleToUint64(semaphore), __LINE__, VALIDATION_ERROR_16400a0c, "DS", - "vkAcquireNextImageKHR: Semaphore must not be currently signaled or in a wait state. %s", - validation_error_map[VALIDATION_ERROR_16400a0c]); + "vkAcquireNextImageKHR: Semaphore must not be currently signaled or in a wait state."); } auto pFence = GetFenceNode(dev_data, fence); @@ -11408,8 +11276,7 @@ VKAPI_ATTR void VKAPI_CALL DestroySurfaceKHR(VkInstance instance, VkSurfaceKHR s if ((surface_state) && (surface_state->swapchain)) { skip |= log_msg(instance_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT, HandleToUint64(instance), __LINE__, VALIDATION_ERROR_26c009e4, "DS", - "vkDestroySurfaceKHR() called before its associated VkSwapchainKHR was destroyed. %s", - validation_error_map[VALIDATION_ERROR_26c009e4]); + "vkDestroySurfaceKHR() called before its associated VkSwapchainKHR was destroyed."); } instance_data->surface_map.erase(surface); lock.unlock(); @@ -12263,8 +12130,8 @@ static bool ValidateGetPhysicalDeviceDisplayPlanePropertiesKHRQuery(instance_lay instance_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT, HandleToUint64(physicalDevice), __LINE__, VALIDATION_ERROR_29c009c2, "DL", "%s(): planeIndex must be in the range [0, %d] that was returned by vkGetPhysicalDeviceDisplayPlanePropertiesKHR. " - "Do you have the plane index hardcoded? %s", - api_name, physical_device_state->display_plane_property_count - 1, validation_error_map[VALIDATION_ERROR_29c009c2]); + "Do you have the plane index hardcoded?", + api_name, physical_device_state->display_plane_property_count - 1); } } return skip; -- cgit v1.2.3