aboutsummaryrefslogtreecommitdiff
path: root/layers
diff options
context:
space:
mode:
authorJeremy Hayes <jeremy@lunarg.com>2016-12-12 11:01:28 -0700
committerJeremy Hayes <jeremy-lunarg@users.noreply.github.com>2017-01-09 16:36:44 -0700
commit00d2c2dd004bff400641e40ce72df3deb08af78b (patch)
treec55d81a79d92affede6a0bcdd3e94405bf770594 /layers
parent62d1cf764989653de49f779901404b4752e26188 (diff)
downloadusermoji-00d2c2dd004bff400641e40ce72df3deb08af78b.tar.xz
layers: Update valid usage for Jira VL-59.
Change-Id: I9aba0480aad5b565eb59f642def7a11e46822566
Diffstat (limited to 'layers')
-rw-r--r--layers/core_validation.cpp83
-rw-r--r--layers/vk_validation_error_database.txt18
2 files changed, 55 insertions, 46 deletions
diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp
index 77dd6a45..c92171b9 100644
--- a/layers/core_validation.cpp
+++ b/layers/core_validation.cpp
@@ -1,7 +1,7 @@
-/* Copyright (c) 2015-2016 The Khronos Group Inc.
- * Copyright (c) 2015-2016 Valve Corporation
- * Copyright (c) 2015-2016 LunarG, Inc.
- * Copyright (C) 2015-2016 Google Inc.
+/* Copyright (c) 2015-2017 The Khronos Group Inc.
+ * Copyright (c) 2015-2017 Valve Corporation
+ * Copyright (c) 2015-2017 LunarG, Inc.
+ * Copyright (C) 2015-2017 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -763,6 +763,7 @@ bool ValidateMemoryIsBoundToBuffer(const layer_data *dev_data, const BUFFER_STAT
// IF a previous binding existed, output validation error
// Otherwise, add reference from objectInfo to memoryInfo
// Add reference off of objInfo
+// TODO: We may need to refactor or pass in multiple valid usage statements to handle multiple valid usage conditions.
static bool SetMemBinding(layer_data *dev_data, VkDeviceMemory mem, uint64_t handle, VkDebugReportObjectTypeEXT type,
const char *apiName) {
bool skip_call = false;
@@ -781,6 +782,7 @@ static bool SetMemBinding(layer_data *dev_data, VkDeviceMemory mem, uint64_t han
if (mem_info) {
DEVICE_MEM_INFO *prev_binding = getMemObjInfo(dev_data, mem_binding->binding.mem);
if (prev_binding) {
+ // TODO: VALIDATION_ERROR_00791 and VALIDATION_ERROR_00803
skip_call |=
log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT,
reinterpret_cast<uint64_t &>(mem), __LINE__, MEMTRACK_REBIND_OBJECT, "MEM",
@@ -1735,6 +1737,7 @@ static bool validate_vi_consistency(debug_report_data *report_data, VkPipelineVe
auto desc = &vi->pVertexBindingDescriptions[i];
auto &binding = bindings[desc->binding];
if (binding) {
+ // TODO: VALIDATION_ERROR_02105 perhaps?
if (log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VkDebugReportObjectTypeEXT(0), 0,
__LINE__, SHADER_CHECKER_INCONSISTENT_VI, "SC",
"Duplicate vertex input binding descriptions for binding %d", desc->binding)) {
@@ -2098,11 +2101,12 @@ static bool hasDrawCmd(GLOBAL_CB_NODE *pCB) {
// Check object status for selected flag state
static bool validate_status(layer_data *my_data, GLOBAL_CB_NODE *pNode, CBStatusFlags status_mask, VkFlags msg_flags,
- DRAW_STATE_ERROR error_code, const char *fail_msg) {
+ 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(my_data->report_data, msg_flags, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT,
- reinterpret_cast<const uint64_t &>(pNode->commandBuffer), __LINE__, error_code, "DS",
- "command buffer object 0x%p: %s", pNode->commandBuffer, fail_msg);
+ reinterpret_cast<const uint64_t &>(pNode->commandBuffer), __LINE__, msg_code, "DS",
+ "command buffer object 0x%p: %s. %s.", pNode->commandBuffer, fail_msg, message);
}
return false;
}
@@ -2160,42 +2164,43 @@ static bool isDynamic(const PIPELINE_STATE *pPipeline, const VkDynamicState stat
}
// Validate state stored as flags at time of draw call
-static bool validate_draw_state_flags(layer_data *dev_data, GLOBAL_CB_NODE *pCB, const PIPELINE_STATE *pPipe, bool indexed) {
+static bool validate_draw_state_flags(layer_data *dev_data, GLOBAL_CB_NODE *pCB, const PIPELINE_STATE *pPipe, bool indexed,
+ UNIQUE_VALIDATION_ERROR_CODE const msg_code) {
bool result = false;
if (pPipe->graphicsPipelineCI.pInputAssemblyState &&
((pPipe->graphicsPipelineCI.pInputAssemblyState->topology == VK_PRIMITIVE_TOPOLOGY_LINE_LIST) ||
(pPipe->graphicsPipelineCI.pInputAssemblyState->topology == VK_PRIMITIVE_TOPOLOGY_LINE_STRIP))) {
result |= validate_status(dev_data, pCB, CBSTATUS_LINE_WIDTH_SET, VK_DEBUG_REPORT_ERROR_BIT_EXT,
- DRAWSTATE_LINE_WIDTH_NOT_BOUND, "Dynamic line width state not set for this command buffer");
+ "Dynamic line width state not set for this command buffer", msg_code);
}
if (pPipe->graphicsPipelineCI.pRasterizationState &&
(pPipe->graphicsPipelineCI.pRasterizationState->depthBiasEnable == VK_TRUE)) {
result |= validate_status(dev_data, pCB, CBSTATUS_DEPTH_BIAS_SET, VK_DEBUG_REPORT_ERROR_BIT_EXT,
- DRAWSTATE_DEPTH_BIAS_NOT_BOUND, "Dynamic depth bias state not set for this command buffer");
+ "Dynamic depth bias state not set for this command buffer", msg_code);
}
if (pPipe->blendConstantsEnabled) {
result |= validate_status(dev_data, pCB, CBSTATUS_BLEND_CONSTANTS_SET, VK_DEBUG_REPORT_ERROR_BIT_EXT,
- DRAWSTATE_BLEND_NOT_BOUND, "Dynamic blend constants state not set for this command buffer");
+ "Dynamic blend constants state not set for this command buffer", msg_code);
}
if (pPipe->graphicsPipelineCI.pDepthStencilState &&
(pPipe->graphicsPipelineCI.pDepthStencilState->depthBoundsTestEnable == VK_TRUE)) {
result |= validate_status(dev_data, pCB, CBSTATUS_DEPTH_BOUNDS_SET, VK_DEBUG_REPORT_ERROR_BIT_EXT,
- DRAWSTATE_DEPTH_BOUNDS_NOT_BOUND, "Dynamic depth bounds state not set for this command buffer");
+ "Dynamic depth bounds state not set for this command buffer", msg_code);
}
if (pPipe->graphicsPipelineCI.pDepthStencilState &&
(pPipe->graphicsPipelineCI.pDepthStencilState->stencilTestEnable == VK_TRUE)) {
result |= validate_status(dev_data, pCB, CBSTATUS_STENCIL_READ_MASK_SET, VK_DEBUG_REPORT_ERROR_BIT_EXT,
- DRAWSTATE_STENCIL_NOT_BOUND, "Dynamic stencil read mask state not set for this command buffer");
+ "Dynamic stencil read mask state not set for this command buffer", msg_code);
result |= validate_status(dev_data, pCB, CBSTATUS_STENCIL_WRITE_MASK_SET, VK_DEBUG_REPORT_ERROR_BIT_EXT,
- DRAWSTATE_STENCIL_NOT_BOUND, "Dynamic stencil write mask state not set for this command buffer");
+ "Dynamic stencil write mask state not set for this command buffer", msg_code);
result |= validate_status(dev_data, pCB, CBSTATUS_STENCIL_REFERENCE_SET, VK_DEBUG_REPORT_ERROR_BIT_EXT,
- DRAWSTATE_STENCIL_NOT_BOUND, "Dynamic stencil reference state not set for this command buffer");
+ "Dynamic stencil reference state not set for this command buffer", msg_code);
}
if (indexed) {
result |= validate_status(dev_data, pCB, CBSTATUS_INDEX_BUFFER_BOUND, VK_DEBUG_REPORT_ERROR_BIT_EXT,
- DRAWSTATE_INDEX_BUFFER_NOT_BOUND,
- "Index buffer object not bound to this command buffer when Indexed Draw attempted");
+ "Index buffer object not bound to this command buffer when Indexed Draw attempted", msg_code);
}
+
return result;
}
@@ -2327,14 +2332,16 @@ static bool validate_specialization_offsets(debug_report_data *report_data, VkPi
if (spec) {
for (auto i = 0u; i < spec->mapEntryCount; i++) {
+ // TODO: This is a good place for VALIDATION_ERROR_00589.
if (spec->pMapEntries[i].offset + spec->pMapEntries[i].size > spec->dataSize) {
- if (log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
- 0, __LINE__, SHADER_CHECKER_BAD_SPECIALIZATION, "SC",
+ if (log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT, 0, __LINE__,
+ VALIDATION_ERROR_00590, "SC",
"Specialization entry %u (for constant id %u) references memory outside provided "
"specialization data (bytes %u.." PRINTF_SIZE_T_SPECIFIER "; " PRINTF_SIZE_T_SPECIFIER
- " bytes provided)",
+ " bytes provided). %s.",
i, spec->pMapEntries[i].constantID, spec->pMapEntries[i].offset,
- spec->pMapEntries[i].offset + spec->pMapEntries[i].size - 1, spec->dataSize)) {
+ spec->pMapEntries[i].offset + spec->pMapEntries[i].size - 1, spec->dataSize,
+ validation_error_map[VALIDATION_ERROR_00590])) {
pass = false;
}
@@ -2628,10 +2635,9 @@ validate_pipeline_shader_stage(debug_report_data *report_data, VkPipelineShaderS
// Find the entrypoint
auto entrypoint = *out_entrypoint = find_entrypoint(module, pStage->pName, pStage->stage);
if (entrypoint == module->end()) {
- if (log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VkDebugReportObjectTypeEXT(0), 0,
- __LINE__, SHADER_CHECKER_MISSING_ENTRYPOINT, "SC",
- "No entrypoint found named `%s` for stage %s", pStage->pName,
- string_VkShaderStageFlagBits(pStage->stage))) {
+ if (log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VkDebugReportObjectTypeEXT(0), 0, __LINE__, VALIDATION_ERROR_00510,
+ "SC", "No entrypoint found named `%s` for stage %s. %s.", pStage->pName,
+ string_VkShaderStageFlagBits(pStage->stage), validation_error_map[VALIDATION_ERROR_00510])) {
return false; // no point continuing beyond here, any analysis is just going to be garbage.
}
}
@@ -2993,7 +2999,8 @@ static bool ValidatePipelineDrawtimeState(layer_data const *my_data, LAST_BOUND_
// Validate overall state at the time of a draw call
static bool ValidateDrawState(layer_data *my_data, GLOBAL_CB_NODE *cb_node, const bool indexed,
- const VkPipelineBindPoint bind_point, const char *function) {
+ const VkPipelineBindPoint bind_point, const char *function,
+ UNIQUE_VALIDATION_ERROR_CODE const msg_code) {
bool result = false;
auto const &state = cb_node->lastBound[bind_point];
PIPELINE_STATE *pPipe = state.pipeline_state;
@@ -3008,7 +3015,7 @@ static bool ValidateDrawState(layer_data *my_data, GLOBAL_CB_NODE *cb_node, cons
}
// First check flag states
if (VK_PIPELINE_BIND_POINT_GRAPHICS == bind_point)
- result = validate_draw_state_flags(my_data, cb_node, pPipe, indexed);
+ result = validate_draw_state_flags(my_data, cb_node, pPipe, indexed, msg_code);
// Now complete other state checks
if (VK_NULL_HANDLE != state.pipeline_layout.layout) {
@@ -7956,12 +7963,12 @@ static void MarkStoreImagesAndBuffersAsWritten(layer_data *dev_data, GLOBAL_CB_N
// Generic function to handle validation for all CmdDraw* type functions
static bool ValidateCmdDrawType(layer_data *dev_data, VkCommandBuffer cmd_buffer, bool indexed, VkPipelineBindPoint bind_point,
CMD_TYPE cmd_type, GLOBAL_CB_NODE **cb_state, const char *caller,
- UNIQUE_VALIDATION_ERROR_CODE msg_code) {
+ UNIQUE_VALIDATION_ERROR_CODE msg_code, UNIQUE_VALIDATION_ERROR_CODE const dynamic_state_msg_code) {
bool skip = false;
*cb_state = getCBNode(dev_data, cmd_buffer);
if (*cb_state) {
skip |= ValidateCmd(dev_data, *cb_state, cmd_type, caller);
- skip |= ValidateDrawState(dev_data, *cb_state, indexed, bind_point, caller);
+ skip |= ValidateDrawState(dev_data, *cb_state, indexed, bind_point, caller, dynamic_state_msg_code);
skip |= (VK_PIPELINE_BIND_POINT_GRAPHICS == bind_point) ? outsideRenderPass(dev_data, *cb_state, caller, msg_code)
: insideRenderPass(dev_data, *cb_state, caller, msg_code);
}
@@ -7986,7 +7993,8 @@ static void UpdateStateCmdDrawType(layer_data *dev_data, GLOBAL_CB_NODE *cb_stat
static bool PreCallValidateCmdDraw(layer_data *dev_data, VkCommandBuffer cmd_buffer, bool indexed, VkPipelineBindPoint bind_point,
GLOBAL_CB_NODE **cb_state, const char *caller) {
- return ValidateCmdDrawType(dev_data, cmd_buffer, indexed, bind_point, CMD_DRAW, cb_state, caller, VALIDATION_ERROR_01365);
+ return ValidateCmdDrawType(dev_data, cmd_buffer, indexed, bind_point, CMD_DRAW, cb_state, caller, VALIDATION_ERROR_01365,
+ VALIDATION_ERROR_02203);
}
static void PostCallRecordCmdDraw(layer_data *dev_data, GLOBAL_CB_NODE *cb_state, VkPipelineBindPoint bind_point) {
@@ -8010,8 +8018,8 @@ VKAPI_ATTR void VKAPI_CALL CmdDraw(VkCommandBuffer commandBuffer, uint32_t verte
static bool PreCallValidateCmdDrawIndexed(layer_data *dev_data, VkCommandBuffer cmd_buffer, bool indexed,
VkPipelineBindPoint bind_point, GLOBAL_CB_NODE **cb_state, const char *caller) {
- return ValidateCmdDrawType(dev_data, cmd_buffer, indexed, bind_point, CMD_DRAWINDEXED, cb_state, caller,
- VALIDATION_ERROR_01372);
+ return ValidateCmdDrawType(dev_data, cmd_buffer, indexed, bind_point, CMD_DRAWINDEXED, cb_state, caller, VALIDATION_ERROR_01372,
+ VALIDATION_ERROR_02216);
}
static void PostCallRecordCmdDrawIndexed(layer_data *dev_data, GLOBAL_CB_NODE *cb_state, VkPipelineBindPoint bind_point) {
@@ -8038,8 +8046,8 @@ VKAPI_ATTR void VKAPI_CALL CmdDrawIndexed(VkCommandBuffer commandBuffer, uint32_
static bool PreCallValidateCmdDrawIndirect(layer_data *dev_data, VkCommandBuffer cmd_buffer, VkBuffer buffer, bool indexed,
VkPipelineBindPoint bind_point, GLOBAL_CB_NODE **cb_state, BUFFER_STATE **buffer_state,
const char *caller) {
- bool skip =
- ValidateCmdDrawType(dev_data, cmd_buffer, indexed, bind_point, CMD_DRAWINDIRECT, cb_state, caller, VALIDATION_ERROR_01381);
+ bool skip = ValidateCmdDrawType(dev_data, cmd_buffer, indexed, bind_point, CMD_DRAWINDIRECT, cb_state, caller,
+ VALIDATION_ERROR_01381, VALIDATION_ERROR_02234);
*buffer_state = getBufferState(dev_data, buffer);
skip |= ValidateMemoryIsBoundToBuffer(dev_data, *buffer_state, caller, VALIDATION_ERROR_02544);
return skip;
@@ -8072,7 +8080,7 @@ static bool PreCallValidateCmdDrawIndexedIndirect(layer_data *dev_data, VkComman
VkPipelineBindPoint bind_point, GLOBAL_CB_NODE **cb_state,
BUFFER_STATE **buffer_state, const char *caller) {
bool skip = ValidateCmdDrawType(dev_data, cmd_buffer, indexed, bind_point, CMD_DRAWINDEXEDINDIRECT, cb_state, caller,
- VALIDATION_ERROR_01393);
+ VALIDATION_ERROR_01393, VALIDATION_ERROR_02272);
*buffer_state = getBufferState(dev_data, buffer);
skip |= ValidateMemoryIsBoundToBuffer(dev_data, *buffer_state, caller, VALIDATION_ERROR_02545);
return skip;
@@ -8103,7 +8111,8 @@ CmdDrawIndexedIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceS
static bool PreCallValidateCmdDispatch(layer_data *dev_data, VkCommandBuffer cmd_buffer, bool indexed,
VkPipelineBindPoint bind_point, GLOBAL_CB_NODE **cb_state, const char *caller) {
- return ValidateCmdDrawType(dev_data, cmd_buffer, indexed, bind_point, CMD_DISPATCH, cb_state, caller, VALIDATION_ERROR_01562);
+ return ValidateCmdDrawType(dev_data, cmd_buffer, indexed, bind_point, CMD_DISPATCH, cb_state, caller, VALIDATION_ERROR_01562,
+ VALIDATION_ERROR_UNDEFINED);
}
static void PostCallRecordCmdDispatch(layer_data *dev_data, GLOBAL_CB_NODE *cb_state, VkPipelineBindPoint bind_point) {
@@ -8129,7 +8138,7 @@ static bool PreCallValidateCmdDispatchIndirect(layer_data *dev_data, VkCommandBu
VkPipelineBindPoint bind_point, GLOBAL_CB_NODE **cb_state,
BUFFER_STATE **buffer_state, const char *caller) {
bool skip = ValidateCmdDrawType(dev_data, cmd_buffer, indexed, bind_point, CMD_DISPATCHINDIRECT, cb_state, caller,
- VALIDATION_ERROR_01569);
+ VALIDATION_ERROR_01569, VALIDATION_ERROR_UNDEFINED);
*buffer_state = getBufferState(dev_data, buffer);
skip |= ValidateMemoryIsBoundToBuffer(dev_data, *buffer_state, caller, VALIDATION_ERROR_02547);
return skip;
diff --git a/layers/vk_validation_error_database.txt b/layers/vk_validation_error_database.txt
index 0338c577..9a036531 100644
--- a/layers/vk_validation_error_database.txt
+++ b/layers/vk_validation_error_database.txt
@@ -499,7 +499,7 @@ VALIDATION_ERROR_00506~^~N~^~Unknown~^~vkCreateComputePipelines~^~For more infor
VALIDATION_ERROR_00507~^~U~^~Unknown~^~vkCreateComputePipelines~^~For more information refer to Vulkan Spec Section '9.1. Compute Pipelines' which states 'If the geometry shaders feature is not enabled, stage must not be VK_SHADER_STAGE_GEOMETRY_BIT' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkShaderStageFlagBits)~^~
VALIDATION_ERROR_00508~^~U~^~Unknown~^~vkCreateComputePipelines~^~For more information refer to Vulkan Spec Section '9.1. Compute Pipelines' which states 'If the tessellation shaders feature is not enabled, stage must not be VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT or VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkShaderStageFlagBits)~^~
VALIDATION_ERROR_00509~^~N~^~Unknown~^~vkCreateComputePipelines~^~For more information refer to Vulkan Spec Section '9.1. Compute Pipelines' which states 'stage must not be VK_SHADER_STAGE_ALL_GRAPHICS, or VK_SHADER_STAGE_ALL' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkShaderStageFlagBits)~^~
-VALIDATION_ERROR_00510~^~U~^~Unknown~^~vkCreateComputePipelines~^~For more information refer to Vulkan Spec Section '9.1. Compute Pipelines' which states 'pName must be the name of an OpEntryPoint in module with an execution model that matches stage' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkShaderStageFlagBits)~^~
+VALIDATION_ERROR_00510~^~Y~^~Unknown~^~vkCreateComputePipelines~^~For more information refer to Vulkan Spec Section '9.1. Compute Pipelines' which states 'pName must be the name of an OpEntryPoint in module with an execution model that matches stage' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkShaderStageFlagBits)~^~
VALIDATION_ERROR_00511~^~N~^~Unknown~^~vkCreateComputePipelines~^~For more information refer to Vulkan Spec Section '9.1. Compute Pipelines' which states 'sType must be VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkShaderStageFlagBits)~^~TBD in parameter validation layer.
VALIDATION_ERROR_00512~^~N~^~Unknown~^~vkCreateComputePipelines~^~For more information refer to Vulkan Spec Section '9.1. Compute Pipelines' which states 'pNext must be NULL' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkShaderStageFlagBits)~^~TBD in parameter validation layer.
VALIDATION_ERROR_00513~^~N~^~Unknown~^~vkCreateComputePipelines~^~For more information refer to Vulkan Spec Section '9.1. Compute Pipelines' which states 'flags must be 0' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkShaderStageFlagBits)~^~TBD in parameter validation layer.
@@ -578,8 +578,8 @@ VALIDATION_ERROR_00585~^~Y~^~None~^~vkDestroyPipelineCache~^~For more informatio
VALIDATION_ERROR_00586~^~Y~^~None~^~vkDestroyPipelineCache~^~For more information refer to Vulkan Spec Section '9.6. Pipeline Cache' which states 'If pipelineCache is not VK_NULL_HANDLE, pipelineCache must be a valid VkPipelineCache handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkDestroyPipelineCache)~^~
VALIDATION_ERROR_00587~^~U~^~Unknown~^~vkDestroyPipelineCache~^~For more information refer to Vulkan Spec Section '9.6. Pipeline Cache' which states 'If pAllocator is not NULL, pAllocator must be a pointer to a valid VkAllocationCallbacks structure' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkDestroyPipelineCache)~^~
VALIDATION_ERROR_00588~^~U~^~Unknown~^~vkDestroyPipelineCache~^~For more information refer to Vulkan Spec Section '9.6. Pipeline Cache' which states 'If pipelineCache is a valid handle, it must have been created, allocated, or retrieved from device' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkDestroyPipelineCache)~^~
-VALIDATION_ERROR_00589~^~U~^~Unknown~^~vkDestroyPipelineCache~^~For more information refer to Vulkan Spec Section '9.7. Specialization Constants' which states 'The offset member of any given element of pMapEntries must be less than dataSize' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkSpecializationInfo)~^~
-VALIDATION_ERROR_00590~^~U~^~Unknown~^~vkDestroyPipelineCache~^~For more information refer to Vulkan Spec Section '9.7. Specialization Constants' which states 'For any given element of pMapEntries, size must be less than or equal to dataSize minus offset' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkSpecializationInfo)~^~
+VALIDATION_ERROR_00589~^~N~^~Unknown~^~vkDestroyPipelineCache~^~For more information refer to Vulkan Spec Section '9.7. Specialization Constants' which states 'The offset member of any given element of pMapEntries must be less than dataSize' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkSpecializationInfo)~^~
+VALIDATION_ERROR_00590~^~Y~^~Unknown~^~vkDestroyPipelineCache~^~For more information refer to Vulkan Spec Section '9.7. Specialization Constants' which states 'For any given element of pMapEntries, size must be less than or equal to dataSize minus offset' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkSpecializationInfo)~^~
VALIDATION_ERROR_00591~^~U~^~Unknown~^~vkDestroyPipelineCache~^~For more information refer to Vulkan Spec Section '9.7. Specialization Constants' which states 'If mapEntryCount is not 0, pMapEntries must be a pointer to an array of mapEntryCount valid VkSpecializationMapEntry structures' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkSpecializationInfo)~^~
VALIDATION_ERROR_00592~^~U~^~Unknown~^~vkDestroyPipelineCache~^~For more information refer to Vulkan Spec Section '9.7. Specialization Constants' which states 'If dataSize is not 0, pData must be a pointer to an array of dataSize bytes' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkSpecializationInfo)~^~
VALIDATION_ERROR_00593~^~U~^~Unknown~^~vkDestroyPipelineCache~^~For more information refer to Vulkan Spec Section '9.7. Specialization Constants' which states 'For a constantID specialization constant declared in a shader, size must match the byte size of the constantID. If the specialization constant is of type boolean, size must be the byte size of VkBool32' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkSpecializationMapEntry)~^~
@@ -780,7 +780,7 @@ VALIDATION_ERROR_00787~^~Y~^~None~^~vkGetImageMemoryRequirements~^~For more info
VALIDATION_ERROR_00788~^~Y~^~CreateUnknownObject~^~vkGetImageMemoryRequirements~^~For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'image must be a valid VkImage handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetImageMemoryRequirements)~^~
VALIDATION_ERROR_00789~^~U~^~Unknown~^~vkGetImageMemoryRequirements~^~For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'pMemoryRequirements must be a pointer to a VkMemoryRequirements structure' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetImageMemoryRequirements)~^~
VALIDATION_ERROR_00790~^~U~^~Unknown~^~vkGetImageMemoryRequirements~^~For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'image must have been created, allocated, or retrieved from device' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetImageMemoryRequirements)~^~
-VALIDATION_ERROR_00791~^~U~^~Unknown~^~vkBindBufferMemory~^~For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'buffer must not already be backed by a memory object' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkBindBufferMemory)~^~
+VALIDATION_ERROR_00791~^~N~^~Unknown~^~vkBindBufferMemory~^~For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'buffer must not already be backed by a memory object' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkBindBufferMemory)~^~
VALIDATION_ERROR_00792~^~U~^~Unknown~^~vkBindBufferMemory~^~For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'buffer must not have been created with any sparse memory binding flags' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkBindBufferMemory)~^~
VALIDATION_ERROR_00793~^~U~^~Unknown~^~vkBindBufferMemory~^~For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'memoryOffset must be less than the size of memory' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkBindBufferMemory)~^~
VALIDATION_ERROR_00794~^~Y~^~Unknown~^~vkBindBufferMemory~^~For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'If buffer was created with the VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT or VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, memoryOffset must be a multiple of VkPhysicalDeviceLimits::minTexelBufferOffsetAlignment' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkBindBufferMemory)~^~
@@ -792,7 +792,7 @@ VALIDATION_ERROR_00799~^~Y~^~VertexBufferInvalid~^~vkBindBufferMemory~^~For more
VALIDATION_ERROR_00800~^~Y~^~Unknown~^~vkBindBufferMemory~^~For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'memory must be a valid VkDeviceMemory handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkBindBufferMemory)~^~
VALIDATION_ERROR_00801~^~U~^~Unknown~^~vkBindBufferMemory~^~For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'buffer must have been created, allocated, or retrieved from device' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkBindBufferMemory)~^~
VALIDATION_ERROR_00802~^~U~^~Unknown~^~vkBindBufferMemory~^~For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'memory must have been created, allocated, or retrieved from device' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkBindBufferMemory)~^~
-VALIDATION_ERROR_00803~^~U~^~Unknown~^~vkBindImageMemory~^~For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'image must not already be backed by a memory object' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkBindImageMemory)~^~
+VALIDATION_ERROR_00803~^~N~^~Unknown~^~vkBindImageMemory~^~For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'image must not already be backed by a memory object' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkBindImageMemory)~^~
VALIDATION_ERROR_00804~^~U~^~Unknown~^~vkBindImageMemory~^~For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'image must not have been created with any sparse memory binding flags' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkBindImageMemory)~^~
VALIDATION_ERROR_00805~^~U~^~Unknown~^~vkBindImageMemory~^~For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'memoryOffset must be less than the size of memory' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkBindImageMemory)~^~
VALIDATION_ERROR_00806~^~Y~^~Unknown~^~vkBindImageMemory~^~For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'memory must have been allocated using one of the memory types allowed in the memoryTypeBits member of the VkMemoryRequirements structure returned from a call to vkGetImageMemoryRequirements with image' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkBindImageMemory)~^~
@@ -2132,7 +2132,7 @@ VALIDATION_ERROR_02199~^~U~^~Unknown~^~vkCmdResolveImage~^~For more information
VALIDATION_ERROR_02200~^~U~^~Unknown~^~vkCmdDraw~^~For more information refer to Vulkan Spec Section '19.2. Programmable Primitive Shading' which states 'All vertex input bindings accessed via vertex input variables declared in the vertex shader entry points interface must have valid buffers bound' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdDraw)~^~
VALIDATION_ERROR_02201~^~U~^~Unknown~^~vkCmdDraw~^~For more information refer to Vulkan Spec Section '19.2. Programmable Primitive Shading' which states 'For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in Section 20.2, Vertex Input Description' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdDraw)~^~
VALIDATION_ERROR_02202~^~U~^~Unknown~^~vkCmdDraw~^~For more information refer to Vulkan Spec Section '19.2. Programmable Primitive Shading' which states 'A valid graphics pipeline must be bound to the current command buffer with VK_PIPELINE_BIND_POINT_GRAPHICS' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdDraw)~^~
-VALIDATION_ERROR_02203~^~U~^~Unknown~^~vkCmdDraw~^~For more information refer to Vulkan Spec Section '19.2. Programmable Primitive Shading' which states 'If the VkPipeline object currently bound to VK_PIPELINE_BIND_POINT_GRAPHICS requires any dynamic state, that state must have been set on the current command buffer' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdDraw)~^~
+VALIDATION_ERROR_02203~^~Y~^~Unknown~^~vkCmdDraw~^~For more information refer to Vulkan Spec Section '19.2. Programmable Primitive Shading' which states 'If the VkPipeline object currently bound to VK_PIPELINE_BIND_POINT_GRAPHICS requires any dynamic state, that state must have been set on the current command buffer' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdDraw)~^~
VALIDATION_ERROR_02204~^~U~^~Unknown~^~vkCmdDraw~^~For more information refer to Vulkan Spec Section '19.2. Programmable Primitive Shading' which states 'Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdDraw)~^~
VALIDATION_ERROR_02205~^~U~^~Unknown~^~vkCmdDraw~^~For more information refer to Vulkan Spec Section '19.2. Programmable Primitive Shading' which states 'If any VkSampler object that is accessed from a shader by the VkPipeline currently bound to VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it must not be used to sample from any VkImage with a VkImageView of the type VK_IMAGE_VIEW_TYPE_3D, VK_IMAGE_VIEW_TYPE_CUBE, VK_IMAGE_VIEW_TYPE_1D_ARRAY, VK_IMAGE_VIEW_TYPE_2D_ARRAY or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdDraw)~^~
VALIDATION_ERROR_02206~^~U~^~Unknown~^~vkCmdDraw~^~For more information refer to Vulkan Spec Section '19.2. Programmable Primitive Shading' which states 'If any VkSampler object that is accessed from a shader by the VkPipeline currently bound to VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it must not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions with ImplicitLod, Dref or Proj in their name, in any shader stage' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdDraw)~^~
@@ -2145,7 +2145,7 @@ VALIDATION_ERROR_02212~^~U~^~Unknown~^~vkCmdDraw~^~For more information refer to
VALIDATION_ERROR_02213~^~U~^~Unknown~^~vkCmdDrawIndexed~^~For more information refer to Vulkan Spec Section '19.2. Programmable Primitive Shading' which states 'All vertex input bindings accessed via vertex input variables declared in the vertex shader entry points interface must have valid buffers bound' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdDrawIndexed)~^~
VALIDATION_ERROR_02214~^~U~^~Unknown~^~vkCmdDrawIndexed~^~For more information refer to Vulkan Spec Section '19.2. Programmable Primitive Shading' which states 'For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in Section 20.2, Vertex Input Description' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdDrawIndexed)~^~
VALIDATION_ERROR_02215~^~U~^~Unknown~^~vkCmdDrawIndexed~^~For more information refer to Vulkan Spec Section '19.2. Programmable Primitive Shading' which states 'A valid graphics pipeline must be bound to the current command buffer with VK_PIPELINE_BIND_POINT_GRAPHICS' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdDrawIndexed)~^~
-VALIDATION_ERROR_02216~^~U~^~Unknown~^~vkCmdDrawIndexed~^~For more information refer to Vulkan Spec Section '19.2. Programmable Primitive Shading' which states 'If the VkPipeline object currently bound to VK_PIPELINE_BIND_POINT_GRAPHICS requires any dynamic state, that state must have been set on the current command buffer' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdDrawIndexed)~^~
+VALIDATION_ERROR_02216~^~Y~^~Unknown~^~vkCmdDrawIndexed~^~For more information refer to Vulkan Spec Section '19.2. Programmable Primitive Shading' which states 'If the VkPipeline object currently bound to VK_PIPELINE_BIND_POINT_GRAPHICS requires any dynamic state, that state must have been set on the current command buffer' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdDrawIndexed)~^~
VALIDATION_ERROR_02217~^~U~^~Unknown~^~vkCmdDrawIndexed~^~For more information refer to Vulkan Spec Section '19.2. Programmable Primitive Shading' which states '(indexSize * (firstIndex + indexCount) + offset) must be less than or equal to the size of the currently bound index buffer, with indexSize being based on the type specified by indexType, where the index buffer, indexType, and offset are specified via vkCmdBindIndexBuffer' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdDrawIndexed)~^~
VALIDATION_ERROR_02218~^~U~^~Unknown~^~vkCmdDrawIndexed~^~For more information refer to Vulkan Spec Section '19.2. Programmable Primitive Shading' which states 'Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdDrawIndexed)~^~
VALIDATION_ERROR_02219~^~U~^~Unknown~^~vkCmdDrawIndexed~^~For more information refer to Vulkan Spec Section '19.2. Programmable Primitive Shading' which states 'If any VkSampler object that is accessed from a shader by the VkPipeline currently bound to VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it must not be used to sample from any VkImage with a VkImageView of the type VK_IMAGE_VIEW_TYPE_3D, VK_IMAGE_VIEW_TYPE_CUBE, VK_IMAGE_VIEW_TYPE_1D_ARRAY, VK_IMAGE_VIEW_TYPE_2D_ARRAY or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdDrawIndexed)~^~
@@ -2163,7 +2163,7 @@ VALIDATION_ERROR_02230~^~U~^~Unknown~^~vkCmdDrawIndirect~^~For more information
VALIDATION_ERROR_02231~^~U~^~Unknown~^~vkCmdDrawIndirect~^~For more information refer to Vulkan Spec Section '19.2. Programmable Primitive Shading' which states 'Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets, must be valid if they are statically used by the currently bound VkPipeline object, specified via vkCmdBindPipeline' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdDrawIndirect)~^~
VALIDATION_ERROR_02232~^~U~^~Unknown~^~vkCmdDrawIndirect~^~For more information refer to Vulkan Spec Section '19.2. Programmable Primitive Shading' which states 'All vertex input bindings accessed via vertex input variables declared in the vertex shader entry points interface must have valid buffers bound' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdDrawIndirect)~^~
VALIDATION_ERROR_02233~^~U~^~Unknown~^~vkCmdDrawIndirect~^~For more information refer to Vulkan Spec Section '19.2. Programmable Primitive Shading' which states 'A valid graphics pipeline must be bound to the current command buffer with VK_PIPELINE_BIND_POINT_GRAPHICS' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdDrawIndirect)~^~
-VALIDATION_ERROR_02234~^~U~^~Unknown~^~vkCmdDrawIndirect~^~For more information refer to Vulkan Spec Section '19.2. Programmable Primitive Shading' which states 'If the VkPipeline object currently bound to VK_PIPELINE_BIND_POINT_GRAPHICS requires any dynamic state, that state must have been set on the current command buffer' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdDrawIndirect)~^~
+VALIDATION_ERROR_02234~^~Y~^~Unknown~^~vkCmdDrawIndirect~^~For more information refer to Vulkan Spec Section '19.2. Programmable Primitive Shading' which states 'If the VkPipeline object currently bound to VK_PIPELINE_BIND_POINT_GRAPHICS requires any dynamic state, that state must have been set on the current command buffer' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdDrawIndirect)~^~
VALIDATION_ERROR_02235~^~U~^~Unknown~^~vkCmdDrawIndirect~^~For more information refer to Vulkan Spec Section '19.2. Programmable Primitive Shading' which states 'If drawCount is equal to 1, (offset + sizeof(VkDrawIndirectCommand)) must be less than or equal to the size of buffer' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdDrawIndirect)~^~
VALIDATION_ERROR_02236~^~U~^~Unknown~^~vkCmdDrawIndirect~^~For more information refer to Vulkan Spec Section '19.2. Programmable Primitive Shading' which states 'If drawCount is greater than 1, (stride (drawCount - 1) + offset + sizeof(VkDrawIndirectCommand)) must be less than or equal to the size of buffer' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdDrawIndirect)~^~
VALIDATION_ERROR_02237~^~U~^~Unknown~^~vkCmdDrawIndirect~^~For more information refer to Vulkan Spec Section '19.2. Programmable Primitive Shading' which states 'drawCount must be less than or equal to VkPhysicalDeviceLimits::maxDrawIndirectCount' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdDrawIndirect)~^~
@@ -2201,7 +2201,7 @@ VALIDATION_ERROR_02268~^~U~^~Unknown~^~vkCmdDrawIndexedIndirect~^~For more infor
VALIDATION_ERROR_02269~^~U~^~Unknown~^~vkCmdDrawIndexedIndirect~^~For more information refer to Vulkan Spec Section '19.2. Programmable Primitive Shading' which states 'Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets, must be valid if they are statically used by the currently bound VkPipeline object, specified via vkCmdBindPipeline' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdDrawIndexedIndirect)~^~
VALIDATION_ERROR_02270~^~U~^~Unknown~^~vkCmdDrawIndexedIndirect~^~For more information refer to Vulkan Spec Section '19.2. Programmable Primitive Shading' which states 'All vertex input bindings accessed via vertex input variables declared in the vertex shader entry points interface must have valid buffers bound' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdDrawIndexedIndirect)~^~
VALIDATION_ERROR_02271~^~U~^~Unknown~^~vkCmdDrawIndexedIndirect~^~For more information refer to Vulkan Spec Section '19.2. Programmable Primitive Shading' which states 'A valid graphics pipeline must be bound to the current command buffer with VK_PIPELINE_BIND_POINT_GRAPHICS' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdDrawIndexedIndirect)~^~
-VALIDATION_ERROR_02272~^~U~^~Unknown~^~vkCmdDrawIndexedIndirect~^~For more information refer to Vulkan Spec Section '19.2. Programmable Primitive Shading' which states 'If the VkPipeline object currently bound to VK_PIPELINE_BIND_POINT_GRAPHICS requires any dynamic state, that state must have been set on the current command buffer' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdDrawIndexedIndirect)~^~
+VALIDATION_ERROR_02272~^~Y~^~Unknown~^~vkCmdDrawIndexedIndirect~^~For more information refer to Vulkan Spec Section '19.2. Programmable Primitive Shading' which states 'If the VkPipeline object currently bound to VK_PIPELINE_BIND_POINT_GRAPHICS requires any dynamic state, that state must have been set on the current command buffer' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdDrawIndexedIndirect)~^~
VALIDATION_ERROR_02273~^~U~^~Unknown~^~vkCmdDrawIndexedIndirect~^~For more information refer to Vulkan Spec Section '19.2. Programmable Primitive Shading' which states 'If drawCount is equal to 1, (offset + sizeof(VkDrawIndexedIndirectCommand)) must be less than or equal to the size of buffer' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdDrawIndexedIndirect)~^~
VALIDATION_ERROR_02274~^~U~^~Unknown~^~vkCmdDrawIndexedIndirect~^~For more information refer to Vulkan Spec Section '19.2. Programmable Primitive Shading' which states 'If drawCount is greater than 1, (stride (drawCount - 1) + offset + sizeof(VkDrawIndexedIndirectCommand)) must be less than or equal to the size of buffer' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdDrawIndexedIndirect)~^~
VALIDATION_ERROR_02275~^~U~^~Unknown~^~vkCmdDrawIndexedIndirect~^~For more information refer to Vulkan Spec Section '19.2. Programmable Primitive Shading' which states 'drawCount must be less than or equal to VkPhysicalDeviceLimits::maxDrawIndirectCount' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdDrawIndexedIndirect)~^~