-#!/usr/bin/python3 -i
+#!/usr/bin/python -i
import sys
import xml.etree.ElementTree as etree
import urllib2
+from bs4 import BeautifulSoup
#############################
# spec.py script
remap_dict = {}
def printHelp():
- print "Usage: python spec.py [-spec <specfile.html>] [-out <headerfile.h>] [-gendb <databasefile.txt>] [-compare <databasefile.txt>] [-update] [-remap <new_id-old_id,count>] [-help]"
- print "\n Default script behavior is to parse the specfile and generate a header of unique error enums and corresponding error messages based on the specfile.\n"
- print " Default specfile is from online at %s" % (spec_url)
- print " Default headerfile is %s" % (out_filename)
- print " Default databasefile is %s" % (db_filename)
- print "\nIf '-gendb' option is specified then a database file is generated to default file or <databasefile.txt> if supplied. The database file stores"
- print " the list of enums and their error messages."
- print "\nIf '-compare' option is specified then the given database file will be read in as the baseline for generating the new specfile"
- print "\nIf '-update' option is specified this triggers the master flow to automate updating header and database files using default db file as baseline"
- print " and online spec file as the latest. The default header and database files will be updated in-place for review and commit to the git repo."
- print "\nIf '-remap' option is specified it supplies forced remapping from new enum ids to old enum ids. This should only be specified along with -update"
- print " option. Starting at newid and remapping to oldid, count ids will be remapped. Default count is '1' and use ':' to specify multiple remappings."
+ print ("Usage: python spec.py [-spec <specfile.html>] [-out <headerfile.h>] [-gendb <databasefile.txt>] [-compare <databasefile.txt>] [-update] [-remap <new_id-old_id,count>] [-help]")
+ print ("\n Default script behavior is to parse the specfile and generate a header of unique error enums and corresponding error messages based on the specfile.\n")
+ print (" Default specfile is from online at %s" % (spec_url))
+ print (" Default headerfile is %s" % (out_filename))
+ print (" Default databasefile is %s" % (db_filename))
+ print ("\nIf '-gendb' option is specified then a database file is generated to default file or <databasefile.txt> if supplied. The database file stores")
+ print (" the list of enums and their error messages.")
+ print ("\nIf '-compare' option is specified then the given database file will be read in as the baseline for generating the new specfile")
+ print ("\nIf '-update' option is specified this triggers the master flow to automate updating header and database files using default db file as baseline")
+ print (" and online spec file as the latest. The default header and database files will be updated in-place for review and commit to the git repo.")
+ print ("\nIf '-remap' option is specified it supplies forced remapping from new enum ids to old enum ids. This should only be specified along with -update")
+ print (" option. Starting at newid and remapping to oldid, count ids will be remapped. Default count is '1' and use ':' to specify multiple remappings.")
class Specification:
def __init__(self):
except urllib2.URLError as err:
return False
return False
- def loadFile(self, online=True, spec_file=spec_filename):
- """Load an API registry XML file into a Registry object and parse it"""
- # Check if spec URL is available
+ def soupLoadFile(self, online=True, spec_file=spec_filename):
+ """Load a spec file into BeutifulSoup"""
if (online and self._checkInternetSpec()):
- print "Using spec from online at %s" % (spec_url)
- self.tree = etree.parse(urllib2.urlopen(spec_url))
+ print ("Making soup from spec online at %s, this will take a minute" % (spec_url))
+ self.soup = BeautifulSoup(urllib2.urlopen(spec_url), 'html.parser')
else:
- print "Using local spec %s" % (spec_file)
- self.tree = etree.parse(spec_file)
- #self.tree.write("tree_output.xhtml")
- #self.tree = etree.parse("tree_output.xhtml")
- self.parseTree()
+ print ("Making soup from local spec %s, this will take a minute" % (spec_file))
+ self.soup = BeautifulSoup(spec_file, 'html.parser')
+ self.parseSoup()
+ #print(self.soup.prettify())
def updateDict(self, updated_dict):
"""Assign internal dict to use updated_dict"""
self.val_error_dict = updated_dict
- def parseTree(self):
+ def parseSoup(self):
"""Parse the registry Element, once created"""
- print "Parsing spec file..."
+ print ("Parsing spec file...")
unique_enum_id = 0
- self.root = self.tree.getroot()
- #print "ROOT: %s" % self.root
+ #self.root = self.tree.getroot()
+ #print ("ROOT: %s") % self.root
prev_heading = '' # Last seen section heading or sub-heading
prev_link = '' # Last seen link id within the spec
api_function = '' # API call that a check appears under
error_strings = set() # Flag any exact duplicate error strings and skip them
- implicit_count = 0
- for tag in self.root.iter(): # iterate down tree
+ for tag in self.soup.find_all(True):#self.root.iter(): # iterate down tree
# Grab most recent section heading and link
- if tag.tag in ['h2', 'h3', 'h4']:
+ #print ("tag.name is %s and class is %s" % (tag.name, tag.get('class')))
+ if tag.name in ['h2', 'h3', 'h4']:
#if tag.get('class') != 'title':
# continue
- print "Found heading %s" % (tag.tag)
- prev_heading = "".join(tag.itertext())
+ #print ("Found heading %s w/ string %s" % (tag.name, tag.string))
+ if None == tag.string:
+ prev_heading = ""
+ else:
+ prev_heading = "".join(tag.string)
# Insert a space between heading number & title
sh_list = prev_heading.rsplit('.', 1)
prev_heading = '. '.join(sh_list)
- prev_link = tag.get('id')
- print "Set prev_heading %s to have link of %s" % (prev_heading.encode("ascii", "ignore"), prev_link.encode("ascii", "ignore"))
- elif tag.tag == 'a': # grab any intermediate links
+ prev_link = tag['id']
+ #print ("Set prev_heading %s to have link of %s" % (prev_heading.encode("ascii", "ignore"), prev_link.encode("ascii", "ignore")))
+ elif tag.name == 'a': # grab any intermediate links
if tag.get('id') != None:
prev_link = tag.get('id')
- #print "Updated prev link to %s" % (prev_link)
- elif tag.tag == 'div' and tag.get('class') == 'listingblock':
+ #print ("Updated prev link to %s" % (prev_link))
+ elif tag.name == 'div' and tag.get('class') is not None and tag['class'][0] == 'listingblock':
# Check and see if this is API function
- code_text = "".join(tag.itertext()).replace('\n', '')
+ code_text = "".join(tag.strings).replace('\n', '')
code_text_list = code_text.split()
if len(code_text_list) > 1 and code_text_list[1].startswith('vk'):
api_function = code_text_list[1].strip('(')
- print "Found API function: %s" % (api_function)
+ #print ("Found API function: %s" % (api_function))
prev_link = api_function
- print "Updated prev link to %s" % (prev_link)
+ #print ("Updated prev link to %s" % (prev_link))
elif tag.get('id') != None:
prev_link = tag.get('id')
- print "Updated prev link to %s" % (prev_link)
- #elif tag.tag == '{http://www.w3.org/1999/xhtml}div' and tag.get('class') == 'sidebar':
- elif tag.tag == 'div' and tag.get('class') == 'content':
+ #print ("Updated prev link to %s" % (prev_link))
+ #elif tag.name == '{http://www.w3.org/1999/xhtml}div' and tag.get('class') == 'sidebar':
+ elif tag.name == 'div' and tag.get('class') is not None and tag['class'][0] == 'content':
+ #print("Parsing down a div content tag")
# parse down sidebar to check for valid usage cases
valid_usage = False
implicit = False
- for elem in tag.iter():
- if elem.tag == 'div' and None != elem.text and 'Valid Usage' in elem.text:
+ for elem in tag.find_all(True):
+ #print(" elem is %s w/ string %s" % (elem.name, elem.string))
+ if elem.name == 'div' and None != elem.string and 'Valid Usage' in elem.string:
valid_usage = True
- if '(Implicit)' in elem.text:
+ if '(Implicit)' in elem.string:
implicit = True
else:
implicit = False
- elif valid_usage and elem.tag == 'li': # grab actual valid usage requirements
- error_msg_str = "%s '%s' which states '%s' (%s#%s)" % (error_msg_prefix, prev_heading, "".join(elem.itertext()).replace('\n', ' ').strip(), spec_url, prev_link)
+ elif valid_usage and elem.name == 'li': # grab actual valid usage requirements
+ #print("I think this is a VU w/ elem.strings is %s" % (elem.strings))
+ error_msg_str = "%s '%s' which states '%s' (%s#%s)" % (error_msg_prefix, prev_heading, "".join(elem.strings).replace('\n', ' ').strip(), spec_url, prev_link)
# Some txt has multiple spaces so split on whitespace and join w/ single space
error_msg_str = " ".join(error_msg_str.split())
if error_msg_str in error_strings:
- print "WARNING: SKIPPING adding repeat entry for string. Please review spec and file issue as appropriate. Repeat string is: %s" % (error_msg_str)
+ print ("WARNING: SKIPPING adding repeat entry for string. Please review spec and file issue as appropriate. Repeat string is: %s" % (error_msg_str))
else:
error_strings.add(error_msg_str)
enum_str = "%s%05d" % (validation_error_enum_name, unique_enum_id)
# TODO : '\' chars in spec error messages are most likely bad spec txt that needs to be updated
self.val_error_dict[enum_str] = {}
self.val_error_dict[enum_str]['error_msg'] = error_msg_str.encode("ascii", "ignore").replace("\\", "/")
- self.val_error_dict[enum_str]['api'] = api_function
+ self.val_error_dict[enum_str]['api'] = api_function.encode("ascii", "ignore")
self.val_error_dict[enum_str]['implicit'] = False
if implicit:
self.val_error_dict[enum_str]['implicit'] = True
self.implicit_count = self.implicit_count + 1
unique_enum_id = unique_enum_id + 1
- #print "Validation Error Dict has a total of %d unique errors and contents are:\n%s" % (unique_enum_id, self.val_error_dict)
+ #print ("Validation Error Dict has a total of %d unique errors and contents are:\n%s" % (unique_enum_id, self.val_error_dict))
+ print ("Validation Error Dict has a total of %d unique errors" % (unique_enum_id))
def genHeader(self, header_file):
"""Generate a header file based on the contents of a parsed spec"""
- print "Generating header %s..." % (header_file)
+ print ("Generating header %s..." % (header_file))
file_contents = []
file_contents.append(self.copyright)
file_contents.append('\n#pragma once')
error_string_map = ['static std::unordered_map<int, char const *const> validation_error_map{']
enum_value = 0
for enum in sorted(self.val_error_dict):
- #print "Header enum is %s" % (enum)
+ #print ("Header enum is %s" % (enum))
enum_value = int(enum.split('_')[-1])
enum_decl.append(' %s = %d,' % (enum, enum_value))
error_string_map.append(' {%s, "%s"},' % (enum, self.val_error_dict[enum]['error_msg']))
file_contents.append('// The error message should be appended to the end of a custom error message that is passed')
file_contents.append('// as the pMessage parameter to the PFN_vkDebugReportCallbackEXT function')
file_contents.extend(error_string_map)
- #print "File contents: %s" % (file_contents)
+ #print ("File contents: %s" % (file_contents))
with open(header_file, "w") as outfile:
outfile.write("\n".join(file_contents))
def analyze(self):
for enum in self.val_error_dict:
err_str = self.val_error_dict[enum]['error_msg']
if err_str in str_count_dict:
- print "Found repeat error string"
+ print ("Found repeat error string")
str_count_dict[err_str] = str_count_dict[err_str] + 1
else:
str_count_dict[err_str] = 1
unique_id_count = unique_id_count + 1
- print "Processed %d unique_ids" % (unique_id_count)
+ print ("Processed %d unique_ids" % (unique_id_count))
repeat_string = 0
for es in str_count_dict:
if str_count_dict[es] > 1:
repeat_string = repeat_string + 1
- print "String '%s' repeated %d times" % (es, repeat_string)
- print "Found %d repeat strings" % (repeat_string)
- print "Found %d implicit checks" % (self.implicit_count)
+ print ("String '%s' repeated %d times" % (es, repeat_string))
+ print ("Found %d repeat strings" % (repeat_string))
+ print ("Found %d implicit checks" % (self.implicit_count))
def genDB(self, db_file):
"""Generate a database of check_enum, check_coded?, testname, error_string"""
db_lines = []
note = "implicit, %s" % (note)
else:
note = "implicit"
- #print "delimiter: %s, id: %s, str: %s" % (self.delimiter, enum, self.val_error_dict[enum])
+ #print ("delimiter: %s, id: %s, str: %s" % (self.delimiter, enum, self.val_error_dict[enum])
# No existing entry so default to N for implemented and None for testname
db_lines.append("%s%s%s%s%s%s%s%s%s%s%s" % (enum, self.delimiter, implemented, self.delimiter, testname, self.delimiter, self.val_error_dict[enum]['api'], self.delimiter, self.val_error_dict[enum]['error_msg'], self.delimiter, note))
db_lines.append("\n") # newline at end of file
- print "Generating database file %s" % (db_file)
+ print ("Generating database file %s" % (db_file))
with open(db_file, "w") as outfile:
outfile.write("\n".join(db_lines))
def readDB(self, db_file):
continue
db_line = line.split(self.delimiter)
if len(db_line) != 6:
- print "ERROR: Bad database line doesn't have 6 elements: %s" % (line)
+ print ("ERROR: Bad database line doesn't have 6 elements: %s" % (line))
error_enum = db_line[0]
implemented = db_line[1]
testname = db_line[2]
orig_no_link_msg = "%s,%s" % (api, original_full_msg.split('(https', 1)[0])
orig_core_msg = "%s,%s" % (api, orig_no_link_msg.split(' which states ', 1)[-1])
orig_core_msg_period = "%s.' " % (orig_core_msg[:-2])
- print "Orig core msg:%s\nOrig cw/o per:%s" % (orig_core_msg, orig_core_msg_period)
+ print ("Orig core msg:%s\nOrig cw/o per:%s" % (orig_core_msg, orig_core_msg_period))
# First store mapping of full error msg to ID, shouldn't have duplicates
if original_full_msg in self.orig_full_msg_dict:
- print "ERROR: Found duplicate full msg in original full error messages: %s" % (original_full_msg)
+ print ("ERROR: Found duplicate full msg in original full error messages: %s" % (original_full_msg))
self.orig_full_msg_dict[original_full_msg] = enum
# Now map API,no_link_msg to list of IDs
if orig_no_link_msg in self.orig_no_link_msg_dict:
self.orig_core_msg_dict[orig_core_msg] = [enum]
if orig_core_msg_period in self.orig_core_msg_dict:
self.orig_core_msg_dict[orig_core_msg_period].append(enum)
- print "Added msg '%s' w/ enum %s to orig_core_msg_dict" % (orig_core_msg_period, enum)
+ print ("Added msg '%s' w/ enum %s to orig_core_msg_dict" % (orig_core_msg_period, enum))
else:
- print "Added msg '%s' w/ enum %s to orig_core_msg_dict" % (orig_core_msg_period, enum)
+ print ("Added msg '%s' w/ enum %s to orig_core_msg_dict" % (orig_core_msg_period, enum))
self.orig_core_msg_dict[orig_core_msg_period] = [enum]
# Also capture all enums that have a test and/or implementation
if self.error_db_dict[enum]['check_implemented'] == 'Y' or self.error_db_dict[enum]['testname'] not in ['None','Unknown']:
- print "Recording %s with implemented value %s and testname %s" % (enum, self.error_db_dict[enum]['check_implemented'], self.error_db_dict[enum]['testname'])
+ print ("Recording %s with implemented value %s and testname %s" % (enum, self.error_db_dict[enum]['check_implemented'], self.error_db_dict[enum]['testname']))
self.orig_test_imp_enums.add(enum)
# Values to be used for the update dict
update_enum = ''
enum_list[-1] = remap_dict[enum_list[-1]]
self.last_mapped_id = int(enum_list[-1])
new_enum = "_".join(enum_list)
- print "NOTE: Using user-supplied remap to force %s to be %s" % (enum, new_enum)
+ print ("NOTE: Using user-supplied remap to force %s to be %s" % (enum, new_enum))
+ mapped_enums = self._updateMappedEnum(mapped_enums, new_enum)
update_enum = new_enum
elif new_full_msg in self.orig_full_msg_dict:
orig_enum = self.orig_full_msg_dict[new_full_msg]
- print "Found exact match for full error msg so switching new ID %s to original ID %s" % (enum, orig_enum)
+ print ("Found exact match for full error msg so switching new ID %s to original ID %s" % (enum, orig_enum))
mapped_enums = self._updateMappedEnum(mapped_enums, orig_enum)
update_enum = orig_enum
elif new_no_link_msg in self.orig_no_link_msg_dict:
# Try to get single ID to map to from no_link matches
if len(self.orig_no_link_msg_dict[new_no_link_msg]) == 1: # Only 1 id, use it!
orig_enum = self.orig_no_link_msg_dict[new_no_link_msg][0]
- print "Found no-link err msg match w/ only 1 ID match so switching new ID %s to original ID %s" % (enum, orig_enum)
+ print ("Found no-link err msg match w/ only 1 ID match so switching new ID %s to original ID %s" % (enum, orig_enum))
mapped_enums = self._updateMappedEnum(mapped_enums, orig_enum)
update_enum = orig_enum
else:
if self.findSeqID(self.orig_no_link_msg_dict[new_no_link_msg]): # If we have an id in sequence, use it!
(mapped_enums, update_enum) = self.useSeqID(self.orig_no_link_msg_dict[new_no_link_msg], mapped_enums)
- print "Found no-link err msg match w/ seq ID match so switching new ID %s to original ID %s" % (enum, update_enum)
+ print ("Found no-link err msg match w/ seq ID match so switching new ID %s to original ID %s" % (enum, update_enum))
else:
enum_list[-1] = "%05d" % (next_id)
new_enum = "_".join(enum_list)
next_id = next_id + 1
- print "Found no-link msg match but have multiple matched IDs w/o a sequence ID, updating ID %s to unique ID %s for msg %s" % (enum, new_enum, new_no_link_msg)
+ print ("Found no-link msg match but have multiple matched IDs w/o a sequence ID, updating ID %s to unique ID %s for msg %s" % (enum, new_enum, new_no_link_msg))
update_enum = new_enum
elif new_core_msg in self.orig_core_msg_dict:
# Do similar stuff here
if len(self.orig_core_msg_dict[new_core_msg]) == 1:
orig_enum = self.orig_core_msg_dict[new_core_msg][0]
- print "Found core err msg match w/ only 1 ID match so switching new ID %s to original ID %s" % (enum, orig_enum)
+ print ("Found core err msg match w/ only 1 ID match so switching new ID %s to original ID %s" % (enum, orig_enum))
mapped_enums = self._updateMappedEnum(mapped_enums, orig_enum)
update_enum = orig_enum
else:
if self.findSeqID(self.orig_core_msg_dict[new_core_msg]):
(mapped_enums, update_enum) = self.useSeqID(self.orig_core_msg_dict[new_core_msg], mapped_enums)
- print "Found core err msg match w/ seq ID match so switching new ID %s to original ID %s" % (enum, update_enum)
+ print ("Found core err msg match w/ seq ID match so switching new ID %s to original ID %s" % (enum, update_enum))
else:
enum_list[-1] = "%05d" % (next_id)
new_enum = "_".join(enum_list)
next_id = next_id + 1
- print "Found core msg match but have multiple matched IDs w/o a sequence ID, updating ID %s to unique ID %s for msg %s" % (enum, new_enum, new_no_link_msg)
+ print ("Found core msg match but have multiple matched IDs w/o a sequence ID, updating ID %s to unique ID %s for msg %s" % (enum, new_enum, new_no_link_msg))
update_enum = new_enum
# This seems to be a new error so need to pick it up from end of original unique ids & flag for review
else:
enum_list[-1] = "%05d" % (next_id)
new_enum = "_".join(enum_list)
next_id = next_id + 1
- print "Completely new id and error code, update new id from %s to unique %s for core message:%s" % (enum, new_enum, new_core_msg)
- if new_enum in updated_val_error_dict:
- print "ERROR: About to overwrite entry for %s" % (new_enum)
+ print ("Completely new id and error code, update new id from %s to unique %s for core message:%s" % (enum, new_enum, new_core_msg))
update_enum = new_enum
+ if update_enum in updated_val_error_dict:
+ print ("ERROR: About to OVERWRITE entry for %s" % update_enum)
updated_val_error_dict[update_enum] = {}
updated_val_error_dict[update_enum]['error_msg'] = update_msg
updated_val_error_dict[update_enum]['api'] = update_api
updated_val_error_dict[update_enum]['implicit'] = implicit
# Assign parsed dict to be the updated dict based on db compare
- print "In compareDB parsed %d entries" % (ids_parsed)
+ print ("In compareDB parsed %d entries" % (ids_parsed))
return updated_val_error_dict
def validateUpdateDict(self, update_dict):
#update_ids = {}
update_id_count = len(update_dict)
if orig_id_count != update_id_count:
- print "Original dict had %d unique_ids, but updated dict has %d!" % (orig_id_count, update_id_count)
+ print ("Original dict had %d unique_ids, but updated dict has %d!" % (orig_id_count, update_id_count))
return False
- print "Original dict and updated dict both have %d unique_ids. Great!" % (orig_id_count)
+ print ("Original dict and updated dict both have %d unique_ids. Great!" % (orig_id_count))
# Now flag any original dict enums that had tests and/or checks that are missing from updated
for enum in update_dict:
if enum in self.orig_test_imp_enums:
self.orig_test_imp_enums.remove(enum)
if len(self.orig_test_imp_enums) > 0:
- print "TODO: Have some enums with tests and/or checks implemented that are missing in update:"
+ print ("TODO: Have some enums with tests and/or checks implemented that are missing in update:")
for enum in sorted(self.orig_test_imp_enums):
- print "\t%s" % enum
+ print ("\t%s") % enum
return True
# TODO : include some more analysis
for offset in range(count):
remap_dict["%05d" % (int(new_old_id_list[0]) + offset)] = "%05d" % (int(new_old_id_list[1]) + offset)
for new_id in sorted(remap_dict):
- print "Set to remap new id %s to old id %s" % (new_id, remap_dict[new_id])
+ print ("Set to remap new id %s to old id %s" % (new_id, remap_dict[new_id]))
if __name__ == "__main__":
i = 1
printHelp()
sys.exit()
if len(remap_dict) > 1 and not update_option:
- print "ERROR: '-remap' option can only be used along with '-update' option. Exiting."
+ print ("ERROR: '-remap' option can only be used along with '-update' option. Exiting.")
sys.exit()
spec = Specification()
- spec.loadFile(use_online, spec_filename)
- #spec.parseTree()
- #spec.genHeader(out_filename)
+ spec.soupLoadFile(use_online, spec_filename)
spec.analyze()
if (spec_compare):
# Read in old spec info from db file
sys.exit()
if (gen_db):
spec.genDB(db_filename)
- print "Writing out file (-out) to '%s'" % (out_filename)
+ print ("Writing out file (-out) to '%s'" % (out_filename))
spec.genHeader(out_filename)
##### Example dataset
VALIDATION_ERROR_00372~^~N~^~Unknown~^~vkCreateRenderPass~^~For more information refer to Vulkan Spec Section '7.1. Render Pass Creation' which states 'srcSubpass must be less than or equal to dstSubpass, unless one of them is VK_SUBPASS_EXTERNAL, to avoid cyclic dependencies and ensure a valid execution order' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkSubpassDependency)~^~
VALIDATION_ERROR_00373~^~N~^~Unknown~^~vkCreateRenderPass~^~For more information refer to Vulkan Spec Section '7.1. Render Pass Creation' which states 'srcSubpass and dstSubpass must not both be equal to VK_SUBPASS_EXTERNAL' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkSubpassDependency)~^~
VALIDATION_ERROR_00374~^~N~^~Unknown~^~vkCreateRenderPass~^~For more information refer to Vulkan Spec Section '7.1. Render Pass Creation' which states 'If srcSubpass is equal to dstSubpass, srcStageMask and dstStageMask must only contain one of VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT, VK_PIPELINE_STAGE_VERTEX_INPUT_BIT, VK_PIPELINE_STAGE_VERTEX_SHADER_BIT, VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT, VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT, VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT, VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT, VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT, or VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkSubpassDependency)~^~
-VALIDATION_ERROR_00375~^~N~^~Unknown~^~vkCreateRenderPass~^~For more information refer to Vulkan Spec Section '7.1. Render Pass Creation' which states 'If srcSubpass is equal to dstSubpass, the logically latest pipeline stage in srcStageMask must be logically earlier than or equal to the logically earliest pipeline stage in dstStageMask' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkSubpassDependency)~^~
+VALIDATION_ERROR_00375~^~N~^~Unknown~^~vkCreateRenderPass~^~For more information refer to Vulkan Spec Section '7.1. Render Pass Creation' which states 'If srcSubpass is equal to dstSubpass and not all of the stages in srcStageMask and dstStageMask are framebuffer-space stages, the logically latest pipeline stage in srcStageMask must be logically earlier than or equal to the logically earliest pipeline stage in dstStageMask' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkSubpassDependency)~^~
VALIDATION_ERROR_00376~^~N~^~Unknown~^~vkCreateRenderPass~^~For more information refer to Vulkan Spec Section '7.1. Render Pass Creation' which states 'srcStageMask must be a valid combination of VkPipelineStageFlagBits values' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkSubpassDependency)~^~implicit
VALIDATION_ERROR_00377~^~N~^~Unknown~^~vkCreateRenderPass~^~For more information refer to Vulkan Spec Section '7.1. Render Pass Creation' which states 'srcStageMask must not be 0' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkSubpassDependency)~^~implicit
VALIDATION_ERROR_00378~^~N~^~Unknown~^~vkCreateRenderPass~^~For more information refer to Vulkan Spec Section '7.1. Render Pass Creation' which states 'dstStageMask must be a valid combination of VkPipelineStageFlagBits values' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkSubpassDependency)~^~implicit
VALIDATION_ERROR_00533~^~Y~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'The stage member of any given element of pStages must not be VK_SHADER_STAGE_COMPUTE_BIT' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)~^~
VALIDATION_ERROR_00534~^~Y~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pStages includes a tessellation control shader stage, it must include a tessellation evaluation shader stage' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)~^~
VALIDATION_ERROR_00535~^~Y~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pStages includes a tessellation evaluation shader stage, it must include a tessellation control shader stage' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)~^~
-VALIDATION_ERROR_00536~^~Y~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pStages includes a tessellation control shader stage and a tessellation evaluation shader stage, pTessellationState must not be NULL' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)~^~
+VALIDATION_ERROR_00536~^~Y~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pStages includes a tessellation control shader stage and a tessellation evaluation shader stage, pTessellationState must be a pointer to a valid VkPipelineTessellationStateCreateInfo structure' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)~^~
VALIDATION_ERROR_00537~^~N~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pStages includes tessellation shader stages, the shader code of at least one stage must contain an OpExecutionMode instruction that specifies the type of subdivision in the pipeline' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)~^~
VALIDATION_ERROR_00538~^~Y~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'sType must be VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)~^~implicit, TBD in parameter validation layer.
VALIDATION_ERROR_00539~^~N~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'pNext must be NULL' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)~^~implicit, TBD in parameter validation layer.
VALIDATION_ERROR_00753~^~N~^~Unknown~^~vkCreateImageView~^~For more information refer to Vulkan Spec Section '11.5. Image Views' which states 'pView must be a pointer to a VkImageView handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCreateImageView)~^~implicit
VALIDATION_ERROR_00754~^~N~^~Unknown~^~vkCreateImageView~^~For more information refer to Vulkan Spec Section '11.5. Image Views' which states 'If image was not created with VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT then viewType must not be VK_IMAGE_VIEW_TYPE_CUBE or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageViewCreateInfo)~^~
VALIDATION_ERROR_00755~^~N~^~Unknown~^~vkCreateImageView~^~For more information refer to Vulkan Spec Section '11.5. Image Views' which states 'If the image cubemap arrays feature is not enabled, viewType must not be VK_IMAGE_VIEW_TYPE_CUBE_ARRAY' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageViewCreateInfo)~^~
-VALIDATION_ERROR_00756~^~N~^~Unknown~^~vkCreateImageView~^~For more information refer to Vulkan Spec Section '11.5. Image Views' which states 'If the ETC2 texture compression feature is not enabled, format must not be VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK, VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK, VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK, VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK, VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK, VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK, VK_FORMAT_EAC_R11_UNORM_BLOCK, VK_FORMAT_EAC_R11_SNORM_BLOCK, VK_FORMAT_EAC_R11G11_UNORM_BLOCK, or VK_FORMAT_EAC_R11G11_SNORM_BLOCK' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageViewCreateInfo)~^~
-VALIDATION_ERROR_00757~^~N~^~Unknown~^~vkCreateImageView~^~For more information refer to Vulkan Spec Section '11.5. Image Views' which states 'If the ASTC LDR texture compression feature is not enabled, format must not be VK_FORMAT_ASTC_4x4_UNORM_BLOCK, VK_FORMAT_ASTC_4x4_SRGB_BLOCK, VK_FORMAT_ASTC_5x4_UNORM_BLOCK, VK_FORMAT_ASTC_5x4_SRGB_BLOCK, VK_FORMAT_ASTC_5x5_UNORM_BLOCK, VK_FORMAT_ASTC_5x5_SRGB_BLOCK, VK_FORMAT_ASTC_6x5_UNORM_BLOCK, VK_FORMAT_ASTC_6x5_SRGB_BLOCK, VK_FORMAT_ASTC_6x6_UNORM_BLOCK, VK_FORMAT_ASTC_6x6_SRGB_BLOCK, VK_FORMAT_ASTC_8x5_UNORM_BLOCK, VK_FORMAT_ASTC_8x5_SRGB_BLOCK, VK_FORMAT_ASTC_8x6_UNORM_BLOCK, VK_FORMAT_ASTC_8x6_SRGB_BLOCK, VK_FORMAT_ASTC_8x8_UNORM_BLOCK, VK_FORMAT_ASTC_8x8_SRGB_BLOCK, VK_FORMAT_ASTC_10x5_UNORM_BLOCK, VK_FORMAT_ASTC_10x5_SRGB_BLOCK, VK_FORMAT_ASTC_10x6_UNORM_BLOCK, VK_FORMAT_ASTC_10x6_SRGB_BLOCK, VK_FORMAT_ASTC_10x8_UNORM_BLOCK, VK_FORMAT_ASTC_10x8_SRGB_BLOCK, VK_FORMAT_ASTC_10x10_UNORM_BLOCK, VK_FORMAT_ASTC_10x10_SRGB_BLOCK, VK_FORMAT_ASTC_12x10_UNORM_BLOCK, VK_FORMAT_ASTC_12x10_SRGB_BLOCK, VK_FORMAT_ASTC_12x12_UNORM_BLOCK, or VK_FORMAT_ASTC_12x12_SRGB_BLOCK' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageViewCreateInfo)~^~
-VALIDATION_ERROR_00758~^~N~^~Unknown~^~vkCreateImageView~^~For more information refer to Vulkan Spec Section '11.5. Image Views' which states 'If the BC texture compression feature is not enabled, format must not be VK_FORMAT_BC1_RGB_UNORM_BLOCK, VK_FORMAT_BC1_RGB_SRGB_BLOCK, VK_FORMAT_BC1_RGBA_UNORM_BLOCK, VK_FORMAT_BC1_RGBA_SRGB_BLOCK, VK_FORMAT_BC2_UNORM_BLOCK, VK_FORMAT_BC2_SRGB_BLOCK, VK_FORMAT_BC3_UNORM_BLOCK, VK_FORMAT_BC3_SRGB_BLOCK, VK_FORMAT_BC4_UNORM_BLOCK, VK_FORMAT_BC4_SNORM_BLOCK, VK_FORMAT_BC5_UNORM_BLOCK, VK_FORMAT_BC5_SNORM_BLOCK, VK_FORMAT_BC6H_UFLOAT_BLOCK, VK_FORMAT_BC6H_SFLOAT_BLOCK, VK_FORMAT_BC7_UNORM_BLOCK, or VK_FORMAT_BC7_SRGB_BLOCK' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageViewCreateInfo)~^~
VALIDATION_ERROR_00759~^~N~^~Unknown~^~vkCreateImageView~^~For more information refer to Vulkan Spec Section '11.5. Image Views' which states 'If image was created with VK_IMAGE_TILING_LINEAR, format must be format that has at least one supported feature bit present in the value of VkFormatProperties::linearTilingFeatures returned by vkGetPhysicalDeviceFormatProperties with the same value of format' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageViewCreateInfo)~^~
VALIDATION_ERROR_00760~^~N~^~Unknown~^~vkCreateImageView~^~For more information refer to Vulkan Spec Section '11.5. Image Views' which states 'sType must be VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageViewCreateInfo)~^~implicit, TBD in parameter validation layer.
VALIDATION_ERROR_00761~^~N~^~Unknown~^~vkCreateImageView~^~For more information refer to Vulkan Spec Section '11.5. Image Views' which states 'pNext must be NULL' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageViewCreateInfo)~^~implicit, TBD in parameter validation layer.
VALIDATION_ERROR_02103~^~N~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pStages includes a fragment shader stage and a geometry shader stage, and the fragment shader code reads from an input variable that is decorated with PrimitiveID, then the geometry shader code must write to a matching output variable, decorated with PrimitiveID, in all execution paths' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)~^~
VALIDATION_ERROR_02104~^~N~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pStages includes a fragment shader stage, its shader code must not read from any input attachment that is defined as VK_ATTACHMENT_UNUSED in subpass' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)~^~
VALIDATION_ERROR_02105~^~N~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'The shader code for the entry points identified by pStages, and the rest of the state identified by this structure must adhere to the pipeline linking rules described in the Shader Interfaces chapter' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)~^~
-VALIDATION_ERROR_02106~^~N~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If subpass uses a depth/stencil attachment in renderpass that has a layout of VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL in the VkAttachmentReference defined by subpass, and pDepthStencilState is not NULL, the depthWriteEnable member of pDepthStencilState must be VK_FALSE' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)~^~
-VALIDATION_ERROR_02107~^~N~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If subpass uses a depth/stencil attachment in renderpass that has a layout of VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL in the VkAttachmentReference defined by subpass, and pDepthStencilState is not NULL, the failOp, passOp and depthFailOp members of each of the front and back members of pDepthStencilState must be VK_STENCIL_OP_KEEP' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)~^~
-VALIDATION_ERROR_02108~^~N~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pColorBlendState is not NULL, the blendEnable member of each element of the pAttachment member of pColorBlendState must be VK_FALSE if the format of the attachment referred to in subpass of renderPass does not support color blend operations, as specified by the VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT flag in VkFormatProperties::linearTilingFeatures or VkFormatProperties::optimalTilingFeatures returned by vkGetPhysicalDeviceFormatProperties' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)~^~
-VALIDATION_ERROR_02109~^~Y~^~NumBlendAttachMismatch~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pColorBlendState is not NULL, The attachmentCount member of pColorBlendState must be equal to the colorAttachmentCount used to create subpass' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)~^~
+VALIDATION_ERROR_02106~^~N~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If rasterization is not disabled and subpass uses a depth/stencil attachment in renderpass that has a layout of VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL in the VkAttachmentReference defined by subpass, the depthWriteEnable member of pDepthStencilState must be VK_FALSE' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)~^~
+VALIDATION_ERROR_02107~^~N~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If rasterization is not disabled and subpass uses a depth/stencil attachment in renderpass that has a layout of VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL in the VkAttachmentReference defined by subpass, the failOp, passOp and depthFailOp members of each of the front and back members of pDepthStencilState must be VK_STENCIL_OP_KEEP' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)~^~
+VALIDATION_ERROR_02108~^~N~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If rasterization is not disabled and the subpass uses color attachments, then for each color attachment in the subpass the blendEnable member of the corresponding element of the pAttachment member of pColorBlendState must be VK_FALSE if the format of the attachment does not support color blend operations, as specified by the VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT flag in VkFormatProperties::linearTilingFeatures or VkFormatProperties::optimalTilingFeatures returned by vkGetPhysicalDeviceFormatProperties' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)~^~
+VALIDATION_ERROR_02109~^~Y~^~NumBlendAttachMismatch~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If rasterization is not disabled and the subpass uses color attachments, the attachmentCount member of pColorBlendState must be equal to the colorAttachmentCount used to create subpass' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)~^~
VALIDATION_ERROR_02110~^~Y~^~PSOViewportCountWithoutDataAndDynScissorMismatch~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If no element of the pDynamicStates member of pDynamicState is VK_DYNAMIC_STATE_VIEWPORT, the pViewports member of pViewportState must be a pointer to an array of pViewportState::viewportCount VkViewport structures' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)~^~
VALIDATION_ERROR_02111~^~Y~^~PSOScissorCountWithoutDataAndDynViewportMismatch~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If no element of the pDynamicStates member of pDynamicState is VK_DYNAMIC_STATE_SCISSOR, the pScissors member of pViewportState must be a pointer to an array of pViewportState::scissorCount VkRect2D structures' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)~^~
VALIDATION_ERROR_02112~^~N~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If the wide lines feature is not enabled, and no element of the pDynamicStates member of pDynamicState is VK_DYNAMIC_STATE_LINE_WIDTH, the lineWidth member of pRasterizationState must be 1.0' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)~^~
VALIDATION_ERROR_02136~^~N~^~Unknown~^~vkCreateImage~^~For more information refer to Vulkan Spec Section '11.3. Images' which states 'If usage includes VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT, or VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, extent.width must be less than or equal to VkPhysicalDeviceLimits::maxFramebufferWidth' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageCreateInfo)~^~
VALIDATION_ERROR_02137~^~N~^~Unknown~^~vkCreateImage~^~For more information refer to Vulkan Spec Section '11.3. Images' which states 'If usage includes VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT, or VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, extent.height must be less than or equal to VkPhysicalDeviceLimits::maxFramebufferHeight' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageCreateInfo)~^~
VALIDATION_ERROR_02138~^~Y~^~Unknown~^~vkCreateImage~^~For more information refer to Vulkan Spec Section '11.3. Images' which states 'samples must be a bit value that is set in VkImageFormatProperties::sampleCounts returned by vkGetPhysicalDeviceImageFormatProperties with format, type, tiling, usage, and flags equal to those in this structure' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageCreateInfo)~^~
-VALIDATION_ERROR_02139~^~N~^~Unknown~^~vkCreateImage~^~For more information refer to Vulkan Spec Section '11.3. Images' which states 'If the ETC2 texture compression feature is not enabled, format must not be VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK, VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK, VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK, VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK, VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK, VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK, VK_FORMAT_EAC_R11_UNORM_BLOCK, VK_FORMAT_EAC_R11_SNORM_BLOCK, VK_FORMAT_EAC_R11G11_UNORM_BLOCK, or VK_FORMAT_EAC_R11G11_SNORM_BLOCK' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageCreateInfo)~^~
-VALIDATION_ERROR_02140~^~N~^~Unknown~^~vkCreateImage~^~For more information refer to Vulkan Spec Section '11.3. Images' which states 'If the ASTC LDR texture compression feature is not enabled, format must not be VK_FORMAT_ASTC_4x4_UNORM_BLOCK, VK_FORMAT_ASTC_4x4_SRGB_BLOCK, VK_FORMAT_ASTC_5x4_UNORM_BLOCK, VK_FORMAT_ASTC_5x4_SRGB_BLOCK, VK_FORMAT_ASTC_5x5_UNORM_BLOCK, VK_FORMAT_ASTC_5x5_SRGB_BLOCK, VK_FORMAT_ASTC_6x5_UNORM_BLOCK, VK_FORMAT_ASTC_6x5_SRGB_BLOCK, VK_FORMAT_ASTC_6x6_UNORM_BLOCK, VK_FORMAT_ASTC_6x6_SRGB_BLOCK, VK_FORMAT_ASTC_8x5_UNORM_BLOCK, VK_FORMAT_ASTC_8x5_SRGB_BLOCK, VK_FORMAT_ASTC_8x6_UNORM_BLOCK, VK_FORMAT_ASTC_8x6_SRGB_BLOCK, VK_FORMAT_ASTC_8x8_UNORM_BLOCK, VK_FORMAT_ASTC_8x8_SRGB_BLOCK, VK_FORMAT_ASTC_10x5_UNORM_BLOCK, VK_FORMAT_ASTC_10x5_SRGB_BLOCK, VK_FORMAT_ASTC_10x6_UNORM_BLOCK, VK_FORMAT_ASTC_10x6_SRGB_BLOCK, VK_FORMAT_ASTC_10x8_UNORM_BLOCK, VK_FORMAT_ASTC_10x8_SRGB_BLOCK, VK_FORMAT_ASTC_10x10_UNORM_BLOCK, VK_FORMAT_ASTC_10x10_SRGB_BLOCK, VK_FORMAT_ASTC_12x10_UNORM_BLOCK, VK_FORMAT_ASTC_12x10_SRGB_BLOCK, VK_FORMAT_ASTC_12x12_UNORM_BLOCK, or VK_FORMAT_ASTC_12x12_SRGB_BLOCK' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageCreateInfo)~^~
-VALIDATION_ERROR_02141~^~N~^~Unknown~^~vkCreateImage~^~For more information refer to Vulkan Spec Section '11.3. Images' which states 'If the BC texture compression feature is not enabled, format must not be VK_FORMAT_BC1_RGB_UNORM_BLOCK, VK_FORMAT_BC1_RGB_SRGB_BLOCK, VK_FORMAT_BC1_RGBA_UNORM_BLOCK, VK_FORMAT_BC1_RGBA_SRGB_BLOCK, VK_FORMAT_BC2_UNORM_BLOCK, VK_FORMAT_BC2_SRGB_BLOCK, VK_FORMAT_BC3_UNORM_BLOCK, VK_FORMAT_BC3_SRGB_BLOCK, VK_FORMAT_BC4_UNORM_BLOCK, VK_FORMAT_BC4_SNORM_BLOCK, VK_FORMAT_BC5_UNORM_BLOCK, VK_FORMAT_BC5_SNORM_BLOCK, VK_FORMAT_BC6H_UFLOAT_BLOCK, VK_FORMAT_BC6H_SFLOAT_BLOCK, VK_FORMAT_BC7_UNORM_BLOCK, or VK_FORMAT_BC7_SRGB_BLOCK' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageCreateInfo)~^~
VALIDATION_ERROR_02142~^~N~^~Unknown~^~vkCreateImage~^~For more information refer to Vulkan Spec Section '11.3. Images' which states 'If the multisampled storage images feature is not enabled, and usage contains VK_IMAGE_USAGE_STORAGE_BIT, samples must be VK_SAMPLE_COUNT_1_BIT' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageCreateInfo)~^~
VALIDATION_ERROR_02143~^~Y~^~None~^~vkCreateImage~^~For more information refer to Vulkan Spec Section '11.3. Images' which states 'If the sparse bindings feature is not enabled, flags must not contain VK_IMAGE_CREATE_SPARSE_BINDING_BIT' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageCreateInfo)~^~
VALIDATION_ERROR_02144~^~Y~^~SparseResidencyImageCreateUnsupportedTypes~^~vkCreateImage~^~For more information refer to Vulkan Spec Section '11.3. Images' which states 'If the sparse residency for 2D images feature is not enabled, and imageType is VK_IMAGE_TYPE_2D, flags must not contain VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageCreateInfo)~^~
VALIDATION_ERROR_02816~^~N~^~Unknown~^~vkCreateShaderModule~^~For more information refer to Vulkan Spec Section '8.1. Shader Modules' which states 'codeSize must be a multiple of 4 unless the VK_NV_glsl_shader extension is enabled, and pCode references GLSL code, codeSize can be a multiple of 1' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkShaderModuleCreateInfo)~^~
VALIDATION_ERROR_02817~^~N~^~Unknown~^~vkCreateShaderModule~^~For more information refer to Vulkan Spec Section '8.1. Shader Modules' which states 'pCode must point to valid SPIR-V code, formatted and packed as described by the Khronos SPIR-V Specification or, if the VK_NV_glsl_shader extension is enabled, pCode can instead reference valid GLSL code which must be written to the GL_KHR_vulkan_glsl extension specification' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkShaderModuleCreateInfo)~^~
VALIDATION_ERROR_02818~^~N~^~Unknown~^~vkCreateShaderModule~^~For more information refer to Vulkan Spec Section '8.1. Shader Modules' which states 'pCode must adhere to the validation rules described by the Validation Rules within a Module section of the SPIR-V Environment appendix or, if the VK_NV_glsl_shader extension is enabled, pCode can be valid GLSL code written to the GL_KHR_vulkan_glsl GLSL extension specification' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkShaderModuleCreateInfo)~^~
-VALIDATION_ERROR_02819~^~N~^~Unknown~^~vkCreateShaderModule~^~For more information refer to Vulkan Spec Section '8.1. Shader Modules' which states 'pCode must be a pointer to an array of codeSize4codeSize /over 44codeSize uint32_t values' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkShaderModuleCreateInfo)~^~implicit
+VALIDATION_ERROR_02819~^~N~^~Unknown~^~vkCreateShaderModule~^~For more information refer to Vulkan Spec Section '8.1. Shader Modules' which states 'pCode must be a pointer to an array of /(codeSize /over 4/) uint32_t values' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkShaderModuleCreateInfo)~^~implicit
VALIDATION_ERROR_02820~^~N~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If the renderPass has multiview enabled and subpass has more than one bit set in the view mask and multiviewTessellationShader is not enabled, then pStages must not include tessellation shaders.' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)~^~
VALIDATION_ERROR_02821~^~N~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If the renderPass has multiview enabled and subpass has more than one bit set in the view mask and multiviewGeometryShader is not enabled, then pStages must not include a geometry shader.' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)~^~
VALIDATION_ERROR_02822~^~N~^~Unknown~^~vkCreateGraphicsPipelines~^~For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If the renderPass has multiview enabled and subpass has more than one bit set in the view mask, shaders in the pipeline must not write to the Layer built-in output' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)~^~
VALIDATION_ERROR_02953~^~N~^~Unknown~^~vkBindImageMemory2KHX~^~For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'If SFRRectCount is not zero, then image must have been created with the VK_IMAGE_CREATE_BIND_SFR_BIT_KHX bit set.' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBindImageMemoryInfoKHX)~^~
VALIDATION_ERROR_02954~^~N~^~Unknown~^~vkBindImageMemory2KHX~^~For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'All elements of pSFRRects must be valid rectangles contained within the dimensions of the image' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBindImageMemoryInfoKHX)~^~
VALIDATION_ERROR_02955~^~N~^~Unknown~^~vkBindImageMemory2KHX~^~For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'Elements of pSFRRects that correspond to the same instance of the image must not overlap and their union must cover the entire image.' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBindImageMemoryInfoKHX)~^~
-VALIDATION_ERROR_02956~^~N~^~Unknown~^~vkBindImageMemory2KHX~^~For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'For each element of pSFRRects: offset.x must be a multiple of the sparse image block width (VkSparseImageFormatProperties::imageGranularity.width) of the image extent.width must either be a multiple of the sparse image block width of the image, or else extent.width + offset.x must equal the width of the image subresource offset.y must be a multiple of the sparse image block height (VkSparseImageFormatProperties::imageGranularity.height) of the image extent.height must either be a multiple of the sparse image block height of the image, or else extent.height + offset.y must equal the height of the image subresource' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBindImageMemoryInfoKHX)~^~
-VALIDATION_ERROR_02957~^~N~^~Unknown~^~vkBindImageMemory2KHX~^~For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'offset.x must be a multiple of the sparse image block width (VkSparseImageFormatProperties::imageGranularity.width) of the image' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBindImageMemoryInfoKHX)~^~
-VALIDATION_ERROR_02958~^~N~^~Unknown~^~vkBindImageMemory2KHX~^~For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'extent.width must either be a multiple of the sparse image block width of the image, or else extent.width + offset.x must equal the width of the image subresource' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBindImageMemoryInfoKHX)~^~
-VALIDATION_ERROR_02959~^~N~^~Unknown~^~vkBindImageMemory2KHX~^~For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'offset.y must be a multiple of the sparse image block height (VkSparseImageFormatProperties::imageGranularity.height) of the image' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBindImageMemoryInfoKHX)~^~
-VALIDATION_ERROR_02960~^~N~^~Unknown~^~vkBindImageMemory2KHX~^~For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'extent.height must either be a multiple of the sparse image block height of the image, or else extent.height + offset.y must equal the height of the image subresource' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBindImageMemoryInfoKHX)~^~
+VALIDATION_ERROR_02956~^~N~^~Unknown~^~vkBindImageMemory2KHX~^~For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'For each element of pSFRRects: offset.x must be a multiple of the sparse image block width (VkSparseImageFormatProperties::imageGranularity.width) of all non-metadata aspects of the image extent.width must either be a multiple of the sparse image block width of all non-metadata aspects of the image, or else extent.width + offset.x must equal the width of the image subresource offset.y must be a multiple of the sparse image block height (VkSparseImageFormatProperties::imageGranularity.height) of all non-metadata aspects of the image extent.height must either be a multiple of the sparse image block height of all non-metadata aspects of the image, or else extent.height + offset.y must equal the height of the image subresource' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBindImageMemoryInfoKHX)~^~
+VALIDATION_ERROR_02957~^~N~^~Unknown~^~vkBindImageMemory2KHX~^~For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'offset.x must be a multiple of the sparse image block width (VkSparseImageFormatProperties::imageGranularity.width) of all non-metadata aspects of the image' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBindImageMemoryInfoKHX)~^~
+VALIDATION_ERROR_02958~^~N~^~Unknown~^~vkBindImageMemory2KHX~^~For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'extent.width must either be a multiple of the sparse image block width of all non-metadata aspects of the image, or else extent.width + offset.x must equal the width of the image subresource' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBindImageMemoryInfoKHX)~^~
+VALIDATION_ERROR_02959~^~N~^~Unknown~^~vkBindImageMemory2KHX~^~For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'offset.y must be a multiple of the sparse image block height (VkSparseImageFormatProperties::imageGranularity.height) of all non-metadata aspects of the image' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBindImageMemoryInfoKHX)~^~
+VALIDATION_ERROR_02960~^~N~^~Unknown~^~vkBindImageMemory2KHX~^~For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'extent.height must either be a multiple of the sparse image block height of all non-metadata aspects of the image, or else extent.height + offset.y must equal the height of the image subresource' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBindImageMemoryInfoKHX)~^~
VALIDATION_ERROR_02961~^~N~^~Unknown~^~vkBindImageMemory2KHX~^~For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'All instances of memory that are bound must have been allocated' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBindImageMemoryInfoKHX)~^~
VALIDATION_ERROR_02962~^~N~^~Unknown~^~vkBindImageMemory2KHX~^~For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'If image was created with a valid swapchain handle in VkImageSwapchainCreateInfoKHX::swapchain, then the image must be bound to memory from that swapchain (using VkBindImageMemorySwapchainInfoKHX).' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBindImageMemoryInfoKHX)~^~
VALIDATION_ERROR_02963~^~N~^~Unknown~^~vkBindImageMemory2KHX~^~For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'sType must be VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHX' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBindImageMemoryInfoKHX)~^~implicit
VALIDATION_ERROR_03101~^~N~^~Unknown~^~vkCmdSetViewportWScalingNV~^~For more information refer to Vulkan Spec Section '23.7. Controlling the Viewport' which states 'scissorCount must be greater than 0' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineViewportStateCreateInfo)~^~implicit
VALIDATION_ERROR_03102~^~N~^~Unknown~^~vkCmdSetViewport~^~For more information refer to Vulkan Spec Section '24. Rasterization' which states 'pNext must be NULL or a pointer to a valid instance of VkPipelineRasterizationStateRasterizationOrderAMD' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineRasterizationStateCreateInfo)~^~implicit
VALIDATION_ERROR_03103~^~N~^~Unknown~^~vkCmdSetViewport~^~For more information refer to Vulkan Spec Section '24. Rasterization' which states 'flags must be 0' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineRasterizationStateCreateInfo)~^~implicit
-VALIDATION_ERROR_03104~^~N~^~Unknown~^~vkCmdSetViewport~^~For more information refer to Vulkan Spec Section '24. Rasterization' which states 'If pSampleMask is not NULL, pSampleMask must be a pointer to an array of rasterizationSamples32/lceil{/mathit{rasterizationSamples} /over 32}/rceil32rasterizationSamples VkSampleMask values' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineMultisampleStateCreateInfo)~^~implicit
+VALIDATION_ERROR_03104~^~N~^~Unknown~^~vkCmdSetViewport~^~For more information refer to Vulkan Spec Section '24. Rasterization' which states 'If pSampleMask is not NULL, pSampleMask must be a pointer to an array of /(/lceil{/mathit{rasterizationSamples} /over 32}/rceil/) VkSampleMask values' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineMultisampleStateCreateInfo)~^~implicit
VALIDATION_ERROR_03105~^~N~^~Unknown~^~vkCmdSetDepthBias~^~For more information refer to Vulkan Spec Section '25.2. Discard Rectangles Test' which states 'discardRectangleCount must be between 0 and VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles, inclusive' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineDiscardRectangleStateCreateInfoEXT)~^~
VALIDATION_ERROR_03106~^~N~^~Unknown~^~vkCmdSetDepthBias~^~For more information refer to Vulkan Spec Section '25.2. Discard Rectangles Test' which states 'sType must be VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineDiscardRectangleStateCreateInfoEXT)~^~implicit
VALIDATION_ERROR_03107~^~N~^~Unknown~^~vkCmdSetDepthBias~^~For more information refer to Vulkan Spec Section '25.2. Discard Rectangles Test' which states 'pNext must be NULL' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineDiscardRectangleStateCreateInfoEXT)~^~implicit
VALIDATION_ERROR_03200~^~N~^~Unknown~^~vkAcquireNextImage2KHX~^~For more information refer to Vulkan Spec Section '30.8. WSI Swapchain' which states 'If semaphore is not VK_NULL_HANDLE, semaphore must be a valid VkSemaphore handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkAcquireNextImageInfoKHX)~^~implicit
VALIDATION_ERROR_03201~^~N~^~Unknown~^~vkAcquireNextImage2KHX~^~For more information refer to Vulkan Spec Section '30.8. WSI Swapchain' which states 'If fence is not VK_NULL_HANDLE, fence must be a valid VkFence handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkAcquireNextImageInfoKHX)~^~implicit
VALIDATION_ERROR_03202~^~N~^~Unknown~^~vkQueuePresentKHR~^~For more information refer to Vulkan Spec Section '30.8. WSI Swapchain' which states 'All elements of the pWaitSemaphores member of pPresentInfo must be semaphores that are signaled, or have semaphore signal operations previously submitted for execution.' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkQueuePresentKHR)~^~
-VALIDATION_ERROR_03203~^~N~^~Unknown~^~vkQueuePresentKHR~^~For more information refer to Vulkan Spec Section '30.8. WSI Swapchain' which states 'Each pNext member of any structure (including this one) in the pNext chain must be either NULL or a pointer to a valid instance of VkDisplayPresentInfoKHR, VkDeviceGroupPresentInfoKHX, or VkPresentTimesInfoGOOGLE' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPresentInfoKHR)~^~implicit
+VALIDATION_ERROR_03203~^~N~^~Unknown~^~vkQueuePresentKHR~^~For more information refer to Vulkan Spec Section '30.8. WSI Swapchain' which states 'Each pNext member of any structure (including this one) in the pNext chain must be either NULL or a pointer to a valid instance of VkDisplayPresentInfoKHR, VkPresentRegionsKHR, VkDeviceGroupPresentInfoKHX, or VkPresentTimesInfoGOOGLE' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPresentInfoKHR)~^~implicit
VALIDATION_ERROR_03204~^~N~^~Unknown~^~vkQueuePresentKHR~^~For more information refer to Vulkan Spec Section '30.8. WSI Swapchain' which states 'swapchainCount must equal 0 or VkPresentInfoKHR::swapchainCount' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkDeviceGroupPresentInfoKHX)~^~
VALIDATION_ERROR_03205~^~N~^~Unknown~^~vkQueuePresentKHR~^~For more information refer to Vulkan Spec Section '30.8. WSI Swapchain' which states 'If mode is VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX, then each element of pDeviceMasks must have exactly one bit set, and the corresponding element of VkDeviceGroupPresentCapabilitiesKHX::presentMask must be non-zero' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkDeviceGroupPresentInfoKHX)~^~
VALIDATION_ERROR_03206~^~N~^~Unknown~^~vkQueuePresentKHR~^~For more information refer to Vulkan Spec Section '30.8. WSI Swapchain' which states 'If mode is VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX, then each element of pDeviceMasks must have exactly one bit set, and some physical device in the logical device must include that bit in its VkDeviceGroupPresentCapabilitiesKHX::presentMask.' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkDeviceGroupPresentInfoKHX)~^~
VALIDATION_ERROR_03219~^~N~^~Unknown~^~vkSetHdrMetadataEXT~^~For more information refer to Vulkan Spec Section '30.9. Hdr Metadata' which states 'pSwapchains must be a pointer to an array of swapchainCount valid VkSwapchainKHR handles' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkSetHdrMetadataEXT)~^~implicit
VALIDATION_ERROR_03220~^~N~^~Unknown~^~vkSetHdrMetadataEXT~^~For more information refer to Vulkan Spec Section '30.9. Hdr Metadata' which states 'pMetadata must be a pointer to an array of swapchainCount valid VkHdrMetadataEXT structures' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkSetHdrMetadataEXT)~^~implicit
VALIDATION_ERROR_03221~^~N~^~Unknown~^~vkSetHdrMetadataEXT~^~For more information refer to Vulkan Spec Section '30.9. Hdr Metadata' which states 'swapchainCount must be greater than 0' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkSetHdrMetadataEXT)~^~implicit
-VALIDATION_ERROR_03222~^~N~^~Unknown~^~vkGetPhysicalDeviceFeatures2KHR~^~For more information refer to Vulkan Spec Section '32.1. Features' which states 'sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_KHR' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPhysicalDeviceFeatures2KHR)~^~implicit
+VALIDATION_ERROR_03222~^~N~^~Unknown~^~vkGetPhysicalDeviceFeatures2KHR~^~For more information refer to Vulkan Spec Section '32.1. Features' which states 'sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPhysicalDeviceFeatures2KHR)~^~implicit
VALIDATION_ERROR_03223~^~N~^~Unknown~^~vkGetPhysicalDeviceFeatures2KHR~^~For more information refer to Vulkan Spec Section '32.1. Features' which states 'pNext must be NULL or a pointer to a valid instance of VkPhysicalDeviceMultiviewFeaturesKHX' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPhysicalDeviceFeatures2KHR)~^~implicit
VALIDATION_ERROR_03224~^~N~^~Unknown~^~vkGetPhysicalDeviceFeatures2KHR~^~For more information refer to Vulkan Spec Section '32.1. Features' which states 'If multiviewGeometryShader is enabled then multiview must also be enabled.' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-multiview-tess)~^~
VALIDATION_ERROR_03225~^~N~^~Unknown~^~vkGetPhysicalDeviceFeatures2KHR~^~For more information refer to Vulkan Spec Section '32.1. Features' which states 'If multiviewTessellationShader is enabled then multiview must also be enabled.' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-multiview-tess)~^~
VALIDATION_ERROR_03246~^~N~^~Unknown~^~vkGetPhysicalDeviceExternalSemaphorePropertiesKHX~^~For more information refer to Vulkan Spec Section '32.6. Optional Semaphore Capabilities' which states 'pNext must be NULL' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkExternalSemaphoreHandleTypeFlagBitsKHX)~^~implicit
VALIDATION_ERROR_03247~^~N~^~Unknown~^~vkGetPhysicalDeviceExternalSemaphorePropertiesKHX~^~For more information refer to Vulkan Spec Section '32.6. Optional Semaphore Capabilities' which states 'handleType must be a valid VkExternalSemaphoreHandleTypeFlagBitsKHX value' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkExternalSemaphoreHandleTypeFlagBitsKHX)~^~implicit
VALIDATION_ERROR_03248~^~N~^~Unknown~^~vkCmdDebugMarkerEndEXT~^~For more information refer to Vulkan Spec Section '33.1.2. Command Buffer Markers' which states 'If commandBuffer is a secondary command buffer, there must be an outstanding vkCmdDebugMarkerBeginEXT command recorded to commandBuffer that has not previously been ended by a call to vkCmdDebugMarkerEndEXT.' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdDebugMarkerEndEXT)~^~
+VALIDATION_ERROR_03249~^~N~^~Unknown~^~vkCreateDevice~^~For more information refer to Vulkan Spec Section '4.2.1. Device Creation' which states 'Each sType member in the pNext chain must be unique' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkDeviceCreateInfo)~^~implicit
+VALIDATION_ERROR_03250~^~N~^~Unknown~^~vkQueueSubmit~^~For more information refer to Vulkan Spec Section '5.5. Command Buffer Submission' which states 'Each sType member in the pNext chain must be unique' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkSubmitInfo)~^~implicit
+VALIDATION_ERROR_03251~^~N~^~Unknown~^~vkAllocateMemory~^~For more information refer to Vulkan Spec Section '10.2. Device Memory' which states 'Each sType member in the pNext chain must be unique' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkMemoryAllocateInfo)~^~implicit
+VALIDATION_ERROR_03252~^~N~^~Unknown~^~vkCreateImage~^~For more information refer to Vulkan Spec Section '11.3. Images' which states 'Each sType member in the pNext chain must be unique' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageCreateInfo)~^~implicit
+VALIDATION_ERROR_03253~^~N~^~Unknown~^~vkUpdateDescriptorSets~^~For more information refer to Vulkan Spec Section '13.2.4. Descriptor Set Updates' which states 'If descriptorType is VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE or VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, the imageView member of any given element of pImageInfo must have been created with VK_IMAGE_USAGE_SAMPLED_BIT set' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkWriteDescriptorSet)~^~
+VALIDATION_ERROR_03254~^~N~^~Unknown~^~vkUpdateDescriptorSets~^~For more information refer to Vulkan Spec Section '13.2.4. Descriptor Set Updates' which states 'If descriptorType is VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, the imageView member of any given element of pImageInfo must have been created with VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT set' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkWriteDescriptorSet)~^~
+VALIDATION_ERROR_03255~^~N~^~Unknown~^~vkUpdateDescriptorSets~^~For more information refer to Vulkan Spec Section '13.2.4. Descriptor Set Updates' which states 'If descriptorType is VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, the imageView member of any given element of pImageInfo must have been created with VK_IMAGE_USAGE_STORAGE_BIT set' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkWriteDescriptorSet)~^~
+VALIDATION_ERROR_03256~^~N~^~Unknown~^~vkQueuePresentKHR~^~For more information refer to Vulkan Spec Section '30.8. WSI Swapchain' which states 'Each sType member in the pNext chain must be unique' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPresentInfoKHR)~^~implicit
+VALIDATION_ERROR_03257~^~N~^~Unknown~^~vkQueuePresentKHR~^~For more information refer to Vulkan Spec Section '30.8. WSI Swapchain' which states 'swapchainCount must be the same value as VkPresentInfoKHR::swapchainCount, where VkPresentInfoKHR is in the pNext-chain of this VkPresentRegionsKHR structure.' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPresentRegionsKHR)~^~
+VALIDATION_ERROR_03258~^~N~^~Unknown~^~vkQueuePresentKHR~^~For more information refer to Vulkan Spec Section '30.8. WSI Swapchain' which states 'sType must be VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPresentRegionsKHR)~^~implicit
+VALIDATION_ERROR_03259~^~N~^~Unknown~^~vkQueuePresentKHR~^~For more information refer to Vulkan Spec Section '30.8. WSI Swapchain' which states 'If pRegions is not NULL, pRegions must be a pointer to an array of swapchainCount valid VkPresentRegionKHR structures' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPresentRegionsKHR)~^~implicit
+VALIDATION_ERROR_03260~^~N~^~Unknown~^~vkQueuePresentKHR~^~For more information refer to Vulkan Spec Section '30.8. WSI Swapchain' which states 'If rectangleCount is not 0, and pRectangles is not NULL, pRectangles must be a pointer to an array of rectangleCount VkRectLayerKHR structures' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPresentRegionKHR)~^~implicit
+VALIDATION_ERROR_03261~^~N~^~Unknown~^~vkQueuePresentKHR~^~For more information refer to Vulkan Spec Section '30.8. WSI Swapchain' which states 'The sum of offset and extent must be no greater than the imageExtent member of the VkSwapchainCreateInfoKHR structure given to vkCreateSwapchainKHR.' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkRectLayerKHR)~^~
+VALIDATION_ERROR_03262~^~N~^~Unknown~^~vkQueuePresentKHR~^~For more information refer to Vulkan Spec Section '30.8. WSI Swapchain' which states 'layer must be less than imageArrayLayers member of the VkSwapchainCreateInfoKHR structure given to vkCreateSwapchainKHR.' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkRectLayerKHR)~^~
VALIDATION_ERROR_00753 = 753,
VALIDATION_ERROR_00754 = 754,
VALIDATION_ERROR_00755 = 755,
- VALIDATION_ERROR_00756 = 756,
- VALIDATION_ERROR_00757 = 757,
- VALIDATION_ERROR_00758 = 758,
VALIDATION_ERROR_00759 = 759,
VALIDATION_ERROR_00760 = 760,
VALIDATION_ERROR_00761 = 761,
VALIDATION_ERROR_02136 = 2136,
VALIDATION_ERROR_02137 = 2137,
VALIDATION_ERROR_02138 = 2138,
- VALIDATION_ERROR_02139 = 2139,
- VALIDATION_ERROR_02140 = 2140,
- VALIDATION_ERROR_02141 = 2141,
VALIDATION_ERROR_02142 = 2142,
VALIDATION_ERROR_02143 = 2143,
VALIDATION_ERROR_02144 = 2144,
VALIDATION_ERROR_03246 = 3246,
VALIDATION_ERROR_03247 = 3247,
VALIDATION_ERROR_03248 = 3248,
- VALIDATION_ERROR_MAX_ENUM = 3249,
+ VALIDATION_ERROR_03249 = 3249,
+ VALIDATION_ERROR_03250 = 3250,
+ VALIDATION_ERROR_03251 = 3251,
+ VALIDATION_ERROR_03252 = 3252,
+ VALIDATION_ERROR_03253 = 3253,
+ VALIDATION_ERROR_03254 = 3254,
+ VALIDATION_ERROR_03255 = 3255,
+ VALIDATION_ERROR_03256 = 3256,
+ VALIDATION_ERROR_03257 = 3257,
+ VALIDATION_ERROR_03258 = 3258,
+ VALIDATION_ERROR_03259 = 3259,
+ VALIDATION_ERROR_03260 = 3260,
+ VALIDATION_ERROR_03261 = 3261,
+ VALIDATION_ERROR_03262 = 3262,
+ VALIDATION_ERROR_MAX_ENUM = 3263,
};
// Mapping from unique validation error enum to the corresponding error message
{VALIDATION_ERROR_00372, "For more information refer to Vulkan Spec Section '7.1. Render Pass Creation' which states 'srcSubpass must be less than or equal to dstSubpass, unless one of them is VK_SUBPASS_EXTERNAL, to avoid cyclic dependencies and ensure a valid execution order' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkSubpassDependency)"},
{VALIDATION_ERROR_00373, "For more information refer to Vulkan Spec Section '7.1. Render Pass Creation' which states 'srcSubpass and dstSubpass must not both be equal to VK_SUBPASS_EXTERNAL' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkSubpassDependency)"},
{VALIDATION_ERROR_00374, "For more information refer to Vulkan Spec Section '7.1. Render Pass Creation' which states 'If srcSubpass is equal to dstSubpass, srcStageMask and dstStageMask must only contain one of VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT, VK_PIPELINE_STAGE_VERTEX_INPUT_BIT, VK_PIPELINE_STAGE_VERTEX_SHADER_BIT, VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT, VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT, VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT, VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT, VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT, or VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkSubpassDependency)"},
- {VALIDATION_ERROR_00375, "For more information refer to Vulkan Spec Section '7.1. Render Pass Creation' which states 'If srcSubpass is equal to dstSubpass, the logically latest pipeline stage in srcStageMask must be logically earlier than or equal to the logically earliest pipeline stage in dstStageMask' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkSubpassDependency)"},
+ {VALIDATION_ERROR_00375, "For more information refer to Vulkan Spec Section '7.1. Render Pass Creation' which states 'If srcSubpass is equal to dstSubpass and not all of the stages in srcStageMask and dstStageMask are framebuffer-space stages, the logically latest pipeline stage in srcStageMask must be logically earlier than or equal to the logically earliest pipeline stage in dstStageMask' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkSubpassDependency)"},
{VALIDATION_ERROR_00376, "For more information refer to Vulkan Spec Section '7.1. Render Pass Creation' which states 'srcStageMask must be a valid combination of VkPipelineStageFlagBits values' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkSubpassDependency)"},
{VALIDATION_ERROR_00377, "For more information refer to Vulkan Spec Section '7.1. Render Pass Creation' which states 'srcStageMask must not be 0' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkSubpassDependency)"},
{VALIDATION_ERROR_00378, "For more information refer to Vulkan Spec Section '7.1. Render Pass Creation' which states 'dstStageMask must be a valid combination of VkPipelineStageFlagBits values' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkSubpassDependency)"},
{VALIDATION_ERROR_00533, "For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'The stage member of any given element of pStages must not be VK_SHADER_STAGE_COMPUTE_BIT' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)"},
{VALIDATION_ERROR_00534, "For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pStages includes a tessellation control shader stage, it must include a tessellation evaluation shader stage' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)"},
{VALIDATION_ERROR_00535, "For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pStages includes a tessellation evaluation shader stage, it must include a tessellation control shader stage' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)"},
- {VALIDATION_ERROR_00536, "For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pStages includes a tessellation control shader stage and a tessellation evaluation shader stage, pTessellationState must not be NULL' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)"},
+ {VALIDATION_ERROR_00536, "For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pStages includes a tessellation control shader stage and a tessellation evaluation shader stage, pTessellationState must be a pointer to a valid VkPipelineTessellationStateCreateInfo structure' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)"},
{VALIDATION_ERROR_00537, "For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pStages includes tessellation shader stages, the shader code of at least one stage must contain an OpExecutionMode instruction that specifies the type of subdivision in the pipeline' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)"},
{VALIDATION_ERROR_00538, "For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'sType must be VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)"},
{VALIDATION_ERROR_00539, "For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'pNext must be NULL' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)"},
{VALIDATION_ERROR_00753, "For more information refer to Vulkan Spec Section '11.5. Image Views' which states 'pView must be a pointer to a VkImageView handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCreateImageView)"},
{VALIDATION_ERROR_00754, "For more information refer to Vulkan Spec Section '11.5. Image Views' which states 'If image was not created with VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT then viewType must not be VK_IMAGE_VIEW_TYPE_CUBE or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageViewCreateInfo)"},
{VALIDATION_ERROR_00755, "For more information refer to Vulkan Spec Section '11.5. Image Views' which states 'If the image cubemap arrays feature is not enabled, viewType must not be VK_IMAGE_VIEW_TYPE_CUBE_ARRAY' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageViewCreateInfo)"},
- {VALIDATION_ERROR_00756, "For more information refer to Vulkan Spec Section '11.5. Image Views' which states 'If the ETC2 texture compression feature is not enabled, format must not be VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK, VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK, VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK, VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK, VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK, VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK, VK_FORMAT_EAC_R11_UNORM_BLOCK, VK_FORMAT_EAC_R11_SNORM_BLOCK, VK_FORMAT_EAC_R11G11_UNORM_BLOCK, or VK_FORMAT_EAC_R11G11_SNORM_BLOCK' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageViewCreateInfo)"},
- {VALIDATION_ERROR_00757, "For more information refer to Vulkan Spec Section '11.5. Image Views' which states 'If the ASTC LDR texture compression feature is not enabled, format must not be VK_FORMAT_ASTC_4x4_UNORM_BLOCK, VK_FORMAT_ASTC_4x4_SRGB_BLOCK, VK_FORMAT_ASTC_5x4_UNORM_BLOCK, VK_FORMAT_ASTC_5x4_SRGB_BLOCK, VK_FORMAT_ASTC_5x5_UNORM_BLOCK, VK_FORMAT_ASTC_5x5_SRGB_BLOCK, VK_FORMAT_ASTC_6x5_UNORM_BLOCK, VK_FORMAT_ASTC_6x5_SRGB_BLOCK, VK_FORMAT_ASTC_6x6_UNORM_BLOCK, VK_FORMAT_ASTC_6x6_SRGB_BLOCK, VK_FORMAT_ASTC_8x5_UNORM_BLOCK, VK_FORMAT_ASTC_8x5_SRGB_BLOCK, VK_FORMAT_ASTC_8x6_UNORM_BLOCK, VK_FORMAT_ASTC_8x6_SRGB_BLOCK, VK_FORMAT_ASTC_8x8_UNORM_BLOCK, VK_FORMAT_ASTC_8x8_SRGB_BLOCK, VK_FORMAT_ASTC_10x5_UNORM_BLOCK, VK_FORMAT_ASTC_10x5_SRGB_BLOCK, VK_FORMAT_ASTC_10x6_UNORM_BLOCK, VK_FORMAT_ASTC_10x6_SRGB_BLOCK, VK_FORMAT_ASTC_10x8_UNORM_BLOCK, VK_FORMAT_ASTC_10x8_SRGB_BLOCK, VK_FORMAT_ASTC_10x10_UNORM_BLOCK, VK_FORMAT_ASTC_10x10_SRGB_BLOCK, VK_FORMAT_ASTC_12x10_UNORM_BLOCK, VK_FORMAT_ASTC_12x10_SRGB_BLOCK, VK_FORMAT_ASTC_12x12_UNORM_BLOCK, or VK_FORMAT_ASTC_12x12_SRGB_BLOCK' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageViewCreateInfo)"},
- {VALIDATION_ERROR_00758, "For more information refer to Vulkan Spec Section '11.5. Image Views' which states 'If the BC texture compression feature is not enabled, format must not be VK_FORMAT_BC1_RGB_UNORM_BLOCK, VK_FORMAT_BC1_RGB_SRGB_BLOCK, VK_FORMAT_BC1_RGBA_UNORM_BLOCK, VK_FORMAT_BC1_RGBA_SRGB_BLOCK, VK_FORMAT_BC2_UNORM_BLOCK, VK_FORMAT_BC2_SRGB_BLOCK, VK_FORMAT_BC3_UNORM_BLOCK, VK_FORMAT_BC3_SRGB_BLOCK, VK_FORMAT_BC4_UNORM_BLOCK, VK_FORMAT_BC4_SNORM_BLOCK, VK_FORMAT_BC5_UNORM_BLOCK, VK_FORMAT_BC5_SNORM_BLOCK, VK_FORMAT_BC6H_UFLOAT_BLOCK, VK_FORMAT_BC6H_SFLOAT_BLOCK, VK_FORMAT_BC7_UNORM_BLOCK, or VK_FORMAT_BC7_SRGB_BLOCK' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageViewCreateInfo)"},
{VALIDATION_ERROR_00759, "For more information refer to Vulkan Spec Section '11.5. Image Views' which states 'If image was created with VK_IMAGE_TILING_LINEAR, format must be format that has at least one supported feature bit present in the value of VkFormatProperties::linearTilingFeatures returned by vkGetPhysicalDeviceFormatProperties with the same value of format' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageViewCreateInfo)"},
{VALIDATION_ERROR_00760, "For more information refer to Vulkan Spec Section '11.5. Image Views' which states 'sType must be VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageViewCreateInfo)"},
{VALIDATION_ERROR_00761, "For more information refer to Vulkan Spec Section '11.5. Image Views' which states 'pNext must be NULL' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageViewCreateInfo)"},
{VALIDATION_ERROR_02103, "For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pStages includes a fragment shader stage and a geometry shader stage, and the fragment shader code reads from an input variable that is decorated with PrimitiveID, then the geometry shader code must write to a matching output variable, decorated with PrimitiveID, in all execution paths' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)"},
{VALIDATION_ERROR_02104, "For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pStages includes a fragment shader stage, its shader code must not read from any input attachment that is defined as VK_ATTACHMENT_UNUSED in subpass' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)"},
{VALIDATION_ERROR_02105, "For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'The shader code for the entry points identified by pStages, and the rest of the state identified by this structure must adhere to the pipeline linking rules described in the Shader Interfaces chapter' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)"},
- {VALIDATION_ERROR_02106, "For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If subpass uses a depth/stencil attachment in renderpass that has a layout of VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL in the VkAttachmentReference defined by subpass, and pDepthStencilState is not NULL, the depthWriteEnable member of pDepthStencilState must be VK_FALSE' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)"},
- {VALIDATION_ERROR_02107, "For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If subpass uses a depth/stencil attachment in renderpass that has a layout of VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL in the VkAttachmentReference defined by subpass, and pDepthStencilState is not NULL, the failOp, passOp and depthFailOp members of each of the front and back members of pDepthStencilState must be VK_STENCIL_OP_KEEP' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)"},
- {VALIDATION_ERROR_02108, "For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pColorBlendState is not NULL, the blendEnable member of each element of the pAttachment member of pColorBlendState must be VK_FALSE if the format of the attachment referred to in subpass of renderPass does not support color blend operations, as specified by the VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT flag in VkFormatProperties::linearTilingFeatures or VkFormatProperties::optimalTilingFeatures returned by vkGetPhysicalDeviceFormatProperties' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)"},
- {VALIDATION_ERROR_02109, "For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If pColorBlendState is not NULL, The attachmentCount member of pColorBlendState must be equal to the colorAttachmentCount used to create subpass' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)"},
+ {VALIDATION_ERROR_02106, "For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If rasterization is not disabled and subpass uses a depth/stencil attachment in renderpass that has a layout of VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL in the VkAttachmentReference defined by subpass, the depthWriteEnable member of pDepthStencilState must be VK_FALSE' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)"},
+ {VALIDATION_ERROR_02107, "For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If rasterization is not disabled and subpass uses a depth/stencil attachment in renderpass that has a layout of VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL in the VkAttachmentReference defined by subpass, the failOp, passOp and depthFailOp members of each of the front and back members of pDepthStencilState must be VK_STENCIL_OP_KEEP' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)"},
+ {VALIDATION_ERROR_02108, "For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If rasterization is not disabled and the subpass uses color attachments, then for each color attachment in the subpass the blendEnable member of the corresponding element of the pAttachment member of pColorBlendState must be VK_FALSE if the format of the attachment does not support color blend operations, as specified by the VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT flag in VkFormatProperties::linearTilingFeatures or VkFormatProperties::optimalTilingFeatures returned by vkGetPhysicalDeviceFormatProperties' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)"},
+ {VALIDATION_ERROR_02109, "For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If rasterization is not disabled and the subpass uses color attachments, the attachmentCount member of pColorBlendState must be equal to the colorAttachmentCount used to create subpass' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)"},
{VALIDATION_ERROR_02110, "For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If no element of the pDynamicStates member of pDynamicState is VK_DYNAMIC_STATE_VIEWPORT, the pViewports member of pViewportState must be a pointer to an array of pViewportState::viewportCount VkViewport structures' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)"},
{VALIDATION_ERROR_02111, "For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If no element of the pDynamicStates member of pDynamicState is VK_DYNAMIC_STATE_SCISSOR, the pScissors member of pViewportState must be a pointer to an array of pViewportState::scissorCount VkRect2D structures' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)"},
{VALIDATION_ERROR_02112, "For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If the wide lines feature is not enabled, and no element of the pDynamicStates member of pDynamicState is VK_DYNAMIC_STATE_LINE_WIDTH, the lineWidth member of pRasterizationState must be 1.0' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)"},
{VALIDATION_ERROR_02136, "For more information refer to Vulkan Spec Section '11.3. Images' which states 'If usage includes VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT, or VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, extent.width must be less than or equal to VkPhysicalDeviceLimits::maxFramebufferWidth' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageCreateInfo)"},
{VALIDATION_ERROR_02137, "For more information refer to Vulkan Spec Section '11.3. Images' which states 'If usage includes VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT, or VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, extent.height must be less than or equal to VkPhysicalDeviceLimits::maxFramebufferHeight' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageCreateInfo)"},
{VALIDATION_ERROR_02138, "For more information refer to Vulkan Spec Section '11.3. Images' which states 'samples must be a bit value that is set in VkImageFormatProperties::sampleCounts returned by vkGetPhysicalDeviceImageFormatProperties with format, type, tiling, usage, and flags equal to those in this structure' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageCreateInfo)"},
- {VALIDATION_ERROR_02139, "For more information refer to Vulkan Spec Section '11.3. Images' which states 'If the ETC2 texture compression feature is not enabled, format must not be VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK, VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK, VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK, VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK, VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK, VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK, VK_FORMAT_EAC_R11_UNORM_BLOCK, VK_FORMAT_EAC_R11_SNORM_BLOCK, VK_FORMAT_EAC_R11G11_UNORM_BLOCK, or VK_FORMAT_EAC_R11G11_SNORM_BLOCK' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageCreateInfo)"},
- {VALIDATION_ERROR_02140, "For more information refer to Vulkan Spec Section '11.3. Images' which states 'If the ASTC LDR texture compression feature is not enabled, format must not be VK_FORMAT_ASTC_4x4_UNORM_BLOCK, VK_FORMAT_ASTC_4x4_SRGB_BLOCK, VK_FORMAT_ASTC_5x4_UNORM_BLOCK, VK_FORMAT_ASTC_5x4_SRGB_BLOCK, VK_FORMAT_ASTC_5x5_UNORM_BLOCK, VK_FORMAT_ASTC_5x5_SRGB_BLOCK, VK_FORMAT_ASTC_6x5_UNORM_BLOCK, VK_FORMAT_ASTC_6x5_SRGB_BLOCK, VK_FORMAT_ASTC_6x6_UNORM_BLOCK, VK_FORMAT_ASTC_6x6_SRGB_BLOCK, VK_FORMAT_ASTC_8x5_UNORM_BLOCK, VK_FORMAT_ASTC_8x5_SRGB_BLOCK, VK_FORMAT_ASTC_8x6_UNORM_BLOCK, VK_FORMAT_ASTC_8x6_SRGB_BLOCK, VK_FORMAT_ASTC_8x8_UNORM_BLOCK, VK_FORMAT_ASTC_8x8_SRGB_BLOCK, VK_FORMAT_ASTC_10x5_UNORM_BLOCK, VK_FORMAT_ASTC_10x5_SRGB_BLOCK, VK_FORMAT_ASTC_10x6_UNORM_BLOCK, VK_FORMAT_ASTC_10x6_SRGB_BLOCK, VK_FORMAT_ASTC_10x8_UNORM_BLOCK, VK_FORMAT_ASTC_10x8_SRGB_BLOCK, VK_FORMAT_ASTC_10x10_UNORM_BLOCK, VK_FORMAT_ASTC_10x10_SRGB_BLOCK, VK_FORMAT_ASTC_12x10_UNORM_BLOCK, VK_FORMAT_ASTC_12x10_SRGB_BLOCK, VK_FORMAT_ASTC_12x12_UNORM_BLOCK, or VK_FORMAT_ASTC_12x12_SRGB_BLOCK' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageCreateInfo)"},
- {VALIDATION_ERROR_02141, "For more information refer to Vulkan Spec Section '11.3. Images' which states 'If the BC texture compression feature is not enabled, format must not be VK_FORMAT_BC1_RGB_UNORM_BLOCK, VK_FORMAT_BC1_RGB_SRGB_BLOCK, VK_FORMAT_BC1_RGBA_UNORM_BLOCK, VK_FORMAT_BC1_RGBA_SRGB_BLOCK, VK_FORMAT_BC2_UNORM_BLOCK, VK_FORMAT_BC2_SRGB_BLOCK, VK_FORMAT_BC3_UNORM_BLOCK, VK_FORMAT_BC3_SRGB_BLOCK, VK_FORMAT_BC4_UNORM_BLOCK, VK_FORMAT_BC4_SNORM_BLOCK, VK_FORMAT_BC5_UNORM_BLOCK, VK_FORMAT_BC5_SNORM_BLOCK, VK_FORMAT_BC6H_UFLOAT_BLOCK, VK_FORMAT_BC6H_SFLOAT_BLOCK, VK_FORMAT_BC7_UNORM_BLOCK, or VK_FORMAT_BC7_SRGB_BLOCK' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageCreateInfo)"},
{VALIDATION_ERROR_02142, "For more information refer to Vulkan Spec Section '11.3. Images' which states 'If the multisampled storage images feature is not enabled, and usage contains VK_IMAGE_USAGE_STORAGE_BIT, samples must be VK_SAMPLE_COUNT_1_BIT' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageCreateInfo)"},
{VALIDATION_ERROR_02143, "For more information refer to Vulkan Spec Section '11.3. Images' which states 'If the sparse bindings feature is not enabled, flags must not contain VK_IMAGE_CREATE_SPARSE_BINDING_BIT' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageCreateInfo)"},
{VALIDATION_ERROR_02144, "For more information refer to Vulkan Spec Section '11.3. Images' which states 'If the sparse residency for 2D images feature is not enabled, and imageType is VK_IMAGE_TYPE_2D, flags must not contain VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageCreateInfo)"},
{VALIDATION_ERROR_02816, "For more information refer to Vulkan Spec Section '8.1. Shader Modules' which states 'codeSize must be a multiple of 4 unless the VK_NV_glsl_shader extension is enabled, and pCode references GLSL code, codeSize can be a multiple of 1' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkShaderModuleCreateInfo)"},
{VALIDATION_ERROR_02817, "For more information refer to Vulkan Spec Section '8.1. Shader Modules' which states 'pCode must point to valid SPIR-V code, formatted and packed as described by the Khronos SPIR-V Specification or, if the VK_NV_glsl_shader extension is enabled, pCode can instead reference valid GLSL code which must be written to the GL_KHR_vulkan_glsl extension specification' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkShaderModuleCreateInfo)"},
{VALIDATION_ERROR_02818, "For more information refer to Vulkan Spec Section '8.1. Shader Modules' which states 'pCode must adhere to the validation rules described by the Validation Rules within a Module section of the SPIR-V Environment appendix or, if the VK_NV_glsl_shader extension is enabled, pCode can be valid GLSL code written to the GL_KHR_vulkan_glsl GLSL extension specification' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkShaderModuleCreateInfo)"},
- {VALIDATION_ERROR_02819, "For more information refer to Vulkan Spec Section '8.1. Shader Modules' which states 'pCode must be a pointer to an array of codeSize4codeSize /over 44codeSize uint32_t values' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkShaderModuleCreateInfo)"},
+ {VALIDATION_ERROR_02819, "For more information refer to Vulkan Spec Section '8.1. Shader Modules' which states 'pCode must be a pointer to an array of /(codeSize /over 4/) uint32_t values' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkShaderModuleCreateInfo)"},
{VALIDATION_ERROR_02820, "For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If the renderPass has multiview enabled and subpass has more than one bit set in the view mask and multiviewTessellationShader is not enabled, then pStages must not include tessellation shaders.' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)"},
{VALIDATION_ERROR_02821, "For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If the renderPass has multiview enabled and subpass has more than one bit set in the view mask and multiviewGeometryShader is not enabled, then pStages must not include a geometry shader.' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)"},
{VALIDATION_ERROR_02822, "For more information refer to Vulkan Spec Section '9.2. Graphics Pipelines' which states 'If the renderPass has multiview enabled and subpass has more than one bit set in the view mask, shaders in the pipeline must not write to the Layer built-in output' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineCreateFlagBits)"},
{VALIDATION_ERROR_02953, "For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'If SFRRectCount is not zero, then image must have been created with the VK_IMAGE_CREATE_BIND_SFR_BIT_KHX bit set.' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBindImageMemoryInfoKHX)"},
{VALIDATION_ERROR_02954, "For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'All elements of pSFRRects must be valid rectangles contained within the dimensions of the image' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBindImageMemoryInfoKHX)"},
{VALIDATION_ERROR_02955, "For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'Elements of pSFRRects that correspond to the same instance of the image must not overlap and their union must cover the entire image.' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBindImageMemoryInfoKHX)"},
- {VALIDATION_ERROR_02956, "For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'For each element of pSFRRects: offset.x must be a multiple of the sparse image block width (VkSparseImageFormatProperties::imageGranularity.width) of the image extent.width must either be a multiple of the sparse image block width of the image, or else extent.width + offset.x must equal the width of the image subresource offset.y must be a multiple of the sparse image block height (VkSparseImageFormatProperties::imageGranularity.height) of the image extent.height must either be a multiple of the sparse image block height of the image, or else extent.height + offset.y must equal the height of the image subresource' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBindImageMemoryInfoKHX)"},
- {VALIDATION_ERROR_02957, "For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'offset.x must be a multiple of the sparse image block width (VkSparseImageFormatProperties::imageGranularity.width) of the image' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBindImageMemoryInfoKHX)"},
- {VALIDATION_ERROR_02958, "For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'extent.width must either be a multiple of the sparse image block width of the image, or else extent.width + offset.x must equal the width of the image subresource' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBindImageMemoryInfoKHX)"},
- {VALIDATION_ERROR_02959, "For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'offset.y must be a multiple of the sparse image block height (VkSparseImageFormatProperties::imageGranularity.height) of the image' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBindImageMemoryInfoKHX)"},
- {VALIDATION_ERROR_02960, "For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'extent.height must either be a multiple of the sparse image block height of the image, or else extent.height + offset.y must equal the height of the image subresource' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBindImageMemoryInfoKHX)"},
+ {VALIDATION_ERROR_02956, "For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'For each element of pSFRRects: offset.x must be a multiple of the sparse image block width (VkSparseImageFormatProperties::imageGranularity.width) of all non-metadata aspects of the image extent.width must either be a multiple of the sparse image block width of all non-metadata aspects of the image, or else extent.width + offset.x must equal the width of the image subresource offset.y must be a multiple of the sparse image block height (VkSparseImageFormatProperties::imageGranularity.height) of all non-metadata aspects of the image extent.height must either be a multiple of the sparse image block height of all non-metadata aspects of the image, or else extent.height + offset.y must equal the height of the image subresource' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBindImageMemoryInfoKHX)"},
+ {VALIDATION_ERROR_02957, "For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'offset.x must be a multiple of the sparse image block width (VkSparseImageFormatProperties::imageGranularity.width) of all non-metadata aspects of the image' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBindImageMemoryInfoKHX)"},
+ {VALIDATION_ERROR_02958, "For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'extent.width must either be a multiple of the sparse image block width of all non-metadata aspects of the image, or else extent.width + offset.x must equal the width of the image subresource' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBindImageMemoryInfoKHX)"},
+ {VALIDATION_ERROR_02959, "For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'offset.y must be a multiple of the sparse image block height (VkSparseImageFormatProperties::imageGranularity.height) of all non-metadata aspects of the image' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBindImageMemoryInfoKHX)"},
+ {VALIDATION_ERROR_02960, "For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'extent.height must either be a multiple of the sparse image block height of all non-metadata aspects of the image, or else extent.height + offset.y must equal the height of the image subresource' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBindImageMemoryInfoKHX)"},
{VALIDATION_ERROR_02961, "For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'All instances of memory that are bound must have been allocated' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBindImageMemoryInfoKHX)"},
{VALIDATION_ERROR_02962, "For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'If image was created with a valid swapchain handle in VkImageSwapchainCreateInfoKHX::swapchain, then the image must be bound to memory from that swapchain (using VkBindImageMemorySwapchainInfoKHX).' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBindImageMemoryInfoKHX)"},
{VALIDATION_ERROR_02963, "For more information refer to Vulkan Spec Section '11.6. Resource Memory Association' which states 'sType must be VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHX' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBindImageMemoryInfoKHX)"},
{VALIDATION_ERROR_03101, "For more information refer to Vulkan Spec Section '23.7. Controlling the Viewport' which states 'scissorCount must be greater than 0' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineViewportStateCreateInfo)"},
{VALIDATION_ERROR_03102, "For more information refer to Vulkan Spec Section '24. Rasterization' which states 'pNext must be NULL or a pointer to a valid instance of VkPipelineRasterizationStateRasterizationOrderAMD' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineRasterizationStateCreateInfo)"},
{VALIDATION_ERROR_03103, "For more information refer to Vulkan Spec Section '24. Rasterization' which states 'flags must be 0' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineRasterizationStateCreateInfo)"},
- {VALIDATION_ERROR_03104, "For more information refer to Vulkan Spec Section '24. Rasterization' which states 'If pSampleMask is not NULL, pSampleMask must be a pointer to an array of rasterizationSamples32/lceil{/mathit{rasterizationSamples} /over 32}/rceil32rasterizationSamples VkSampleMask values' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineMultisampleStateCreateInfo)"},
+ {VALIDATION_ERROR_03104, "For more information refer to Vulkan Spec Section '24. Rasterization' which states 'If pSampleMask is not NULL, pSampleMask must be a pointer to an array of /(/lceil{/mathit{rasterizationSamples} /over 32}/rceil/) VkSampleMask values' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineMultisampleStateCreateInfo)"},
{VALIDATION_ERROR_03105, "For more information refer to Vulkan Spec Section '25.2. Discard Rectangles Test' which states 'discardRectangleCount must be between 0 and VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles, inclusive' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineDiscardRectangleStateCreateInfoEXT)"},
{VALIDATION_ERROR_03106, "For more information refer to Vulkan Spec Section '25.2. Discard Rectangles Test' which states 'sType must be VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineDiscardRectangleStateCreateInfoEXT)"},
{VALIDATION_ERROR_03107, "For more information refer to Vulkan Spec Section '25.2. Discard Rectangles Test' which states 'pNext must be NULL' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPipelineDiscardRectangleStateCreateInfoEXT)"},
{VALIDATION_ERROR_03200, "For more information refer to Vulkan Spec Section '30.8. WSI Swapchain' which states 'If semaphore is not VK_NULL_HANDLE, semaphore must be a valid VkSemaphore handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkAcquireNextImageInfoKHX)"},
{VALIDATION_ERROR_03201, "For more information refer to Vulkan Spec Section '30.8. WSI Swapchain' which states 'If fence is not VK_NULL_HANDLE, fence must be a valid VkFence handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkAcquireNextImageInfoKHX)"},
{VALIDATION_ERROR_03202, "For more information refer to Vulkan Spec Section '30.8. WSI Swapchain' which states 'All elements of the pWaitSemaphores member of pPresentInfo must be semaphores that are signaled, or have semaphore signal operations previously submitted for execution.' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkQueuePresentKHR)"},
- {VALIDATION_ERROR_03203, "For more information refer to Vulkan Spec Section '30.8. WSI Swapchain' which states 'Each pNext member of any structure (including this one) in the pNext chain must be either NULL or a pointer to a valid instance of VkDisplayPresentInfoKHR, VkDeviceGroupPresentInfoKHX, or VkPresentTimesInfoGOOGLE' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPresentInfoKHR)"},
+ {VALIDATION_ERROR_03203, "For more information refer to Vulkan Spec Section '30.8. WSI Swapchain' which states 'Each pNext member of any structure (including this one) in the pNext chain must be either NULL or a pointer to a valid instance of VkDisplayPresentInfoKHR, VkPresentRegionsKHR, VkDeviceGroupPresentInfoKHX, or VkPresentTimesInfoGOOGLE' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPresentInfoKHR)"},
{VALIDATION_ERROR_03204, "For more information refer to Vulkan Spec Section '30.8. WSI Swapchain' which states 'swapchainCount must equal 0 or VkPresentInfoKHR::swapchainCount' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkDeviceGroupPresentInfoKHX)"},
{VALIDATION_ERROR_03205, "For more information refer to Vulkan Spec Section '30.8. WSI Swapchain' which states 'If mode is VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX, then each element of pDeviceMasks must have exactly one bit set, and the corresponding element of VkDeviceGroupPresentCapabilitiesKHX::presentMask must be non-zero' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkDeviceGroupPresentInfoKHX)"},
{VALIDATION_ERROR_03206, "For more information refer to Vulkan Spec Section '30.8. WSI Swapchain' which states 'If mode is VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX, then each element of pDeviceMasks must have exactly one bit set, and some physical device in the logical device must include that bit in its VkDeviceGroupPresentCapabilitiesKHX::presentMask.' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkDeviceGroupPresentInfoKHX)"},
{VALIDATION_ERROR_03219, "For more information refer to Vulkan Spec Section '30.9. Hdr Metadata' which states 'pSwapchains must be a pointer to an array of swapchainCount valid VkSwapchainKHR handles' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkSetHdrMetadataEXT)"},
{VALIDATION_ERROR_03220, "For more information refer to Vulkan Spec Section '30.9. Hdr Metadata' which states 'pMetadata must be a pointer to an array of swapchainCount valid VkHdrMetadataEXT structures' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkSetHdrMetadataEXT)"},
{VALIDATION_ERROR_03221, "For more information refer to Vulkan Spec Section '30.9. Hdr Metadata' which states 'swapchainCount must be greater than 0' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkSetHdrMetadataEXT)"},
- {VALIDATION_ERROR_03222, "For more information refer to Vulkan Spec Section '32.1. Features' which states 'sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_KHR' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPhysicalDeviceFeatures2KHR)"},
+ {VALIDATION_ERROR_03222, "For more information refer to Vulkan Spec Section '32.1. Features' which states 'sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPhysicalDeviceFeatures2KHR)"},
{VALIDATION_ERROR_03223, "For more information refer to Vulkan Spec Section '32.1. Features' which states 'pNext must be NULL or a pointer to a valid instance of VkPhysicalDeviceMultiviewFeaturesKHX' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPhysicalDeviceFeatures2KHR)"},
{VALIDATION_ERROR_03224, "For more information refer to Vulkan Spec Section '32.1. Features' which states 'If multiviewGeometryShader is enabled then multiview must also be enabled.' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-multiview-tess)"},
{VALIDATION_ERROR_03225, "For more information refer to Vulkan Spec Section '32.1. Features' which states 'If multiviewTessellationShader is enabled then multiview must also be enabled.' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-multiview-tess)"},
{VALIDATION_ERROR_03246, "For more information refer to Vulkan Spec Section '32.6. Optional Semaphore Capabilities' which states 'pNext must be NULL' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkExternalSemaphoreHandleTypeFlagBitsKHX)"},
{VALIDATION_ERROR_03247, "For more information refer to Vulkan Spec Section '32.6. Optional Semaphore Capabilities' which states 'handleType must be a valid VkExternalSemaphoreHandleTypeFlagBitsKHX value' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkExternalSemaphoreHandleTypeFlagBitsKHX)"},
{VALIDATION_ERROR_03248, "For more information refer to Vulkan Spec Section '33.1.2. Command Buffer Markers' which states 'If commandBuffer is a secondary command buffer, there must be an outstanding vkCmdDebugMarkerBeginEXT command recorded to commandBuffer that has not previously been ended by a call to vkCmdDebugMarkerEndEXT.' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdDebugMarkerEndEXT)"},
+ {VALIDATION_ERROR_03249, "For more information refer to Vulkan Spec Section '4.2.1. Device Creation' which states 'Each sType member in the pNext chain must be unique' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkDeviceCreateInfo)"},
+ {VALIDATION_ERROR_03250, "For more information refer to Vulkan Spec Section '5.5. Command Buffer Submission' which states 'Each sType member in the pNext chain must be unique' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkSubmitInfo)"},
+ {VALIDATION_ERROR_03251, "For more information refer to Vulkan Spec Section '10.2. Device Memory' which states 'Each sType member in the pNext chain must be unique' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkMemoryAllocateInfo)"},
+ {VALIDATION_ERROR_03252, "For more information refer to Vulkan Spec Section '11.3. Images' which states 'Each sType member in the pNext chain must be unique' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageCreateInfo)"},
+ {VALIDATION_ERROR_03253, "For more information refer to Vulkan Spec Section '13.2.4. Descriptor Set Updates' which states 'If descriptorType is VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE or VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, the imageView member of any given element of pImageInfo must have been created with VK_IMAGE_USAGE_SAMPLED_BIT set' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkWriteDescriptorSet)"},
+ {VALIDATION_ERROR_03254, "For more information refer to Vulkan Spec Section '13.2.4. Descriptor Set Updates' which states 'If descriptorType is VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, the imageView member of any given element of pImageInfo must have been created with VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT set' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkWriteDescriptorSet)"},
+ {VALIDATION_ERROR_03255, "For more information refer to Vulkan Spec Section '13.2.4. Descriptor Set Updates' which states 'If descriptorType is VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, the imageView member of any given element of pImageInfo must have been created with VK_IMAGE_USAGE_STORAGE_BIT set' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkWriteDescriptorSet)"},
+ {VALIDATION_ERROR_03256, "For more information refer to Vulkan Spec Section '30.8. WSI Swapchain' which states 'Each sType member in the pNext chain must be unique' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPresentInfoKHR)"},
+ {VALIDATION_ERROR_03257, "For more information refer to Vulkan Spec Section '30.8. WSI Swapchain' which states 'swapchainCount must be the same value as VkPresentInfoKHR::swapchainCount, where VkPresentInfoKHR is in the pNext-chain of this VkPresentRegionsKHR structure.' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPresentRegionsKHR)"},
+ {VALIDATION_ERROR_03258, "For more information refer to Vulkan Spec Section '30.8. WSI Swapchain' which states 'sType must be VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPresentRegionsKHR)"},
+ {VALIDATION_ERROR_03259, "For more information refer to Vulkan Spec Section '30.8. WSI Swapchain' which states 'If pRegions is not NULL, pRegions must be a pointer to an array of swapchainCount valid VkPresentRegionKHR structures' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPresentRegionsKHR)"},
+ {VALIDATION_ERROR_03260, "For more information refer to Vulkan Spec Section '30.8. WSI Swapchain' which states 'If rectangleCount is not 0, and pRectangles is not NULL, pRectangles must be a pointer to an array of rectangleCount VkRectLayerKHR structures' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkPresentRegionKHR)"},
+ {VALIDATION_ERROR_03261, "For more information refer to Vulkan Spec Section '30.8. WSI Swapchain' which states 'The sum of offset and extent must be no greater than the imageExtent member of the VkSwapchainCreateInfoKHR structure given to vkCreateSwapchainKHR.' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkRectLayerKHR)"},
+ {VALIDATION_ERROR_03262, "For more information refer to Vulkan Spec Section '30.8. WSI Swapchain' which states 'layer must be less than imageArrayLayers member of the VkSwapchainCreateInfoKHR structure given to vkCreateSwapchainKHR.' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkRectLayerKHR)"},
};