[{"data":1,"prerenderedAt":6871},["ShallowReactive",2],{"bbRmXcKopx":3,"VyF3Mmj32r":5287,"N9m89Rcq0G":5511},{"title":4,"description":5,"body":6,"_type":5285,"_id":5286},"Fundamentals","This chapter introduces fundamental concepts including the Vulkan\narchitecture and execution model, API syntax, queues, pipeline\nconfigurations, numeric representation, state and state queries, and the\ndifferent types of objects and shaders.\nIt provides a framework for interpreting more specific descriptions of\ncommands and behavior in the remainder of the Specification.",{"type":7,"children":8,"toc":5241},"root",[9,17,22,29,34,79,100,106,111,166,186,201,234,249,256,269,318,348,392,412,441,457,465,470,483,490,515,521,531,537,554,560,570,584,590,612,667,691,697,741,751,756,760,783,793,823,851,887,897,901,919,1110,1128,1137,1174,1226,1269,1279,1627,1633,1650,1668,1674,1679,1704,1722,1744,1789,1795,1805,1818,1829,1839,1848,1857,1866,1892,1933,1960,1983,1995,2001,2020,2032,2038,2056,2099,2132,2160,2178,2216,2254,2303,2325,2331,2348,2363,2371,2420,2438,2470,2475,2519,2534,2555,2561,2565,2575,2613,2643,2648,2653,2668,2681,2693,2699,2709,2724,2739,2745,2765,2772,2782,2805,2854,2860,2877,2890,2896,2930,2948,2954,2964,3144,3175,3185,3201,3217,3248,3254,3263,3272,3278,3311,3317,3408,3425,3443,3468,3491,3503,3513,3521,3527,3532,3537,3543,3575,3600,3623,3665,3671,3711,3750,3763,3772,3778,3795,3807,3812,3817,3828,3833,3857,3886,3891,3909,3915,3920,3926,3946,3952,3970,3976,3993,3999,4014,4024,4030,4055,4075,4080,4086,4091,4400,4405,4771,4789,4809,4815,4820,4834,4860,4865,4878,4908,4913,4918,4923,4946,5022,5056,5062,5086,5092,5097,5106,5115,5121,5126,5135,5144,5150,5159,5165,5179,5185,5205],{"type":10,"tag":11,"props":12,"children":14},"element","h1",{"id":13},"fundamentals",[15],{"type":16,"value":4},"text",{"type":10,"tag":18,"props":19,"children":20},"p",{},[21],{"type":16,"value":5},{"type":10,"tag":23,"props":24,"children":26},"h2",{"id":25},"fundamentals-host-environment",[27],{"type":16,"value":28},"Host and Device Environment",{"type":10,"tag":18,"props":30,"children":31},{},[32],{"type":16,"value":33},"The Vulkan Specification assumes and requires: the following properties of\nthe host environment with respect to Vulkan implementations:",{"type":10,"tag":35,"props":36,"children":37},"ul",{},[38,51,69],{"type":10,"tag":39,"props":40,"children":41},"li",{},[42,44,49],{"type":16,"value":43},"The host ",{"type":10,"tag":45,"props":46,"children":48},"normative",{"type":47},"must",[],{"type":16,"value":50}," have runtime support for 8, 16, 32 and 64-bit signed and\nunsigned twos-complement integers, all addressable at the granularity of\ntheir size in bytes.",{"type":10,"tag":39,"props":52,"children":53},{},[54,55,58,60,67],{"type":16,"value":43},{"type":10,"tag":45,"props":56,"children":57},{"type":47},[],{"type":16,"value":59}," have runtime support for 32- and 64-bit floating-point\ntypes satisfying the range and precision constraints in the\n",{"type":10,"tag":61,"props":62,"children":64},"a",{"href":63},"/chapters/fundamentals#fundamentals-floating-point",[65],{"type":16,"value":66},"Floating-Point Computation",{"type":16,"value":68}," section.",{"type":10,"tag":39,"props":70,"children":71},{},[72,74,77],{"type":16,"value":73},"The representation and endianness of these types on the host ",{"type":10,"tag":45,"props":75,"children":76},{"type":47},[],{"type":16,"value":78}," match\nthe representation and endianness of the same types on every physical\ndevice supported.",{"type":10,"tag":80,"props":81,"children":82},"note",{},[83],{"type":10,"tag":18,"props":84,"children":85},{},[86,88,92,94,98],{"type":16,"value":87},"Since a variety of data types and structures in Vulkan ",{"type":10,"tag":45,"props":89,"children":91},{"type":90},"may",[],{"type":16,"value":93}," be accessible by\nboth host and physical device operations, the implementation ",{"type":10,"tag":45,"props":95,"children":97},{"type":96},"should",[],{"type":16,"value":99}," be able\nto access such data efficiently in both paths in order to facilitate writing\nportable and performant applications.",{"type":10,"tag":23,"props":101,"children":103},{"id":102},"fundamentals-execmodel",[104],{"type":16,"value":105},"Execution Model",{"type":10,"tag":18,"props":107,"children":108},{},[109],{"type":16,"value":110},"This section outlines the execution model of a Vulkan system.",{"type":10,"tag":18,"props":112,"children":113},{},[114,116,122,124,129,131,134,136,141,143,146,148,153,155,159,161,164],{"type":16,"value":115},"Vulkan exposes one or more ",{"type":10,"tag":117,"props":118,"children":119},"em",{},[120],{"type":16,"value":121},"devices",{"type":16,"value":123},", each of which exposes one or more\n",{"type":10,"tag":117,"props":125,"children":126},{},[127],{"type":16,"value":128},"queues",{"type":16,"value":130}," which ",{"type":10,"tag":45,"props":132,"children":133},{"type":90},[],{"type":16,"value":135}," process work asynchronously to one another.\nThe set of queues supported by a device is partitioned into ",{"type":10,"tag":117,"props":137,"children":138},{},[139],{"type":16,"value":140},"families",{"type":16,"value":142},".\nEach family supports one or more types of functionality and ",{"type":10,"tag":45,"props":144,"children":145},{"type":90},[],{"type":16,"value":147}," contain\nmultiple queues with similar characteristics.\nQueues within a single family are considered ",{"type":10,"tag":117,"props":149,"children":150},{},[151],{"type":16,"value":152},"compatible",{"type":16,"value":154}," with one another,\nand work produced for a family of queues ",{"type":10,"tag":45,"props":156,"children":158},{"type":157},"can",[],{"type":16,"value":160}," be executed on any queue\nwithin that family.\nThis specification defines the following types of functionality that queues\n",{"type":10,"tag":45,"props":162,"children":163},{"type":90},[],{"type":16,"value":165}," support: graphics, compute,\nvideo decode,\nvideo encode,\nsparse memory management,\nand transfer.",{"type":10,"tag":80,"props":167,"children":168},{},[169],{"type":10,"tag":18,"props":170,"children":171},{},[172,174,177,179,184],{"type":16,"value":173},"A single device ",{"type":10,"tag":45,"props":175,"children":176},{"type":90},[],{"type":16,"value":178}," report multiple similar queue families rather than, or\nas well as, reporting multiple members of one or more of those families.\nThis indicates that while members of those families have similar\ncapabilities, they are ",{"type":10,"tag":117,"props":180,"children":181},{},[182],{"type":16,"value":183},"not",{"type":16,"value":185}," directly compatible with one another.",{"type":10,"tag":18,"props":187,"children":188},{},[189,191,194,196,199],{"type":16,"value":190},"Device memory is explicitly managed by the application.\nEach device ",{"type":10,"tag":45,"props":192,"children":193},{"type":90},[],{"type":16,"value":195}," advertise one or more heaps, representing different areas\nof memory.\nMemory heaps are either device-local or host-local, but are always visible\nto the device.\nFurther detail about memory heaps is exposed via memory types available on\nthat heap.\nExamples of memory areas that ",{"type":10,"tag":45,"props":197,"children":198},{"type":90},[],{"type":16,"value":200}," be available on an implementation\ninclude:",{"type":10,"tag":35,"props":202,"children":203},{},[204,214,224],{"type":10,"tag":39,"props":205,"children":206},{},[207,212],{"type":10,"tag":117,"props":208,"children":209},{},[210],{"type":16,"value":211},"device-local",{"type":16,"value":213}," is memory that is physically connected to the device.",{"type":10,"tag":39,"props":215,"children":216},{},[217,222],{"type":10,"tag":117,"props":218,"children":219},{},[220],{"type":16,"value":221},"device-local, host visible",{"type":16,"value":223}," is device-local memory that is visible to\nthe host.",{"type":10,"tag":39,"props":225,"children":226},{},[227,232],{"type":10,"tag":117,"props":228,"children":229},{},[230],{"type":16,"value":231},"host-local, host visible",{"type":16,"value":233}," is memory that is local to the host and\nvisible to the device and host.",{"type":10,"tag":18,"props":235,"children":236},{},[237,239,242,244,247],{"type":16,"value":238},"On other architectures, there ",{"type":10,"tag":45,"props":240,"children":241},{"type":90},[],{"type":16,"value":243}," only be a single heap that ",{"type":10,"tag":45,"props":245,"children":246},{"type":157},[],{"type":16,"value":248}," be used\nfor any purpose.",{"type":10,"tag":250,"props":251,"children":253},"h3",{"id":252},"fundamentals-queueoperation",[254],{"type":16,"value":255},"Queue Operation",{"type":10,"tag":18,"props":257,"children":258},{},[259,261,267],{"type":16,"value":260},"Vulkan queues provide an interface to the execution engines of a device.\nCommands for these execution engines are recorded into command buffers ahead\nof execution time, and then submitted to a queue for execution.\nOnce submitted to a queue, command buffers will begin and complete execution\nwithout further application intervention, though the order of this execution\nis dependent on a number of ",{"type":10,"tag":61,"props":262,"children":264},{"href":263},"/chapters/synchronization#synchronization",[265],{"type":16,"value":266},"implicit and explicit\nordering constraints",{"type":16,"value":268},".",{"type":10,"tag":18,"props":270,"children":271},{},[272,274,279,281,288,290,296,298,304,306,309,311,316],{"type":16,"value":273},"Work is submitted to queues using ",{"type":10,"tag":117,"props":275,"children":276},{},[277],{"type":16,"value":278},"queue submission commands",{"type":16,"value":280}," that typically\ntake the form ",{"type":10,"tag":282,"props":283,"children":285},"code",{"className":284},[],[286],{"type":16,"value":287},"vkQueue*",{"type":16,"value":289}," (e.g. ",{"type":10,"tag":61,"props":291,"children":293},{"href":292},"/man/vkQueueSubmit",[294],{"type":16,"value":295},"vkQueueSubmit",{"type":16,"value":297},"\n, ",{"type":10,"tag":61,"props":299,"children":301},{"href":300},"/man/vkQueueBindSparse",[302],{"type":16,"value":303},"vkQueueBindSparse",{"type":16,"value":305},"\n), and ",{"type":10,"tag":45,"props":307,"children":308},{"type":157},[],{"type":16,"value":310}," take a list of semaphores upon which to wait before work begins\nand a list of semaphores to signal once work has completed.\nThe work itself, as well as signaling and waiting on the semaphores are all\n",{"type":10,"tag":117,"props":312,"children":313},{},[314],{"type":16,"value":315},"queue operations",{"type":16,"value":317},".\nQueue submission commands return control to the application once queue\noperations have been submitted - they do not wait for completion.",{"type":10,"tag":18,"props":319,"children":320},{},[321,323,326,328,331,333,339,341,347],{"type":16,"value":322},"There are no implicit ordering constraints between queue operations on\ndifferent queues, or between queues and the host, so these ",{"type":10,"tag":45,"props":324,"children":325},{"type":90},[],{"type":16,"value":327}," operate in\nany order with respect to each other.\nExplicit ordering constraints between different queues or with the host ",{"type":10,"tag":45,"props":329,"children":330},{"type":157},[],{"type":16,"value":332},"\nbe expressed with ",{"type":10,"tag":61,"props":334,"children":336},{"href":335},"/chapters/synchronization#synchronization-semaphores",[337],{"type":16,"value":338},"semaphores",{"type":16,"value":340}," and\n",{"type":10,"tag":61,"props":342,"children":344},{"href":343},"/chapters/synchronization#synchronization-fences",[345],{"type":16,"value":346},"fences",{"type":16,"value":268},{"type":10,"tag":18,"props":349,"children":350},{},[351,353,359,361,367,369,372,374,380,382,386,387,391],{"type":16,"value":352},"Command buffer submissions to a single queue respect\n",{"type":10,"tag":61,"props":354,"children":356},{"href":355},"/chapters/synchronization#synchronization-submission-order",[357],{"type":16,"value":358},"submission order",{"type":16,"value":360}," and other\n",{"type":10,"tag":61,"props":362,"children":364},{"href":363},"/chapters/synchronization#synchronization-implicit",[365],{"type":16,"value":366},"implicit ordering guarantees",{"type":16,"value":368},", but otherwise\n",{"type":10,"tag":45,"props":370,"children":371},{"type":90},[],{"type":16,"value":373}," overlap or execute out of order.\nOther types of batches and queue submissions against a single queue\n(e.g. ",{"type":10,"tag":61,"props":375,"children":377},{"href":376},"/chapters/sparsememory#sparsemem-memory-binding",[378],{"type":16,"value":379},"sparse memory binding",{"type":16,"value":381},")\nhave no implicit ordering constraints with any other queue submission or\nbatch.\nAdditional explicit ordering constraints between queue submissions and\nindividual batches can be expressed with\n",{"type":10,"tag":61,"props":383,"children":384},{"href":335},[385],{"type":16,"value":338},{"type":16,"value":340},{"type":10,"tag":61,"props":388,"children":389},{"href":343},[390],{"type":16,"value":346},{"type":16,"value":268},{"type":10,"tag":18,"props":393,"children":394},{},[395,397,403,405,410],{"type":16,"value":396},"Before a fence or semaphore is signaled, it is guaranteed that any\npreviously submitted queue operations have completed execution, and that\nmemory writes from those queue operations are\n",{"type":10,"tag":61,"props":398,"children":400},{"href":399},"/chapters/synchronization#synchronization-dependencies-available-and-visible",[401],{"type":16,"value":402},"available",{"type":16,"value":404}," to future\nqueue operations.\nWaiting on a signaled semaphore or fence guarantees that previous writes\nthat are available are also\n",{"type":10,"tag":61,"props":406,"children":407},{"href":399},[408],{"type":16,"value":409},"visible",{"type":16,"value":411}," to subsequent\ncommands.",{"type":10,"tag":18,"props":413,"children":414},{},[415,417,420,422,428,430,433,435,440],{"type":16,"value":416},"Command buffer boundaries, both between primary command buffers of the same\nor different batches or submissions as well as between primary and secondary\ncommand buffers, do not introduce any additional ordering constraints.\nIn other words, submitting the set of command buffers (which ",{"type":10,"tag":45,"props":418,"children":419},{"type":157},[],{"type":16,"value":421}," include\nexecuting secondary command buffers) between any semaphore or fence\noperations execute the recorded commands as if they had all been recorded\ninto a single primary command buffer, except that the current state is\n",{"type":10,"tag":61,"props":423,"children":425},{"href":424},"/chapters/commandbuffers#commandbuffers-statereset",[426],{"type":16,"value":427},"reset",{"type":16,"value":429}," on each boundary.\nExplicit ordering constraints ",{"type":10,"tag":45,"props":431,"children":432},{"type":157},[],{"type":16,"value":434}," be expressed with ",{"type":10,"tag":61,"props":436,"children":437},{"href":263},[438],{"type":16,"value":439},"explicit synchronization primitives",{"type":16,"value":268},{"type":10,"tag":18,"props":442,"children":443},{},[444,446,450,452,456],{"type":16,"value":445},"There are a few ",{"type":10,"tag":61,"props":447,"children":448},{"href":363},[449],{"type":16,"value":366},{"type":16,"value":451},"\nbetween commands within a command buffer, but only covering a subset of\nexecution.\nAdditional explicit ordering constraints can be expressed with the various\n",{"type":10,"tag":61,"props":453,"children":454},{"href":263},[455],{"type":16,"value":439},{"type":16,"value":268},{"type":10,"tag":80,"props":458,"children":459},{},[460],{"type":10,"tag":18,"props":461,"children":462},{},[463],{"type":16,"value":464},"Implementations have significant freedom to overlap execution of work\nsubmitted to a queue, and this is common due to deep pipelining and\nparallelism in Vulkan devices.",{"type":10,"tag":466,"props":467,"children":469},"anchor",{"id":468},"fundamentals-queueoperation-command-types",[],{"type":10,"tag":18,"props":471,"children":472},{},[473,475,481],{"type":16,"value":474},"Commands recorded in command buffers can perform actions, set state that\npersists across commands, synchronize other commands, or indirectly launch\nother commands, with some commands fulfilling several of these roles.\nThe ",{"type":10,"tag":282,"props":476,"children":478},{"className":477},[],[479],{"type":16,"value":480},"Command Properties",{"type":16,"value":482}," section for each such command lists which of\nthese roles the command takes:",{"type":10,"tag":484,"props":485,"children":487},"h6",{"id":486},"action",[488],{"type":16,"value":489},"Action",{"type":10,"tag":18,"props":491,"children":492},{},[493,498,500,506,508,514],{"type":10,"tag":117,"props":494,"children":495},{},[496],{"type":16,"value":497},"Action commands",{"type":16,"value":499}," perform operations that can update values in memory.\nE.g. ",{"type":10,"tag":61,"props":501,"children":503},{"href":502},"/chapters/drawing#drawing",[504],{"type":16,"value":505},"draw commands",{"type":16,"value":507},", ",{"type":10,"tag":61,"props":509,"children":511},{"href":510},"/chapters/dispatch#dispatch",[512],{"type":16,"value":513},"dispatch commands",{"type":16,"value":268},{"type":10,"tag":484,"props":516,"children":518},{"id":517},"state",[519],{"type":16,"value":520},"State",{"type":10,"tag":18,"props":522,"children":523},{},[524,529],{"type":10,"tag":117,"props":525,"children":526},{},[527],{"type":16,"value":528},"State setting commands",{"type":16,"value":530}," update the current state of a command buffer,\naffecting the operation of future action commands.",{"type":10,"tag":484,"props":532,"children":534},{"id":533},"synchronization",[535],{"type":16,"value":536},"Synchronization",{"type":10,"tag":18,"props":538,"children":539},{},[540,545,547,553],{"type":10,"tag":117,"props":541,"children":542},{},[543],{"type":16,"value":544},"Synchronization commands",{"type":16,"value":546}," impose ordering constraints on action commands,\nby introducing explicit ",{"type":10,"tag":61,"props":548,"children":550},{"href":549},"/chapters/synchronization#synchronization-dependencies",[551],{"type":16,"value":552},"execution and\nmemory dependencies",{"type":16,"value":268},{"type":10,"tag":484,"props":555,"children":557},{"id":556},"indirection",[558],{"type":16,"value":559},"Indirection",{"type":10,"tag":18,"props":561,"children":562},{},[563,568],{"type":10,"tag":117,"props":564,"children":565},{},[566],{"type":16,"value":567},"Indirection commands",{"type":16,"value":569}," execute other commands which were not directly\nrecorded in the same command buffer.",{"type":10,"tag":80,"props":571,"children":572},{},[573],{"type":10,"tag":18,"props":574,"children":575},{},[576,578,582],{"type":16,"value":577},"In the absence of explicit synchronization or ",{"type":10,"tag":61,"props":579,"children":580},{"href":363},[581],{"type":16,"value":366},{"type":16,"value":583},", action commands may overlap execution or\nexecute out of order, potentially leading to data races.\nHowever, such reordering does not affect the current state observed by any\naction command.\nEach action command uses the state in effect at the point where the command\noccurs in the command buffer, regardless of when it is executed.",{"type":10,"tag":23,"props":585,"children":587},{"id":586},"fundamentals-objectmodel-overview",[588],{"type":16,"value":589},"Object Model",{"type":10,"tag":18,"props":591,"children":592},{},[593,595,600,602,605,607,610],{"type":16,"value":594},"The devices, queues, and other entities in Vulkan are represented by Vulkan\nobjects.\nAt the API level, all objects are referred to by handles.\nThere are two classes of handles, dispatchable and non-dispatchable.\n",{"type":10,"tag":117,"props":596,"children":597},{},[598],{"type":16,"value":599},"Dispatchable",{"type":16,"value":601}," handle types are a pointer to an opaque type.\nThis pointer ",{"type":10,"tag":45,"props":603,"children":604},{"type":90},[],{"type":16,"value":606}," be used by layers as part of intercepting API commands,\nand thus each API command takes a dispatchable type as its first parameter.\nEach object of a dispatchable type ",{"type":10,"tag":45,"props":608,"children":609},{"type":47},[],{"type":16,"value":611}," have a unique handle value during\nits lifetime.",{"type":10,"tag":18,"props":613,"children":614},{},[615,620,622,632,634,640,642,645,647,650,652,655,657,660,662,665],{"type":10,"tag":117,"props":616,"children":617},{},[618],{"type":16,"value":619},"Non-dispatchable",{"type":16,"value":621}," handle types are a 64-bit integer type whose meaning is\nimplementation-dependent.\nIf the ",{"type":10,"tag":61,"props":623,"children":625},{"href":624},"/man/VkPhysicalDevicePrivateDataFeatures#features-privateData",[626],{"type":10,"tag":282,"props":627,"children":629},{"className":628},[],[630],{"type":16,"value":631},"privateData",{"type":16,"value":633}," feature is enabled for a\n",{"type":10,"tag":61,"props":635,"children":637},{"href":636},"/man/VkDevice",[638],{"type":16,"value":639},"VkDevice",{"type":16,"value":641},", each object of a non-dispatchable type created on that\ndevice ",{"type":10,"tag":45,"props":643,"children":644},{"type":47},[],{"type":16,"value":646}," have a handle value that is unique among objects created on\nthat device, for the duration of the object’s lifetime.\nOtherwise, non-dispatchable\nhandles ",{"type":10,"tag":45,"props":648,"children":649},{"type":90},[],{"type":16,"value":651}," encode object information directly in the handle rather than\nacting as a reference to an underlying object, and thus ",{"type":10,"tag":45,"props":653,"children":654},{"type":90},[],{"type":16,"value":656}," not have unique\nhandle values.\nIf handle values are not unique, then destroying one such handle ",{"type":10,"tag":45,"props":658,"children":659},{"type":47},[],{"type":16,"value":661}," not\ncause identical handles of other types to become invalid, and ",{"type":10,"tag":45,"props":663,"children":664},{"type":47},[],{"type":16,"value":666}," not\ncause identical handles of the same type to become invalid if that handle\nvalue has been created more times than it has been destroyed.",{"type":10,"tag":18,"props":668,"children":669},{},[670,672,677,679,684,686,689],{"type":16,"value":671},"All objects created or allocated from a ",{"type":10,"tag":282,"props":673,"children":675},{"className":674},[],[676],{"type":16,"value":639},{"type":16,"value":678}," (i.e. with a\n",{"type":10,"tag":282,"props":680,"children":682},{"className":681},[],[683],{"type":16,"value":639},{"type":16,"value":685}," as the first parameter) are private to that device, and ",{"type":10,"tag":45,"props":687,"children":688},{"type":47},[],{"type":16,"value":690},"\nnot be used on other devices.",{"type":10,"tag":250,"props":692,"children":694},{"id":693},"fundamentals-objectmodel-lifetime",[695],{"type":16,"value":696},"Object Lifetime",{"type":10,"tag":18,"props":698,"children":699},{},[700,702,708,710,716,718,724,726,732,733,739],{"type":16,"value":701},"Objects are created or allocated by ",{"type":10,"tag":282,"props":703,"children":705},{"className":704},[],[706],{"type":16,"value":707},"vkCreate*",{"type":16,"value":709}," and ",{"type":10,"tag":282,"props":711,"children":713},{"className":712},[],[714],{"type":16,"value":715},"vkAllocate*",{"type":16,"value":717},"\ncommands, respectively.\nOnce an object is created or allocated, its ",{"type":10,"tag":282,"props":719,"children":721},{"className":720},[],[722],{"type":16,"value":723},"structure",{"type":16,"value":725}," is considered to\nbe immutable, though the contents of certain object types is still free to\nchange.\nObjects are destroyed or freed by ",{"type":10,"tag":282,"props":727,"children":729},{"className":728},[],[730],{"type":16,"value":731},"vkDestroy*",{"type":16,"value":709},{"type":10,"tag":282,"props":734,"children":736},{"className":735},[],[737],{"type":16,"value":738},"vkFree*",{"type":16,"value":740},"\ncommands, respectively.",{"type":10,"tag":18,"props":742,"children":743},{},[744,746,749],{"type":16,"value":745},"Objects that are allocated (rather than created) take resources from an\nexisting pool object or memory heap, and when freed return resources to that\npool or heap.\nWhile object creation and destruction are generally expected to be\nlow-frequency occurrences during runtime, allocating and freeing objects\n",{"type":10,"tag":45,"props":747,"children":748},{"type":157},[],{"type":16,"value":750}," occur at high frequency.\nPool objects help accommodate improved performance of the allocations and\nfrees.",{"type":10,"tag":18,"props":752,"children":753},{},[754],{"type":16,"value":755},"It is an application’s responsibility to track the lifetime of Vulkan\nobjects, and not to destroy them while they are still in use.",{"type":10,"tag":466,"props":757,"children":759},{"id":758},"fundamentals-objectmodel-lifetime-acquire",[],{"type":10,"tag":18,"props":761,"children":762},{},[763,765,768,770,773,775,781],{"type":16,"value":764},"The ownership of application-owned memory is immediately acquired by any\nVulkan command it is passed\ninto.\nOwnership of such memory ",{"type":10,"tag":45,"props":766,"children":767},{"type":47},[],{"type":16,"value":769}," be released back to the application at the\nend of the duration of the command,\nunless that command was deferred,\nso that the application ",{"type":10,"tag":45,"props":771,"children":772},{"type":157},[],{"type":16,"value":774}," alter or free this memory as soon as all the\ncommands that acquired it have returned.\nIf the command was ",{"type":10,"tag":61,"props":776,"children":778},{"href":777},"/chapters/deferred-host-operations#deferred-host-operations-requesting",[779],{"type":16,"value":780},"deferred",{"type":16,"value":782},",\nownership of such memory is released back to the application when the\ndeferred operation is complete.",{"type":10,"tag":18,"props":784,"children":785},{},[786,788,791],{"type":16,"value":787},"The following object types are consumed when they are passed into a Vulkan\ncommand and not further accessed by the objects they are used to create.\nThey ",{"type":10,"tag":45,"props":789,"children":790},{"type":47},[],{"type":16,"value":792}," not be destroyed in the duration of any API command they are\npassed into:",{"type":10,"tag":35,"props":794,"children":795},{},[796,805,814],{"type":10,"tag":39,"props":797,"children":798},{},[799],{"type":10,"tag":282,"props":800,"children":802},{"className":801},[],[803],{"type":16,"value":804},"VkShaderModule",{"type":10,"tag":39,"props":806,"children":807},{},[808],{"type":10,"tag":282,"props":809,"children":811},{"className":810},[],[812],{"type":16,"value":813},"VkPipelineCache",{"type":10,"tag":39,"props":815,"children":816},{},[817],{"type":10,"tag":282,"props":818,"children":820},{"className":819},[],[821],{"type":16,"value":822},"VkValidationCacheEXT",{"type":10,"tag":18,"props":824,"children":825},{},[826,828,834,836,842,844,849],{"type":16,"value":827},"A ",{"type":10,"tag":282,"props":829,"children":831},{"className":830},[],[832],{"type":16,"value":833},"VkRenderPass",{"type":16,"value":835},"\nor ",{"type":10,"tag":282,"props":837,"children":839},{"className":838},[],[840],{"type":16,"value":841},"VkPipelineLayout",{"type":16,"value":843},"\nobject passed as a parameter to create another object is not further\naccessed by that object after the duration of the command it is passed into.\nA ",{"type":10,"tag":282,"props":845,"children":847},{"className":846},[],[848],{"type":16,"value":833},{"type":16,"value":850}," used in a command buffer follows the rules described\nbelow.",{"type":10,"tag":18,"props":852,"children":853},{},[854,860,862,865,867,870,872,878,880,885],{"type":10,"tag":282,"props":855,"children":857},{"className":856},[],[858],{"type":16,"value":859},"VkDescriptorSetLayout",{"type":16,"value":861}," objects ",{"type":10,"tag":45,"props":863,"children":864},{"type":90},[],{"type":16,"value":866}," be accessed by commands that\noperate on descriptor sets allocated using that layout, and those descriptor\nsets ",{"type":10,"tag":45,"props":868,"children":869},{"type":47},[],{"type":16,"value":871}," not be updated with ",{"type":10,"tag":61,"props":873,"children":875},{"href":874},"/man/vkUpdateDescriptorSets",[876],{"type":16,"value":877},"vkUpdateDescriptorSets",{"type":16,"value":879}," after the\ndescriptor set layout has been destroyed.\nOtherwise, a ",{"type":10,"tag":61,"props":881,"children":883},{"href":882},"/man/VkDescriptorSetLayout",[884],{"type":16,"value":859},{"type":16,"value":886}," object is no longer referenced by\nan API command it is passed into once host execution of that command\ncompletes.",{"type":10,"tag":18,"props":888,"children":889},{},[890,892,895],{"type":16,"value":891},"The application ",{"type":10,"tag":45,"props":893,"children":894},{"type":47},[],{"type":16,"value":896}," not destroy any other type of Vulkan object until all\nuses of that object by the device (such as via command buffer execution)\nhave completed.",{"type":10,"tag":466,"props":898,"children":900},{"id":899},"fundamentals-objectmodel-lifetime-cmdbuffers",[],{"type":10,"tag":18,"props":902,"children":903},{},[904,906,909,911,917],{"type":16,"value":905},"The following Vulkan objects ",{"type":10,"tag":45,"props":907,"children":908},{"type":47},[],{"type":16,"value":910}," not be destroyed while any command\nbuffers using the object are in the ",{"type":10,"tag":61,"props":912,"children":914},{"href":913},"/chapters/commandbuffers#commandbuffers-lifecycle",[915],{"type":16,"value":916},"pending\nstate",{"type":16,"value":918},":",{"type":10,"tag":35,"props":920,"children":921},{},[922,931,940,949,958,967,976,985,994,1003,1012,1021,1029,1038,1047,1056,1065,1074,1083,1092,1101],{"type":10,"tag":39,"props":923,"children":924},{},[925],{"type":10,"tag":282,"props":926,"children":928},{"className":927},[],[929],{"type":16,"value":930},"VkEvent",{"type":10,"tag":39,"props":932,"children":933},{},[934],{"type":10,"tag":282,"props":935,"children":937},{"className":936},[],[938],{"type":16,"value":939},"VkQueryPool",{"type":10,"tag":39,"props":941,"children":942},{},[943],{"type":10,"tag":282,"props":944,"children":946},{"className":945},[],[947],{"type":16,"value":948},"VkBuffer",{"type":10,"tag":39,"props":950,"children":951},{},[952],{"type":10,"tag":282,"props":953,"children":955},{"className":954},[],[956],{"type":16,"value":957},"VkBufferView",{"type":10,"tag":39,"props":959,"children":960},{},[961],{"type":10,"tag":282,"props":962,"children":964},{"className":963},[],[965],{"type":16,"value":966},"VkImage",{"type":10,"tag":39,"props":968,"children":969},{},[970],{"type":10,"tag":282,"props":971,"children":973},{"className":972},[],[974],{"type":16,"value":975},"VkImageView",{"type":10,"tag":39,"props":977,"children":978},{},[979],{"type":10,"tag":282,"props":980,"children":982},{"className":981},[],[983],{"type":16,"value":984},"VkPipeline",{"type":10,"tag":39,"props":986,"children":987},{},[988],{"type":10,"tag":282,"props":989,"children":991},{"className":990},[],[992],{"type":16,"value":993},"VkSampler",{"type":10,"tag":39,"props":995,"children":996},{},[997],{"type":10,"tag":282,"props":998,"children":1000},{"className":999},[],[1001],{"type":16,"value":1002},"VkSamplerYcbcrConversion",{"type":10,"tag":39,"props":1004,"children":1005},{},[1006],{"type":10,"tag":282,"props":1007,"children":1009},{"className":1008},[],[1010],{"type":16,"value":1011},"VkDescriptorPool",{"type":10,"tag":39,"props":1013,"children":1014},{},[1015],{"type":10,"tag":282,"props":1016,"children":1018},{"className":1017},[],[1019],{"type":16,"value":1020},"VkFramebuffer",{"type":10,"tag":39,"props":1022,"children":1023},{},[1024],{"type":10,"tag":282,"props":1025,"children":1027},{"className":1026},[],[1028],{"type":16,"value":833},{"type":10,"tag":39,"props":1030,"children":1031},{},[1032],{"type":10,"tag":282,"props":1033,"children":1035},{"className":1034},[],[1036],{"type":16,"value":1037},"VkCommandBuffer",{"type":10,"tag":39,"props":1039,"children":1040},{},[1041],{"type":10,"tag":282,"props":1042,"children":1044},{"className":1043},[],[1045],{"type":16,"value":1046},"VkCommandPool",{"type":10,"tag":39,"props":1048,"children":1049},{},[1050],{"type":10,"tag":282,"props":1051,"children":1053},{"className":1052},[],[1054],{"type":16,"value":1055},"VkDeviceMemory",{"type":10,"tag":39,"props":1057,"children":1058},{},[1059],{"type":10,"tag":282,"props":1060,"children":1062},{"className":1061},[],[1063],{"type":16,"value":1064},"VkDescriptorSet",{"type":10,"tag":39,"props":1066,"children":1067},{},[1068],{"type":10,"tag":282,"props":1069,"children":1071},{"className":1070},[],[1072],{"type":16,"value":1073},"VkIndirectCommandsLayoutNV",{"type":10,"tag":39,"props":1075,"children":1076},{},[1077],{"type":10,"tag":282,"props":1078,"children":1080},{"className":1079},[],[1081],{"type":16,"value":1082},"VkAccelerationStructureNV",{"type":10,"tag":39,"props":1084,"children":1085},{},[1086],{"type":10,"tag":282,"props":1087,"children":1089},{"className":1088},[],[1090],{"type":16,"value":1091},"VkAccelerationStructureKHR",{"type":10,"tag":39,"props":1093,"children":1094},{},[1095],{"type":10,"tag":282,"props":1096,"children":1098},{"className":1097},[],[1099],{"type":16,"value":1100},"VkVideoSessionKHR",{"type":10,"tag":39,"props":1102,"children":1103},{},[1104],{"type":10,"tag":282,"props":1105,"children":1107},{"className":1106},[],[1108],{"type":16,"value":1109},"VkVideoSessionParametersKHR",{"type":10,"tag":18,"props":1111,"children":1112},{},[1113,1115,1120,1122,1127],{"type":16,"value":1114},"Destroying these objects will move any command buffers that are in the\n",{"type":10,"tag":61,"props":1116,"children":1117},{"href":913},[1118],{"type":16,"value":1119},"recording or executable state",{"type":16,"value":1121},", and are using\nthose objects, to the ",{"type":10,"tag":61,"props":1123,"children":1124},{"href":913},[1125],{"type":16,"value":1126},"invalid state",{"type":16,"value":268},{"type":10,"tag":18,"props":1129,"children":1130},{},[1131,1132,1135],{"type":16,"value":905},{"type":10,"tag":45,"props":1133,"children":1134},{"type":47},[],{"type":16,"value":1136}," not be destroyed while any queue is\nexecuting commands that use the object:",{"type":10,"tag":35,"props":1138,"children":1139},{},[1140,1149,1158,1166],{"type":10,"tag":39,"props":1141,"children":1142},{},[1143],{"type":10,"tag":282,"props":1144,"children":1146},{"className":1145},[],[1147],{"type":16,"value":1148},"VkFence",{"type":10,"tag":39,"props":1150,"children":1151},{},[1152],{"type":10,"tag":282,"props":1153,"children":1155},{"className":1154},[],[1156],{"type":16,"value":1157},"VkSemaphore",{"type":10,"tag":39,"props":1159,"children":1160},{},[1161],{"type":10,"tag":282,"props":1162,"children":1164},{"className":1163},[],[1165],{"type":16,"value":1037},{"type":10,"tag":39,"props":1167,"children":1168},{},[1169],{"type":10,"tag":282,"props":1170,"children":1172},{"className":1171},[],[1173],{"type":16,"value":1046},{"type":10,"tag":18,"props":1175,"children":1176},{},[1177,1179,1182,1184,1190,1192,1198,1200,1206,1208,1214,1216,1219,1221,1224],{"type":16,"value":1178},"In general, objects ",{"type":10,"tag":45,"props":1180,"children":1181},{"type":157},[],{"type":16,"value":1183}," be destroyed or freed in any order, even if the\nobject being freed is involved in the use of another object (e.g. use of a\nresource in a view, use of a view in a descriptor set,\nuse of a ",{"type":10,"tag":61,"props":1185,"children":1187},{"href":1186},"/chapters/pipelines#pipelines-library",[1188],{"type":16,"value":1189},"pipeline library",{"type":16,"value":1191}," in another pipeline,\nuse of a ",{"type":10,"tag":61,"props":1193,"children":1195},{"href":1194},"/chapters/pipelines#graphics-shadergroups",[1196],{"type":16,"value":1197},"referenced pipeline",{"type":16,"value":1199}," for additional\ngraphics shader groups in another pipeline,\nuse of a ",{"type":10,"tag":61,"props":1201,"children":1203},{"href":1202},"/chapters/acceleration-structure#acceleration-structure-bottom-level",[1204],{"type":16,"value":1205},"bottom level acceleration\nstructure",{"type":16,"value":1207}," in an instance referenced by a\n",{"type":10,"tag":61,"props":1209,"children":1211},{"href":1210},"/chapters/acceleration-structure#acceleration-structure-top-level",[1212],{"type":16,"value":1213},"top level acceleration structure",{"type":16,"value":1215},",\nuse of an object in a command buffer, binding of a memory allocation to a\nresource), as long as any object that uses the freed object is not further\nused in any way except to be destroyed or to be reset in such a way that it\nno longer uses the other object (such as resetting a command buffer).\nIf the object has been reset, then it ",{"type":10,"tag":45,"props":1217,"children":1218},{"type":157},[],{"type":16,"value":1220}," be used as if it never used the\nfreed object.\nAn exception to this is when there is a parent/child relationship between\nobjects.\nIn this case, the application ",{"type":10,"tag":45,"props":1222,"children":1223},{"type":47},[],{"type":16,"value":1225}," not destroy a parent object before its\nchildren, except when the parent is explicitly defined to free its children\nwhen it is destroyed (e.g. for pool objects, as defined below).",{"type":10,"tag":18,"props":1227,"children":1228},{},[1229,1234,1236,1241,1243,1248,1249,1254,1255,1260,1262,1267],{"type":10,"tag":282,"props":1230,"children":1232},{"className":1231},[],[1233],{"type":16,"value":1046},{"type":16,"value":1235}," objects are parents of ",{"type":10,"tag":282,"props":1237,"children":1239},{"className":1238},[],[1240],{"type":16,"value":1037},{"type":16,"value":1242}," objects.\n",{"type":10,"tag":282,"props":1244,"children":1246},{"className":1245},[],[1247],{"type":16,"value":1011},{"type":16,"value":1235},{"type":10,"tag":282,"props":1250,"children":1252},{"className":1251},[],[1253],{"type":16,"value":1064},{"type":16,"value":1242},{"type":10,"tag":282,"props":1256,"children":1258},{"className":1257},[],[1259],{"type":16,"value":639},{"type":16,"value":1261}," objects are parents of many object types (all that take a\n",{"type":10,"tag":282,"props":1263,"children":1265},{"className":1264},[],[1266],{"type":16,"value":639},{"type":16,"value":1268}," as a parameter to their creation).",{"type":10,"tag":18,"props":1270,"children":1271},{},[1272,1274,1277],{"type":16,"value":1273},"The following Vulkan objects have specific restrictions for when they ",{"type":10,"tag":45,"props":1275,"children":1276},{"type":157},[],{"type":16,"value":1278},"\nbe destroyed:",{"type":10,"tag":35,"props":1280,"children":1281},{},[1282,1305,1338,1578,1599],{"type":10,"tag":39,"props":1283,"children":1284},{},[1285,1291,1292,1296,1298,1303],{"type":10,"tag":282,"props":1286,"children":1288},{"className":1287},[],[1289],{"type":16,"value":1290},"VkQueue",{"type":16,"value":861},{"type":10,"tag":45,"props":1293,"children":1295},{"type":1294},"cannot",[],{"type":16,"value":1297}," be explicitly destroyed.\nInstead, they are implicitly destroyed when the ",{"type":10,"tag":282,"props":1299,"children":1301},{"className":1300},[],[1302],{"type":16,"value":639},{"type":16,"value":1304}," object\nthey are retrieved from is destroyed.",{"type":10,"tag":39,"props":1306,"children":1307},{},[1308,1310,1315,1317,1322,1324,1329,1331,1336],{"type":16,"value":1309},"Destroying a pool object implicitly frees all objects allocated from\nthat pool.\nSpecifically, destroying ",{"type":10,"tag":282,"props":1311,"children":1313},{"className":1312},[],[1314],{"type":16,"value":1046},{"type":16,"value":1316}," frees all\n",{"type":10,"tag":282,"props":1318,"children":1320},{"className":1319},[],[1321],{"type":16,"value":1037},{"type":16,"value":1323}," objects that were allocated from it, and\ndestroying ",{"type":10,"tag":282,"props":1325,"children":1327},{"className":1326},[],[1328],{"type":16,"value":1011},{"type":16,"value":1330}," frees all ",{"type":10,"tag":282,"props":1332,"children":1334},{"className":1333},[],[1335],{"type":16,"value":1064},{"type":16,"value":1337},"\nobjects that were allocated from it.",{"type":10,"tag":39,"props":1339,"children":1340},{},[1341,1346,1347,1350,1352,1357,1359],{"type":10,"tag":282,"props":1342,"children":1344},{"className":1343},[],[1345],{"type":16,"value":639},{"type":16,"value":861},{"type":10,"tag":45,"props":1348,"children":1349},{"type":157},[],{"type":16,"value":1351}," be destroyed when all ",{"type":10,"tag":282,"props":1353,"children":1355},{"className":1354},[],[1356],{"type":16,"value":1290},{"type":16,"value":1358}," objects\nretrieved from them are idle, and all objects created from them have\nbeen destroyed.",{"type":10,"tag":35,"props":1360,"children":1361},{},[1362],{"type":10,"tag":39,"props":1363,"children":1364},{},[1365,1367],{"type":16,"value":1366},"This includes the following objects:",{"type":10,"tag":35,"props":1368,"children":1369},{},[1370,1378,1386,1394,1402,1410,1418,1426,1434,1442,1450,1458,1466,1474,1482,1490,1498,1506,1514,1522,1530,1538,1546,1554,1562,1570],{"type":10,"tag":39,"props":1371,"children":1372},{},[1373],{"type":10,"tag":282,"props":1374,"children":1376},{"className":1375},[],[1377],{"type":16,"value":1148},{"type":10,"tag":39,"props":1379,"children":1380},{},[1381],{"type":10,"tag":282,"props":1382,"children":1384},{"className":1383},[],[1385],{"type":16,"value":1157},{"type":10,"tag":39,"props":1387,"children":1388},{},[1389],{"type":10,"tag":282,"props":1390,"children":1392},{"className":1391},[],[1393],{"type":16,"value":930},{"type":10,"tag":39,"props":1395,"children":1396},{},[1397],{"type":10,"tag":282,"props":1398,"children":1400},{"className":1399},[],[1401],{"type":16,"value":939},{"type":10,"tag":39,"props":1403,"children":1404},{},[1405],{"type":10,"tag":282,"props":1406,"children":1408},{"className":1407},[],[1409],{"type":16,"value":948},{"type":10,"tag":39,"props":1411,"children":1412},{},[1413],{"type":10,"tag":282,"props":1414,"children":1416},{"className":1415},[],[1417],{"type":16,"value":957},{"type":10,"tag":39,"props":1419,"children":1420},{},[1421],{"type":10,"tag":282,"props":1422,"children":1424},{"className":1423},[],[1425],{"type":16,"value":966},{"type":10,"tag":39,"props":1427,"children":1428},{},[1429],{"type":10,"tag":282,"props":1430,"children":1432},{"className":1431},[],[1433],{"type":16,"value":975},{"type":10,"tag":39,"props":1435,"children":1436},{},[1437],{"type":10,"tag":282,"props":1438,"children":1440},{"className":1439},[],[1441],{"type":16,"value":804},{"type":10,"tag":39,"props":1443,"children":1444},{},[1445],{"type":10,"tag":282,"props":1446,"children":1448},{"className":1447},[],[1449],{"type":16,"value":813},{"type":10,"tag":39,"props":1451,"children":1452},{},[1453],{"type":10,"tag":282,"props":1454,"children":1456},{"className":1455},[],[1457],{"type":16,"value":984},{"type":10,"tag":39,"props":1459,"children":1460},{},[1461],{"type":10,"tag":282,"props":1462,"children":1464},{"className":1463},[],[1465],{"type":16,"value":841},{"type":10,"tag":39,"props":1467,"children":1468},{},[1469],{"type":10,"tag":282,"props":1470,"children":1472},{"className":1471},[],[1473],{"type":16,"value":993},{"type":10,"tag":39,"props":1475,"children":1476},{},[1477],{"type":10,"tag":282,"props":1478,"children":1480},{"className":1479},[],[1481],{"type":16,"value":1002},{"type":10,"tag":39,"props":1483,"children":1484},{},[1485],{"type":10,"tag":282,"props":1486,"children":1488},{"className":1487},[],[1489],{"type":16,"value":859},{"type":10,"tag":39,"props":1491,"children":1492},{},[1493],{"type":10,"tag":282,"props":1494,"children":1496},{"className":1495},[],[1497],{"type":16,"value":1011},{"type":10,"tag":39,"props":1499,"children":1500},{},[1501],{"type":10,"tag":282,"props":1502,"children":1504},{"className":1503},[],[1505],{"type":16,"value":1020},{"type":10,"tag":39,"props":1507,"children":1508},{},[1509],{"type":10,"tag":282,"props":1510,"children":1512},{"className":1511},[],[1513],{"type":16,"value":833},{"type":10,"tag":39,"props":1515,"children":1516},{},[1517],{"type":10,"tag":282,"props":1518,"children":1520},{"className":1519},[],[1521],{"type":16,"value":1046},{"type":10,"tag":39,"props":1523,"children":1524},{},[1525],{"type":10,"tag":282,"props":1526,"children":1528},{"className":1527},[],[1529],{"type":16,"value":1037},{"type":10,"tag":39,"props":1531,"children":1532},{},[1533],{"type":10,"tag":282,"props":1534,"children":1536},{"className":1535},[],[1537],{"type":16,"value":1055},{"type":10,"tag":39,"props":1539,"children":1540},{},[1541],{"type":10,"tag":282,"props":1542,"children":1544},{"className":1543},[],[1545],{"type":16,"value":822},{"type":10,"tag":39,"props":1547,"children":1548},{},[1549],{"type":10,"tag":282,"props":1550,"children":1552},{"className":1551},[],[1553],{"type":16,"value":1082},{"type":10,"tag":39,"props":1555,"children":1556},{},[1557],{"type":10,"tag":282,"props":1558,"children":1560},{"className":1559},[],[1561],{"type":16,"value":1091},{"type":10,"tag":39,"props":1563,"children":1564},{},[1565],{"type":10,"tag":282,"props":1566,"children":1568},{"className":1567},[],[1569],{"type":16,"value":1100},{"type":10,"tag":39,"props":1571,"children":1572},{},[1573],{"type":10,"tag":282,"props":1574,"children":1576},{"className":1575},[],[1577],{"type":16,"value":1109},{"type":10,"tag":39,"props":1579,"children":1580},{},[1581,1587,1588,1591,1592,1598],{"type":10,"tag":282,"props":1582,"children":1584},{"className":1583},[],[1585],{"type":16,"value":1586},"VkPhysicalDevice",{"type":16,"value":861},{"type":10,"tag":45,"props":1589,"children":1590},{"type":1294},[],{"type":16,"value":1297},{"type":10,"tag":282,"props":1593,"children":1595},{"className":1594},[],[1596],{"type":16,"value":1597},"VkInstance",{"type":16,"value":1304},{"type":10,"tag":39,"props":1600,"children":1601},{},[1602,1607,1608,1611,1613,1618,1620,1625],{"type":10,"tag":282,"props":1603,"children":1605},{"className":1604},[],[1606],{"type":16,"value":1597},{"type":16,"value":861},{"type":10,"tag":45,"props":1609,"children":1610},{"type":157},[],{"type":16,"value":1612}," be destroyed once all ",{"type":10,"tag":282,"props":1614,"children":1616},{"className":1615},[],[1617],{"type":16,"value":639},{"type":16,"value":1619},"\nobjects created from any of its ",{"type":10,"tag":282,"props":1621,"children":1623},{"className":1622},[],[1624],{"type":16,"value":1586},{"type":16,"value":1626}," objects have been\ndestroyed.",{"type":10,"tag":250,"props":1628,"children":1630},{"id":1629},"fundamentals-objectmodel-external",[1631],{"type":16,"value":1632},"External Object Handles",{"type":10,"tag":18,"props":1634,"children":1635},{},[1636,1638,1643,1645,1648],{"type":16,"value":1637},"As defined above, the scope of object handles created or allocated from a\n",{"type":10,"tag":282,"props":1639,"children":1641},{"className":1640},[],[1642],{"type":16,"value":639},{"type":16,"value":1644}," is limited to that logical device.\nObjects which are not in scope are said to be external.\nTo bring an external object into scope, an external handle ",{"type":10,"tag":45,"props":1646,"children":1647},{"type":47},[],{"type":16,"value":1649}," be exported\nfrom the object in the source scope and imported into the destination scope.",{"type":10,"tag":80,"props":1651,"children":1652},{},[1653],{"type":10,"tag":18,"props":1654,"children":1655},{},[1656,1658,1661,1663,1666],{"type":16,"value":1657},"The scope of external handles and their associated resources ",{"type":10,"tag":45,"props":1659,"children":1660},{"type":90},[],{"type":16,"value":1662}," vary\naccording to their type, but they ",{"type":10,"tag":45,"props":1664,"children":1665},{"type":157},[],{"type":16,"value":1667}," generally be shared across process\nand API boundaries.",{"type":10,"tag":23,"props":1669,"children":1671},{"id":1670},"fundamentals-abi",[1672],{"type":16,"value":1673},"Application Binary Interface",{"type":10,"tag":18,"props":1675,"children":1676},{},[1677],{"type":16,"value":1678},"The mechanism by which Vulkan is made available to applications is platform-\nor implementation- defined.\nOn many platforms the C interface described in this Specification is\nprovided by a shared library.\nSince shared libraries can be changed independently of the applications that\nuse them, they present particular compatibility challenges, and this\nSpecification places some requirements on them.",{"type":10,"tag":18,"props":1680,"children":1681},{},[1682,1684,1687,1689,1695,1697,1703],{"type":16,"value":1683},"Shared library implementations ",{"type":10,"tag":45,"props":1685,"children":1686},{"type":47},[],{"type":16,"value":1688}," use the default Application Binary\nInterface (ABI) of the standard C compiler for the platform, or provide\ncustomized API headers that cause application code to use the\nimplementation’s non-default ABI.\nAn ABI in this context means the size, alignment, and layout of C data\ntypes; the procedure calling convention; and the naming convention for\nshared library symbols corresponding to C functions.\nCustomizing the calling convention for a platform is usually accomplished by\ndefining ",{"type":10,"tag":61,"props":1690,"children":1692},{"href":1691},"/chapters/boilerplate#boilerplate-platform-specific-calling-conventions",[1693],{"type":16,"value":1694},"calling\nconvention macros",{"type":16,"value":1696}," appropriately in ",{"type":10,"tag":282,"props":1698,"children":1700},{"className":1699},[],[1701],{"type":16,"value":1702},"vk_platform.h",{"type":16,"value":268},{"type":10,"tag":18,"props":1705,"children":1706},{},[1707,1709,1715,1717,1720],{"type":16,"value":1708},"On platforms where Vulkan is provided as a shared library, library symbols\nbeginning with ",{"type":10,"tag":282,"props":1710,"children":1712},{"className":1711},[],[1713],{"type":16,"value":1714},"vk",{"type":16,"value":1716}," and followed by a digit or uppercase letter are\nreserved for use by the implementation.\nApplications which use Vulkan ",{"type":10,"tag":45,"props":1718,"children":1719},{"type":47},[],{"type":16,"value":1721}," not provide definitions of these\nsymbols.\nThis allows the Vulkan shared library to be updated with additional symbols\nfor new API versions or extensions without causing symbol conflicts with\nexisting applications.",{"type":10,"tag":18,"props":1723,"children":1724},{},[1725,1726,1729,1731,1737,1739,1742],{"type":16,"value":1683},{"type":10,"tag":45,"props":1727,"children":1728},{"type":96},[],{"type":16,"value":1730}," provide library symbols for commands\nin the highest version of this Specification they support, and for\n",{"type":10,"tag":61,"props":1732,"children":1734},{"href":1733},"/chapters/wsi#wsi",[1735],{"type":16,"value":1736},"Window System Integration",{"type":16,"value":1738},"\nextensions relevant to the platform.\nThey ",{"type":10,"tag":45,"props":1740,"children":1741},{"type":90},[],{"type":16,"value":1743}," also provide library symbols for commands defined by additional\nextensions.",{"type":10,"tag":80,"props":1745,"children":1746},{},[1747,1759],{"type":10,"tag":18,"props":1748,"children":1749},{},[1750,1752,1757],{"type":16,"value":1751},"These requirements and recommendations are intended to allow implementors to\ntake advantage of platform-specific conventions for SDKs, ABIs, library\nversioning mechanisms, etc.\nwhile still minimizing the code changes necessary to port applications or\nlibraries between platforms.\nPlatform vendors, or providers of the ",{"type":10,"tag":117,"props":1753,"children":1754},{},[1755],{"type":16,"value":1756},"de facto",{"type":16,"value":1758}," standard Vulkan shared\nlibrary for a platform, are encouraged to document what symbols the shared\nlibrary provides and how it will be versioned when new symbols are added.",{"type":10,"tag":18,"props":1760,"children":1761},{},[1762,1764,1767,1769,1775,1776,1782,1784,1787],{"type":16,"value":1763},"Applications ",{"type":10,"tag":45,"props":1765,"children":1766},{"type":96},[],{"type":16,"value":1768}," only rely on shared library symbols for commands in the\nminimum core version required by the application.\n",{"type":10,"tag":61,"props":1770,"children":1772},{"href":1771},"/man/vkGetInstanceProcAddr",[1773],{"type":16,"value":1774},"vkGetInstanceProcAddr",{"type":16,"value":709},{"type":10,"tag":61,"props":1777,"children":1779},{"href":1778},"/man/vkGetDeviceProcAddr",[1780],{"type":16,"value":1781},"vkGetDeviceProcAddr",{"type":16,"value":1783}," ",{"type":10,"tag":45,"props":1785,"children":1786},{"type":96},[],{"type":16,"value":1788}," be used to\nobtain function pointers for commands in core versions beyond the\napplication’s minimum required version.",{"type":10,"tag":23,"props":1790,"children":1792},{"id":1791},"fundamentals-commandsyntax",[1793],{"type":16,"value":1794},"Command Syntax and Duration",{"type":10,"tag":18,"props":1796,"children":1797},{},[1798,1800,1803],{"type":16,"value":1799},"The Specification describes Vulkan commands as functions or procedures using\nC99 syntax.\nLanguage bindings for other languages such as C++ and JavaScript ",{"type":10,"tag":45,"props":1801,"children":1802},{"type":90},[],{"type":16,"value":1804}," allow\nfor stricter parameter passing, or object-oriented interfaces.",{"type":10,"tag":18,"props":1806,"children":1807},{},[1808,1810,1816],{"type":16,"value":1809},"Vulkan uses the standard C types for the base type of scalar parameters\n(e.g. types from ",{"type":10,"tag":282,"props":1811,"children":1813},{"className":1812},[],[1814],{"type":16,"value":1815},"\u003Cstdint.h>",{"type":16,"value":1817},"), with exceptions described below, or\nelsewhere in the text when appropriate:",{"type":10,"tag":1819,"props":1820,"children":1823},"refpage",{"name":1821,"type":1822},"VkBool32","basetypes",[1824],{"type":10,"tag":18,"props":1825,"children":1826},{},[1827],{"type":16,"value":1828},"Vulkan boolean type",{"type":10,"tag":1819,"props":1830,"children":1833},{"name":1831,"type":1832},"VK\\_TRUE","consts",[1834],{"type":10,"tag":18,"props":1835,"children":1836},{},[1837],{"type":16,"value":1838},"Boolean true value",{"type":10,"tag":1819,"props":1840,"children":1842},{"name":1841,"type":1832},"VK\\_FALSE",[1843],{"type":10,"tag":18,"props":1844,"children":1845},{},[1846],{"type":16,"value":1847},"Boolean false value",{"type":10,"tag":1819,"props":1849,"children":1851},{"name":1850,"type":1822},"VkDeviceSize",[1852],{"type":10,"tag":18,"props":1853,"children":1854},{},[1855],{"type":16,"value":1856},"Vulkan device memory size and offsets",{"type":10,"tag":1819,"props":1858,"children":1860},{"name":1859,"type":1822},"VkDeviceAddress",[1861],{"type":10,"tag":18,"props":1862,"children":1863},{},[1864],{"type":16,"value":1865},"Vulkan device address type",{"type":10,"tag":18,"props":1867,"children":1868},{},[1869,1871,1876,1878,1884,1886,1891],{"type":16,"value":1870},"Commands that create Vulkan objects are of the form ",{"type":10,"tag":282,"props":1872,"children":1874},{"className":1873},[],[1875],{"type":16,"value":707},{"type":16,"value":1877}," and take\n",{"type":10,"tag":282,"props":1879,"children":1881},{"className":1880},[],[1882],{"type":16,"value":1883},"Vk*CreateInfo",{"type":16,"value":1885}," structures with the parameters needed to create the\nobject.\nThese Vulkan objects are destroyed with commands of the form\n",{"type":10,"tag":282,"props":1887,"children":1889},{"className":1888},[],[1890],{"type":16,"value":731},{"type":16,"value":268},{"type":10,"tag":18,"props":1893,"children":1894},{},[1895,1897,1903,1905,1910,1912,1915,1917,1923,1925,1931],{"type":16,"value":1896},"The last in-parameter to each command that creates or destroys a Vulkan\nobject is ",{"type":10,"tag":282,"props":1898,"children":1900},{"className":1899},[],[1901],{"type":16,"value":1902},"pAllocator",{"type":16,"value":1904},".\nThe ",{"type":10,"tag":282,"props":1906,"children":1908},{"className":1907},[],[1909],{"type":16,"value":1902},{"type":16,"value":1911}," parameter ",{"type":10,"tag":45,"props":1913,"children":1914},{"type":157},[],{"type":16,"value":1916}," be set to a non-",{"type":10,"tag":282,"props":1918,"children":1920},{"className":1919},[],[1921],{"type":16,"value":1922},"NULL",{"type":16,"value":1924}," value such that\nallocations for the given object are delegated to an application provided\ncallback; refer to the ",{"type":10,"tag":61,"props":1926,"children":1928},{"href":1927},"/chapters/memory#memory-allocation",[1929],{"type":16,"value":1930},"Memory Allocation",{"type":16,"value":1932}," chapter for\nfurther details.",{"type":10,"tag":18,"props":1934,"children":1935},{},[1936,1938,1943,1945,1951,1953,1958],{"type":16,"value":1937},"Commands that allocate Vulkan objects owned by pool objects are of the form\n",{"type":10,"tag":282,"props":1939,"children":1941},{"className":1940},[],[1942],{"type":16,"value":715},{"type":16,"value":1944},", and take ",{"type":10,"tag":282,"props":1946,"children":1948},{"className":1947},[],[1949],{"type":16,"value":1950},"Vk*AllocateInfo",{"type":16,"value":1952}," structures.\nThese Vulkan objects are freed with commands of the form ",{"type":10,"tag":282,"props":1954,"children":1956},{"className":1955},[],[1957],{"type":16,"value":738},{"type":16,"value":1959},".\nThese objects do not take allocators; if host memory is needed, they will\nuse the allocator that was specified when their parent pool was created.",{"type":10,"tag":18,"props":1961,"children":1962},{},[1963,1965,1971,1973,1976,1978,1981],{"type":16,"value":1964},"Commands are recorded into a command buffer by calling API commands of the\nform ",{"type":10,"tag":282,"props":1966,"children":1968},{"className":1967},[],[1969],{"type":16,"value":1970},"vkCmd*",{"type":16,"value":1972},".\nEach such command ",{"type":10,"tag":45,"props":1974,"children":1975},{"type":90},[],{"type":16,"value":1977}," have different restrictions on where it ",{"type":10,"tag":45,"props":1979,"children":1980},{"type":157},[],{"type":16,"value":1982}," be used:\nin a primary and/or secondary command buffer, inside and/or outside a render\npass, and in one or more of the supported queue types.\nThese restrictions are documented together with the definition of each such\ncommand.",{"type":10,"tag":18,"props":1984,"children":1985},{},[1986,1988,1993],{"type":16,"value":1987},"The ",{"type":10,"tag":117,"props":1989,"children":1990},{},[1991],{"type":16,"value":1992},"duration",{"type":16,"value":1994}," of a Vulkan command refers to the interval between calling\nthe command and its return to the caller.",{"type":10,"tag":250,"props":1996,"children":1998},{"id":1997},"fundamentals-commandsyntax-results-lifetime",[1999],{"type":16,"value":2000},"Lifetime of Retrieved Results",{"type":10,"tag":18,"props":2002,"children":2003},{},[2004,2006,2012,2013,2019],{"type":16,"value":2005},"Information is retrieved from the implementation with commands of the form\n",{"type":10,"tag":282,"props":2007,"children":2009},{"className":2008},[],[2010],{"type":16,"value":2011},"vkGet*",{"type":16,"value":709},{"type":10,"tag":282,"props":2014,"children":2016},{"className":2015},[],[2017],{"type":16,"value":2018},"vkEnumerate*",{"type":16,"value":268},{"type":10,"tag":18,"props":2021,"children":2022},{},[2023,2025,2030],{"type":16,"value":2024},"Unless otherwise specified for an individual command, the results are\n",{"type":10,"tag":117,"props":2026,"children":2027},{},[2028],{"type":16,"value":2029},"invariant",{"type":16,"value":2031},"; that is, they will remain unchanged when retrieved again by\ncalling the same command with the same parameters, so long as those\nparameters themselves all remain valid.",{"type":10,"tag":250,"props":2033,"children":2035},{"id":2034},"fundamentals-commandsyntax-array-results",[2036],{"type":16,"value":2037},"Array Results",{"type":10,"tag":18,"props":2039,"children":2040},{},[2041,2043,2048,2049,2054],{"type":16,"value":2042},"Some query commands of the form ",{"type":10,"tag":282,"props":2044,"children":2046},{"className":2045},[],[2047],{"type":16,"value":2011},{"type":16,"value":709},{"type":10,"tag":282,"props":2050,"children":2052},{"className":2051},[],[2053],{"type":16,"value":2018},{"type":16,"value":2055}," enable\nretrieving multiple results in the form of a return array.\nSuch commands typically have two pointer arguments as follows:",{"type":10,"tag":35,"props":2057,"children":2058},{},[2059,2080],{"type":10,"tag":39,"props":2060,"children":2061},{},[2062,2064,2070,2072,2078],{"type":16,"value":2063},"An element count pointer pointing to an integer variable, conventionally\nnamed as ",{"type":10,"tag":282,"props":2065,"children":2067},{"className":2066},[],[2068],{"type":16,"value":2069},"p*Count",{"type":16,"value":2071}," where ",{"type":10,"tag":282,"props":2073,"children":2075},{"className":2074},[],[2076],{"type":16,"value":2077},"*",{"type":16,"value":2079}," is the capitalized singular form of\nthe name of the retrieved values.",{"type":10,"tag":39,"props":2081,"children":2082},{},[2083,2085,2091,2092,2097],{"type":16,"value":2084},"A pointer to an array where the result array is retrieved,\nconventionally named as ",{"type":10,"tag":282,"props":2086,"children":2088},{"className":2087},[],[2089],{"type":16,"value":2090},"p*",{"type":16,"value":2071},{"type":10,"tag":282,"props":2093,"children":2095},{"className":2094},[],[2096],{"type":16,"value":2077},{"type":16,"value":2098}," is the capitalized plural\nform of the name of the retrieved values.",{"type":10,"tag":18,"props":2100,"children":2101},{},[2102,2104,2109,2111,2114,2116,2122,2124,2130],{"type":16,"value":2103},"If such commands are called with the array pointer set to ",{"type":10,"tag":282,"props":2105,"children":2107},{"className":2106},[],[2108],{"type":16,"value":1922},{"type":16,"value":2110},", then the\nnumber of retrievable elements is returned in the variable pointed to by the\nelement count pointer.\nOtherwise, the element count pointer ",{"type":10,"tag":45,"props":2112,"children":2113},{"type":47},[],{"type":16,"value":2115}," point to a variable set by the\napplication to the number of elements in the return array, and on return the\nvariable is overwritten with the number of elements actually written to the\nreturn array.\nIf the input element count is less than the number of retrievable array\nelements, the query will write only as many elements to the return array as\nspecified by the element count variable set by the application, and the\ncommand will return ",{"type":10,"tag":282,"props":2117,"children":2119},{"className":2118},[],[2120],{"type":16,"value":2121},"VK_INCOMPLETE",{"type":16,"value":2123}," instead of ",{"type":10,"tag":282,"props":2125,"children":2127},{"className":2126},[],[2128],{"type":16,"value":2129},"VK_SUCCESS",{"type":16,"value":2131},", to\nindicate that not all retrievable array elements were returned.",{"type":10,"tag":80,"props":2133,"children":2134},{},[2135,2140],{"type":10,"tag":18,"props":2136,"children":2137},{},[2138],{"type":16,"value":2139},"In practice, this means that applications will typically call such query\ncommands twice:",{"type":10,"tag":35,"props":2141,"children":2142},{},[2143,2155],{"type":10,"tag":39,"props":2144,"children":2145},{},[2146,2148,2153],{"type":16,"value":2147},"First, with the array pointer set to ",{"type":10,"tag":282,"props":2149,"children":2151},{"className":2150},[],[2152],{"type":16,"value":1922},{"type":16,"value":2154},", to retrieve the number of\nretrievable elements.",{"type":10,"tag":39,"props":2156,"children":2157},{},[2158],{"type":16,"value":2159},"Second, with the array pointer pointing to an application allocated\nstorage for at least as many elements as indicated by the variable\npointed to by the element count pointer, to retrieve at most as many of\nthe retrievable elements.",{"type":10,"tag":18,"props":2161,"children":2162},{},[2163,2165,2171,2173,2176],{"type":16,"value":2164},"Query commands that return one or more structures, regardless of whether\nthey return a single or an array of structures with or without a ",{"type":10,"tag":282,"props":2166,"children":2168},{"className":2167},[],[2169],{"type":16,"value":2170},"pNext",{"type":16,"value":2172},"\nchain, ",{"type":10,"tag":45,"props":2174,"children":2175},{"type":90},[],{"type":16,"value":2177}," also contain arrays within those structures.\nSuch return arrays are typically defined in the form of two members as\nfollows:",{"type":10,"tag":35,"props":2179,"children":2180},{},[2181,2200],{"type":10,"tag":39,"props":2182,"children":2183},{},[2184,2186,2192,2193,2198],{"type":16,"value":2185},"An integer value specifying the element count, conventionally named as\n",{"type":10,"tag":282,"props":2187,"children":2189},{"className":2188},[],[2190],{"type":16,"value":2191},"*Count",{"type":16,"value":2071},{"type":10,"tag":282,"props":2194,"children":2196},{"className":2195},[],[2197],{"type":16,"value":2077},{"type":16,"value":2199}," is the singular form of the name of the\nretrieved values.",{"type":10,"tag":39,"props":2201,"children":2202},{},[2203,2204,2209,2210,2215],{"type":16,"value":2084},{"type":10,"tag":282,"props":2205,"children":2207},{"className":2206},[],[2208],{"type":16,"value":2090},{"type":16,"value":2071},{"type":10,"tag":282,"props":2211,"children":2213},{"className":2212},[],[2214],{"type":16,"value":2077},{"type":16,"value":2098},{"type":10,"tag":18,"props":2217,"children":2218},{},[2219,2221,2226,2228,2231,2233,2238,2239,2244,2246,2252],{"type":16,"value":2220},"Analogously to query commands that return multiple results, if the command\nis called with the array pointer member of the output structure in question\nset to ",{"type":10,"tag":282,"props":2222,"children":2224},{"className":2223},[],[2225],{"type":16,"value":1922},{"type":16,"value":2227},", then the number of retrievable elements is returned in the\nelement count member of that output structure.\nOtherwise, the element count ",{"type":10,"tag":45,"props":2229,"children":2230},{"type":47},[],{"type":16,"value":2232}," specify the number of elements in the\nreturn array, and on return the element count member is overwritten with the\nnumber of elements actually written to the return array.\nIf the input element count is less than the number of retrievable array\nelements, the query will write only as many elements to the return array as\nspecified by the input element count, and the command will return\n",{"type":10,"tag":282,"props":2234,"children":2236},{"className":2235},[],[2237],{"type":16,"value":2121},{"type":16,"value":2123},{"type":10,"tag":282,"props":2240,"children":2242},{"className":2241},[],[2243],{"type":16,"value":2129},{"type":16,"value":2245},", if the query command has a\n",{"type":10,"tag":61,"props":2247,"children":2249},{"href":2248},"/man/VkResult",[2250],{"type":16,"value":2251},"VkResult",{"type":16,"value":2253}," return type, to indicate that not all retrievable array\nelements were returned.",{"type":10,"tag":80,"props":2255,"children":2256},{},[2257,2273],{"type":10,"tag":18,"props":2258,"children":2259},{},[2260,2262,2265,2267,2271],{"type":16,"value":2261},"Applications need to separately track the value they provided as the input\nelement count member for such arrays and compare those with the returned\nelement counts in order to determine whether the actually returned element\ncount is smaller than the size of the return array.\nAnother side effect of this is that it is impossible for the application to\ndetermine if the number of retrievable elements has increased beyond the\nprovided input element count so using return arrays in output structures\n",{"type":10,"tag":45,"props":2263,"children":2264},{"type":96},[],{"type":16,"value":2266}," be limited to ",{"type":10,"tag":117,"props":2268,"children":2269},{},[2270],{"type":16,"value":2029},{"type":16,"value":2272}," array results.\nIn practice, this means that applications will typically call such query\ncommands multiple times:",{"type":10,"tag":35,"props":2274,"children":2275},{},[2276,2288,2293],{"type":10,"tag":39,"props":2277,"children":2278},{},[2279,2281,2286],{"type":16,"value":2280},"First, with the array pointer member(s) set to ",{"type":10,"tag":282,"props":2282,"children":2284},{"className":2283},[],[2285],{"type":16,"value":1922},{"type":16,"value":2287},", to retrieve the\nnumber(s) of retrievable elements.",{"type":10,"tag":39,"props":2289,"children":2290},{},[2291],{"type":16,"value":2292},"Second, with the array pointer(s) pointing to an application allocated\nstorage for at least as many elements as indicated by the element count\nmember(s), to retrieve at most as many of the retrievable elements.",{"type":10,"tag":39,"props":2294,"children":2295},{},[2296,2298,2301],{"type":16,"value":2297},"Then the process ",{"type":10,"tag":45,"props":2299,"children":2300},{"type":90},[],{"type":16,"value":2302}," need to be repeated for all other newly introduced\nreturn arrays in any nested output structures indirectly specified\nthrough the previously retrieved result arrays.",{"type":10,"tag":18,"props":2304,"children":2305},{},[2306,2308,2311,2313,2318,2320,2323],{"type":16,"value":2307},"Regardless of the type of query command, any array pointer member of an\noutput structure ",{"type":10,"tag":45,"props":2309,"children":2310},{"type":47},[],{"type":16,"value":2312}," either be ",{"type":10,"tag":282,"props":2314,"children":2316},{"className":2315},[],[2317],{"type":16,"value":1922},{"type":16,"value":2319},", or point to an\napplication-allocated array.\nQuery commands ",{"type":10,"tag":45,"props":2321,"children":2322},{"type":47},[],{"type":16,"value":2324}," not return a pointer to implementation allocated\nstorage in any output structure.",{"type":10,"tag":23,"props":2326,"children":2328},{"id":2327},"fundamentals-threadingbehavior",[2329],{"type":16,"value":2330},"Threading Behavior",{"type":10,"tag":18,"props":2332,"children":2333},{},[2334,2336,2341,2343,2346],{"type":16,"value":2335},"Vulkan is intended to provide scalable performance when used on multiple\nhost threads.\nAll commands support being called concurrently from multiple threads, but\ncertain parameters, or components of parameters are defined to be\n",{"type":10,"tag":117,"props":2337,"children":2338},{},[2339],{"type":16,"value":2340},"externally synchronized",{"type":16,"value":2342},".\nThis means that the caller ",{"type":10,"tag":45,"props":2344,"children":2345},{"type":47},[],{"type":16,"value":2347}," guarantee that no more than one thread is\nusing such a parameter at a given time.",{"type":10,"tag":18,"props":2349,"children":2350},{},[2351,2353,2356,2358,2361],{"type":16,"value":2352},"More precisely, Vulkan commands use simple stores to update the state of\nVulkan objects.\nA parameter declared as externally synchronized ",{"type":10,"tag":45,"props":2354,"children":2355},{"type":90},[],{"type":16,"value":2357}," have its contents\nupdated at any time during the host execution of the command.\nIf two commands operate on the same object and at least one of the commands\ndeclares the object to be externally synchronized, then the caller ",{"type":10,"tag":45,"props":2359,"children":2360},{"type":47},[],{"type":16,"value":2362},"\nguarantee not only that the commands do not execute simultaneously, but also\nthat the two commands are separated by an appropriate memory barrier (if\nneeded).",{"type":10,"tag":80,"props":2364,"children":2365},{},[2366],{"type":10,"tag":18,"props":2367,"children":2368},{},[2369],{"type":16,"value":2370},"Memory barriers are particularly relevant for hosts based on the ARM CPU\narchitecture, which is more weakly ordered than many developers are\naccustomed to from x86/x64 programming.\nFortunately, most higher-level synchronization primitives (like the pthread\nlibrary) perform memory barriers as a part of mutual exclusion, so mutexing\nVulkan objects via these primitives will have the desired effect.",{"type":10,"tag":18,"props":2372,"children":2373},{},[2374,2376,2379,2381,2387,2389,2392,2394,2397,2399,2405,2407,2412,2414,2418],{"type":16,"value":2375},"Similarly the application ",{"type":10,"tag":45,"props":2377,"children":2378},{"type":47},[],{"type":16,"value":2380}," avoid any potential data hazard of\napplication-owned memory that has its\n",{"type":10,"tag":61,"props":2382,"children":2384},{"href":2383},"/chapters/fundamentals#fundamentals-objectmodel-lifetime-acquire",[2385],{"type":16,"value":2386},"ownership temporarily acquired",{"type":16,"value":2388},"\nby a Vulkan command.\nWhile the ownership of application-owned memory remains acquired by a\ncommand the implementation ",{"type":10,"tag":45,"props":2390,"children":2391},{"type":90},[],{"type":16,"value":2393}," read the memory at any point, and it ",{"type":10,"tag":45,"props":2395,"children":2396},{"type":90},[],{"type":16,"value":2398},"\nwrite non-",{"type":10,"tag":282,"props":2400,"children":2402},{"className":2401},[],[2403],{"type":16,"value":2404},"const",{"type":16,"value":2406}," qualified memory at any point.\nParameters referring to non-",{"type":10,"tag":282,"props":2408,"children":2410},{"className":2409},[],[2411],{"type":16,"value":2404},{"type":16,"value":2413}," qualified application-owned memory\nare not marked explicitly as ",{"type":10,"tag":117,"props":2415,"children":2416},{},[2417],{"type":16,"value":2340},{"type":16,"value":2419}," in the Specification.",{"type":10,"tag":18,"props":2421,"children":2422},{},[2423,2425,2431,2433,2436],{"type":16,"value":2424},"If an application is using ",{"type":10,"tag":61,"props":2426,"children":2428},{"href":2427},"/chapters/deferred-host-operations#deferred-host-operations",[2429],{"type":16,"value":2430},"deferred host\noperations",{"type":16,"value":2432}," in a command, and that operation is successfully deferred,\nobject parameters and application-owned memory passed to that command ",{"type":10,"tag":45,"props":2434,"children":2435},{"type":90},[],{"type":16,"value":2437},"\nbe accessed at any time until the deferred operation is complete.",{"type":10,"tag":18,"props":2439,"children":2440},{},[2441,2443,2448,2450,2453,2455,2458,2460,2463,2465,2468],{"type":16,"value":2442},"Many object types are ",{"type":10,"tag":117,"props":2444,"children":2445},{},[2446],{"type":16,"value":2447},"immutable",{"type":16,"value":2449},", meaning the objects ",{"type":10,"tag":45,"props":2451,"children":2452},{"type":1294},[],{"type":16,"value":2454}," change once\nthey have been created.\nThese types of objects never need external synchronization, except that they\n",{"type":10,"tag":45,"props":2456,"children":2457},{"type":47},[],{"type":16,"value":2459}," not be destroyed while they are in use on another thread.\nIn certain special cases mutable object parameters are internally\nsynchronized, making external synchronization unnecessary.\nAny command parameters that are not labeled as externally synchronized are\neither not mutated by the command or are internally synchronized.\nAdditionally, certain objects related to a command’s parameters (e.g.\ncommand pools and descriptor pools) ",{"type":10,"tag":45,"props":2461,"children":2462},{"type":90},[],{"type":16,"value":2464}," be affected by a command, and ",{"type":10,"tag":45,"props":2466,"children":2467},{"type":47},[],{"type":16,"value":2469},"\nalso be externally synchronized.\nThese implicit parameters are documented as described below.",{"type":10,"tag":18,"props":2471,"children":2472},{},[2473],{"type":16,"value":2474},"Parameters of commands that are externally synchronized are listed below.",{"type":10,"tag":18,"props":2476,"children":2477},{},[2478,2480,2485,2487,2493,2495,2501,2503,2509,2511,2517],{"type":16,"value":2479},"For ",{"type":10,"tag":61,"props":2481,"children":2483},{"href":2482},"/man/VkPipelineCache",[2484],{"type":16,"value":813},{"type":16,"value":2486}," objects created with ",{"type":10,"tag":282,"props":2488,"children":2490},{"className":2489},[],[2491],{"type":16,"value":2492},"flags",{"type":16,"value":2494}," containing\n",{"type":10,"tag":282,"props":2496,"children":2498},{"className":2497},[],[2499],{"type":16,"value":2500},"VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT",{"type":16,"value":2502},", the above table\nis extended with the ",{"type":10,"tag":282,"props":2504,"children":2506},{"className":2505},[],[2507],{"type":16,"value":2508},"pipelineCache",{"type":16,"value":2510}," parameter to\n",{"type":10,"tag":282,"props":2512,"children":2514},{"className":2513},[],[2515],{"type":16,"value":2516},"vkCreate*Pipelines",{"type":16,"value":2518}," being externally synchronized.",{"type":10,"tag":18,"props":2520,"children":2521},{},[2522,2524,2527,2529,2532],{"type":16,"value":2523},"There are also a few instances where a command ",{"type":10,"tag":45,"props":2525,"children":2526},{"type":157},[],{"type":16,"value":2528}," take in an\napplication-allocated list whose contents are externally synchronized\nparameters.\nIn these cases, the caller ",{"type":10,"tag":45,"props":2530,"children":2531},{"type":47},[],{"type":16,"value":2533}," guarantee that at most one thread is using\na given element within the list at a given time.\nThese parameters are listed below.",{"type":10,"tag":18,"props":2535,"children":2536},{},[2537,2539,2545,2547,2553],{"type":16,"value":2538},"In addition, there are some implicit parameters that need to be externally\nsynchronized.\nFor example, when a ",{"type":10,"tag":282,"props":2540,"children":2542},{"className":2541},[],[2543],{"type":16,"value":2544},"commandBuffer",{"type":16,"value":2546}," parameter needs to be externally\nsynchronized, it implies that the ",{"type":10,"tag":282,"props":2548,"children":2550},{"className":2549},[],[2551],{"type":16,"value":2552},"commandPool",{"type":16,"value":2554}," from which that command\nbuffer was allocated also needs to be externally synchronized.\nThe implicit parameters and their associated object are listed below.",{"type":10,"tag":23,"props":2556,"children":2558},{"id":2557},"fundamentals-validusage",[2559],{"type":16,"value":2560},"Valid Usage",{"type":10,"tag":466,"props":2562,"children":2564},{"id":2563},"fundamentals-errors",[],{"type":10,"tag":18,"props":2566,"children":2567},{},[2568,2570,2573],{"type":16,"value":2569},"Valid usage defines a set of conditions which ",{"type":10,"tag":45,"props":2571,"children":2572},{"type":47},[],{"type":16,"value":2574}," be met in order to\nachieve well-defined runtime behavior in an application.\nThese conditions depend only on Vulkan state, and the parameters or objects\nwhose usage is constrained by the condition.",{"type":10,"tag":18,"props":2576,"children":2577},{},[2578,2580,2583,2585,2588,2590,2593,2595,2598,2600,2605,2607,2611],{"type":16,"value":2579},"The core layer assumes applications are using the API correctly.\nExcept as documented elsewhere in the Specification, the behavior of the\ncore layer to an application using the API incorrectly is undefined:, and\n",{"type":10,"tag":45,"props":2581,"children":2582},{"type":90},[],{"type":16,"value":2584}," include program termination.\nHowever, implementations ",{"type":10,"tag":45,"props":2586,"children":2587},{"type":47},[],{"type":16,"value":2589}," ensure that incorrect usage by an application\ndoes not affect the integrity of the operating system, the Vulkan\nimplementation, or other applications in the system using Vulkan.\nIn particular, any guarantees made by an operating system about whether\nmemory from one process ",{"type":10,"tag":45,"props":2591,"children":2592},{"type":157},[],{"type":16,"value":2594}," be visible to another process or not ",{"type":10,"tag":45,"props":2596,"children":2597},{"type":47},[],{"type":16,"value":2599}," not\nbe violated by a Vulkan implementation for ",{"type":10,"tag":117,"props":2601,"children":2602},{},[2603],{"type":16,"value":2604},"any memory allocation",{"type":16,"value":2606},".\nVulkan implementations are not ",{"type":10,"tag":45,"props":2608,"children":2610},{"type":2609},"required",[],{"type":16,"value":2612}," to make additional security or\nintegrity guarantees beyond those provided by the OS unless explicitly\ndirected by the application’s use of a particular feature or extension.",{"type":10,"tag":80,"props":2614,"children":2615},{},[2616,2633],{"type":10,"tag":18,"props":2617,"children":2618},{},[2619,2621,2624,2626,2631],{"type":16,"value":2620},"For instance, if an operating system guarantees that data in all its memory\nallocations are set to zero when newly allocated, the Vulkan implementation\n",{"type":10,"tag":45,"props":2622,"children":2623},{"type":47},[],{"type":16,"value":2625}," make the same guarantees for any allocations it controls (e.g.\n",{"type":10,"tag":61,"props":2627,"children":2629},{"href":2628},"/man/VkDeviceMemory",[2630],{"type":16,"value":1055},{"type":16,"value":2632},").",{"type":10,"tag":18,"props":2634,"children":2635},{},[2636,2638,2641],{"type":16,"value":2637},"Similarly, if an operating system guarantees that use-after-free of host\nallocations will not result in values written by another process becoming\nvisible, the same guarantees ",{"type":10,"tag":45,"props":2639,"children":2640},{"type":47},[],{"type":16,"value":2642}," be made by the Vulkan implementation for\ndevice memory.",{"type":10,"tag":18,"props":2644,"children":2645},{},[2646],{"type":16,"value":2647},"Some valid usage conditions have dependencies on runtime limits or feature\navailability.\nIt is possible to validate these conditions against Vulkan’s minimum\nsupported values for these limits and features, or some subset of other\nknown values.",{"type":10,"tag":18,"props":2649,"children":2650},{},[2651],{"type":16,"value":2652},"Valid usage conditions do not cover conditions where well-defined behavior\n(including returning an error code) exists.",{"type":10,"tag":18,"props":2654,"children":2655},{},[2656,2658,2661,2663,2666],{"type":16,"value":2657},"Valid usage conditions ",{"type":10,"tag":45,"props":2659,"children":2660},{"type":96},[],{"type":16,"value":2662}," apply to the command or structure where\ncomplete information about the condition would be known during execution of\nan application.\nThis is such that a validation layer or linter ",{"type":10,"tag":45,"props":2664,"children":2665},{"type":157},[],{"type":16,"value":2667}," be written directly\nagainst these statements at the point they are specified.",{"type":10,"tag":80,"props":2669,"children":2670},{},[2671,2676],{"type":10,"tag":18,"props":2672,"children":2673},{},[2674],{"type":16,"value":2675},"This does lead to some non-obvious places for valid usage statements.\nFor instance, the valid values for a structure might depend on a separate\nvalue in the calling command.\nIn this case, the structure itself will not reference this valid usage as it\nis impossible to determine validity from the structure that it is invalid -\ninstead this valid usage would be attached to the calling command.",{"type":10,"tag":18,"props":2677,"children":2678},{},[2679],{"type":16,"value":2680},"Another example is draw state - the state setters are independent, and can\ncause a legitimately invalid state configuration between draw calls; so the\nvalid usage statements are attached to the place where all state needs to be\nvalid - at the drawing command.",{"type":10,"tag":18,"props":2682,"children":2683},{},[2684,2686,2691],{"type":16,"value":2685},"Valid usage conditions are described in a block labeled ",{"type":10,"tag":282,"props":2687,"children":2689},{"className":2688},[],[2690],{"type":16,"value":2560},{"type":16,"value":2692},"\nfollowing each command or structure they apply to.",{"type":10,"tag":250,"props":2694,"children":2696},{"id":2695},"fundamentals-validation",[2697],{"type":16,"value":2698},"Usage Validation",{"type":10,"tag":18,"props":2700,"children":2701},{},[2702,2704,2707],{"type":16,"value":2703},"Vulkan is a layered API.\nThe lowest layer is the core Vulkan layer, as defined by this Specification.\nThe application ",{"type":10,"tag":45,"props":2705,"children":2706},{"type":157},[],{"type":16,"value":2708}," use additional layers above the core for debugging,\nvalidation, and other purposes.",{"type":10,"tag":18,"props":2710,"children":2711},{},[2712,2714,2717,2719,2722],{"type":16,"value":2713},"One of the core principles of Vulkan is that building and submitting command\nbuffers ",{"type":10,"tag":45,"props":2715,"children":2716},{"type":96},[],{"type":16,"value":2718}," be highly efficient.\nThus error checking and validation of state in the core layer is minimal,\nalthough more rigorous validation ",{"type":10,"tag":45,"props":2720,"children":2721},{"type":157},[],{"type":16,"value":2723}," be enabled through the use of layers.",{"type":10,"tag":18,"props":2725,"children":2726},{},[2727,2729,2732,2734,2737],{"type":16,"value":2728},"Validation of correct API usage is left to validation layers.\nApplications ",{"type":10,"tag":45,"props":2730,"children":2731},{"type":96},[],{"type":16,"value":2733}," be developed with validation layers enabled, to help\ncatch and eliminate errors.\nOnce validated, released applications ",{"type":10,"tag":45,"props":2735,"children":2736},{"type":96},[],{"type":16,"value":2738}," not enable validation layers\nby default.",{"type":10,"tag":250,"props":2740,"children":2742},{"id":2741},"fundamentals-implicit-validity",[2743],{"type":16,"value":2744},"Implicit Valid Usage",{"type":10,"tag":18,"props":2746,"children":2747},{},[2748,2750,2755,2757,2763],{"type":16,"value":2749},"Some valid usage conditions apply to all commands and structures in the API,\nunless explicitly denoted otherwise for a specific command or structure.\nThese conditions are considered ",{"type":10,"tag":117,"props":2751,"children":2752},{},[2753],{"type":16,"value":2754},"implicit",{"type":16,"value":2756},", and are described in a block\nlabeled ",{"type":10,"tag":282,"props":2758,"children":2760},{"className":2759},[],[2761],{"type":16,"value":2762},"Valid Usage (Implicit)",{"type":16,"value":2764}," following each command or structure they\napply to.\nImplicit valid usage conditions are described in detail below.",{"type":10,"tag":2766,"props":2767,"children":2769},"h4",{"id":2768},"fundamentals-validusage-handles",[2770],{"type":16,"value":2771},"Valid Usage for Object Handles",{"type":10,"tag":18,"props":2773,"children":2774},{},[2775,2777,2780],{"type":16,"value":2776},"Any input parameter to a command that is an object handle ",{"type":10,"tag":45,"props":2778,"children":2779},{"type":47},[],{"type":16,"value":2781}," be a valid\nobject handle, unless otherwise specified.\nAn object handle is valid if:",{"type":10,"tag":35,"props":2783,"children":2784},{},[2785,2790,2795],{"type":10,"tag":39,"props":2786,"children":2787},{},[2788],{"type":16,"value":2789},"It has been created or allocated by a previous, successful call to the\nAPI.\nSuch calls are noted in the Specification.",{"type":10,"tag":39,"props":2791,"children":2792},{},[2793],{"type":16,"value":2794},"It has not been deleted or freed by a previous call to the API.\nSuch calls are noted in the Specification.",{"type":10,"tag":39,"props":2796,"children":2797},{},[2798,2800,2803],{"type":16,"value":2799},"Any objects used by that object, either as part of creation or\nexecution, ",{"type":10,"tag":45,"props":2801,"children":2802},{"type":47},[],{"type":16,"value":2804}," also be valid.",{"type":10,"tag":18,"props":2806,"children":2807},{},[2808,2810,2816,2817,2822,2823,2826,2828,2833,2835,2838,2840,2845,2847,2852],{"type":16,"value":2809},"The reserved values ",{"type":10,"tag":61,"props":2811,"children":2813},{"href":2812},"/man/VK_NULL_HANDLE",[2814],{"type":16,"value":2815},"VK_NULL_HANDLE",{"type":16,"value":709},{"type":10,"tag":282,"props":2818,"children":2820},{"className":2819},[],[2821],{"type":16,"value":1922},{"type":16,"value":1783},{"type":10,"tag":45,"props":2824,"children":2825},{"type":157},[],{"type":16,"value":2827}," be used in place of\nvalid non-dispatchable handles and dispatchable handles, respectively, when\n",{"type":10,"tag":117,"props":2829,"children":2830},{},[2831],{"type":16,"value":2832},"explicitly called out in the Specification",{"type":16,"value":2834},".\nAny command that creates an object successfully ",{"type":10,"tag":45,"props":2836,"children":2837},{"type":47},[],{"type":16,"value":2839}," not return these\nvalues.\nIt is valid to pass these values to ",{"type":10,"tag":282,"props":2841,"children":2843},{"className":2842},[],[2844],{"type":16,"value":731},{"type":16,"value":2846}," or ",{"type":10,"tag":282,"props":2848,"children":2850},{"className":2849},[],[2851],{"type":16,"value":738},{"type":16,"value":2853},"\ncommands, which will silently ignore these values.",{"type":10,"tag":2766,"props":2855,"children":2857},{"id":2856},"fundamentals-validusage-pointers",[2858],{"type":16,"value":2859},"Valid Usage for Pointers",{"type":10,"tag":18,"props":2861,"children":2862},{},[2863,2865,2868,2870,2875],{"type":16,"value":2864},"Any parameter that is a pointer ",{"type":10,"tag":45,"props":2866,"children":2867},{"type":47},[],{"type":16,"value":2869}," be a ",{"type":10,"tag":117,"props":2871,"children":2872},{},[2873],{"type":16,"value":2874},"valid pointer",{"type":16,"value":2876}," only if it is\nexplicitly called out by a Valid Usage statement.",{"type":10,"tag":18,"props":2878,"children":2879},{},[2880,2882,2888],{"type":16,"value":2881},"A pointer is ",{"type":10,"tag":282,"props":2883,"children":2885},{"className":2884},[],[2886],{"type":16,"value":2887},"valid",{"type":16,"value":2889}," if it points at memory containing values of the\nnumber and type(s) expected by the command, and all fundamental types\naccessed through the pointer (e.g. as elements of an array or as members of\na structure) satisfy the alignment requirements of the host processor.",{"type":10,"tag":2766,"props":2891,"children":2893},{"id":2892},"fundamentals-validusage-strings",[2894],{"type":16,"value":2895},"Valid Usage for Strings",{"type":10,"tag":18,"props":2897,"children":2898},{},[2899,2901,2907,2908,2911,2913,2918,2919,2922,2924,2929],{"type":16,"value":2900},"Any parameter that is a pointer to ",{"type":10,"tag":282,"props":2902,"children":2904},{"className":2903},[],[2905],{"type":16,"value":2906},"char",{"type":16,"value":1783},{"type":10,"tag":45,"props":2909,"children":2910},{"type":47},[],{"type":16,"value":2912}," be a finite sequence of\nvalues terminated by a null character, or if ",{"type":10,"tag":117,"props":2914,"children":2915},{},[2916],{"type":16,"value":2917},"explicitly called out in the\nSpecification",{"type":16,"value":507},{"type":10,"tag":45,"props":2920,"children":2921},{"type":157},[],{"type":16,"value":2923}," be ",{"type":10,"tag":282,"props":2925,"children":2927},{"className":2926},[],[2928],{"type":16,"value":1922},{"type":16,"value":268},{"type":10,"tag":18,"props":2931,"children":2932},{},[2933,2935,2938,2940,2946],{"type":16,"value":2934},"Strings specified as UTF-8 encoded ",{"type":10,"tag":45,"props":2936,"children":2937},{"type":47},[],{"type":16,"value":2939}," not contain invalid UTF-8\nsequences.\nSee ",{"type":10,"tag":61,"props":2941,"children":2943},{"href":2942},"/chapters/fundamentals#fundamentals-strings",[2944],{"type":16,"value":2945},"String Representation",{"type":16,"value":2947}," for additional\ninformation about strings.",{"type":10,"tag":2766,"props":2949,"children":2951},{"id":2950},"fundamentals-validusage-enums",[2952],{"type":16,"value":2953},"Valid Usage for Enumerated Types",{"type":10,"tag":18,"props":2955,"children":2956},{},[2957,2959,2962],{"type":16,"value":2958},"Any parameter of an enumerated type ",{"type":10,"tag":45,"props":2960,"children":2961},{"type":47},[],{"type":16,"value":2963}," be a valid enumerant for that\ntype.\nUse of an enumerant is valid if the following conditions are true:",{"type":10,"tag":35,"props":2965,"children":2966},{},[2967,2972,3005,3054,3109],{"type":10,"tag":39,"props":2968,"children":2969},{},[2970],{"type":16,"value":2971},"The enumerant is defined as part of the enumerated type.",{"type":10,"tag":39,"props":2973,"children":2974},{},[2975,2977,2983,2984],{"type":16,"value":2976},"The enumerant is not a value suffixed with ",{"type":10,"tag":282,"props":2978,"children":2980},{"className":2979},[],[2981],{"type":16,"value":2982},"_MAX_ENUM",{"type":16,"value":268},{"type":10,"tag":35,"props":2985,"children":2986},{},[2987],{"type":10,"tag":39,"props":2988,"children":2989},{},[2990,2992,2998,3000,3003],{"type":16,"value":2991},"This value exists only to ensure that C ",{"type":10,"tag":282,"props":2993,"children":2995},{"className":2994},[],[2996],{"type":16,"value":2997},"enum",{"type":16,"value":2999}," types are 32 bits in\nsize and ",{"type":10,"tag":45,"props":3001,"children":3002},{"type":47},[],{"type":16,"value":3004}," not be used by applications.",{"type":10,"tag":39,"props":3006,"children":3007},{},[3008,3010,3015,3017],{"type":16,"value":3009},"If the enumerant is used in a function that has a ",{"type":10,"tag":61,"props":3011,"children":3013},{"href":3012},"/man/VkInstance",[3014],{"type":16,"value":1597},{"type":16,"value":3016}," as\nits first parameter and either:",{"type":10,"tag":35,"props":3018,"children":3019},{},[3020,3041],{"type":10,"tag":39,"props":3021,"children":3022},{},[3023,3025,3031,3033,3039],{"type":16,"value":3024},"it was added by a core version that is supported\nand the value of ",{"type":10,"tag":61,"props":3026,"children":3028},{"href":3027},"/man/VkApplicationInfo",[3029],{"type":16,"value":3030},"VkApplicationInfo",{"type":16,"value":3032},"::",{"type":10,"tag":282,"props":3034,"children":3036},{"className":3035},[],[3037],{"type":16,"value":3038},"apiVersion",{"type":16,"value":3040}," is greater\nthan or equal to the version that added it; or",{"type":10,"tag":39,"props":3042,"children":3043},{},[3044,3046,3052],{"type":16,"value":3045},"it was added by an ",{"type":10,"tag":61,"props":3047,"children":3049},{"href":3048},"/chapters/extensions#extensions",[3050],{"type":16,"value":3051},"instance extension",{"type":16,"value":3053}," that was enabled\nfor the instance.",{"type":10,"tag":39,"props":3055,"children":3056},{},[3057,3058,3063,3065],{"type":16,"value":3009},{"type":10,"tag":61,"props":3059,"children":3061},{"href":3060},"/man/VkPhysicalDevice",[3062],{"type":16,"value":1586},{"type":16,"value":3064},"\nobject as its first parameter and either:",{"type":10,"tag":35,"props":3066,"children":3067},{},[3068,3087,3097],{"type":10,"tag":39,"props":3069,"children":3070},{},[3071,3073,3079,3080,3085],{"type":16,"value":3072},"it was added by a core version that is supported by that device (as\nreported by ",{"type":10,"tag":61,"props":3074,"children":3076},{"href":3075},"/man/VkPhysicalDeviceProperties",[3077],{"type":16,"value":3078},"VkPhysicalDeviceProperties",{"type":16,"value":3032},{"type":10,"tag":282,"props":3081,"children":3083},{"className":3082},[],[3084],{"type":16,"value":3038},{"type":16,"value":3086},");",{"type":10,"tag":39,"props":3088,"children":3089},{},[3090,3091,3095],{"type":16,"value":3045},{"type":10,"tag":61,"props":3092,"children":3093},{"href":3048},[3094],{"type":16,"value":3051},{"type":16,"value":3096}," that was enabled\nfor the instance; or",{"type":10,"tag":39,"props":3098,"children":3099},{},[3100,3102,3107],{"type":16,"value":3101},"it was added by a ",{"type":10,"tag":61,"props":3103,"children":3104},{"href":3048},[3105],{"type":16,"value":3106},"device extension",{"type":16,"value":3108}," that is supported by\nthat device.",{"type":10,"tag":39,"props":3110,"children":3111},{},[3112,3114],{"type":16,"value":3113},"If the enumerant is used in a function that has any other dispatchable\nobject as its first parameter and either:",{"type":10,"tag":35,"props":3115,"children":3116},{},[3117,3134],{"type":10,"tag":39,"props":3118,"children":3119},{},[3120,3122,3126,3127,3132],{"type":16,"value":3121},"it was added by a core version that is supported for the device (as\nreported by ",{"type":10,"tag":61,"props":3123,"children":3124},{"href":3075},[3125],{"type":16,"value":3078},{"type":16,"value":3032},{"type":10,"tag":282,"props":3128,"children":3130},{"className":3129},[],[3131],{"type":16,"value":3038},{"type":16,"value":3133},"); or",{"type":10,"tag":39,"props":3135,"children":3136},{},[3137,3138,3142],{"type":16,"value":3101},{"type":10,"tag":61,"props":3139,"children":3140},{"href":3048},[3141],{"type":16,"value":3106},{"type":16,"value":3143}," that was enabled for\nthe device.",{"type":10,"tag":18,"props":3145,"children":3146},{},[3147,3149,3159,3161,3165,3167,3173],{"type":16,"value":3148},"Additionally, if ",{"type":10,"tag":61,"props":3150,"children":3152},{"href":3151},"/man/VkPhysicalDeviceMaintenance5FeaturesKHR#features-maintenance5",[3153],{"type":10,"tag":282,"props":3154,"children":3156},{"className":3155},[],[3157],{"type":16,"value":3158},"maintenance5",{"type":16,"value":3160}," is supported,\nany integer value representable in the range valid for the defined type is\nvalid when used in a function that has a ",{"type":10,"tag":61,"props":3162,"children":3163},{"href":3060},[3164],{"type":16,"value":1586},{"type":16,"value":3166}," object as\nits first parameter.\nPhysical device queries will either return results indicating lack of\nsupport, or ignore unsupported values when used as a bit flag in a\n",{"type":10,"tag":282,"props":3168,"children":3170},{"className":3169},[],[3171],{"type":16,"value":3172},"Vk*Flags*",{"type":16,"value":3174}," parameter.",{"type":10,"tag":18,"props":3176,"children":3177},{},[3178,3180,3183],{"type":16,"value":3179},"Any enumerated type returned from a query command or otherwise output from\nVulkan to the application ",{"type":10,"tag":45,"props":3181,"children":3182},{"type":47},[],{"type":16,"value":3184}," not have a reserved value.\nReserved values are values not defined by any extension for that enumerated\ntype.",{"type":10,"tag":80,"props":3186,"children":3187},{},[3188],{"type":10,"tag":18,"props":3189,"children":3190},{},[3191,3193,3199],{"type":16,"value":3192},"In some special cases, an enumerant is only meaningful if a feature defined\nby an extension is also enabled, as well as the extension itself.\nThe global ",{"type":10,"tag":282,"props":3194,"children":3196},{"className":3195},[],[3197],{"type":16,"value":3198},"valid enumerant",{"type":16,"value":3200}," rule described here does not address such\ncases.",{"type":10,"tag":80,"props":3202,"children":3203},{},[3204],{"type":10,"tag":18,"props":3205,"children":3206},{},[3207,3209,3215],{"type":16,"value":3208},"This language is intended to accommodate cases such as ",{"type":10,"tag":282,"props":3210,"children":3212},{"className":3211},[],[3213],{"type":16,"value":3214},"hidden",{"type":16,"value":3216}," extensions\nknown only to driver internals, or layers enabling extensions without\nknowledge of the application, without allowing return of values not defined\nby any extension.",{"type":10,"tag":80,"props":3218,"children":3219},{},[3220],{"type":10,"tag":18,"props":3221,"children":3222},{},[3223,3225,3231,3233,3239,3241,3246],{"type":16,"value":3224},"Application developers are encouraged to be careful when using ",{"type":10,"tag":282,"props":3226,"children":3228},{"className":3227},[],[3229],{"type":16,"value":3230},"switch",{"type":16,"value":3232},"\nstatements with Vulkan API enums.\nThis is because new extensions can add new values to existing enums.\nUsing a ",{"type":10,"tag":282,"props":3234,"children":3236},{"className":3235},[],[3237],{"type":16,"value":3238},"default:",{"type":16,"value":3240}," statement within a ",{"type":10,"tag":282,"props":3242,"children":3244},{"className":3243},[],[3245],{"type":16,"value":3230},{"type":16,"value":3247}," may avoid future compilation\nissues.",{"type":10,"tag":2766,"props":3249,"children":3251},{"id":3250},"fundamentals-validusage-flags",[3252],{"type":16,"value":3253},"Valid Usage for Flags",{"type":10,"tag":1819,"props":3255,"children":3257},{"name":3256,"type":1822},"VkFlags",[3258],{"type":10,"tag":18,"props":3259,"children":3260},{},[3261],{"type":16,"value":3262},"Vulkan bitmasks",{"type":10,"tag":1819,"props":3264,"children":3266},{"name":3265,"type":1822},"VkFlags64",[3267],{"type":10,"tag":18,"props":3268,"children":3269},{},[3270],{"type":16,"value":3271},"Vulkan 64-bit bitmasks",{"type":10,"tag":2766,"props":3273,"children":3275},{"id":3274},"fundamentals-validusage-sType",[3276],{"type":16,"value":3277},"Valid Usage for Structure Types",{"type":10,"tag":18,"props":3279,"children":3280},{},[3281,3283,3289,3291,3294,3296,3301,3303,3309],{"type":16,"value":3282},"Any parameter that is a structure containing a ",{"type":10,"tag":282,"props":3284,"children":3286},{"className":3285},[],[3287],{"type":16,"value":3288},"sType",{"type":16,"value":3290}," member ",{"type":10,"tag":45,"props":3292,"children":3293},{"type":47},[],{"type":16,"value":3295}," have\na value of ",{"type":10,"tag":282,"props":3297,"children":3299},{"className":3298},[],[3300],{"type":16,"value":3288},{"type":16,"value":3302}," which is a valid ",{"type":10,"tag":61,"props":3304,"children":3306},{"href":3305},"/man/VkStructureType",[3307],{"type":16,"value":3308},"VkStructureType",{"type":16,"value":3310}," value matching\nthe type of the structure.",{"type":10,"tag":2766,"props":3312,"children":3314},{"id":3313},"fundamentals-validusage-pNext",[3315],{"type":16,"value":3316},"Valid Usage for Structure Pointer Chains",{"type":10,"tag":18,"props":3318,"children":3319},{},[3320,3321,3327,3328,3333,3335,3338,3340,3345,3347,3352,3354,3359,3361,3366,3367,3372,3374,3380,3382,3388,3390,3395,3397,3407],{"type":16,"value":3282},{"type":10,"tag":282,"props":3322,"children":3324},{"className":3323},[],[3325],{"type":16,"value":3326},"void*",{"type":16,"value":1783},{"type":10,"tag":282,"props":3329,"children":3331},{"className":3330},[],[3332],{"type":16,"value":2170},{"type":16,"value":3334}," member\n",{"type":10,"tag":45,"props":3336,"children":3337},{"type":47},[],{"type":16,"value":3339}," have a value of ",{"type":10,"tag":282,"props":3341,"children":3343},{"className":3342},[],[3344],{"type":16,"value":2170},{"type":16,"value":3346}," that is either ",{"type":10,"tag":282,"props":3348,"children":3350},{"className":3349},[],[3351],{"type":16,"value":1922},{"type":16,"value":3353},", or is a pointer to\na valid ",{"type":10,"tag":117,"props":3355,"children":3356},{},[3357],{"type":16,"value":3358},"extending structure",{"type":16,"value":3360},", containing ",{"type":10,"tag":282,"props":3362,"children":3364},{"className":3363},[],[3365],{"type":16,"value":3288},{"type":16,"value":709},{"type":10,"tag":282,"props":3368,"children":3370},{"className":3369},[],[3371],{"type":16,"value":2170},{"type":16,"value":3373},"\nmembers as described in the ",{"type":10,"tag":61,"props":3375,"children":3377},{"href":3376},"/chapters/introduction#vulkan-styleguide",[3378],{"type":16,"value":3379},"Vulkan Documentation and\nExtensions",{"type":16,"value":3381}," document in the section ",{"type":10,"tag":282,"props":3383,"children":3385},{"className":3384},[],[3386],{"type":16,"value":3387},"Extending Structures",{"type":16,"value":3389},".\nThe set of structures connected by ",{"type":10,"tag":282,"props":3391,"children":3393},{"className":3392},[],[3394],{"type":16,"value":2170},{"type":16,"value":3396}," pointers is referred to as a\n",{"type":10,"tag":117,"props":3398,"children":3399},{},[3400,3405],{"type":10,"tag":282,"props":3401,"children":3403},{"className":3402},[],[3404],{"type":16,"value":2170},{"type":16,"value":3406}," chain",{"type":16,"value":268},{"type":10,"tag":18,"props":3409,"children":3410},{},[3411,3413,3418,3420,3423],{"type":16,"value":3412},"Each structure included in the ",{"type":10,"tag":282,"props":3414,"children":3416},{"className":3415},[],[3417],{"type":16,"value":2170},{"type":16,"value":3419}," chain ",{"type":10,"tag":45,"props":3421,"children":3422},{"type":47},[],{"type":16,"value":3424}," be defined at runtime\nby either:",{"type":10,"tag":35,"props":3426,"children":3427},{},[3428,3433,3438],{"type":10,"tag":39,"props":3429,"children":3430},{},[3431],{"type":16,"value":3432},"a core version which is supported",{"type":10,"tag":39,"props":3434,"children":3435},{},[3436],{"type":16,"value":3437},"an extension which is enabled",{"type":10,"tag":39,"props":3439,"children":3440},{},[3441],{"type":16,"value":3442},"a supported device extension in the case of physical-device-level\nfunctionality added by the device extension",{"type":10,"tag":18,"props":3444,"children":3445},{},[3446,3448,3451,3453,3458,3460,3466],{"type":16,"value":3447},"Each type of extending structure ",{"type":10,"tag":45,"props":3449,"children":3450},{"type":47},[],{"type":16,"value":3452}," not appear more than once in a\n",{"type":10,"tag":282,"props":3454,"children":3456},{"className":3455},[],[3457],{"type":16,"value":2170},{"type":16,"value":3459}," chain, including any\n",{"type":10,"tag":61,"props":3461,"children":3463},{"href":3462},"/chapters/extendingvulkan#extendingvulkan-compatibility-aliases",[3464],{"type":16,"value":3465},"aliases",{"type":16,"value":3467},".\nThis general rule may be explicitly overridden for specific structures.",{"type":10,"tag":18,"props":3469,"children":3470},{},[3471,3473,3476,3478,3483,3484,3489],{"type":16,"value":3472},"Any component of the implementation (the loader, any enabled layers, and\ndrivers) ",{"type":10,"tag":45,"props":3474,"children":3475},{"type":47},[],{"type":16,"value":3477}," skip over, without processing (other than reading the\n",{"type":10,"tag":282,"props":3479,"children":3481},{"className":3480},[],[3482],{"type":16,"value":3288},{"type":16,"value":709},{"type":10,"tag":282,"props":3485,"children":3487},{"className":3486},[],[3488],{"type":16,"value":2170},{"type":16,"value":3490}," members) any extending structures in the chain\nnot defined by core versions or extensions supported by that component.",{"type":10,"tag":18,"props":3492,"children":3493},{},[3494,3496,3501],{"type":16,"value":3495},"As a convenience to implementations and layers needing to iterate through a\nstructure pointer chain, the Vulkan API provides two ",{"type":10,"tag":117,"props":3497,"children":3498},{},[3499],{"type":16,"value":3500},"base structures",{"type":16,"value":3502},".\nThese structures allow for some type safety, and can be used by Vulkan API\nfunctions that operate on generic inputs and outputs.",{"type":10,"tag":1819,"props":3504,"children":3507},{"name":3505,"type":3506},"VkBaseInStructure","structs",[3508],{"type":10,"tag":18,"props":3509,"children":3510},{},[3511],{"type":16,"value":3512},"Base structure for a read-only pointer chain",{"type":10,"tag":1819,"props":3514,"children":3516},{"name":3515,"type":3506},"VkBaseOutStructure",[3517],{"type":10,"tag":18,"props":3518,"children":3519},{},[3520],{"type":16,"value":3512},{"type":10,"tag":2766,"props":3522,"children":3524},{"id":3523},"fundamentals-validusage-nested-structs",[3525],{"type":16,"value":3526},"Valid Usage for Nested Structures",{"type":10,"tag":18,"props":3528,"children":3529},{},[3530],{"type":16,"value":3531},"The above conditions also apply recursively to members of structures\nprovided as input to a command, either as a direct argument to the command,\nor themselves a member of another structure.",{"type":10,"tag":18,"props":3533,"children":3534},{},[3535],{"type":16,"value":3536},"Specifics on valid usage of each command are covered in their individual\nsections.",{"type":10,"tag":2766,"props":3538,"children":3540},{"id":3539},"fundamentals-validusage-extensions",[3541],{"type":16,"value":3542},"Valid Usage for Extensions",{"type":10,"tag":18,"props":3544,"children":3545},{},[3546,3548,3553,3555,3558,3560,3566,3568,3574],{"type":16,"value":3547},"Instance-level functionality or behavior added by an ",{"type":10,"tag":61,"props":3549,"children":3550},{"href":3048},[3551],{"type":16,"value":3552},"instance\nextension",{"type":16,"value":3554}," to the API ",{"type":10,"tag":45,"props":3556,"children":3557},{"type":47},[],{"type":16,"value":3559}," not be used unless that extension is supported\nby the instance as determined by\n",{"type":10,"tag":61,"props":3561,"children":3563},{"href":3562},"/man/vkEnumerateInstanceExtensionProperties",[3564],{"type":16,"value":3565},"vkEnumerateInstanceExtensionProperties",{"type":16,"value":3567},", and that extension is enabled\nin ",{"type":10,"tag":61,"props":3569,"children":3571},{"href":3570},"/man/VkInstanceCreateInfo",[3572],{"type":16,"value":3573},"VkInstanceCreateInfo",{"type":16,"value":268},{"type":10,"tag":18,"props":3576,"children":3577},{},[3578,3580,3584,3585,3588,3590,3594,3595,3599],{"type":16,"value":3579},"Physical-device-level functionality or behavior added by an ",{"type":10,"tag":61,"props":3581,"children":3582},{"href":3048},[3583],{"type":16,"value":3051},{"type":16,"value":3554},{"type":10,"tag":45,"props":3586,"children":3587},{"type":47},[],{"type":16,"value":3589}," not be used unless that extension is\nsupported by the instance as determined by\n",{"type":10,"tag":61,"props":3591,"children":3592},{"href":3562},[3593],{"type":16,"value":3565},{"type":16,"value":3567},{"type":10,"tag":61,"props":3596,"children":3597},{"href":3570},[3598],{"type":16,"value":3573},{"type":16,"value":268},{"type":10,"tag":18,"props":3601,"children":3602},{},[3603,3605,3609,3610,3613,3615,3621],{"type":16,"value":3604},"Physical-device-level functionality or behavior added by a ",{"type":10,"tag":61,"props":3606,"children":3607},{"href":3048},[3608],{"type":16,"value":3106},{"type":16,"value":3554},{"type":10,"tag":45,"props":3611,"children":3612},{"type":47},[],{"type":16,"value":3614}," not be used unless the conditions\ndescribed in ",{"type":10,"tag":61,"props":3616,"children":3618},{"href":3617},"/chapters/initialization#initialization-phys-dev-extensions",[3619],{"type":16,"value":3620},"Extending Physical Device\nFrom Device Extensions",{"type":16,"value":3622}," are met.",{"type":10,"tag":18,"props":3624,"children":3625},{},[3626,3628,3632,3634,3638,3640,3644,3645,3648,3650,3656,3658,3664],{"type":16,"value":3627},"Device-level functionality added by a ",{"type":10,"tag":61,"props":3629,"children":3630},{"href":3048},[3631],{"type":16,"value":3106},{"type":16,"value":3633}," that\nis dispatched from a ",{"type":10,"tag":61,"props":3635,"children":3636},{"href":636},[3637],{"type":16,"value":639},{"type":16,"value":3639},", or from a child object of a\n",{"type":10,"tag":61,"props":3641,"children":3642},{"href":636},[3643],{"type":16,"value":639},{"type":16,"value":1783},{"type":10,"tag":45,"props":3646,"children":3647},{"type":47},[],{"type":16,"value":3649}," not be used unless that extension is supported by the\ndevice as determined by ",{"type":10,"tag":61,"props":3651,"children":3653},{"href":3652},"/man/vkEnumerateDeviceExtensionProperties",[3654],{"type":16,"value":3655},"vkEnumerateDeviceExtensionProperties",{"type":16,"value":3657},", and that\nextension is enabled in ",{"type":10,"tag":61,"props":3659,"children":3661},{"href":3660},"/man/VkDeviceCreateInfo",[3662],{"type":16,"value":3663},"VkDeviceCreateInfo",{"type":16,"value":268},{"type":10,"tag":2766,"props":3666,"children":3668},{"id":3667},"fundamentals-validusage-versions",[3669],{"type":16,"value":3670},"Valid Usage for Newer Core Versions",{"type":10,"tag":18,"props":3672,"children":3673},{},[3674,3675,3681,3683,3686,3688,3692,3693,3698,3700,3704,3705,3710],{"type":16,"value":3604},{"type":10,"tag":61,"props":3676,"children":3678},{"href":3677},"/chapters/versions#versions",[3679],{"type":16,"value":3680},"new\ncore version",{"type":16,"value":3682}," of the API ",{"type":10,"tag":45,"props":3684,"children":3685},{"type":47},[],{"type":16,"value":3687}," not be used unless it is supported by the\nphysical device as determined by\n",{"type":10,"tag":61,"props":3689,"children":3690},{"href":3075},[3691],{"type":16,"value":3078},{"type":16,"value":3032},{"type":10,"tag":282,"props":3694,"children":3696},{"className":3695},[],[3697],{"type":16,"value":3038},{"type":16,"value":3699}," and the specified version\nof ",{"type":10,"tag":61,"props":3701,"children":3702},{"href":3027},[3703],{"type":16,"value":3030},{"type":16,"value":3032},{"type":10,"tag":282,"props":3706,"children":3708},{"className":3707},[],[3709],{"type":16,"value":3038},{"type":16,"value":268},{"type":10,"tag":18,"props":3712,"children":3713},{},[3714,3716,3721,3722,3725,3727,3731,3732,3737,3739,3743,3744,3749],{"type":16,"value":3715},"Device-level functionality or behavior added by a ",{"type":10,"tag":61,"props":3717,"children":3718},{"href":3677},[3719],{"type":16,"value":3720},"new core\nversion",{"type":16,"value":3682},{"type":10,"tag":45,"props":3723,"children":3724},{"type":47},[],{"type":16,"value":3726}," not be used unless it is supported by the device\nas determined by ",{"type":10,"tag":61,"props":3728,"children":3729},{"href":3075},[3730],{"type":16,"value":3078},{"type":16,"value":3032},{"type":10,"tag":282,"props":3733,"children":3735},{"className":3734},[],[3736],{"type":16,"value":3038},{"type":16,"value":3738}," and the\nspecified version of ",{"type":10,"tag":61,"props":3740,"children":3741},{"href":3027},[3742],{"type":16,"value":3030},{"type":16,"value":3032},{"type":10,"tag":282,"props":3745,"children":3747},{"className":3746},[],[3748],{"type":16,"value":3038},{"type":16,"value":268},{"type":10,"tag":23,"props":3751,"children":3753},{"id":3752},"fundamentals-returncodes",[3754,3756,3761],{"type":16,"value":3755},"",{"type":10,"tag":282,"props":3757,"children":3759},{"className":3758},[],[3760],{"type":16,"value":2251},{"type":16,"value":3762}," Return Codes",{"type":10,"tag":1819,"props":3764,"children":3766},{"name":2251,"type":3765},"enums",[3767],{"type":10,"tag":18,"props":3768,"children":3769},{},[3770],{"type":16,"value":3771},"Vulkan command return codes",{"type":10,"tag":23,"props":3773,"children":3775},{"id":3774},"fundamentals-numerics",[3776],{"type":16,"value":3777},"Numeric Representation and Computation",{"type":10,"tag":18,"props":3779,"children":3780},{},[3781,3783,3786,3788,3793],{"type":16,"value":3782},"Implementations normally perform computations in floating-point, and ",{"type":10,"tag":45,"props":3784,"children":3785},{"type":47},[],{"type":16,"value":3787},"\nmeet the range and precision requirements defined under ",{"type":10,"tag":282,"props":3789,"children":3791},{"className":3790},[],[3792],{"type":16,"value":66},{"type":16,"value":3794}," below.",{"type":10,"tag":18,"props":3796,"children":3797},{},[3798,3800,3806],{"type":16,"value":3799},"These requirements only apply to computations performed in Vulkan operations\noutside of shader execution, such as texture image specification and\nsampling, and per-fragment operations.\nRange and precision requirements during shader execution differ and are\nspecified by the ",{"type":10,"tag":61,"props":3801,"children":3803},{"href":3802},"/chapters/spirvenv#spirvenv-precision-operation",[3804],{"type":16,"value":3805},"Precision and Operation of\nSPIR-V Instructions",{"type":16,"value":68},{"type":10,"tag":18,"props":3808,"children":3809},{},[3810],{"type":16,"value":3811},"In some cases, the representation and/or precision of operations is\nimplicitly limited by the specified format of vertex or texel data consumed\nby Vulkan.\nSpecific floating-point formats are described later in this section.",{"type":10,"tag":250,"props":3813,"children":3815},{"id":3814},"fundamentals-floating-point",[3816],{"type":16,"value":66},{"type":10,"tag":18,"props":3818,"children":3819},{},[3820,3822,3827],{"type":16,"value":3821},"Most floating-point computation is performed in SPIR-V shader modules.\nThe properties of computation within shaders are constrained as defined by\nthe ",{"type":10,"tag":61,"props":3823,"children":3824},{"href":3802},[3825],{"type":16,"value":3826},"Precision and Operation of SPIR-V\nInstructions",{"type":16,"value":68},{"type":10,"tag":18,"props":3829,"children":3830},{},[3831],{"type":16,"value":3832},"Some floating-point computation is performed outside of shaders, such as\nviewport and depth range calculations.\nFor these computations, we do not specify how floating-point numbers are to\nbe represented, or the details of how operations on them are performed, but\nonly place minimal requirements on representation and precision as described\nin the remainder of this section.",{"type":10,"tag":18,"props":3834,"children":3835},{},[3836,3838,3844,3846,3849,3851,3856],{"type":16,"value":3837},"We require simply that numbers’ floating-point parts contain enough bits\nand that their exponent fields are large enough so that individual results\nof floating-point operations are accurate to about 1 part in 10",{"type":10,"tag":3839,"props":3840,"children":3841},"sup",{},[3842],{"type":16,"value":3843},"5",{"type":16,"value":3845},".\nThe maximum representable magnitude for all floating-point values ",{"type":10,"tag":45,"props":3847,"children":3848},{"type":47},[],{"type":16,"value":3850}," be\nat least 2",{"type":10,"tag":3839,"props":3852,"children":3853},{},[3854],{"type":16,"value":3855},"32",{"type":16,"value":268},{"type":10,"tag":35,"props":3858,"children":3859},{},[3860,3865,3870,3875],{"type":10,"tag":39,"props":3861,"children":3862},{},[3863],{"type":16,"value":3864},"x × 0 = 0 × x = 0 for any non-infinite and\nnon-NaN x.",{"type":10,"tag":39,"props":3866,"children":3867},{},[3868],{"type":16,"value":3869},"1 × x = x × 1 = x.",{"type":10,"tag":39,"props":3871,"children":3872},{},[3873],{"type":16,"value":3874},"x + 0 = 0 + x = x.",{"type":10,"tag":39,"props":3876,"children":3877},{},[3878,3880,3884],{"type":16,"value":3879},"0",{"type":10,"tag":3839,"props":3881,"children":3882},{},[3883],{"type":16,"value":3879},{"type":16,"value":3885}," = 1.",{"type":10,"tag":18,"props":3887,"children":3888},{},[3889],{"type":16,"value":3890},"Occasionally, further requirements will be specified.\nMost single-precision floating-point formats meet these requirements.",{"type":10,"tag":18,"props":3892,"children":3893},{},[3894,3896,3902,3904,3907],{"type":16,"value":3895},"The special values Inf and -Inf encode values with magnitudes\ntoo large to be represented; the special value NaN encodes ",{"type":10,"tag":282,"props":3897,"children":3899},{"className":3898},[],[3900],{"type":16,"value":3901},"Not A Number",{"type":16,"value":3903}," values resulting from undefined: arithmetic operations such as\n0 / 0.\nImplementations ",{"type":10,"tag":45,"props":3905,"children":3906},{"type":90},[],{"type":16,"value":3908}," support Inf and NaN in their floating-point\ncomputations.\nAny computation which does not support either Inf or NaN, for\nwhich that value is an input or output will yield an undefined: value.",{"type":10,"tag":250,"props":3910,"children":3912},{"id":3911},"fundamentals-fp-conversion",[3913],{"type":16,"value":3914},"Floating-Point Format Conversions",{"type":10,"tag":18,"props":3916,"children":3917},{},[3918],{"type":16,"value":3919},"When a value is converted to a defined floating-point representation, finite\nvalues falling between two representable finite values are rounded to one or\nthe other.\nThe rounding mode is not defined.\nFinite values whose magnitude is larger than that of any representable\nfinite value may be rounded either to the closest representable finite value\nor to the appropriately signed infinity.\nFor unsigned destination formats any negative values are converted to zero.\nPositive infinity is converted to positive infinity; negative infinity is\nconverted to negative infinity in signed formats and to zero in unsigned\nformats; and any NaN is converted to a NaN.",{"type":10,"tag":250,"props":3921,"children":3923},{"id":3922},"fundamentals-fp16",[3924],{"type":16,"value":3925},"16-Bit Floating-Point Numbers",{"type":10,"tag":18,"props":3927,"children":3928},{},[3929,3931,3937,3939,3945],{"type":16,"value":3930},"16-bit floating-point numbers are defined in the ",{"type":10,"tag":282,"props":3932,"children":3934},{"className":3933},[],[3935],{"type":16,"value":3936},"16-bit floating-point numbers",{"type":16,"value":3938}," section of the ",{"type":10,"tag":61,"props":3940,"children":3942},{"href":3941},"/chapters/introduction#data-format",[3943],{"type":16,"value":3944},"Khronos Data Format Specification",{"type":16,"value":268},{"type":10,"tag":250,"props":3947,"children":3949},{"id":3948},"fundamentals-fp11",[3950],{"type":16,"value":3951},"Unsigned 11-Bit Floating-Point Numbers",{"type":10,"tag":18,"props":3953,"children":3954},{},[3955,3957,3963,3964,3969],{"type":16,"value":3956},"Unsigned 11-bit floating-point numbers are defined in the ",{"type":10,"tag":282,"props":3958,"children":3960},{"className":3959},[],[3961],{"type":16,"value":3962},"Unsigned 11-bit floating-point numbers",{"type":16,"value":3938},{"type":10,"tag":61,"props":3965,"children":3966},{"href":3941},[3967],{"type":16,"value":3968},"Khronos Data Format\nSpecification",{"type":16,"value":268},{"type":10,"tag":250,"props":3971,"children":3973},{"id":3972},"fundamentals-fp10",[3974],{"type":16,"value":3975},"Unsigned 10-Bit Floating-Point Numbers",{"type":10,"tag":18,"props":3977,"children":3978},{},[3979,3981,3987,3988,3992],{"type":16,"value":3980},"Unsigned 10-bit floating-point numbers are defined in the ",{"type":10,"tag":282,"props":3982,"children":3984},{"className":3983},[],[3985],{"type":16,"value":3986},"Unsigned 10-bit floating-point numbers",{"type":16,"value":3938},{"type":10,"tag":61,"props":3989,"children":3990},{"href":3941},[3991],{"type":16,"value":3968},{"type":16,"value":268},{"type":10,"tag":250,"props":3994,"children":3996},{"id":3995},"fundamentals-general",[3997],{"type":16,"value":3998},"General Requirements",{"type":10,"tag":18,"props":4000,"children":4001},{},[4002,4004,4007,4009,4012],{"type":16,"value":4003},"Any representable floating-point value in the appropriate format is legal as\ninput to a Vulkan command that requires floating-point data.\nThe result of providing a value that is not a floating-point number to such\na command is unspecified, but ",{"type":10,"tag":45,"props":4005,"children":4006},{"type":47},[],{"type":16,"value":4008}," not lead to Vulkan interruption or\ntermination.\nFor example, providing a negative zero (where applicable) or a denormalized\nnumber to a Vulkan command ",{"type":10,"tag":45,"props":4010,"children":4011},{"type":47},[],{"type":16,"value":4013}," yield deterministic results, while\nproviding a NaN or Inf yields unspecified results.",{"type":10,"tag":18,"props":4015,"children":4016},{},[4017,4019,4022],{"type":16,"value":4018},"Some calculations require division.\nIn such cases (including implied divisions performed by vector\nnormalization), division by zero produces an unspecified result but ",{"type":10,"tag":45,"props":4020,"children":4021},{"type":47},[],{"type":16,"value":4023},"\nnot lead to Vulkan interruption or termination.",{"type":10,"tag":23,"props":4025,"children":4027},{"id":4026},"fundamentals-fixedconv",[4028],{"type":16,"value":4029},"Fixed-Point Data Conversions",{"type":10,"tag":18,"props":4031,"children":4032},{},[4033,4035,4040,4042,4047,4049,4054],{"type":16,"value":4034},"When generic vertex attributes and pixel color or depth ",{"type":10,"tag":117,"props":4036,"children":4037},{},[4038],{"type":16,"value":4039},"components",{"type":16,"value":4041}," are\nrepresented as integers, they are often (but not always) considered to be\n",{"type":10,"tag":117,"props":4043,"children":4044},{},[4045],{"type":16,"value":4046},"normalized",{"type":16,"value":4048},".\nNormalized integer values are treated specially when being converted to and\nfrom floating-point values, and are usually referred to as ",{"type":10,"tag":117,"props":4050,"children":4051},{},[4052],{"type":16,"value":4053},"normalized\nfixed-point",{"type":16,"value":268},{"type":10,"tag":18,"props":4056,"children":4057},{},[4058,4060,4066,4068,4074],{"type":16,"value":4059},"In the remainder of this section, b denotes the bit width of the\nfixed-point integer representation.\nWhen the integer is one of the types defined by the API, b is the bit\nwidth of that type.\nWhen the integer comes from an ",{"type":10,"tag":61,"props":4061,"children":4063},{"href":4062},"/chapters/resources#resources-images",[4064],{"type":16,"value":4065},"image",{"type":16,"value":4067}," containing color\nor depth component texels, b is the number of bits allocated to that\ncomponent in its ",{"type":10,"tag":61,"props":4069,"children":4071},{"href":4070},"/chapters/formats#formats",[4072],{"type":16,"value":4073},"specified image format",{"type":16,"value":268},{"type":10,"tag":18,"props":4076,"children":4077},{},[4078],{"type":16,"value":4079},"The signed and unsigned fixed-point representations are assumed to be\nb-bit binary two’s-complement integers and binary unsigned integers,\nrespectively.",{"type":10,"tag":250,"props":4081,"children":4083},{"id":4082},"fundamentals-fixedfpconv",[4084],{"type":16,"value":4085},"Conversion From Normalized Fixed-Point to Floating-Point",{"type":10,"tag":18,"props":4087,"children":4088},{},[4089],{"type":16,"value":4090},"Unsigned normalized fixed-point integers represent numbers in the range\n[0,1].\nThe conversion from an unsigned normalized fixed-point value c to the\ncorresponding floating-point value f is defined as",{"type":10,"tag":4092,"props":4093,"children":4096},"span",{"className":4094},[4095],"katex-display",[4097],{"type":10,"tag":4092,"props":4098,"children":4101},{"className":4099},[4100],"katex",[4102,4177],{"type":10,"tag":4092,"props":4103,"children":4106},{"className":4104},[4105],"katex-mathml",[4107],{"type":10,"tag":4108,"props":4109,"children":4112},"math",{"xmlns":4110,"display":4111},"http://www.w3.org/1998/Math/MathML","block",[4113],{"type":10,"tag":4114,"props":4115,"children":4116},"semantics",{},[4117,4170],{"type":10,"tag":4118,"props":4119,"children":4120},"mrow",{},[4121,4127,4133],{"type":10,"tag":4122,"props":4123,"children":4124},"mi",{},[4125],{"type":16,"value":4126},"f",{"type":10,"tag":4128,"props":4129,"children":4130},"mo",{},[4131],{"type":16,"value":4132},"=",{"type":10,"tag":4134,"props":4135,"children":4136},"mfrac",{},[4137,4142],{"type":10,"tag":4122,"props":4138,"children":4139},{},[4140],{"type":16,"value":4141},"c",{"type":10,"tag":4118,"props":4143,"children":4144},{},[4145,4160,4165],{"type":10,"tag":4146,"props":4147,"children":4148},"msup",{},[4149,4155],{"type":10,"tag":4150,"props":4151,"children":4152},"mn",{},[4153],{"type":16,"value":4154},"2",{"type":10,"tag":4122,"props":4156,"children":4157},{},[4158],{"type":16,"value":4159},"b",{"type":10,"tag":4128,"props":4161,"children":4162},{},[4163],{"type":16,"value":4164},"−",{"type":10,"tag":4150,"props":4166,"children":4167},{},[4168],{"type":16,"value":4169},"1",{"type":10,"tag":4171,"props":4172,"children":4174},"annotation",{"encoding":4173},"application/x-tex",[4175],{"type":16,"value":4176},"f = { c \\over { 2^b - 1 } }",{"type":10,"tag":4092,"props":4178,"children":4182},{"className":4179,"ariaHidden":4181},[4180],"katex-html","true",[4183,4218],{"type":10,"tag":4092,"props":4184,"children":4187},{"className":4185},[4186],"base",[4188,4194,4202,4208,4214],{"type":10,"tag":4092,"props":4189,"children":4193},{"className":4190,"style":4192},[4191],"strut","height:0.8889em;vertical-align:-0.1944em;",[],{"type":10,"tag":4092,"props":4195,"children":4200},{"className":4196,"style":4199},[4197,4198],"mord","mathnormal","margin-right:0.10764em;",[4201],{"type":16,"value":4126},{"type":10,"tag":4092,"props":4203,"children":4207},{"className":4204,"style":4206},[4205],"mspace","margin-right:0.2778em;",[],{"type":10,"tag":4092,"props":4209,"children":4212},{"className":4210},[4211],"mrel",[4213],{"type":16,"value":4132},{"type":10,"tag":4092,"props":4215,"children":4217},{"className":4216,"style":4206},[4205],[],{"type":10,"tag":4092,"props":4219,"children":4221},{"className":4220},[4186],[4222,4227],{"type":10,"tag":4092,"props":4223,"children":4226},{"className":4224,"style":4225},[4191],"height:1.8769em;vertical-align:-0.7693em;",[],{"type":10,"tag":4092,"props":4228,"children":4230},{"className":4229},[4197],[4231],{"type":10,"tag":4092,"props":4232,"children":4234},{"className":4233},[4197],[4235,4241,4395],{"type":10,"tag":4092,"props":4236,"children":4240},{"className":4237},[4238,4239],"mopen","nulldelimiter",[],{"type":10,"tag":4092,"props":4242,"children":4244},{"className":4243},[4134],[4245],{"type":10,"tag":4092,"props":4246,"children":4250},{"className":4247},[4248,4249],"vlist-t","vlist-t2",[4251,4383],{"type":10,"tag":4092,"props":4252,"children":4255},{"className":4253},[4254],"vlist-r",[4256,4376],{"type":10,"tag":4092,"props":4257,"children":4261},{"className":4258,"style":4260},[4259],"vlist","height:1.1076em;",[4262,4345,4359],{"type":10,"tag":4092,"props":4263,"children":4265},{"style":4264},"top:-2.314em;",[4266,4272],{"type":10,"tag":4092,"props":4267,"children":4271},{"className":4268,"style":4270},[4269],"pstrut","height:3em;",[],{"type":10,"tag":4092,"props":4273,"children":4275},{"className":4274},[4197],[4276,4325,4330,4336,4340],{"type":10,"tag":4092,"props":4277,"children":4279},{"className":4278},[4197],[4280,4285],{"type":10,"tag":4092,"props":4281,"children":4283},{"className":4282},[4197],[4284],{"type":16,"value":4154},{"type":10,"tag":4092,"props":4286,"children":4289},{"className":4287},[4288],"msupsub",[4290],{"type":10,"tag":4092,"props":4291,"children":4293},{"className":4292},[4248],[4294],{"type":10,"tag":4092,"props":4295,"children":4297},{"className":4296},[4254],[4298],{"type":10,"tag":4092,"props":4299,"children":4302},{"className":4300,"style":4301},[4259],"height:0.7751em;",[4303],{"type":10,"tag":4092,"props":4304,"children":4306},{"style":4305},"top:-2.989em;margin-right:0.05em;",[4307,4312],{"type":10,"tag":4092,"props":4308,"children":4311},{"className":4309,"style":4310},[4269],"height:2.7em;",[],{"type":10,"tag":4092,"props":4313,"children":4319},{"className":4314},[4315,4316,4317,4318],"sizing","reset-size6","size3","mtight",[4320],{"type":10,"tag":4092,"props":4321,"children":4323},{"className":4322},[4197,4198,4318],[4324],{"type":16,"value":4159},{"type":10,"tag":4092,"props":4326,"children":4329},{"className":4327,"style":4328},[4205],"margin-right:0.2222em;",[],{"type":10,"tag":4092,"props":4331,"children":4334},{"className":4332},[4333],"mbin",[4335],{"type":16,"value":4164},{"type":10,"tag":4092,"props":4337,"children":4339},{"className":4338,"style":4328},[4205],[],{"type":10,"tag":4092,"props":4341,"children":4343},{"className":4342},[4197],[4344],{"type":16,"value":4169},{"type":10,"tag":4092,"props":4346,"children":4348},{"style":4347},"top:-3.23em;",[4349,4353],{"type":10,"tag":4092,"props":4350,"children":4352},{"className":4351,"style":4270},[4269],[],{"type":10,"tag":4092,"props":4354,"children":4358},{"className":4355,"style":4357},[4356],"frac-line","border-bottom-width:0.04em;",[],{"type":10,"tag":4092,"props":4360,"children":4362},{"style":4361},"top:-3.677em;",[4363,4367],{"type":10,"tag":4092,"props":4364,"children":4366},{"className":4365,"style":4270},[4269],[],{"type":10,"tag":4092,"props":4368,"children":4370},{"className":4369},[4197],[4371],{"type":10,"tag":4092,"props":4372,"children":4374},{"className":4373},[4197,4198],[4375],{"type":16,"value":4141},{"type":10,"tag":4092,"props":4377,"children":4380},{"className":4378},[4379],"vlist-s",[4381],{"type":16,"value":4382},"​",{"type":10,"tag":4092,"props":4384,"children":4386},{"className":4385},[4254],[4387],{"type":10,"tag":4092,"props":4388,"children":4391},{"className":4389,"style":4390},[4259],"height:0.7693em;",[4392],{"type":10,"tag":4092,"props":4393,"children":4394},{},[],{"type":10,"tag":4092,"props":4396,"children":4399},{"className":4397},[4398,4239],"mclose",[],{"type":10,"tag":18,"props":4401,"children":4402},{},[4403],{"type":16,"value":4404},"Signed normalized fixed-point integers represent numbers in the range\n[-1,1].\nThe conversion from a signed normalized fixed-point value c to the\ncorresponding floating-point value f is performed using",{"type":10,"tag":4092,"props":4406,"children":4408},{"className":4407},[4095],[4409],{"type":10,"tag":4092,"props":4410,"children":4412},{"className":4411},[4100],[4413,4516],{"type":10,"tag":4092,"props":4414,"children":4416},{"className":4415},[4105],[4417],{"type":10,"tag":4108,"props":4418,"children":4419},{"xmlns":4110,"display":4111},[4420],{"type":10,"tag":4114,"props":4421,"children":4422},{},[4423,4511],{"type":10,"tag":4118,"props":4424,"children":4425},{},[4426,4430,4434,4439,4444],{"type":10,"tag":4122,"props":4427,"children":4428},{},[4429],{"type":16,"value":4126},{"type":10,"tag":4128,"props":4431,"children":4432},{},[4433],{"type":16,"value":4132},{"type":10,"tag":4122,"props":4435,"children":4436},{},[4437],{"type":16,"value":4438},"max",{"type":10,"tag":4128,"props":4440,"children":4441},{},[4442],{"type":16,"value":4443},"⁡",{"type":10,"tag":4118,"props":4445,"children":4446},{},[4447,4452,4492,4497,4501,4506],{"type":10,"tag":4128,"props":4448,"children":4449},{"fence":4181},[4450],{"type":16,"value":4451},"(",{"type":10,"tag":4134,"props":4453,"children":4454},{},[4455,4459],{"type":10,"tag":4122,"props":4456,"children":4457},{},[4458],{"type":16,"value":4141},{"type":10,"tag":4118,"props":4460,"children":4461},{},[4462,4484,4488],{"type":10,"tag":4146,"props":4463,"children":4464},{},[4465,4469],{"type":10,"tag":4150,"props":4466,"children":4467},{},[4468],{"type":16,"value":4154},{"type":10,"tag":4118,"props":4470,"children":4471},{},[4472,4476,4480],{"type":10,"tag":4122,"props":4473,"children":4474},{},[4475],{"type":16,"value":4159},{"type":10,"tag":4128,"props":4477,"children":4478},{},[4479],{"type":16,"value":4164},{"type":10,"tag":4150,"props":4481,"children":4482},{},[4483],{"type":16,"value":4169},{"type":10,"tag":4128,"props":4485,"children":4486},{},[4487],{"type":16,"value":4164},{"type":10,"tag":4150,"props":4489,"children":4490},{},[4491],{"type":16,"value":4169},{"type":10,"tag":4128,"props":4493,"children":4494},{"separator":4181},[4495],{"type":16,"value":4496},",",{"type":10,"tag":4128,"props":4498,"children":4499},{},[4500],{"type":16,"value":4164},{"type":10,"tag":4150,"props":4502,"children":4503},{},[4504],{"type":16,"value":4505},"1.0",{"type":10,"tag":4128,"props":4507,"children":4508},{"fence":4181},[4509],{"type":16,"value":4510},")",{"type":10,"tag":4171,"props":4512,"children":4513},{"encoding":4173},[4514],{"type":16,"value":4515},"f = \\max\\left( {c \\over {2^{b-1} - 1}}, -1.0 \\right)",{"type":10,"tag":4092,"props":4517,"children":4519},{"className":4518,"ariaHidden":4181},[4180],[4520,4546],{"type":10,"tag":4092,"props":4521,"children":4523},{"className":4522},[4186],[4524,4528,4533,4537,4542],{"type":10,"tag":4092,"props":4525,"children":4527},{"className":4526,"style":4192},[4191],[],{"type":10,"tag":4092,"props":4529,"children":4531},{"className":4530,"style":4199},[4197,4198],[4532],{"type":16,"value":4126},{"type":10,"tag":4092,"props":4534,"children":4536},{"className":4535,"style":4206},[4205],[],{"type":10,"tag":4092,"props":4538,"children":4540},{"className":4539},[4211],[4541],{"type":16,"value":4132},{"type":10,"tag":4092,"props":4543,"children":4545},{"className":4544,"style":4206},[4205],[],{"type":10,"tag":4092,"props":4547,"children":4549},{"className":4548},[4186],[4550,4555,4561,4566],{"type":10,"tag":4092,"props":4551,"children":4554},{"className":4552,"style":4553},[4191],"height:2.4em;vertical-align:-0.95em;",[],{"type":10,"tag":4092,"props":4556,"children":4559},{"className":4557},[4558],"mop",[4560],{"type":16,"value":4438},{"type":10,"tag":4092,"props":4562,"children":4565},{"className":4563,"style":4564},[4205],"margin-right:0.1667em;",[],{"type":10,"tag":4092,"props":4567,"children":4570},{"className":4568},[4569],"minner",[4571,4583,4742,4748,4752,4757,4762],{"type":10,"tag":4092,"props":4572,"children":4576},{"className":4573,"style":4575},[4238,4574],"delimcenter","top:0em;",[4577],{"type":10,"tag":4092,"props":4578,"children":4581},{"className":4579},[4580,4317],"delimsizing",[4582],{"type":16,"value":4451},{"type":10,"tag":4092,"props":4584,"children":4586},{"className":4585},[4197],[4587],{"type":10,"tag":4092,"props":4588,"children":4590},{"className":4589},[4197],[4591,4595,4738],{"type":10,"tag":4092,"props":4592,"children":4594},{"className":4593},[4238,4239],[],{"type":10,"tag":4092,"props":4596,"children":4598},{"className":4597},[4134],[4599],{"type":10,"tag":4092,"props":4600,"children":4602},{"className":4601},[4248,4249],[4603,4727],{"type":10,"tag":4092,"props":4604,"children":4606},{"className":4605},[4254],[4607,4722],{"type":10,"tag":4092,"props":4608,"children":4610},{"className":4609,"style":4260},[4259],[4611,4695,4706],{"type":10,"tag":4092,"props":4612,"children":4613},{"style":4264},[4614,4618],{"type":10,"tag":4092,"props":4615,"children":4617},{"className":4616,"style":4270},[4269],[],{"type":10,"tag":4092,"props":4619,"children":4621},{"className":4620},[4197],[4622,4677,4681,4686,4690],{"type":10,"tag":4092,"props":4623,"children":4625},{"className":4624},[4197],[4626,4631],{"type":10,"tag":4092,"props":4627,"children":4629},{"className":4628},[4197],[4630],{"type":16,"value":4154},{"type":10,"tag":4092,"props":4632,"children":4634},{"className":4633},[4288],[4635],{"type":10,"tag":4092,"props":4636,"children":4638},{"className":4637},[4248],[4639],{"type":10,"tag":4092,"props":4640,"children":4642},{"className":4641},[4254],[4643],{"type":10,"tag":4092,"props":4644,"children":4646},{"className":4645,"style":4301},[4259],[4647],{"type":10,"tag":4092,"props":4648,"children":4649},{"style":4305},[4650,4654],{"type":10,"tag":4092,"props":4651,"children":4653},{"className":4652,"style":4310},[4269],[],{"type":10,"tag":4092,"props":4655,"children":4657},{"className":4656},[4315,4316,4317,4318],[4658],{"type":10,"tag":4092,"props":4659,"children":4661},{"className":4660},[4197,4318],[4662,4667,4672],{"type":10,"tag":4092,"props":4663,"children":4665},{"className":4664},[4197,4198,4318],[4666],{"type":16,"value":4159},{"type":10,"tag":4092,"props":4668,"children":4670},{"className":4669},[4333,4318],[4671],{"type":16,"value":4164},{"type":10,"tag":4092,"props":4673,"children":4675},{"className":4674},[4197,4318],[4676],{"type":16,"value":4169},{"type":10,"tag":4092,"props":4678,"children":4680},{"className":4679,"style":4328},[4205],[],{"type":10,"tag":4092,"props":4682,"children":4684},{"className":4683},[4333],[4685],{"type":16,"value":4164},{"type":10,"tag":4092,"props":4687,"children":4689},{"className":4688,"style":4328},[4205],[],{"type":10,"tag":4092,"props":4691,"children":4693},{"className":4692},[4197],[4694],{"type":16,"value":4169},{"type":10,"tag":4092,"props":4696,"children":4697},{"style":4347},[4698,4702],{"type":10,"tag":4092,"props":4699,"children":4701},{"className":4700,"style":4270},[4269],[],{"type":10,"tag":4092,"props":4703,"children":4705},{"className":4704,"style":4357},[4356],[],{"type":10,"tag":4092,"props":4707,"children":4708},{"style":4361},[4709,4713],{"type":10,"tag":4092,"props":4710,"children":4712},{"className":4711,"style":4270},[4269],[],{"type":10,"tag":4092,"props":4714,"children":4716},{"className":4715},[4197],[4717],{"type":10,"tag":4092,"props":4718,"children":4720},{"className":4719},[4197,4198],[4721],{"type":16,"value":4141},{"type":10,"tag":4092,"props":4723,"children":4725},{"className":4724},[4379],[4726],{"type":16,"value":4382},{"type":10,"tag":4092,"props":4728,"children":4730},{"className":4729},[4254],[4731],{"type":10,"tag":4092,"props":4732,"children":4734},{"className":4733,"style":4390},[4259],[4735],{"type":10,"tag":4092,"props":4736,"children":4737},{},[],{"type":10,"tag":4092,"props":4739,"children":4741},{"className":4740},[4398,4239],[],{"type":10,"tag":4092,"props":4743,"children":4746},{"className":4744},[4745],"mpunct",[4747],{"type":16,"value":4496},{"type":10,"tag":4092,"props":4749,"children":4751},{"className":4750,"style":4564},[4205],[],{"type":10,"tag":4092,"props":4753,"children":4755},{"className":4754},[4197],[4756],{"type":16,"value":4164},{"type":10,"tag":4092,"props":4758,"children":4760},{"className":4759},[4197],[4761],{"type":16,"value":4505},{"type":10,"tag":4092,"props":4763,"children":4765},{"className":4764,"style":4575},[4398,4574],[4766],{"type":10,"tag":4092,"props":4767,"children":4769},{"className":4768},[4580,4317],[4770],{"type":16,"value":4510},{"type":10,"tag":18,"props":4772,"children":4773},{},[4774,4776,4781,4783,4787],{"type":16,"value":4775},"Only the range [-2",{"type":10,"tag":3839,"props":4777,"children":4778},{},[4779],{"type":16,"value":4780},"b-1",{"type":16,"value":4782}," + 1, 2",{"type":10,"tag":3839,"props":4784,"children":4785},{},[4786],{"type":16,"value":4780},{"type":16,"value":4788}," - 1] is used to represent\nsigned fixed-point values in the range [-1,1].\nFor example, if b = 8, then the integer value -127 corresponds\nto -1.0 and the value 127 corresponds to 1.0.\nThis equation is used everywhere that signed normalized fixed-point values\nare converted to floating-point.",{"type":10,"tag":18,"props":4790,"children":4791},{},[4792,4794,4797,4799,4802,4804,4807],{"type":16,"value":4793},"Note that while zero is exactly expressible in this representation, one\nvalue (-128 in the example) is outside the representable range, and\nimplementations ",{"type":10,"tag":45,"props":4795,"children":4796},{"type":47},[],{"type":16,"value":4798}," clamp it to -1.0.\nWhere the value is subject to further processing by the implementation, e.g.\nduring texture filtering, values less than -1.0 ",{"type":10,"tag":45,"props":4800,"children":4801},{"type":90},[],{"type":16,"value":4803}," be used but the\nresult ",{"type":10,"tag":45,"props":4805,"children":4806},{"type":47},[],{"type":16,"value":4808}," be clamped before the value is returned to shaders.",{"type":10,"tag":250,"props":4810,"children":4812},{"id":4811},"fundamentals-fpfixedconv",[4813],{"type":16,"value":4814},"Conversion From Floating-Point to Normalized Fixed-Point",{"type":10,"tag":18,"props":4816,"children":4817},{},[4818],{"type":16,"value":4819},"The conversion from a floating-point value f to the corresponding\nunsigned normalized fixed-point value c is defined by first clamping\nf to the range [0,1], then computing",{"type":10,"tag":35,"props":4821,"children":4822},{},[4823],{"type":10,"tag":39,"props":4824,"children":4825},{},[4826,4828,4832],{"type":16,"value":4827},"c = convertFloatToUint(f × (2",{"type":10,"tag":3839,"props":4829,"children":4830},{},[4831],{"type":16,"value":4159},{"type":16,"value":4833}," - 1), b)",{"type":10,"tag":18,"props":4835,"children":4836},{},[4837,4839,4842,4844,4847,4849,4852,4854,4858],{"type":16,"value":4838},"where convertFloatToUint(r,b) returns one of the two unsigned binary\ninteger values with exactly b bits which are closest to the\nfloating-point value r.\nImplementations ",{"type":10,"tag":45,"props":4840,"children":4841},{"type":96},[],{"type":16,"value":4843}," round to nearest.\nIf r is equal to an integer, then that integer value ",{"type":10,"tag":45,"props":4845,"children":4846},{"type":47},[],{"type":16,"value":4848}," be\nreturned.\nIn particular, if f is equal to 0.0 or 1.0, then c ",{"type":10,"tag":45,"props":4850,"children":4851},{"type":47},[],{"type":16,"value":4853}," be\nassigned 0 or 2",{"type":10,"tag":3839,"props":4855,"children":4856},{},[4857],{"type":16,"value":4159},{"type":16,"value":4859}," - 1, respectively.",{"type":10,"tag":18,"props":4861,"children":4862},{},[4863],{"type":16,"value":4864},"The conversion from a floating-point value f to the corresponding\nsigned normalized fixed-point value c is performed by clamping f\nto the range [-1,1], then computing",{"type":10,"tag":35,"props":4866,"children":4867},{},[4868],{"type":10,"tag":39,"props":4869,"children":4870},{},[4871,4873,4877],{"type":16,"value":4872},"c = convertFloatToInt(f × (2",{"type":10,"tag":3839,"props":4874,"children":4875},{},[4876],{"type":16,"value":4780},{"type":16,"value":4833},{"type":10,"tag":18,"props":4879,"children":4880},{},[4881,4883,4886,4887,4890,4892,4895,4897,4901,4903,4907],{"type":16,"value":4882},"where convertFloatToInt(r,b) returns one of the two signed\ntwo’s-complement binary integer values with exactly b bits which are\nclosest to the floating-point value r.\nImplementations ",{"type":10,"tag":45,"props":4884,"children":4885},{"type":96},[],{"type":16,"value":4843},{"type":10,"tag":45,"props":4888,"children":4889},{"type":47},[],{"type":16,"value":4891}," be\nreturned.\nIn particular, if f is equal to -1.0, 0.0, or 1.0, then c ",{"type":10,"tag":45,"props":4893,"children":4894},{"type":47},[],{"type":16,"value":4896},"\nbe assigned -(2",{"type":10,"tag":3839,"props":4898,"children":4899},{},[4900],{"type":16,"value":4780},{"type":16,"value":4902}," - 1), 0, or 2",{"type":10,"tag":3839,"props":4904,"children":4905},{},[4906],{"type":16,"value":4780},{"type":16,"value":4859},{"type":10,"tag":18,"props":4909,"children":4910},{},[4911],{"type":16,"value":4912},"This equation is used everywhere that floating-point values are converted to\nsigned normalized fixed-point.",{"type":10,"tag":23,"props":4914,"children":4916},{"id":4915},"fundamentals-strings",[4917],{"type":16,"value":2945},{"type":10,"tag":18,"props":4919,"children":4920},{},[4921],{"type":16,"value":4922},"Strings passed into and returned from Vulkan API commands are usually\ndefined to be null-terminated and UTF-8 encoded.",{"type":10,"tag":80,"props":4924,"children":4925},{},[4926],{"type":10,"tag":18,"props":4927,"children":4928},{},[4929,4931,4937,4938,4944],{"type":16,"value":4930},"Exceptions to this rule exist only when strings are defined or used by\noperating system APIs where that OS has a different convention.\nFor example, ",{"type":10,"tag":61,"props":4932,"children":4934},{"href":4933},"/man/VkExportMemoryWin32HandleInfoKHR",[4935],{"type":16,"value":4936},"VkExportMemoryWin32HandleInfoKHR",{"type":16,"value":3032},{"type":10,"tag":282,"props":4939,"children":4941},{"className":4940},[],[4942],{"type":16,"value":4943},"name",{"type":16,"value":4945}," is a\nnull-terminated UTF-16 encoded string used in conjunction with Windows\nhandles.",{"type":10,"tag":18,"props":4947,"children":4948},{},[4949,4951,4956,4958,4963,4965,4969,4970,4976,4978,4984,4986,4992,4993,4999,5000,5006,5008,5013,5015,5020],{"type":16,"value":4950},"When a UTF-8 string is ",{"type":10,"tag":117,"props":4952,"children":4953},{},[4954],{"type":16,"value":4955},"returned from",{"type":16,"value":4957}," a Vulkan API query, it is returned in\na fixed-length buffer of C ",{"type":10,"tag":282,"props":4959,"children":4961},{"className":4960},[],[4962],{"type":16,"value":2906},{"type":16,"value":4964},".\nFor example, a string returned in\n",{"type":10,"tag":61,"props":4966,"children":4967},{"href":3075},[4968],{"type":16,"value":3078},{"type":16,"value":3032},{"type":10,"tag":282,"props":4971,"children":4973},{"className":4972},[],[4974],{"type":16,"value":4975},"deviceName",{"type":16,"value":4977}," has maximum length\n",{"type":10,"tag":282,"props":4979,"children":4981},{"className":4980},[],[4982],{"type":16,"value":4983},"VK_MAX_PHYSICAL_DEVICE_NAME_SIZE",{"type":16,"value":4985},", and a string returned in\n",{"type":10,"tag":61,"props":4987,"children":4989},{"href":4988},"/man/VkExtensionProperties",[4990],{"type":16,"value":4991},"VkExtensionProperties",{"type":16,"value":3032},{"type":10,"tag":282,"props":4994,"children":4996},{"className":4995},[],[4997],{"type":16,"value":4998},"extensionName",{"type":16,"value":4977},{"type":10,"tag":282,"props":5001,"children":5003},{"className":5002},[],[5004],{"type":16,"value":5005},"VK_MAX_EXTENSION_NAME_SIZE",{"type":16,"value":5007},".\nThe string, ",{"type":10,"tag":117,"props":5009,"children":5010},{},[5011],{"type":16,"value":5012},"including",{"type":16,"value":5014}," its null terminator, will always fit completely\nwithin this buffer.\nIf the string is shorter than the buffer size, the contents of ",{"type":10,"tag":282,"props":5016,"children":5018},{"className":5017},[],[5019],{"type":16,"value":2906},{"type":16,"value":5021}," in\nthe buffer following the null terminator are undefined:.",{"type":10,"tag":18,"props":5023,"children":5024},{},[5025,5026,5031,5033,5037,5038,5044,5046,5049,5051,5054],{"type":16,"value":4950},{"type":10,"tag":117,"props":5027,"children":5028},{},[5029],{"type":16,"value":5030},"passed into",{"type":16,"value":5032}," a Vulkan API, such as\n",{"type":10,"tag":61,"props":5034,"children":5035},{"href":3660},[5036],{"type":16,"value":3663},{"type":16,"value":3032},{"type":10,"tag":282,"props":5039,"children":5041},{"className":5040},[],[5042],{"type":16,"value":5043},"ppEnabledExtensionNames",{"type":16,"value":5045},", there is no\nexplicit limit on the length of that string.\nHowever, the string ",{"type":10,"tag":45,"props":5047,"children":5048},{"type":47},[],{"type":16,"value":5050}," contain a valid UTF-8 encoded string and ",{"type":10,"tag":45,"props":5052,"children":5053},{"type":47},[],{"type":16,"value":5055}," be\nnull-terminated.",{"type":10,"tag":23,"props":5057,"children":5059},{"id":5058},"fundamentals-common-objects",[5060],{"type":16,"value":5061},"Common Object Types",{"type":10,"tag":18,"props":5063,"children":5064},{},[5065,5067,5072,5073,5078,5080,5085],{"type":16,"value":5066},"Some types of Vulkan objects are used in many different structures and\ncommand parameters, and are described here.\nThese types include ",{"type":10,"tag":117,"props":5068,"children":5069},{},[5070],{"type":16,"value":5071},"offsets",{"type":16,"value":507},{"type":10,"tag":117,"props":5074,"children":5075},{},[5076],{"type":16,"value":5077},"extents",{"type":16,"value":5079},", and ",{"type":10,"tag":117,"props":5081,"children":5082},{},[5083],{"type":16,"value":5084},"rectangles",{"type":16,"value":268},{"type":10,"tag":250,"props":5087,"children":5089},{"id":5088},"_offsets",[5090],{"type":16,"value":5091},"Offsets",{"type":10,"tag":18,"props":5093,"children":5094},{},[5095],{"type":16,"value":5096},"Offsets are used to describe a pixel location within an image or\nframebuffer, as an (x,y) location for two-dimensional images, or an (x,y,z)\nlocation for three-dimensional images.",{"type":10,"tag":1819,"props":5098,"children":5100},{"name":5099,"type":3506},"VkOffset2D",[5101],{"type":10,"tag":18,"props":5102,"children":5103},{},[5104],{"type":16,"value":5105},"Structure specifying a two-dimensional offset",{"type":10,"tag":1819,"props":5107,"children":5109},{"name":5108,"type":3506},"VkOffset3D",[5110],{"type":10,"tag":18,"props":5111,"children":5112},{},[5113],{"type":16,"value":5114},"Structure specifying a three-dimensional offset",{"type":10,"tag":250,"props":5116,"children":5118},{"id":5117},"_extents",[5119],{"type":16,"value":5120},"Extents",{"type":10,"tag":18,"props":5122,"children":5123},{},[5124],{"type":16,"value":5125},"Extents are used to describe the size of a rectangular region of pixels\nwithin an image or framebuffer, as (width,height) for two-dimensional\nimages, or as (width,height,depth) for three-dimensional images.",{"type":10,"tag":1819,"props":5127,"children":5129},{"name":5128,"type":3506},"VkExtent2D",[5130],{"type":10,"tag":18,"props":5131,"children":5132},{},[5133],{"type":16,"value":5134},"Structure specifying a two-dimensional extent",{"type":10,"tag":1819,"props":5136,"children":5138},{"name":5137,"type":3506},"VkExtent3D",[5139],{"type":10,"tag":18,"props":5140,"children":5141},{},[5142],{"type":16,"value":5143},"Structure specifying a three-dimensional extent",{"type":10,"tag":250,"props":5145,"children":5147},{"id":5146},"_rectangles",[5148],{"type":16,"value":5149},"Rectangles",{"type":10,"tag":1819,"props":5151,"children":5153},{"name":5152,"type":3506},"VkRect2D",[5154],{"type":10,"tag":18,"props":5155,"children":5156},{},[5157],{"type":16,"value":5158},"Structure specifying a two-dimensional subregion",{"type":10,"tag":250,"props":5160,"children":5162},{"id":5161},"_structure_types",[5163],{"type":16,"value":5164},"Structure Types",{"type":10,"tag":1819,"props":5166,"children":5167},{"name":3308,"type":3765},[5168],{"type":10,"tag":18,"props":5169,"children":5170},{},[5171,5173,5178],{"type":16,"value":5172},"Vulkan structure types (",{"type":10,"tag":282,"props":5174,"children":5176},{"className":5175},[],[5177],{"type":16,"value":3288},{"type":16,"value":4510},{"type":10,"tag":23,"props":5180,"children":5182},{"id":5181},"fundamentals-api-name-aliases",[5183],{"type":16,"value":5184},"API Name Aliases",{"type":10,"tag":18,"props":5186,"children":5187},{},[5188,5190,5195,5197,5203],{"type":16,"value":5189},"A small number of APIs did not follow the ",{"type":10,"tag":61,"props":5191,"children":5192},{"href":3376},[5193],{"type":16,"value":5194},"naming\nconventions",{"type":16,"value":5196}," when initially defined.\nFor consistency, when we discover an API name that violates the naming\nconventions, we rename it in the Specification, XML, and header files.\nFor backwards compatibility, the original (incorrect) name is retained as a\n",{"type":10,"tag":282,"props":5198,"children":5200},{"className":5199},[],[5201],{"type":16,"value":5202},"typo alias",{"type":16,"value":5204},".\nThe alias is deprecated and should not be used, but will be retained\nindefinitely.",{"type":10,"tag":80,"props":5206,"children":5207},{},[5208],{"type":10,"tag":18,"props":5209,"children":5210},{},[5211,5217,5219,5223,5225,5231,5233,5239],{"type":10,"tag":282,"props":5212,"children":5214},{"className":5213},[],[5215],{"type":16,"value":5216},"VK_STENCIL_FRONT_AND_BACK",{"type":16,"value":5218}," is an example of a ",{"type":10,"tag":117,"props":5220,"children":5221},{},[5222],{"type":16,"value":5202},{"type":16,"value":5224},".\nIt was initially defined as part of ",{"type":10,"tag":61,"props":5226,"children":5228},{"href":5227},"/man/VkStencilFaceFlagBits",[5229],{"type":16,"value":5230},"VkStencilFaceFlagBits",{"type":16,"value":5232},".\nOnce the naming inconsistency was noticed, it was renamed to\n",{"type":10,"tag":282,"props":5234,"children":5236},{"className":5235},[],[5237],{"type":16,"value":5238},"VK_STENCIL_FACE_FRONT_AND_BACK",{"type":16,"value":5240},", and the old name was aliased to the\ncorrect name.",{"title":3755,"searchDepth":5242,"depth":5242,"links":5243},2,[5244,5245,5249,5253,5254,5258,5259,5263,5265,5273,5277,5278,5284],{"id":25,"depth":5242,"text":28},{"id":102,"depth":5242,"text":105,"children":5246},[5247],{"id":252,"depth":5248,"text":255},3,{"id":586,"depth":5242,"text":589,"children":5250},[5251,5252],{"id":693,"depth":5248,"text":696},{"id":1629,"depth":5248,"text":1632},{"id":1670,"depth":5242,"text":1673},{"id":1791,"depth":5242,"text":1794,"children":5255},[5256,5257],{"id":1997,"depth":5248,"text":2000},{"id":2034,"depth":5248,"text":2037},{"id":2327,"depth":5242,"text":2330},{"id":2557,"depth":5242,"text":2560,"children":5260},[5261,5262],{"id":2695,"depth":5248,"text":2698},{"id":2741,"depth":5248,"text":2744},{"id":3752,"depth":5242,"text":5264},"VkResult Return Codes",{"id":3774,"depth":5242,"text":3777,"children":5266},[5267,5268,5269,5270,5271,5272],{"id":3814,"depth":5248,"text":66},{"id":3911,"depth":5248,"text":3914},{"id":3922,"depth":5248,"text":3925},{"id":3948,"depth":5248,"text":3951},{"id":3972,"depth":5248,"text":3975},{"id":3995,"depth":5248,"text":3998},{"id":4026,"depth":5242,"text":4029,"children":5274},[5275,5276],{"id":4082,"depth":5248,"text":4085},{"id":4811,"depth":5248,"text":4814},{"id":4915,"depth":5242,"text":2945},{"id":5058,"depth":5242,"text":5061,"children":5279},[5280,5281,5282,5283],{"id":5088,"depth":5248,"text":5091},{"id":5117,"depth":5248,"text":5120},{"id":5146,"depth":5248,"text":5149},{"id":5161,"depth":5248,"text":5164},{"id":5181,"depth":5242,"text":5184},"markdown","chapters-fundamentals",[5288,5293,5297,5298,5301,5305,5309,5312,5316,5320,5324,5327,5331,5335,5339,5343,5347,5351,5355,5359,5363,5367,5371,5375,5379,5383,5387,5391,5395,5399,5403,5407,5411,5415,5419,5423,5427,5431,5435,5439,5443,5447,5451,5455,5459,5463,5467,5471,5475,5479,5483,5487,5490,5493,5496,5499,5502,5505,5508],{"index":5289,"title":5290,"id":5291,"appendix":5292},0,"Preamble","preamble",false,{"index":5294,"title":5295,"id":5296,"appendix":5292},1,"Introduction","introduction",{"index":5242,"title":4,"id":13,"appendix":5292},{"index":5248,"title":5299,"id":5300,"appendix":5292},"Initialization","initialization",{"index":5302,"title":5303,"id":5304,"appendix":5292},4,"Devices and Queues","devsandqueues",{"index":5306,"title":5307,"id":5308,"appendix":5292},5,"Command Buffers","commandbuffers",{"index":5310,"title":5311,"id":533,"appendix":5292},6,"Synchronization and Cache Control",{"index":5313,"title":5314,"id":5315,"appendix":5292},7,"Render Pass","renderpass",{"index":5317,"title":5318,"id":5319,"appendix":5292},8,"Shaders","shaders",{"index":5321,"title":5322,"id":5323,"appendix":5292},9,"Pipelines","pipelines",{"index":5325,"title":1930,"id":5326,"appendix":5292},10,"memory",{"index":5328,"title":5329,"id":5330,"appendix":5292},11,"Resource Creation","resources",{"index":5332,"title":5333,"id":5334,"appendix":5292},12,"Samplers","samplers",{"index":5336,"title":5337,"id":5338,"appendix":5292},13,"Resource Descriptors","descriptorsets",{"index":5340,"title":5341,"id":5342,"appendix":5292},14,"Shader Interfaces","interfaces",{"index":5344,"title":5345,"id":5346,"appendix":5292},15,"Image Operations","textures",{"index":5348,"title":5349,"id":5350,"appendix":5292},16,"Fragment Density Map Operations","fragmentdensitymapops",{"index":5352,"title":5353,"id":5354,"appendix":5292},17,"Queries","queries",{"index":5356,"title":5357,"id":5358,"appendix":5292},18,"Clear Commands","clears",{"index":5360,"title":5361,"id":5362,"appendix":5292},19,"Copy Commands","copies",{"index":5364,"title":5365,"id":5366,"appendix":5292},20,"Drawing Commands","drawing",{"index":5368,"title":5369,"id":5370,"appendix":5292},21,"Fixed-Function Vertex Processing","fxvertex",{"index":5372,"title":5373,"id":5374,"appendix":5292},22,"Tessellation","tessellation",{"index":5376,"title":5377,"id":5378,"appendix":5292},23,"Geometry Shading","geometry",{"index":5380,"title":5381,"id":5382,"appendix":5292},24,"Mesh Shading","mesh",{"index":5384,"title":5385,"id":5386,"appendix":5292},25,"Cluster Culling Shading","cluster-culling",{"index":5388,"title":5389,"id":5390,"appendix":5292},26,"Fixed-Function Vertex Post-Processing","vertexpostproc",{"index":5392,"title":5393,"id":5394,"appendix":5292},27,"Rasterization","primsrast",{"index":5396,"title":5397,"id":5398,"appendix":5292},28,"Fragment Operations","fragops",{"index":5400,"title":5401,"id":5402,"appendix":5292},29,"The Framebuffer","framebuffer",{"index":5404,"title":5405,"id":5406,"appendix":5292},30,"Dispatching Commands","dispatch",{"index":5408,"title":5409,"id":5410,"appendix":5292},31,"Device-Generated Commands","device-generated-commands",{"index":5412,"title":5413,"id":5414,"appendix":5292},32,"Sparse Resources","sparsememory",{"index":5416,"title":5417,"id":5418,"appendix":5292},33,"Window System Integration (WSI)","wsi",{"index":5420,"title":5421,"id":5422,"appendix":5292},34,"Deferred Host Operations","deferred-host-operations",{"index":5424,"title":5425,"id":5426,"appendix":5292},35,"Private Data","private-data",{"index":5428,"title":5429,"id":5430,"appendix":5292},36,"Acceleration Structures","acceleration-structure",{"index":5432,"title":5433,"id":5434,"appendix":5292},37,"Micromap","micromap",{"index":5436,"title":5437,"id":5438,"appendix":5292},38,"Ray Traversal","ray-traversal",{"index":5440,"title":5441,"id":5442,"appendix":5292},39,"Ray Tracing","ray-tracing",{"index":5444,"title":5445,"id":5446,"appendix":5292},40,"Memory Decompression","memory-decompression",{"index":5448,"title":5449,"id":5450,"appendix":5292},41,"Video Coding","video-coding",{"index":5452,"title":5453,"id":5454,"appendix":5292},42,"Optical Flow","opticalflow",{"index":5456,"title":5457,"id":5458,"appendix":5292},43,"Execution Graphs","executiongraphs",{"index":5460,"title":5461,"id":5462,"appendix":5292},44,"Extending Vulkan","extendingvulkan",{"index":5464,"title":5465,"id":5466,"appendix":5292},45,"Features","features",{"index":5468,"title":5469,"id":5470,"appendix":5292},46,"Limits","limits",{"index":5472,"title":5473,"id":5474,"appendix":5292},47,"Formats","formats",{"index":5476,"title":5477,"id":5478,"appendix":5292},48,"Additional Capabilities","capabilities",{"index":5480,"title":5481,"id":5482,"appendix":5292},49,"Debugging","debugging",{"index":5289,"title":5484,"id":5485,"appendix":5486},"Vulkan Environment for SPIR-V","spirvenv",true,{"index":5294,"title":5488,"id":5489,"appendix":5486},"Memory Model","memory-model",{"index":5242,"title":5491,"id":5492,"appendix":5486},"Compressed Image Formats","compressed_image_formats",{"index":5248,"title":5494,"id":5495,"appendix":5486},"Core Revisions (Informative)","versions",{"index":5302,"title":5497,"id":5498,"appendix":5486},"Layers & Extensions (Informative)","extensions",{"index":5306,"title":5500,"id":5501,"appendix":5486},"API Boilerplate","boilerplate",{"index":5310,"title":5503,"id":5504,"appendix":5486},"Invariance","invariance",{"index":5313,"title":5506,"id":5507,"appendix":5486},"Lexicon","lexicon",{"index":5317,"title":5509,"id":5510,"appendix":5486},"Credits (Informative)","credits",[5512,5520,5524,5529,5533,5538,5541,5544,5547,5551,5555,5558,5561,5564,5566,5568,5571,5574,5578,5580,5584,5586,5589,5591,5594,5602,5606,5612,5616,5621,5623,5627,5633,5639,5645,5647,5650,5656,5659,5663,5669,5673,5677,5682,5686,5689,5692,5698,5701,5704,5708,5712,5716,5719,5721,5725,5730,5736,5739,5743,5746,5752,5755,5759,5762,5766,5769,5773,5776,5781,5785,5788,5793,5796,5799,5802,5806,5811,5816,5820,5824,5828,5832,5836,5840,5844,5847,5850,5854,5857,5860,5863,5867,5872,5876,5879,5883,5888,5892,5897,5900,5903,5908,5913,5917,5920,5924,5929,5932,5937,5942,5945,5948,5952,5956,5960,5965,5969,5972,5977,5981,5984,5988,5992,5996,5999,6001,6005,6008,6011,6014,6017,6020,6023,6026,6029,6032,6036,6040,6043,6046,6049,6052,6055,6058,6062,6066,6070,6073,6077,6080,6083,6086,6088,6092,6097,6101,6105,6107,6111,6114,6121,6125,6129,6133,6139,6142,6146,6150,6153,6156,6160,6165,6171,6175,6177,6182,6185,6190,6194,6199,6203,6207,6209,6212,6215,6217,6222,6225,6228,6233,6237,6241,6246,6250,6254,6256,6258,6261,6263,6266,6269,6273,6277,6279,6283,6286,6290,6293,6295,6298,6302,6304,6308,6311,6314,6317,6321,6324,6327,6329,6332,6334,6337,6341,6344,6346,6348,6350,6352,6356,6358,6361,6366,6370,6373,6375,6378,6380,6384,6387,6390,6393,6397,6400,6405,6409,6412,6416,6419,6422,6426,6430,6432,6437,6440,6444,6447,6450,6453,6455,6458,6462,6465,6469,6472,6476,6480,6483,6486,6489,6492,6496,6498,6501,6503,6508,6509,6513,6516,6519,6522,6525,6527,6531,6534,6537,6540,6544,6546,6548,6552,6554,6557,6561,6565,6567,6571,6574,6577,6580,6583,6587,6592,6597,6601,6607,6611,6614,6618,6622,6625,6629,6633,6636,6640,6643,6648,6652,6654,6660,6663,6666,6669,6673,6676,6680,6684,6688,6690,6693,6695,6698,6700,6702,6705,6708,6711,6714,6717,6720,6722,6726,6730,6734,6738,6741,6744,6748,6751,6755,6757,6761,6765,6768,6771,6774,6777,6780,6783,6786,6789,6792,6795,6798,6801,6804,6807,6811,6814,6818,6822,6825,6828,6831,6834,6837,6840,6844,6847,6850,6856,6860,6864,6868],{"number":5513,"type":5514,"author":5515,"provisional":5486,"depends":5516,"platform":5517,"contact":5518,"extension":5519,"proposal":5486},135,"device","AMD","(((VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_synchronization2),VK_VERSION_1_3)+VK_KHR_pipeline_library+VK_KHR_spirv_1_4","provisional","Tobias Hector @tobski","VK_AMDX_shader_enqueue",{"number":5521,"type":5514,"author":5515,"provisional":5292,"contact":5522,"extension":5523,"proposal":5486},477,"Stu Smith","VK_AMD_anti_lag",{"number":5525,"type":5514,"author":5515,"provisional":5292,"specialuse":5526,"contact":5527,"extension":5528,"proposal":5292},180,"devtools","Daniel Rakos @drakos-amd","VK_AMD_buffer_marker",{"number":5530,"type":5514,"author":5515,"provisional":5292,"depends":5531,"contact":5518,"extension":5532,"proposal":5292},230,"VK_KHR_get_physical_device_properties2,VK_VERSION_1_1","VK_AMD_device_coherent_memory",{"number":5534,"type":5514,"author":5515,"provisional":5292,"depends":5535,"contact":5536,"extension":5537,"proposal":5292},214,"(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_get_surface_capabilities2+VK_KHR_swapchain","Matthaeus G. Chajdas @anteru","VK_AMD_display_native_hdr",{"number":5420,"type":5514,"author":5515,"promotedto":5539,"provisional":5292,"contact":5527,"extension":5540,"proposal":5292},"VK_KHR_draw_indirect_count","VK_AMD_draw_indirect_count",{"number":5388,"type":5514,"author":5515,"provisional":5292,"contact":5542,"extension":5543,"proposal":5292},"Dominik Witczak @dominikwitczakamd","VK_AMD_gcn_shader",{"number":5432,"type":5514,"author":5515,"deprecatedby":5545,"provisional":5292,"contact":5542,"extension":5546,"proposal":5292},"VK_KHR_shader_float16_int8","VK_AMD_gpu_shader_half_float",{"number":5548,"type":5514,"author":5515,"deprecatedby":5545,"provisional":5292,"contact":5549,"extension":5550,"proposal":5292},133,"Qun Lin @linqun","VK_AMD_gpu_shader_int16",{"number":5552,"type":5514,"author":5515,"provisional":5292,"contact":5553,"extension":5554,"proposal":5292},190,"Martin Dinkov @mdinkov","VK_AMD_memory_overallocation_behavior",{"number":5556,"type":5514,"author":5515,"provisional":5292,"contact":5536,"extension":5557,"proposal":5292},137,"VK_AMD_mixed_attachment_samples",{"number":5428,"type":5514,"author":5515,"obsoletedby":5559,"provisional":5292,"contact":5536,"extension":5560,"proposal":5292},"VK_KHR_maintenance1","VK_AMD_negative_viewport_height",{"number":5562,"type":5514,"author":5515,"provisional":5292,"contact":5536,"extension":5563,"proposal":5292},184,"VK_AMD_pipeline_compiler_control",{"number":5360,"type":5514,"author":5515,"provisional":5292,"contact":5527,"extension":5565,"proposal":5292},"VK_AMD_rasterization_order",{"number":5436,"type":5514,"author":5515,"provisional":5292,"contact":5542,"extension":5567,"proposal":5292},"VK_AMD_shader_ballot",{"number":5569,"type":5514,"author":5515,"provisional":5292,"depends":5531,"contact":5553,"extension":5570,"proposal":5292},186,"VK_AMD_shader_core_properties",{"number":5572,"type":5514,"author":5515,"provisional":5292,"depends":5570,"contact":5536,"extension":5573,"proposal":5292},228,"VK_AMD_shader_core_properties2",{"number":5575,"type":5514,"author":5576,"provisional":5292,"depends":5531,"contact":5518,"extension":5577,"proposal":5486},322,"EXT","VK_AMD_shader_early_and_late_fragment_tests",{"number":5372,"type":5514,"author":5515,"provisional":5292,"contact":5549,"extension":5579,"proposal":5292},"VK_AMD_shader_explicit_vertex_parameter",{"number":5581,"type":5514,"author":5515,"provisional":5292,"contact":5582,"extension":5583,"proposal":5292},138,"Aaron Hagan @AaronHaganAMD","VK_AMD_shader_fragment_mask",{"number":5472,"type":5514,"author":5515,"provisional":5292,"contact":5542,"extension":5585,"proposal":5292},"VK_AMD_shader_image_load_store_lod",{"number":5456,"type":5514,"author":5515,"provisional":5292,"specialuse":5526,"contact":5587,"extension":5588,"proposal":5292},"Jaakko Konttinen @jaakkoamd","VK_AMD_shader_info",{"number":5368,"type":5514,"author":5515,"provisional":5292,"contact":5549,"extension":5590,"proposal":5292},"VK_AMD_shader_trinary_minmax",{"number":5452,"type":5514,"author":5515,"provisional":5292,"depends":5531,"contact":5592,"extension":5593,"proposal":5292},"Rex Xu @amdrexu","VK_AMD_texture_gather_bias_lod",{"number":5595,"type":5514,"author":5596,"provisional":5292,"depends":5597,"platform":5598,"specialuse":5599,"contact":5600,"extension":5601,"proposal":5486},469,"ANDROID","VK_ANDROID_external_memory_android_hardware_buffer","android","glemulation","Chris Forbes @chrisforbes","VK_ANDROID_external_format_resolve",{"number":5603,"type":5514,"author":5596,"provisional":5292,"depends":5604,"platform":5598,"contact":5605,"extension":5597,"proposal":5292},130,"((VK_KHR_sampler_ycbcr_conversion+VK_KHR_external_memory+VK_KHR_dedicated_allocation),VK_VERSION_1_1)+VK_EXT_queue_family_foreign","Jesse Hall @critsec",{"number":5607,"type":5514,"author":5608,"promotedto":5609,"provisional":5292,"depends":5531,"contact":5610,"extension":5611,"proposal":5292},343,"ARM","VK_EXT_rasterization_order_attachment_access","Jan-Harald Fredriksen @janharaldfredriksen-arm","VK_ARM_rasterization_order_attachment_access",{"number":5613,"type":5514,"author":5608,"provisional":5292,"depends":5614,"contact":5610,"extension":5615,"proposal":5486},425,"((VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_synchronization2),VK_VERSION_1_3","VK_ARM_render_pass_striped",{"number":5617,"type":5514,"author":5608,"provisional":5292,"depends":5618,"contact":5619,"extension":5620,"proposal":5292},418,"VK_ARM_shader_core_builtins","Kevin Petit @kpet","VK_ARM_scheduling_controls",{"number":5622,"type":5514,"author":5608,"provisional":5292,"depends":5531,"contact":5619,"extension":5618,"proposal":5292},498,{"number":5624,"type":5514,"author":5608,"provisional":5292,"depends":5625,"contact":5610,"extension":5626,"proposal":5292},416,"VK_VERSION_1_1","VK_ARM_shader_core_properties",{"number":5628,"type":5514,"author":5576,"promotedto":5629,"provisional":5292,"depends":5531,"ratified":5630,"contact":5631,"extension":5632,"proposal":5292},341,"VK_VERSION_1_3","vulkansc","Joshua Ashton @Joshua-Ashton","VK_EXT_4444_formats",{"number":5634,"type":5635,"author":5576,"provisional":5292,"depends":5636,"contact":5637,"extension":5638,"proposal":5292},286,"instance","VK_EXT_direct_mode_display","Drew DeVault sir@cmpwn.com","VK_EXT_acquire_drm_display",{"number":5640,"type":5635,"author":5641,"provisional":5292,"depends":5636,"platform":5642,"contact":5643,"extension":5644,"proposal":5292},90,"NV","xlib_xrandr","James Jones @cubanismo","VK_EXT_acquire_xlib_display",{"extension":5646,"proposal":5292},"VK_EXT_application_parameters",{"number":5648,"type":5514,"author":5608,"provisional":5292,"depends":5531,"contact":5610,"extension":5649,"proposal":5292},68,"VK_EXT_astc_decode_mode",{"number":5651,"type":5514,"author":5576,"provisional":5292,"depends":5652,"ratified":5653,"contact":5654,"extension":5655,"proposal":5486},525,"(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_EXT_attachment_feedback_loop_layout","vulkan","Mike Blumenkrantz @zmike","VK_EXT_attachment_feedback_loop_dynamic_state",{"number":5657,"type":5514,"author":5576,"provisional":5292,"depends":5531,"ratified":5653,"contact":5631,"extension":5658,"proposal":5486},340,"VK_EXT_attachment_feedback_loop_layout",{"number":5660,"type":5514,"author":5641,"provisional":5292,"depends":5531,"ratified":5653,"contact":5661,"extension":5662,"proposal":5292},149,"Jeff Bolz @jeffbolznv","VK_EXT_blend_operation_advanced",{"number":5664,"type":5514,"author":5576,"provisional":5292,"depends":5665,"specialuse":5666,"contact":5667,"extension":5668,"proposal":5292},412,"VK_EXT_custom_border_color","glemulation,d3demulation","Piers Daniell @pdaniell-nv","VK_EXT_border_color_swizzle",{"number":5670,"type":5514,"author":5641,"deprecatedby":5671,"provisional":5292,"depends":5531,"contact":5661,"extension":5672,"proposal":5292},245,"VK_KHR_buffer_device_address","VK_EXT_buffer_device_address",{"number":5674,"type":5514,"author":5576,"promotedto":5675,"provisional":5292,"depends":5531,"contact":5527,"extension":5676,"proposal":5486},185,"VK_KHR_calibrated_timestamps","VK_EXT_calibrated_timestamps",{"number":5678,"type":5514,"author":5576,"provisional":5292,"depends":5531,"ratified":5679,"contact":5680,"extension":5681,"proposal":5292},382,"vulkan,vulkansc","Sharif Elcott @selcott","VK_EXT_color_write_enable",{"number":5683,"type":5514,"author":5641,"provisional":5292,"depends":5531,"contact":5684,"extension":5685,"proposal":5292},82,"Vikram Kushwaha @vkushwaha","VK_EXT_conditional_rendering",{"number":5687,"type":5514,"author":5641,"provisional":5292,"depends":5531,"ratified":5653,"contact":5667,"extension":5688,"proposal":5292},102,"VK_EXT_conservative_rasterization",{"number":5690,"type":5514,"author":5576,"provisional":5292,"depends":5531,"ratified":5679,"specialuse":5666,"contact":5691,"extension":5665,"proposal":5292},288,"Liam Middlebrook @liam-middlebrook",{"number":5376,"type":5514,"author":5693,"promotedto":5694,"provisional":5292,"depends":5695,"specialuse":5482,"contact":5696,"extension":5697,"proposal":5292},"Baldur Karlsson","VK_EXT_debug_utils","VK_EXT_debug_report","Baldur Karlsson @baldurk","VK_EXT_debug_marker",{"number":5332,"type":5635,"author":5699,"deprecatedby":5694,"provisional":5292,"specialuse":5482,"contact":5700,"extension":5695,"proposal":5292},"GOOGLE","Courtney Goeltzenleuchter @courtney-g",{"number":5702,"type":5635,"author":5576,"provisional":5292,"specialuse":5482,"contact":5703,"extension":5694,"proposal":5292},129,"Mark Young @marky-lunarg",{"number":5705,"type":5514,"author":5576,"provisional":5292,"depends":5531,"ratified":5653,"specialuse":5706,"contact":5631,"extension":5707,"proposal":5486},284,"d3demulation","VK_EXT_depth_bias_control",{"number":5709,"type":5514,"author":5576,"provisional":5292,"depends":5531,"contact":5710,"extension":5711,"proposal":5292},422,"Graeme Leese @gnl21","VK_EXT_depth_clamp_zero_one",{"number":5713,"type":5514,"author":5576,"provisional":5292,"depends":5531,"ratified":5653,"specialuse":5599,"contact":5714,"extension":5715,"proposal":5292},356,"Shahbaz Youssefi @syoussefi","VK_EXT_depth_clip_control",{"number":5717,"type":5514,"author":5576,"provisional":5292,"depends":5531,"ratified":5679,"specialuse":5706,"contact":5667,"extension":5718,"proposal":5292},103,"VK_EXT_depth_clip_enable",{"number":5340,"type":5514,"author":5641,"provisional":5292,"ratified":5679,"contact":5667,"extension":5720,"proposal":5292},"VK_EXT_depth_range_unrestricted",{"number":5722,"type":5514,"author":5576,"provisional":5292,"depends":5723,"contact":5518,"extension":5724,"proposal":5486},317,"((((VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_buffer_device_address+VK_EXT_descriptor_indexing),VK_VERSION_1_2)+VK_KHR_synchronization2),VK_VERSION_1_3","VK_EXT_descriptor_buffer",{"number":5726,"type":5514,"author":5641,"promotedto":5727,"provisional":5292,"depends":5728,"contact":5661,"extension":5729,"proposal":5292},162,"VK_VERSION_1_2","(VK_KHR_get_physical_device_properties2+VK_KHR_maintenance3),VK_VERSION_1_1","VK_EXT_descriptor_indexing",{"number":5731,"type":5514,"author":5576,"provisional":5292,"depends":5732,"specialuse":5733,"contact":5734,"extension":5735,"proposal":5292},355,"(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_EXT_debug_utils","debugging,devtools","Ralph Potter gitlab:@r_potter","VK_EXT_device_address_binding_report",{"number":5737,"type":5514,"author":5576,"provisional":5292,"depends":5531,"contact":5734,"extension":5738,"proposal":5486},342,"VK_EXT_device_fault",{"number":5740,"type":5514,"author":5576,"provisional":5292,"depends":5531,"ratified":5653,"specialuse":5526,"contact":5741,"extension":5742,"proposal":5292},285,"Yiwei Zhang @zhangyiwei","VK_EXT_device_memory_report",{"number":5744,"type":5635,"author":5641,"provisional":5292,"depends":5745,"contact":5643,"extension":5636,"proposal":5292},89,"VK_KHR_display",{"number":5747,"type":5635,"author":5576,"provisional":5292,"depends":5748,"platform":5749,"contact":5750,"extension":5751,"proposal":5292},347,"VK_KHR_surface","directfb","Nicolas Caramelli @caramelli","VK_EXT_directfb_surface",{"number":5753,"type":5514,"author":5641,"provisional":5292,"depends":5531,"ratified":5679,"contact":5667,"extension":5754,"proposal":5292},100,"VK_EXT_discard_rectangles",{"number":5756,"type":5514,"author":5641,"provisional":5292,"depends":5757,"ratified":5653,"contact":5643,"extension":5758,"proposal":5292},92,"VK_EXT_display_surface_counter+VK_KHR_swapchain","VK_EXT_display_control",{"number":5760,"type":5635,"author":5641,"provisional":5292,"depends":5745,"ratified":5653,"contact":5643,"extension":5761,"proposal":5292},91,"VK_EXT_display_surface_counter",{"number":5763,"type":5514,"author":5576,"provisional":5292,"depends":5764,"ratified":5653,"contact":5667,"extension":5765,"proposal":5486},500,"((VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_dynamic_rendering),VK_VERSION_1_3","VK_EXT_dynamic_rendering_unused_attachments",{"number":5767,"type":5514,"author":5576,"promotedto":5629,"provisional":5292,"depends":5531,"ratified":5630,"contact":5667,"extension":5768,"proposal":5292},268,"VK_EXT_extended_dynamic_state",{"number":5770,"type":5514,"author":5576,"promotedto":5629,"provisional":5292,"depends":5531,"ratified":5630,"contact":5771,"extension":5772,"proposal":5292},378,"Vikram Kushwaha @vkushwaha-nv","VK_EXT_extended_dynamic_state2",{"number":5774,"type":5514,"author":5641,"provisional":5292,"depends":5531,"ratified":5653,"contact":5667,"extension":5775,"proposal":5486},456,"VK_EXT_extended_dynamic_state3",{"number":5777,"type":5514,"author":5576,"provisional":5292,"depends":5778,"ratified":5653,"contact":5779,"extension":5780,"proposal":5486},454,"VK_KHR_external_memory,VK_VERSION_1_1","Lina Versace @versalinyaa","VK_EXT_external_memory_acquire_unmodified",{"number":5782,"type":5514,"author":5576,"provisional":5292,"depends":5783,"ratified":5679,"contact":5779,"extension":5784,"proposal":5292},126,"VK_KHR_external_memory_fd","VK_EXT_external_memory_dma_buf",{"number":5786,"type":5514,"author":5576,"provisional":5292,"depends":5778,"ratified":5679,"contact":5527,"extension":5787,"proposal":5292},179,"VK_EXT_external_memory_host",{"number":5789,"type":5514,"author":5790,"provisional":5292,"ratified":5653,"contact":5791,"extension":5792,"proposal":5292},171,"QCOM","Matthew Netsch @mnetsch","VK_EXT_filter_cubic",{"number":5794,"type":5514,"author":5576,"provisional":5292,"depends":5531,"contact":5791,"extension":5795,"proposal":5292},219,"VK_EXT_fragment_density_map",{"number":5797,"type":5514,"author":5576,"provisional":5292,"depends":5795,"contact":5791,"extension":5798,"proposal":5292},333,"VK_EXT_fragment_density_map2",{"number":5800,"type":5514,"author":5576,"provisional":5292,"depends":5531,"contact":5667,"extension":5801,"proposal":5292},252,"VK_EXT_fragment_shader_interlock",{"number":5803,"type":5514,"author":5576,"provisional":5292,"ratified":5653,"contact":5804,"extension":5805,"proposal":5486},376,"James Fitzpatrick @jamesfitzpatrick","VK_EXT_frame_boundary",{"number":5807,"type":5514,"author":5576,"provisional":5292,"depends":5808,"platform":5809,"ratified":5653,"contact":5643,"extension":5810,"proposal":5292},256,"(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_surface+VK_KHR_get_surface_capabilities2+VK_KHR_swapchain","win32","VK_EXT_full_screen_exclusive",{"number":5812,"type":5514,"author":5576,"promotedto":5813,"provisional":5292,"contact":5814,"extension":5815,"proposal":5292},175,"VK_KHR_global_priority","Andres Rodriguez @lostgoat","VK_EXT_global_priority",{"number":5817,"type":5514,"author":5576,"promotedto":5813,"provisional":5292,"depends":5818,"contact":5741,"extension":5819,"proposal":5292},389,"VK_EXT_global_priority+(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)","VK_EXT_global_priority_query",{"number":5821,"type":5514,"author":5515,"provisional":5292,"depends":5822,"contact":5518,"extension":5823,"proposal":5486},321,"(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_pipeline_library","VK_EXT_graphics_pipeline_library",{"number":5825,"type":5514,"author":5699,"provisional":5292,"depends":5826,"ratified":5679,"contact":5700,"extension":5827,"proposal":5292},106,"VK_KHR_swapchain","VK_EXT_hdr_metadata",{"number":5829,"type":5635,"author":5576,"provisional":5292,"depends":5748,"contact":5830,"extension":5831,"proposal":5292},257,"Lisa Wu @chengtianww","VK_EXT_headless_surface",{"number":5833,"type":5514,"author":5576,"provisional":5292,"depends":5834,"ratified":5653,"contact":5714,"extension":5835,"proposal":5486},271,"((VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_copy_commands2+VK_KHR_format_feature_flags2),VK_VERSION_1_3","VK_EXT_host_image_copy",{"number":5837,"type":5514,"author":5576,"promotedto":5727,"provisional":5292,"depends":5531,"contact":5838,"extension":5839,"proposal":5292},262,"Bas Nieuwenhuizen @BNieuwenhuizen","VK_EXT_host_query_reset",{"number":5841,"type":5514,"author":5576,"provisional":5292,"depends":5842,"specialuse":5599,"contact":5654,"extension":5843,"proposal":5292},394,"(VK_KHR_maintenance1+VK_KHR_get_physical_device_properties2),VK_VERSION_1_1","VK_EXT_image_2d_view_of_3d",{"number":5845,"type":5514,"author":5576,"provisional":5292,"depends":5531,"contact":5610,"extension":5846,"proposal":5486},339,"VK_EXT_image_compression_control",{"number":5848,"type":5514,"author":5576,"provisional":5292,"depends":5846,"contact":5610,"extension":5849,"proposal":5292},438,"VK_EXT_image_compression_control_swapchain",{"number":5851,"type":5514,"author":5576,"provisional":5292,"depends":5852,"ratified":5653,"contact":5779,"extension":5853,"proposal":5292},159,"(((VK_KHR_bind_memory2+VK_KHR_get_physical_device_properties2+VK_KHR_sampler_ycbcr_conversion),VK_VERSION_1_1)+VK_KHR_image_format_list),VK_VERSION_1_2","VK_EXT_image_drm_format_modifier",{"number":5855,"type":5514,"author":5576,"promotedto":5629,"provisional":5292,"depends":5531,"ratified":5630,"contact":5710,"extension":5856,"proposal":5292},336,"VK_EXT_image_robustness",{"number":5858,"type":5514,"author":5576,"provisional":5292,"depends":5842,"specialuse":5706,"contact":5654,"extension":5859,"proposal":5486},419,"VK_EXT_image_sliced_view_of_3d",{"number":5861,"type":5514,"author":5576,"provisional":5292,"depends":5531,"contact":5631,"extension":5862,"proposal":5292},392,"VK_EXT_image_view_min_lod",{"number":5864,"type":5514,"author":5576,"promotedto":5865,"provisional":5292,"depends":5531,"contact":5667,"extension":5866,"proposal":5292},266,"VK_KHR_index_type_uint8","VK_EXT_index_type_uint8",{"number":5868,"type":5514,"author":5576,"promotedto":5629,"provisional":5292,"depends":5869,"contact":5870,"extension":5871,"proposal":5292},139,"(VK_KHR_get_physical_device_properties2+VK_KHR_maintenance1),VK_VERSION_1_1","Daniel Rakos @aqnuep","VK_EXT_inline_uniform_block",{"number":5873,"type":5635,"author":5576,"provisional":5292,"ratified":5653,"contact":5874,"extension":5875,"proposal":5486},497,"Christophe Riccio @christophe","VK_EXT_layer_settings",{"number":5877,"type":5514,"author":5576,"provisional":5292,"depends":5531,"specialuse":5599,"contact":5714,"extension":5878,"proposal":5486},466,"VK_EXT_legacy_dithering",{"number":5880,"type":5514,"author":5576,"provisional":5292,"depends":5881,"ratified":5653,"specialuse":5599,"contact":5654,"extension":5882,"proposal":5486},496,"VK_EXT_vertex_input_dynamic_state","VK_EXT_legacy_vertex_attributes",{"number":5884,"type":5514,"author":5576,"promotedto":5885,"provisional":5292,"depends":5531,"specialuse":5886,"contact":5661,"extension":5887,"proposal":5292},260,"VK_KHR_line_rasterization","cadsupport","VK_EXT_line_rasterization",{"number":5889,"type":5514,"author":5576,"promotedto":5890,"provisional":5292,"ratified":5653,"contact":5714,"extension":5891,"proposal":5292},401,"VK_KHR_load_store_op_none","VK_EXT_load_store_op_none",{"number":5893,"type":5514,"author":5576,"provisional":5292,"depends":5894,"ratified":5653,"contact":5895,"extension":5896,"proposal":5486},273,"VK_KHR_map_memory2","Faith Ekstrand @gfxstrand","VK_EXT_map_memory_placed",{"number":5898,"type":5514,"author":5576,"provisional":5292,"depends":5531,"ratified":5653,"contact":5661,"extension":5899,"proposal":5292},238,"VK_EXT_memory_budget",{"number":5901,"type":5514,"author":5576,"provisional":5292,"depends":5531,"ratified":5653,"contact":5661,"extension":5902,"proposal":5292},239,"VK_EXT_memory_priority",{"number":5904,"type":5514,"author":5576,"provisional":5292,"depends":5905,"contact":5906,"extension":5907,"proposal":5486},329,"VK_KHR_spirv_1_4","Christoph Kubisch @pixeljetstream","VK_EXT_mesh_shader",{"number":5909,"type":5514,"author":5576,"provisional":5292,"platform":5910,"contact":5911,"extension":5912,"proposal":5486},312,"metal","Bill Hollings @billhollings","VK_EXT_metal_objects",{"number":5914,"type":5635,"author":5576,"provisional":5292,"depends":5748,"platform":5910,"contact":5915,"extension":5916,"proposal":5292},218,"Dzmitry Malyshau @kvark","VK_EXT_metal_surface",{"number":5918,"type":5514,"author":5576,"provisional":5292,"depends":5531,"contact":5654,"extension":5919,"proposal":5292},393,"VK_EXT_multi_draw",{"number":5921,"type":5514,"author":5576,"provisional":5292,"depends":5922,"contact":5714,"extension":5923,"proposal":5486},377,"(VK_KHR_create_renderpass2+VK_KHR_depth_stencil_resolve),VK_VERSION_1_2","VK_EXT_multisampled_render_to_single_sampled",{"number":5925,"type":5514,"author":5576,"provisional":5292,"depends":5926,"specialuse":5706,"contact":5927,"extension":5928,"proposal":5486},495,"VK_KHR_maintenance3","Joshua Ashton @Joshua-Ashton,Hans-Kristian Arntzen @HansKristian-Work","VK_EXT_mutable_descriptor_type",{"number":5930,"type":5514,"author":5576,"provisional":5292,"depends":5531,"ratified":5653,"contact":5667,"extension":5931,"proposal":5292},452,"VK_EXT_nested_command_buffer",{"number":5933,"type":5514,"author":5576,"provisional":5292,"depends":5531,"specialuse":5934,"contact":5935,"extension":5936,"proposal":5486},423,"d3demulation,glemulation","Georg Lehmann @DadSchoorse","VK_EXT_non_seamless_cube_map",{"number":5938,"type":5514,"author":5576,"provisional":5292,"depends":5939,"ratified":5653,"contact":5940,"extension":5941,"proposal":5486},397,"VK_KHR_acceleration_structure+(VK_KHR_synchronization2,VK_VERSION_1_3)","Christoph Kubisch @pixeljetstream, Eric Werness","VK_EXT_opacity_micromap",{"number":5943,"type":5514,"author":5576,"provisional":5292,"depends":5902,"contact":5667,"extension":5944,"proposal":5292},413,"VK_EXT_pageable_device_local_memory",{"number":5946,"type":5514,"author":5576,"provisional":5292,"depends":5531,"ratified":5679,"contact":5536,"extension":5947,"proposal":5292},213,"VK_EXT_pci_bus_info",{"number":5949,"type":5514,"author":5576,"provisional":5292,"depends":5531,"contact":5950,"extension":5951,"proposal":5292},354,"Simon Ser @emersion","VK_EXT_physical_device_drm",{"number":5953,"type":5514,"author":5515,"promotedto":5629,"provisional":5292,"depends":5531,"contact":5954,"extension":5955,"proposal":5292},298,"Gregory Grebe @grgrebe_amd","VK_EXT_pipeline_creation_cache_control",{"number":5957,"type":5514,"author":5699,"promotedto":5629,"provisional":5292,"specialuse":5526,"contact":5958,"extension":5959,"proposal":5292},193,"Jean-Francois Roy @jfroy","VK_EXT_pipeline_creation_feedback",{"number":5961,"type":5514,"author":5576,"provisional":5292,"depends":5962,"contact":5963,"extension":5964,"proposal":5486},499,"VK_KHR_ray_tracing_pipeline+VK_KHR_pipeline_library","Hans-Kristian Arntzen @HansKristian-Work","VK_EXT_pipeline_library_group_handles",{"number":5966,"type":5514,"author":5576,"provisional":5292,"depends":5531,"contact":5967,"extension":5968,"proposal":5292},373,"Mukund Keshava @mkeshavanv","VK_EXT_pipeline_properties",{"number":5970,"type":5514,"author":5576,"provisional":5292,"depends":5531,"contact":5714,"extension":5971,"proposal":5486},467,"VK_EXT_pipeline_protected_access",{"number":5973,"type":5514,"author":5974,"provisional":5292,"depends":5531,"contact":5975,"extension":5976,"proposal":5292},69,"IMG","Jarred Davies","VK_EXT_pipeline_robustness",{"number":5978,"type":5514,"author":5641,"provisional":5292,"ratified":5653,"contact":5979,"extension":5980,"proposal":5292},156,"Daniel Koch @dgkoch","VK_EXT_post_depth_coverage",{"number":5982,"type":5514,"author":5576,"provisional":5292,"depends":5531,"ratified":5653,"specialuse":5599,"contact":5714,"extension":5983,"proposal":5292},357,"VK_EXT_primitive_topology_list_restart",{"number":5985,"type":5514,"author":5576,"provisional":5292,"depends":5986,"specialuse":5599,"contact":5714,"extension":5987,"proposal":5486},383,"VK_EXT_transform_feedback","VK_EXT_primitives_generated_query",{"number":5989,"type":5514,"author":5641,"promotedto":5629,"provisional":5292,"depends":5531,"contact":5990,"extension":5991,"proposal":5292},296,"Matthew Rusch @mattruschnv","VK_EXT_private_data",{"number":5993,"type":5514,"author":5576,"provisional":5292,"depends":5531,"ratified":5653,"specialuse":5599,"contact":5994,"extension":5995,"proposal":5292},255,"Jesse Hall @jessehall","VK_EXT_provoking_vertex",{"number":5997,"type":5514,"author":5576,"provisional":5292,"depends":5778,"ratified":5679,"contact":5779,"extension":5998,"proposal":5292},127,"VK_EXT_queue_family_foreign",{"number":6000,"type":5514,"author":5608,"provisional":5292,"depends":5531,"contact":5610,"extension":5609,"proposal":5486},464,{"number":6002,"type":5514,"author":5576,"provisional":5292,"depends":6003,"contact":5610,"extension":6004,"proposal":5292},345,"VK_KHR_sampler_ycbcr_conversion,VK_VERSION_1_1","VK_EXT_rgba10x6_formats",{"number":6006,"type":5514,"author":5576,"provisional":5292,"depends":5531,"ratified":5679,"contact":5691,"extension":6007,"proposal":5292},287,"VK_EXT_robustness2",{"number":6009,"type":5514,"author":5515,"provisional":5292,"depends":5531,"ratified":5679,"contact":5527,"extension":6010,"proposal":5292},144,"VK_EXT_sample_locations",{"number":6012,"type":5514,"author":5641,"promotedto":5727,"provisional":5292,"depends":5531,"contact":5661,"extension":6013,"proposal":5292},131,"VK_EXT_sampler_filter_minmax",{"number":6015,"type":5514,"author":5576,"promotedto":5727,"provisional":5292,"depends":5531,"contact":5518,"extension":6016,"proposal":5292},222,"VK_EXT_scalar_block_layout",{"number":6018,"type":5514,"author":5576,"promotedto":5727,"provisional":5292,"contact":5527,"extension":6019,"proposal":5292},247,"VK_EXT_separate_stencil_usage",{"number":6021,"type":5514,"author":5641,"provisional":5292,"depends":5531,"ratified":5679,"contact":5771,"extension":6022,"proposal":5292},261,"VK_EXT_shader_atomic_float",{"number":6024,"type":5514,"author":5576,"provisional":5292,"depends":6022,"ratified":5653,"contact":5895,"extension":6025,"proposal":5292},274,"VK_EXT_shader_atomic_float2",{"number":6027,"type":5514,"author":5576,"promotedto":5629,"provisional":5292,"depends":5531,"ratified":5630,"contact":5661,"extension":6028,"proposal":5292},277,"VK_EXT_shader_demote_to_helper_invocation",{"number":6030,"type":5514,"author":5576,"provisional":5292,"depends":5531,"ratified":5653,"contact":5518,"extension":6031,"proposal":5292},235,"VK_EXT_shader_image_atomic_int64",{"number":6033,"type":5514,"author":5576,"provisional":5292,"depends":6034,"contact":5963,"extension":6035,"proposal":5486},463,"((VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_EXT_pipeline_creation_cache_control),VK_VERSION_1_3","VK_EXT_shader_module_identifier",{"number":6037,"type":5514,"author":5576,"provisional":5292,"depends":5764,"ratified":5653,"contact":6038,"extension":6039,"proposal":5486},483,"Daniel Story @daniel-story","VK_EXT_shader_object",{"number":6041,"type":5514,"author":5576,"provisional":5292,"ratified":5653,"contact":5619,"extension":6042,"proposal":5486},565,"VK_EXT_shader_replicated_composites",{"number":6044,"type":5514,"author":5576,"provisional":5292,"ratified":5679,"contact":5542,"extension":6045,"proposal":5292},141,"VK_EXT_shader_stencil_export",{"number":6047,"type":5514,"author":5641,"deprecatedby":5727,"provisional":5292,"contact":5979,"extension":6048,"proposal":5292},65,"VK_EXT_shader_subgroup_ballot",{"number":6050,"type":5514,"author":5641,"deprecatedby":5625,"provisional":5292,"contact":5979,"extension":6051,"proposal":5292},66,"VK_EXT_shader_subgroup_vote",{"number":6053,"type":5514,"author":5576,"provisional":5292,"depends":5629,"ratified":5653,"contact":5610,"extension":6054,"proposal":5486},396,"VK_EXT_shader_tile_image",{"number":6056,"type":5514,"author":5641,"promotedto":5727,"provisional":5292,"contact":5979,"extension":6057,"proposal":5292},163,"VK_EXT_shader_viewport_index_layer",{"number":6059,"type":5514,"author":5576,"promotedto":5629,"provisional":5292,"depends":5625,"ratified":5630,"contact":6060,"extension":6061,"proposal":5292},226,"Neil Henning @sheredom","VK_EXT_subgroup_size_control",{"number":6063,"type":5514,"author":5576,"provisional":5292,"depends":5531,"contact":6064,"extension":6065,"proposal":5486},459,"Ting Wei @catweiting","VK_EXT_subpass_merge_feedback",{"number":6067,"type":5635,"author":5576,"provisional":5292,"depends":6068,"contact":5714,"extension":6069,"proposal":5486},275,"VK_KHR_surface+VK_KHR_get_surface_capabilities2","VK_EXT_surface_maintenance1",{"number":6071,"type":5635,"author":5699,"provisional":5292,"depends":5748,"contact":5700,"extension":6072,"proposal":5292},105,"VK_EXT_swapchain_colorspace",{"number":6074,"type":5514,"author":5576,"provisional":5292,"depends":6075,"contact":5714,"extension":6076,"proposal":5486},276,"VK_KHR_swapchain+VK_EXT_surface_maintenance1+(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)","VK_EXT_swapchain_maintenance1",{"number":6078,"type":5514,"author":5576,"promotedto":5629,"provisional":5292,"depends":5531,"ratified":5630,"contact":5661,"extension":6079,"proposal":5292},282,"VK_EXT_texel_buffer_alignment",{"number":6081,"type":5514,"author":5608,"promotedto":5629,"provisional":5292,"depends":5531,"ratified":5630,"contact":5610,"extension":6082,"proposal":5292},67,"VK_EXT_texture_compression_astc_hdr",{"number":6084,"type":5514,"author":5576,"promotedto":5629,"provisional":5292,"contact":5518,"extension":6085,"proposal":5292},246,"VK_EXT_tooling_info",{"number":5400,"type":5514,"author":5641,"provisional":5292,"depends":5531,"ratified":5653,"specialuse":6087,"contact":5667,"extension":5986,"proposal":5292},"glemulation,d3demulation,devtools",{"number":6089,"type":5514,"author":5699,"provisional":5292,"contact":6090,"extension":6091,"proposal":5292},161,"Cort Stratton @cdwfs","VK_EXT_validation_cache",{"number":6093,"type":5635,"author":6094,"deprecatedby":5875,"provisional":5292,"specialuse":5482,"contact":6095,"extension":6096,"proposal":5292},248,"LUNARG","Karl Schultz @karl-lunarg","VK_EXT_validation_features",{"number":6098,"type":5635,"author":5699,"deprecatedby":5875,"provisional":5292,"specialuse":5482,"contact":6099,"extension":6100,"proposal":5292},62,"Tobin Ehlis @tobine","VK_EXT_validation_flags",{"number":6102,"type":5514,"author":5641,"promotedto":6103,"provisional":5292,"depends":5531,"contact":5684,"extension":6104,"proposal":5292},191,"VK_KHR_vertex_attribute_divisor","VK_EXT_vertex_attribute_divisor",{"number":6106,"type":5514,"author":5576,"provisional":5292,"depends":5531,"ratified":5653,"contact":5667,"extension":5881,"proposal":5292},353,{"number":6108,"type":5514,"author":5576,"promotedto":5629,"provisional":5292,"depends":6003,"ratified":5630,"contact":6109,"extension":6110,"proposal":5292},331,"Tony Zlatinski @tzlatinski","VK_EXT_ycbcr_2plane_444_formats",{"number":6112,"type":5514,"author":5576,"provisional":5292,"depends":6003,"ratified":5679,"contact":5667,"extension":6113,"proposal":5292},253,"VK_EXT_ycbcr_image_arrays",{"number":6115,"type":5514,"author":6116,"provisional":5292,"depends":6117,"platform":6118,"contact":6119,"extension":6120,"proposal":5292},367,"FUCHSIA","VK_FUCHSIA_external_memory+(VK_KHR_sampler_ycbcr_conversion,VK_VERSION_1_1)","fuchsia","John Rosasco @rosasco","VK_FUCHSIA_buffer_collection",{"number":6122,"type":5514,"author":6116,"provisional":5292,"depends":6123,"platform":6118,"contact":6119,"extension":6124,"proposal":5292},365,"(VK_KHR_external_memory_capabilities+VK_KHR_external_memory),VK_VERSION_1_1","VK_FUCHSIA_external_memory",{"number":6126,"type":5514,"author":6116,"provisional":5292,"depends":6127,"platform":6118,"contact":6119,"extension":6128,"proposal":5292},366,"VK_KHR_external_semaphore_capabilities+VK_KHR_external_semaphore","VK_FUCHSIA_external_semaphore",{"number":6130,"type":5635,"author":6116,"provisional":5292,"depends":5748,"platform":6118,"contact":6131,"extension":6132,"proposal":5292},215,"Craig Stout @cdotstout","VK_FUCHSIA_imagepipe_surface",{"number":6134,"type":5514,"author":6135,"provisional":5292,"depends":6136,"platform":6137,"contact":5958,"extension":6138,"proposal":5292},192,"GGP","VK_KHR_swapchain+VK_GGP_stream_descriptor_surface","ggp","VK_GGP_frame_token",{"number":6140,"type":5635,"author":6135,"provisional":5292,"depends":5748,"platform":6137,"contact":5958,"extension":6141,"proposal":5292},50,"VK_GGP_stream_descriptor_surface",{"number":6143,"type":5514,"author":5699,"provisional":5292,"contact":6144,"extension":6145,"proposal":5292},225,"Hai Nguyen @chaoticbob","VK_GOOGLE_decorate_string",{"number":6147,"type":5514,"author":5699,"provisional":5292,"depends":5826,"contact":6148,"extension":6149,"proposal":5292},93,"Ian Elliott @ianelliottus","VK_GOOGLE_display_timing",{"number":6151,"type":5514,"author":5699,"provisional":5292,"contact":6144,"extension":6152,"proposal":5292},224,"VK_GOOGLE_hlsl_functionality1",{"number":6154,"type":5635,"author":5699,"provisional":5292,"depends":5748,"specialuse":5599,"contact":5714,"extension":6155,"proposal":5486},434,"VK_GOOGLE_surfaceless_query",{"number":6157,"type":5514,"author":5699,"provisional":5292,"contact":6158,"extension":6159,"proposal":5292},290,"Kaye Mason @chaleur","VK_GOOGLE_user_type",{"number":6161,"type":5514,"author":6162,"provisional":5292,"depends":5531,"contact":6163,"extension":6164,"proposal":5486},405,"HUAWEI","Yuchang Wang @richard_Wang2","VK_HUAWEI_cluster_culling_shader",{"number":6166,"type":5514,"author":6167,"provisional":5292,"depends":6168,"contact":6169,"extension":6170,"proposal":5486},371,"Huawei","VK_KHR_ray_tracing_pipeline+(VK_KHR_synchronization2,VK_VERSION_1_3)","Pan Gao @PanGao-h","VK_HUAWEI_invocation_mask",{"number":6172,"type":5514,"author":6162,"provisional":5292,"depends":6173,"contact":6169,"extension":6174,"proposal":5292},370,"((VK_KHR_create_renderpass2,VK_VERSION_1_2)+VK_KHR_synchronization2),VK_VERSION_1_3","VK_HUAWEI_subpass_shading",{"number":5348,"type":5514,"author":5974,"provisional":5292,"contact":5518,"extension":6176,"proposal":5292},"VK_IMG_filter_cubic",{"number":6178,"type":5514,"author":5974,"deprecatedby":6179,"provisional":5292,"contact":6180,"extension":6181,"proposal":5292},55,null,"Stuart Smith","VK_IMG_format_pvrtc",{"number":6183,"type":5514,"author":5974,"provisional":5292,"depends":5531,"specialuse":5599,"contact":5804,"extension":6184,"proposal":5292},111,"VK_IMG_relaxed_line_rasterization",{"number":6186,"type":5514,"author":6187,"provisional":5292,"specialuse":5526,"contact":6188,"extension":6189,"proposal":5292},211,"INTEL","Lionel Landwerlin @llandwerlin","VK_INTEL_performance_query",{"number":6191,"type":5514,"author":6187,"provisional":5292,"depends":5531,"contact":6192,"extension":6193,"proposal":5292},210,"Ian Romanick @ianromanick","VK_INTEL_shader_integer_functions2",{"number":6195,"type":5514,"author":6196,"promotedto":5625,"provisional":5292,"depends":6197,"ratified":5653,"contact":5610,"extension":6198,"proposal":5292},84,"KHR","(VK_KHR_get_physical_device_properties2+VK_KHR_storage_buffer_storage_class),VK_VERSION_1_1","VK_KHR_16bit_storage",{"number":6200,"type":5514,"author":6196,"promotedto":5727,"provisional":5292,"depends":6197,"ratified":5653,"contact":6201,"extension":6202,"proposal":5292},178,"Alexander Galazin @alegal-arm","VK_KHR_8bit_storage",{"number":6204,"type":5514,"author":6196,"provisional":5292,"depends":6205,"ratified":5653,"contact":5979,"extension":6206,"proposal":5292},151,"((VK_VERSION_1_1+VK_EXT_descriptor_indexing+VK_KHR_buffer_device_address),VK_VERSION_1_2)+VK_KHR_deferred_host_operations","VK_KHR_acceleration_structure",{"number":5321,"type":5635,"author":6196,"provisional":5292,"depends":5748,"platform":5598,"ratified":5653,"contact":5605,"extension":6208,"proposal":5292},"VK_KHR_android_surface",{"number":6210,"type":5514,"author":6196,"promotedto":5625,"provisional":5292,"ratified":5653,"contact":5518,"extension":6211,"proposal":5292},158,"VK_KHR_bind_memory2",{"number":6213,"type":5514,"author":6196,"promotedto":5727,"provisional":5292,"depends":6214,"ratified":5653,"contact":5661,"extension":5671,"proposal":5292},258,"(VK_KHR_get_physical_device_properties2+VK_KHR_device_group),VK_VERSION_1_1",{"number":6216,"type":5514,"author":6196,"provisional":5292,"depends":5531,"ratified":5679,"contact":5870,"extension":5675,"proposal":5292},544,{"number":6218,"type":5514,"author":6196,"provisional":5292,"depends":6219,"ratified":5653,"contact":6220,"extension":6221,"proposal":5486},512,"VK_KHR_get_physical_device_properties2","Jean-Noe Morissette @MagicPoncho","VK_KHR_compute_shader_derivatives",{"number":6223,"type":5514,"author":6196,"provisional":5292,"depends":5531,"ratified":5653,"contact":5619,"extension":6224,"proposal":5486},507,"VK_KHR_cooperative_matrix",{"number":6226,"type":5514,"author":6196,"promotedto":5629,"provisional":5292,"depends":5531,"ratified":5679,"contact":5791,"extension":6227,"proposal":5292},338,"VK_KHR_copy_commands2",{"number":6229,"type":5514,"author":6196,"promotedto":5727,"provisional":5292,"depends":6230,"ratified":5653,"contact":6231,"extension":6232,"proposal":5292},110,"(VK_KHR_multiview+VK_KHR_maintenance2),VK_VERSION_1_1","Tobias Hector @tobias","VK_KHR_create_renderpass2",{"number":6234,"type":5514,"author":6196,"promotedto":5625,"provisional":5292,"depends":6235,"ratified":5653,"contact":5643,"extension":6236,"proposal":5292},128,"VK_KHR_get_memory_requirements2,VK_VERSION_1_1","VK_KHR_dedicated_allocation",{"number":6238,"type":5514,"author":6196,"provisional":5292,"ratified":5653,"contact":6239,"extension":6240,"proposal":5292},269,"Josh Barczak @jbarczak","VK_KHR_deferred_host_operations",{"number":6242,"type":5514,"author":6196,"promotedto":5727,"provisional":5292,"depends":6243,"ratified":5653,"contact":6244,"extension":6245,"proposal":5292},200,"VK_KHR_create_renderpass2,VK_VERSION_1_2","Jan-Harald Fredriksen @janharald","VK_KHR_depth_stencil_resolve",{"number":6247,"type":5514,"author":6196,"promotedto":5625,"provisional":5292,"ratified":5653,"contact":6248,"extension":6249,"proposal":5292},86,"Markus Tavenrath @mtavenrath","VK_KHR_descriptor_update_template",{"number":6251,"type":5514,"author":6196,"promotedto":5625,"provisional":5292,"depends":6252,"ratified":5653,"contact":5661,"extension":6253,"proposal":5292},61,"VK_KHR_device_group_creation","VK_KHR_device_group",{"number":6255,"type":5635,"author":6196,"promotedto":5625,"provisional":5292,"ratified":5653,"contact":5661,"extension":6252,"proposal":5292},71,{"number":5248,"type":5635,"author":6196,"provisional":5292,"depends":5748,"ratified":5679,"contact":6257,"extension":5745,"proposal":5292},"James Jones @cubanismo,Norbert Nopper @FslNopper",{"number":5302,"type":5514,"author":6196,"provisional":5292,"depends":6259,"ratified":5679,"contact":5643,"extension":6260,"proposal":5292},"VK_KHR_swapchain+VK_KHR_display","VK_KHR_display_swapchain",{"number":6262,"type":5514,"author":6196,"promotedto":5727,"provisional":5292,"ratified":5653,"contact":5667,"extension":5539,"proposal":5292},170,{"number":6264,"type":5514,"author":6196,"promotedto":5727,"provisional":5292,"depends":5531,"ratified":5653,"contact":5527,"extension":6265,"proposal":5292},197,"VK_KHR_driver_properties",{"number":5464,"type":5514,"author":6196,"promotedto":5629,"provisional":5292,"depends":6267,"ratified":5653,"contact":5518,"extension":6268,"proposal":5486},"((VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_depth_stencil_resolve),VK_VERSION_1_2","VK_KHR_dynamic_rendering",{"number":6270,"type":5514,"author":5515,"provisional":5292,"depends":6271,"ratified":5653,"contact":5518,"extension":6272,"proposal":5486},233,"VK_KHR_dynamic_rendering,VK_VERSION_1_3","VK_KHR_dynamic_rendering_local_read",{"number":6274,"type":5514,"author":6196,"promotedto":5625,"provisional":5292,"depends":6275,"ratified":5653,"contact":5605,"extension":6276,"proposal":5292},114,"VK_KHR_external_fence_capabilities","VK_KHR_external_fence",{"number":6278,"type":5635,"author":6196,"promotedto":5625,"provisional":5292,"depends":5531,"ratified":5653,"contact":5605,"extension":6275,"proposal":5292},113,{"number":6280,"type":5514,"author":6196,"provisional":5292,"depends":6281,"ratified":5679,"contact":5605,"extension":6282,"proposal":5292},116,"VK_KHR_external_fence,VK_VERSION_1_1","VK_KHR_external_fence_fd",{"number":6284,"type":5514,"author":6196,"provisional":5292,"depends":6276,"platform":5809,"ratified":5653,"contact":5605,"extension":6285,"proposal":5292},115,"VK_KHR_external_fence_win32",{"number":6287,"type":5514,"author":6196,"promotedto":5625,"provisional":5292,"depends":6288,"ratified":5653,"contact":5643,"extension":6289,"proposal":5292},73,"VK_KHR_external_memory_capabilities,VK_VERSION_1_1","VK_KHR_external_memory",{"number":6291,"type":5635,"author":6196,"promotedto":5625,"provisional":5292,"depends":5531,"ratified":5653,"contact":5643,"extension":6292,"proposal":5292},72,"VK_KHR_external_memory_capabilities",{"number":6294,"type":5514,"author":6196,"provisional":5292,"depends":5778,"ratified":5679,"contact":5643,"extension":5783,"proposal":5292},75,{"number":6296,"type":5514,"author":6196,"provisional":5292,"depends":5778,"platform":5809,"ratified":5653,"contact":5643,"extension":6297,"proposal":5292},74,"VK_KHR_external_memory_win32",{"number":6299,"type":5514,"author":6196,"promotedto":5625,"provisional":5292,"depends":6300,"ratified":5653,"contact":5643,"extension":6301,"proposal":5292},78,"VK_KHR_external_semaphore_capabilities","VK_KHR_external_semaphore",{"number":6303,"type":5635,"author":6196,"promotedto":5625,"provisional":5292,"depends":5531,"ratified":5653,"contact":5643,"extension":6300,"proposal":5292},77,{"number":6305,"type":5514,"author":6196,"provisional":5292,"depends":6306,"ratified":5679,"contact":5643,"extension":6307,"proposal":5292},80,"VK_KHR_external_semaphore,VK_VERSION_1_1","VK_KHR_external_semaphore_fd",{"number":6309,"type":5514,"author":6196,"provisional":5292,"depends":6301,"platform":5809,"ratified":5653,"contact":5643,"extension":6310,"proposal":5292},79,"VK_KHR_external_semaphore_win32",{"number":6312,"type":5514,"author":6196,"promotedto":5629,"provisional":5292,"depends":5531,"ratified":5653,"contact":6188,"extension":6313,"proposal":5292},361,"VK_KHR_format_feature_flags2",{"number":6315,"type":5514,"author":6196,"provisional":5292,"depends":5531,"ratified":5653,"contact":5522,"extension":6316,"proposal":5486},323,"VK_KHR_fragment_shader_barycentric",{"number":6318,"type":5514,"author":6196,"provisional":5292,"depends":6319,"ratified":5679,"contact":5518,"extension":6320,"proposal":5486},227,"((VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_create_renderpass2),VK_VERSION_1_2","VK_KHR_fragment_shading_rate",{"number":6322,"type":5635,"author":6196,"provisional":5292,"depends":5745,"ratified":5679,"contact":5643,"extension":6323,"proposal":5292},122,"VK_KHR_get_display_properties2",{"number":6325,"type":5514,"author":6196,"promotedto":5625,"provisional":5292,"ratified":5653,"contact":5895,"extension":6326,"proposal":5292},147,"VK_KHR_get_memory_requirements2",{"number":6328,"type":5635,"author":6196,"promotedto":5625,"provisional":5292,"ratified":5653,"contact":5661,"extension":6219,"proposal":5292},60,{"number":6330,"type":5635,"author":6196,"provisional":5292,"depends":5748,"ratified":5679,"contact":5643,"extension":6331,"proposal":5292},120,"VK_KHR_get_surface_capabilities2",{"number":6333,"type":5514,"author":6196,"provisional":5292,"depends":5531,"ratified":5679,"contact":5518,"extension":5813,"proposal":5292},189,{"number":6335,"type":5514,"author":6196,"promotedto":5727,"provisional":5292,"ratified":5653,"contact":5895,"extension":6336,"proposal":5292},148,"VK_KHR_image_format_list",{"number":6338,"type":5514,"author":6196,"promotedto":5727,"provisional":5292,"depends":6339,"ratified":5653,"contact":6231,"extension":6340,"proposal":5292},109,"(((VK_KHR_get_physical_device_properties2+VK_KHR_maintenance2),VK_VERSION_1_1)+VK_KHR_image_format_list),VK_VERSION_1_2","VK_KHR_imageless_framebuffer",{"number":6342,"type":5514,"author":6196,"provisional":5292,"depends":5826,"ratified":5679,"contact":6148,"extension":6343,"proposal":5292},85,"VK_KHR_incremental_present",{"number":6345,"type":5514,"author":6196,"provisional":5292,"depends":5531,"ratified":5679,"contact":5667,"extension":5865,"proposal":5292},534,{"number":6347,"type":5514,"author":6196,"provisional":5292,"depends":5531,"ratified":5679,"contact":5667,"extension":5885,"proposal":5292},535,{"number":6349,"type":5514,"author":6196,"provisional":5292,"ratified":5653,"contact":5714,"extension":5890,"proposal":5486},527,{"number":6351,"type":5514,"author":6196,"promotedto":5625,"provisional":5292,"ratified":5653,"contact":5667,"extension":5559,"proposal":5292},70,{"number":6353,"type":5514,"author":6196,"promotedto":5625,"provisional":5292,"ratified":5653,"contact":6354,"extension":6355,"proposal":5292},118,"Michael Worcester @michaelworcester","VK_KHR_maintenance2",{"number":6357,"type":5514,"author":6196,"promotedto":5625,"provisional":5292,"depends":5531,"ratified":5653,"contact":5661,"extension":5926,"proposal":5292},169,{"number":6359,"type":5514,"author":6196,"promotedto":5629,"provisional":5292,"depends":5625,"ratified":5653,"contact":5667,"extension":6360,"proposal":5292},414,"VK_KHR_maintenance4",{"number":6362,"type":5514,"author":6196,"provisional":5292,"depends":6363,"ratified":5653,"contact":6364,"extension":6365,"proposal":5486},471,"(VK_VERSION_1_1+VK_KHR_dynamic_rendering),VK_VERSION_1_3","Stu Smith @stu-s","VK_KHR_maintenance5",{"number":6367,"type":5514,"author":6196,"provisional":5292,"depends":5625,"ratified":5653,"contact":6368,"extension":6369,"proposal":5486},546,"Jon Leech @oddhack","VK_KHR_maintenance6",{"number":6371,"type":5514,"author":6196,"provisional":5292,"depends":5625,"ratified":5653,"contact":5654,"extension":6372,"proposal":5486},563,"VK_KHR_maintenance7",{"number":6374,"type":5514,"author":6196,"provisional":5292,"ratified":5653,"contact":5895,"extension":5894,"proposal":5486},272,{"number":6376,"type":5514,"author":6196,"promotedto":5625,"provisional":5292,"depends":5531,"ratified":5653,"contact":5661,"extension":6377,"proposal":5292},54,"VK_KHR_multiview",{"extension":6379,"proposal":5292},"VK_KHR_object_refresh",{"number":6381,"type":5514,"author":6196,"provisional":5292,"depends":5531,"ratified":5679,"specialuse":5526,"contact":6382,"extension":6383,"proposal":5292},117,"Alon Or-bach @alonorbach","VK_KHR_performance_query",{"number":6385,"type":5514,"author":6196,"provisional":5292,"depends":6365,"ratified":5653,"contact":6364,"extension":6386,"proposal":5486},484,"VK_KHR_pipeline_binary",{"number":6388,"type":5514,"author":6196,"provisional":5292,"depends":5531,"ratified":5653,"specialuse":5526,"contact":5895,"extension":6389,"proposal":5292},270,"VK_KHR_pipeline_executable_properties",{"number":6391,"type":5514,"author":6196,"provisional":5292,"ratified":5653,"contact":5906,"extension":6392,"proposal":5292},291,"VK_KHR_pipeline_library",{"number":6394,"type":5635,"author":6196,"provisional":5292,"ratified":5653,"contact":6395,"extension":6396,"proposal":5292},395,"Charles Giessen @charles-lunarg","VK_KHR_portability_enumeration",{"number":6398,"type":5514,"author":6196,"provisional":5486,"depends":5531,"platform":5517,"ratified":5653,"contact":5911,"extension":6399,"proposal":5292},164,"VK_KHR_portability_subset",{"number":6401,"type":5514,"author":6196,"provisional":5292,"depends":6402,"ratified":5653,"contact":6403,"extension":6404,"proposal":5292},295,"VK_KHR_swapchain+VK_KHR_get_physical_device_properties2,VK_VERSION_1_1","Keith Packard @keithp","VK_KHR_present_id",{"number":6406,"type":5514,"author":6196,"provisional":5292,"depends":6407,"ratified":5653,"contact":6403,"extension":6408,"proposal":5292},249,"VK_KHR_swapchain+VK_KHR_present_id","VK_KHR_present_wait",{"number":6410,"type":5514,"author":6196,"provisional":5292,"depends":5531,"ratified":5653,"contact":5661,"extension":6411,"proposal":5292},81,"VK_KHR_push_descriptor",{"number":6413,"type":5514,"author":6196,"provisional":5292,"depends":6414,"ratified":5653,"contact":5979,"extension":6415,"proposal":5292},349,"VK_KHR_spirv_1_4+VK_KHR_acceleration_structure","VK_KHR_ray_query",{"number":6417,"type":5514,"author":6196,"provisional":5292,"depends":6206,"ratified":5653,"contact":5979,"extension":6418,"proposal":5292},387,"VK_KHR_ray_tracing_maintenance1",{"number":6420,"type":5514,"author":6196,"provisional":5292,"depends":6414,"ratified":5653,"contact":5979,"extension":6421,"proposal":5292},348,"VK_KHR_ray_tracing_pipeline",{"number":6423,"type":5514,"author":6196,"provisional":5292,"depends":6206,"ratified":5653,"contact":6424,"extension":6425,"proposal":5486},482,"Eric Werness","VK_KHR_ray_tracing_position_fetch",{"number":6427,"type":5514,"author":6196,"promotedto":5625,"provisional":5292,"ratified":5653,"contact":6428,"extension":6429,"proposal":5292},145,"John Kessenich @johnkslang","VK_KHR_relaxed_block_layout",{"number":5344,"type":5514,"author":6196,"promotedto":5727,"provisional":5292,"ratified":5653,"contact":5518,"extension":6431,"proposal":5292},"VK_KHR_sampler_mirror_clamp_to_edge",{"number":6433,"type":5514,"author":6196,"promotedto":5625,"provisional":5292,"depends":6434,"ratified":5653,"contact":6435,"extension":6436,"proposal":5292},157,"(VK_KHR_maintenance1+VK_KHR_bind_memory2+VK_KHR_get_memory_requirements2+VK_KHR_get_physical_device_properties2),VK_VERSION_1_1","Andrew Garrard @fluppeteer","VK_KHR_sampler_ycbcr_conversion",{"number":6438,"type":5514,"author":6196,"promotedto":5727,"provisional":5292,"depends":6319,"ratified":5653,"contact":5667,"extension":6439,"proposal":5292},242,"VK_KHR_separate_depth_stencil_layouts",{"number":6441,"type":5514,"author":6196,"promotedto":5727,"provisional":5292,"depends":5531,"ratified":5653,"contact":6442,"extension":6443,"proposal":5292},181,"Aaron Hagan @ahagan","VK_KHR_shader_atomic_int64",{"number":6445,"type":5514,"author":6196,"provisional":5292,"depends":5531,"ratified":5679,"contact":6442,"extension":6446,"proposal":5292},182,"VK_KHR_shader_clock",{"number":6448,"type":5514,"author":6196,"promotedto":5625,"provisional":5292,"ratified":5653,"contact":5979,"extension":6449,"proposal":5292},64,"VK_KHR_shader_draw_parameters",{"number":6451,"type":5514,"author":6196,"provisional":5292,"depends":5531,"ratified":5653,"contact":5619,"extension":6452,"proposal":5486},545,"VK_KHR_shader_expect_assume",{"number":6454,"type":5514,"author":6196,"promotedto":5727,"provisional":5292,"depends":5531,"ratified":5653,"contact":6201,"extension":5545,"proposal":5292},83,{"number":6456,"type":5514,"author":6196,"promotedto":5727,"provisional":5292,"depends":5531,"ratified":5653,"contact":6201,"extension":6457,"proposal":5292},198,"VK_KHR_shader_float_controls",{"number":6459,"type":5514,"author":6196,"provisional":5292,"depends":6460,"ratified":5653,"contact":5710,"extension":6461,"proposal":5486},529,"VK_VERSION_1_1+VK_KHR_shader_float_controls","VK_KHR_shader_float_controls2",{"number":6463,"type":5514,"author":6196,"promotedto":5629,"provisional":5292,"depends":5531,"ratified":5653,"contact":5619,"extension":6464,"proposal":5486},281,"VK_KHR_shader_integer_dot_product",{"number":6466,"type":5514,"author":6196,"provisional":5292,"depends":5625,"ratified":5653,"contact":6467,"extension":6468,"proposal":5486},435,"Alan Baker @alan-baker","VK_KHR_shader_maximal_reconvergence",{"number":6470,"type":5514,"author":6196,"promotedto":5629,"provisional":5292,"ratified":5653,"contact":5696,"extension":6471,"proposal":5292},294,"VK_KHR_shader_non_semantic_info",{"number":6473,"type":5514,"author":6196,"provisional":5292,"depends":6474,"ratified":5653,"contact":5518,"extension":6475,"proposal":5486},236,"VK_VERSION_1_1+VK_KHR_vulkan_memory_model+VK_KHR_shader_maximal_reconvergence","VK_KHR_shader_quad_control",{"number":6477,"type":5514,"author":6196,"provisional":5292,"ratified":5653,"contact":6478,"extension":6479,"proposal":5486},559,"Nathan Gauër @Keenuts","VK_KHR_shader_relaxed_extended_instruction",{"number":6481,"type":5514,"author":6196,"promotedto":5727,"provisional":5292,"depends":5625,"ratified":5653,"contact":6060,"extension":6482,"proposal":5292},176,"VK_KHR_shader_subgroup_extended_types",{"number":6484,"type":5514,"author":6196,"provisional":5292,"ratified":5653,"contact":5619,"extension":6485,"proposal":5486},417,"VK_KHR_shader_subgroup_rotate",{"number":6487,"type":5514,"author":6196,"provisional":5292,"depends":5625,"ratified":5653,"contact":6467,"extension":6488,"proposal":5292},324,"VK_KHR_shader_subgroup_uniform_control_flow",{"number":6490,"type":5514,"author":6196,"promotedto":5629,"provisional":5292,"depends":5531,"ratified":5679,"contact":5605,"extension":6491,"proposal":5292},216,"VK_KHR_shader_terminate_invocation",{"number":6493,"type":5514,"author":6196,"provisional":5292,"depends":6494,"ratified":5679,"contact":6382,"extension":6495,"proposal":5292},112,"VK_KHR_swapchain+VK_KHR_get_surface_capabilities2+(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)","VK_KHR_shared_presentable_image",{"number":6497,"type":5514,"author":6196,"promotedto":5727,"provisional":5292,"depends":6460,"ratified":5653,"contact":5605,"extension":5905,"proposal":5292},237,{"number":6499,"type":5514,"author":6196,"promotedto":5625,"provisional":5292,"ratified":5653,"contact":6201,"extension":6500,"proposal":5292},132,"VK_KHR_storage_buffer_storage_class",{"number":5294,"type":5635,"author":6196,"provisional":5292,"ratified":5679,"contact":6502,"extension":5748,"proposal":5292},"James Jones @cubanismo,Ian Elliott @ianelliottus",{"number":6504,"type":5635,"author":6196,"provisional":5292,"depends":6505,"ratified":5653,"contact":6506,"extension":6507,"proposal":5292},240,"VK_VERSION_1_1+VK_KHR_get_surface_capabilities2","Sandeep Shinde @sashinde","VK_KHR_surface_protected_capabilities",{"number":5242,"type":5514,"author":6196,"provisional":5292,"depends":5748,"ratified":5679,"contact":6502,"extension":5826,"proposal":5292},{"number":6510,"type":5514,"author":6196,"provisional":5292,"depends":6511,"ratified":5679,"contact":5527,"extension":6512,"proposal":5292},201,"VK_KHR_swapchain+(VK_KHR_maintenance2,VK_VERSION_1_1)+(VK_KHR_image_format_list,VK_VERSION_1_2)","VK_KHR_swapchain_mutable_format",{"number":6514,"type":5514,"author":6196,"promotedto":5629,"provisional":5292,"depends":5531,"ratified":5679,"contact":5518,"extension":6515,"proposal":5292},315,"VK_KHR_synchronization2",{"number":6517,"type":5514,"author":6196,"promotedto":5727,"provisional":5292,"depends":5531,"ratified":5653,"contact":5895,"extension":6518,"proposal":5292},208,"VK_KHR_timeline_semaphore",{"number":6520,"type":5514,"author":6196,"promotedto":5727,"provisional":5292,"depends":5531,"ratified":5653,"contact":5710,"extension":6521,"proposal":5292},254,"VK_KHR_uniform_buffer_standard_layout",{"number":6523,"type":5514,"author":6196,"promotedto":5625,"provisional":5292,"depends":6197,"ratified":5653,"contact":5605,"extension":6524,"proposal":5292},121,"VK_KHR_variable_pointers",{"number":6526,"type":5514,"author":6196,"provisional":5292,"depends":5531,"ratified":5679,"contact":5714,"extension":6103,"proposal":5486},526,{"number":6528,"type":5514,"author":6196,"provisional":5292,"depends":6529,"ratified":5653,"contact":5870,"extension":6530,"proposal":5486},513,"VK_KHR_video_decode_queue","VK_KHR_video_decode_av1",{"number":5448,"type":5514,"author":6196,"provisional":5292,"depends":6529,"ratified":5653,"contact":6532,"extension":6533,"proposal":5486},"peter.fang@amd.com","VK_KHR_video_decode_h264",{"number":6535,"type":5514,"author":6196,"provisional":5292,"depends":6529,"ratified":5653,"contact":6532,"extension":6536,"proposal":5486},188,"VK_KHR_video_decode_h265",{"number":5384,"type":5514,"author":6196,"provisional":5292,"depends":6538,"ratified":5653,"contact":6539,"extension":6529,"proposal":5486},"VK_KHR_video_queue+(VK_KHR_synchronization2,VK_VERSION_1_3)","jake.beju@amd.com",{"number":5440,"type":5514,"author":6196,"provisional":5292,"depends":6541,"ratified":5653,"contact":6542,"extension":6543,"proposal":5486},"VK_KHR_video_encode_queue","Ahmed Abdelkhalek @aabdelkh","VK_KHR_video_encode_h264",{"number":5444,"type":5514,"author":6196,"provisional":5292,"depends":6541,"ratified":5653,"contact":6542,"extension":6545,"proposal":5486},"VK_KHR_video_encode_h265",{"number":6547,"type":5514,"author":6196,"provisional":5292,"depends":6538,"ratified":5653,"contact":6542,"extension":6541,"proposal":5486},300,{"number":6549,"type":5514,"author":6196,"provisional":5292,"depends":6550,"ratified":5653,"contact":5870,"extension":6551,"proposal":5486},516,"VK_KHR_video_queue","VK_KHR_video_maintenance1",{"number":5380,"type":5514,"author":6196,"provisional":5292,"depends":6553,"ratified":5653,"contact":6109,"extension":6550,"proposal":5486},"(VK_VERSION_1_1+VK_KHR_synchronization2),VK_VERSION_1_3",{"number":6555,"type":5514,"author":6196,"promotedto":5727,"provisional":5292,"depends":5531,"ratified":5653,"contact":5661,"extension":6556,"proposal":5292},212,"VK_KHR_vulkan_memory_model",{"number":5313,"type":5635,"author":6196,"provisional":5292,"depends":5748,"platform":6558,"ratified":5653,"contact":6559,"extension":6560,"proposal":5292},"wayland","Jesse Hall @critsec,Ian Elliott @ianelliottus","VK_KHR_wayland_surface",{"number":6562,"type":5514,"author":6196,"provisional":5292,"depends":6297,"platform":5809,"ratified":5653,"contact":6563,"extension":6564,"proposal":5292},76,"Carsten Rohde @crohde","VK_KHR_win32_keyed_mutex",{"number":5325,"type":5635,"author":6196,"provisional":5292,"depends":5748,"platform":5809,"ratified":5653,"contact":6559,"extension":6566,"proposal":5292},"VK_KHR_win32_surface",{"number":6568,"type":5514,"author":6196,"provisional":5292,"depends":5531,"ratified":5653,"contact":6569,"extension":6570,"proposal":5292},337,"Caio Marcelo de Oliveira Filho @cmarcelo","VK_KHR_workgroup_memory_explicit_layout",{"number":5310,"type":5635,"author":6196,"provisional":5292,"depends":5748,"platform":6572,"ratified":5653,"contact":6559,"extension":6573,"proposal":5292},"xcb","VK_KHR_xcb_surface",{"number":5306,"type":5635,"author":6196,"provisional":5292,"depends":5748,"platform":6575,"ratified":5653,"contact":6559,"extension":6576,"proposal":5292},"xlib","VK_KHR_xlib_surface",{"number":6578,"type":5514,"author":6196,"promotedto":5629,"provisional":5292,"depends":5531,"ratified":5653,"contact":6467,"extension":6579,"proposal":5292},326,"VK_KHR_zero_initialize_workgroup_memory",{"number":6581,"type":5635,"author":6094,"provisional":5292,"contact":6395,"extension":6582,"proposal":5486},460,"VK_LUNARG_direct_driver_loading",{"number":6584,"type":5514,"author":6585,"provisional":5292,"depends":5531,"specialuse":5706,"contact":5963,"extension":6586,"proposal":5292},576,"MESA","VK_MESA_image_alignment_control",{"number":6588,"type":5514,"author":6589,"provisional":5292,"depends":5531,"contact":6590,"extension":6591,"proposal":5486},531,"MSFT","Jesse Natalie @jenatali","VK_MSFT_layered_driver",{"number":6593,"type":5635,"author":6594,"deprecatedby":5916,"provisional":5292,"depends":5748,"platform":6595,"contact":5911,"extension":6596,"proposal":5292},123,"MVK","ios","VK_MVK_ios_surface",{"number":6598,"type":5635,"author":6594,"deprecatedby":5916,"provisional":5292,"depends":5748,"platform":6599,"contact":5911,"extension":6600,"proposal":5292},124,"macos","VK_MVK_macos_surface",{"number":6602,"type":5635,"author":6603,"provisional":5292,"depends":5748,"platform":6604,"contact":6605,"extension":6606,"proposal":5292},63,"NN","vi","Mathias Heyer gitlab:@mheyer","VK_NN_vi_surface",{"number":5404,"type":5514,"author":6608,"provisional":5292,"contact":6609,"extension":6610,"proposal":5292},"NVX","Eric Werness @ewerness-nv,Liam Middlebrook @liam-middlebrook","VK_NVX_binary_import",{"number":5408,"type":5514,"author":6608,"provisional":5292,"contact":6612,"extension":6613,"proposal":5292},"Eric Werness @ewerness-nv","VK_NVX_image_view_handle",{"number":6615,"type":5514,"author":6608,"provisional":5292,"depends":6616,"contact":5661,"extension":6617,"proposal":5292},98,"VK_KHR_multiview,VK_VERSION_1_1","VK_NVX_multiview_per_view_attributes",{"number":6619,"type":5514,"author":5641,"provisional":5292,"depends":5636,"platform":5809,"contact":6620,"extension":6621,"proposal":5292},346,"Jeff Juliano @jjuliano","VK_NV_acquire_winrt_display",{"number":6623,"type":5514,"author":5641,"provisional":5292,"contact":6612,"extension":6624,"proposal":5292},88,"VK_NV_clip_space_w_scaling",{"number":6626,"type":5514,"author":5641,"provisional":5292,"contact":6627,"extension":6628,"proposal":5292},560,"Lujin Wang @lujinwangnv","VK_NV_command_buffer_inheritance",{"number":6630,"type":5514,"author":5641,"promotedto":6221,"provisional":5292,"depends":5531,"contact":6631,"extension":6632,"proposal":5292},202,"Pat Brown @nvpbrown","VK_NV_compute_shader_derivatives",{"number":6634,"type":5514,"author":5641,"provisional":5292,"depends":5531,"contact":5661,"extension":6635,"proposal":5292},250,"VK_NV_cooperative_matrix",{"number":6637,"type":5514,"author":5641,"provisional":5292,"depends":6638,"contact":5771,"extension":6639,"proposal":5292},427,"((VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_buffer_device_address),VK_VERSION_1_2","VK_NV_copy_memory_indirect",{"number":6641,"type":5514,"author":5641,"provisional":5292,"depends":5531,"contact":5979,"extension":6642,"proposal":5292},51,"VK_NV_corner_sampled_image",{"number":6644,"type":5514,"author":5641,"provisional":5292,"depends":6645,"contact":6646,"extension":6647,"proposal":5292},251,"VK_NV_framebuffer_mixed_samples+(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)","Kedarnath Thangudu @kthangudu","VK_NV_coverage_reduction_mode",{"number":6649,"type":5514,"author":5641,"provisional":5486,"contact":6650,"extension":6651,"proposal":5292},308,"Tristan Lorach @tlorach","VK_NV_cuda_kernel_launch",{"number":5392,"type":5514,"author":5641,"deprecatedby":6236,"provisional":5292,"contact":5661,"extension":6653,"proposal":5292},"VK_NV_dedicated_allocation",{"number":6655,"type":5514,"author":6656,"provisional":5292,"depends":6657,"contact":6658,"extension":6659,"proposal":5292},241,"NVIDIA","(VK_KHR_dedicated_allocation+VK_KHR_get_physical_device_properties2),VK_VERSION_1_1","Nuno Subtil @nsubtil","VK_NV_dedicated_allocation_image_aliasing",{"number":6661,"type":5514,"author":5641,"provisional":5292,"depends":5625,"contact":5667,"extension":6662,"proposal":5292},547,"VK_NV_descriptor_pool_overallocation",{"number":6664,"type":5514,"author":6656,"provisional":5292,"depends":5531,"contact":6658,"extension":6665,"proposal":5292},207,"VK_NV_device_diagnostic_checkpoints",{"number":6667,"type":5514,"author":5641,"provisional":5292,"depends":5531,"contact":6646,"extension":6668,"proposal":5292},301,"VK_NV_device_diagnostics_config",{"number":6670,"type":5514,"author":5641,"provisional":5292,"depends":6671,"contact":5906,"extension":6672,"proposal":5292},278,"(VK_VERSION_1_1+VK_KHR_buffer_device_address),VK_VERSION_1_2","VK_NV_device_generated_commands",{"number":6674,"type":5514,"author":5641,"provisional":5292,"depends":6672,"contact":5771,"extension":6675,"proposal":5292},429,"VK_NV_device_generated_commands_compute",{"number":6677,"type":5514,"author":5641,"provisional":5486,"depends":5941,"platform":5517,"contact":6678,"extension":6679,"proposal":5292},398,"Christoph Kubisch @pixeljetstream, Eric Werness @ewerness-nv","VK_NV_displacement_micromap",{"number":6681,"type":5514,"author":5641,"provisional":5292,"contact":6682,"extension":6683,"proposal":5292},493,"Russell Chou @russellcnv","VK_NV_extended_sparse_address_space",{"number":6685,"type":5514,"author":5641,"deprecatedby":6289,"provisional":5292,"depends":6686,"contact":5643,"extension":6687,"proposal":5292},57,"VK_NV_external_memory_capabilities","VK_NV_external_memory",{"number":6689,"type":5635,"author":5641,"deprecatedby":6292,"provisional":5292,"contact":5643,"extension":6686,"proposal":5292},56,{"number":6691,"type":5514,"author":5641,"provisional":5292,"depends":5778,"contact":6563,"extension":6692,"proposal":5292},372,"VK_NV_external_memory_rdma",{"extension":6694,"proposal":5292},"VK_NV_external_memory_sci_buf",{"number":6696,"type":5514,"author":5641,"deprecatedby":6297,"provisional":5292,"depends":6687,"platform":5809,"contact":5643,"extension":6697,"proposal":5292},58,"VK_NV_external_memory_win32",{"extension":6699,"proposal":5292},"VK_NV_external_sci_sync",{"extension":6701,"proposal":5292},"VK_NV_external_sci_sync2",{"number":6703,"type":5514,"author":5641,"provisional":5292,"contact":5661,"extension":6704,"proposal":5292},154,"VK_NV_fill_rectangle",{"number":6706,"type":5514,"author":5641,"provisional":5292,"contact":5661,"extension":6707,"proposal":5292},150,"VK_NV_fragment_coverage_to_color",{"number":6709,"type":5514,"author":5641,"promotedto":6316,"provisional":5292,"depends":5531,"contact":6631,"extension":6710,"proposal":5292},204,"VK_NV_fragment_shader_barycentric",{"number":6712,"type":5514,"author":5641,"provisional":5292,"depends":6320,"contact":6631,"extension":6713,"proposal":5292},327,"VK_NV_fragment_shading_rate_enums",{"number":6715,"type":5514,"author":5641,"provisional":5292,"contact":5661,"extension":6716,"proposal":5292},153,"VK_NV_framebuffer_mixed_samples",{"number":6718,"type":5514,"author":5641,"provisional":5292,"contact":5979,"extension":6719,"proposal":5292},96,"VK_NV_geometry_shader_passthrough",{"number":5336,"type":5514,"author":5641,"deprecatedby":6179,"provisional":5292,"contact":5667,"extension":6721,"proposal":5292},"VK_NV_glsl_shader",{"number":6723,"type":5514,"author":5641,"provisional":5292,"depends":5531,"contact":6724,"extension":6725,"proposal":5292},279,"David Zhao Akeley @akeley98","VK_NV_inherited_viewport_scissor",{"number":6727,"type":5514,"author":6656,"provisional":5292,"depends":5531,"contact":6728,"extension":6729,"proposal":5292},431,"sourav parmar @souravpNV","VK_NV_linear_color_attachment",{"number":6731,"type":5514,"author":5641,"provisional":5292,"contact":6732,"extension":6733,"proposal":5292},311,"Charles Hansen @cshansen","VK_NV_low_latency",{"number":6735,"type":5514,"author":5641,"provisional":5292,"depends":6736,"contact":6732,"extension":6737,"proposal":5292},506,"VK_VERSION_1_2,VK_KHR_timeline_semaphore","VK_NV_low_latency2",{"number":6739,"type":5514,"author":5641,"provisional":5292,"depends":6638,"contact":5771,"extension":6740,"proposal":5292},428,"VK_NV_memory_decompression",{"number":6742,"type":5514,"author":5641,"provisional":5292,"depends":5531,"contact":5906,"extension":6743,"proposal":5292},203,"VK_NV_mesh_shader",{"number":6745,"type":5514,"author":5641,"provisional":5292,"depends":6746,"contact":6563,"extension":6747,"proposal":5292},465,"((VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_format_feature_flags2+VK_KHR_synchronization2),VK_VERSION_1_3","VK_NV_optical_flow",{"number":6749,"type":5514,"author":5641,"provisional":5292,"depends":6369,"contact":5667,"extension":6750,"proposal":5292},517,"VK_NV_per_stage_descriptor_set",{"number":6752,"type":5514,"author":5641,"provisional":5292,"depends":5808,"contact":6753,"extension":6754,"proposal":5292},293,"Liya Li @liyli","VK_NV_present_barrier",{"extension":6756,"proposal":5292},"VK_NV_private_vendor_info",{"number":6758,"type":5514,"author":5641,"provisional":5292,"contact":6759,"extension":6760,"proposal":5292},556,"Rodrigo Locatti @rlocatti","VK_NV_raw_access_chains",{"number":6762,"type":5514,"author":5641,"deprecatedby":6421,"provisional":5292,"depends":6763,"contact":6612,"extension":6764,"proposal":5292},166,"(VK_KHR_get_physical_device_properties2+VK_KHR_get_memory_requirements2),VK_VERSION_1_1","VK_NV_ray_tracing",{"number":6766,"type":5514,"author":5641,"provisional":5292,"depends":6421,"contact":6612,"extension":6767,"proposal":5292},491,"VK_NV_ray_tracing_invocation_reorder",{"number":6769,"type":5514,"author":5641,"provisional":5292,"depends":6421,"contact":6424,"extension":6770,"proposal":5292},328,"VK_NV_ray_tracing_motion_blur",{"number":6772,"type":5514,"author":5641,"provisional":5292,"contact":5771,"extension":6773,"proposal":5486},569,"VK_NV_ray_tracing_validation",{"number":6775,"type":5514,"author":5641,"provisional":5292,"depends":5531,"contact":6646,"extension":6776,"proposal":5292},167,"VK_NV_representative_fragment_test",{"number":6778,"type":5514,"author":5641,"provisional":5292,"contact":5667,"extension":6779,"proposal":5292},95,"VK_NV_sample_mask_override_coverage",{"number":6781,"type":5514,"author":5641,"provisional":5292,"depends":5531,"contact":6631,"extension":6782,"proposal":5292},206,"VK_NV_scissor_exclusive",{"number":6784,"type":5514,"author":5641,"provisional":5292,"contact":5661,"extension":6785,"proposal":5292},564,"VK_NV_shader_atomic_float16_vector",{"number":6787,"type":5514,"author":5641,"provisional":5292,"depends":5531,"contact":6631,"extension":6788,"proposal":5292},205,"VK_NV_shader_image_footprint",{"number":6790,"type":5514,"author":5641,"provisional":5292,"depends":5625,"contact":5979,"extension":6791,"proposal":5292},155,"VK_NV_shader_sm_builtins",{"number":6793,"type":5514,"author":5641,"provisional":5292,"depends":5625,"contact":5661,"extension":6794,"proposal":5292},199,"VK_NV_shader_subgroup_partitioned",{"number":6796,"type":5514,"author":5641,"provisional":5292,"depends":5531,"contact":6631,"extension":6797,"proposal":5292},165,"VK_NV_shading_rate_image",{"number":6799,"type":5514,"author":5641,"provisional":5292,"contact":5979,"extension":6800,"proposal":5292},97,"VK_NV_viewport_array2",{"number":6802,"type":5514,"author":5641,"provisional":5292,"contact":5667,"extension":6803,"proposal":5292},99,"VK_NV_viewport_swizzle",{"number":6805,"type":5514,"author":5641,"promotedto":6564,"provisional":5292,"depends":6697,"platform":5809,"contact":6563,"extension":6806,"proposal":5292},59,"VK_NV_win32_keyed_mutex",{"number":6808,"type":5514,"author":5790,"provisional":5292,"depends":6809,"contact":5791,"extension":6810,"proposal":5292},522,"(VK_EXT_filter_cubic)+(VK_VERSION_1_2,VK_EXT_sampler_filter_minmax)","VK_QCOM_filter_cubic_clamp",{"number":6812,"type":5514,"author":5790,"provisional":5292,"depends":5792,"contact":5791,"extension":6813,"proposal":5292},520,"VK_QCOM_filter_cubic_weights",{"number":6815,"type":5514,"author":5790,"provisional":5292,"depends":6816,"contact":5791,"extension":6817,"proposal":5292},426,"(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_EXT_fragment_density_map","VK_QCOM_fragment_density_map_offset",{"number":6819,"type":5514,"author":5790,"provisional":5292,"depends":6820,"contact":5791,"extension":6821,"proposal":5486},441,"VK_KHR_format_feature_flags2,VK_VERSION_1_3","VK_QCOM_image_processing",{"number":6823,"type":5514,"author":5790,"provisional":5292,"depends":6821,"contact":5791,"extension":6824,"proposal":5292},519,"VK_QCOM_image_processing2",{"number":6826,"type":5514,"author":5790,"provisional":5292,"contact":5791,"extension":6827,"proposal":5292},511,"VK_QCOM_multiview_per_view_render_areas",{"number":6829,"type":5514,"author":5790,"provisional":5292,"depends":5531,"contact":5791,"extension":6830,"proposal":5292},489,"VK_QCOM_multiview_per_view_viewports",{"number":6832,"type":5514,"author":5790,"provisional":5292,"contact":5791,"extension":6833,"proposal":5292},172,"VK_QCOM_render_pass_shader_resolve",{"number":6835,"type":5514,"author":5790,"provisional":5292,"contact":5791,"extension":6836,"proposal":5292},302,"VK_QCOM_render_pass_store_ops",{"number":6838,"type":5514,"author":5790,"provisional":5292,"contact":5791,"extension":6839,"proposal":5292},283,"VK_QCOM_render_pass_transform",{"number":6841,"type":5514,"author":5790,"provisional":5292,"depends":6842,"contact":5791,"extension":6843,"proposal":5292},334,"VK_KHR_copy_commands2,VK_VERSION_1_3","VK_QCOM_rotated_copy_commands",{"number":6845,"type":5514,"author":5790,"provisional":5292,"depends":5531,"contact":5791,"extension":6846,"proposal":5486},485,"VK_QCOM_tile_properties",{"number":6848,"type":5514,"author":5790,"provisional":5292,"contact":5791,"extension":6849,"proposal":5292},521,"VK_QCOM_ycbcr_degamma",{"number":6851,"type":5514,"author":6852,"provisional":5292,"depends":5604,"platform":6853,"contact":6854,"extension":6855,"proposal":5292},530,"QNX","screen","Mike Gorchak @mgorchak-blackberry, Aaron Ruby @aruby-blackberry","VK_QNX_external_memory_screen_buffer",{"number":6857,"type":5635,"author":6852,"provisional":5292,"depends":5748,"platform":6853,"contact":6858,"extension":6859,"proposal":5292},379,"Mike Gorchak @mgorchak-blackberry","VK_QNX_screen_surface",{"number":6861,"type":5514,"author":6862,"provisional":5292,"depends":5531,"contact":5734,"extension":6863,"proposal":5292},486,"SEC","VK_SEC_amigo_profiling",{"number":6865,"type":5514,"author":6866,"provisional":5292,"depends":5531,"specialuse":5706,"contact":5963,"extension":6867,"proposal":5292},421,"VALVE","VK_VALVE_descriptor_set_host_mapping",{"number":6869,"type":5514,"author":6866,"promotedto":5928,"provisional":5292,"depends":5926,"specialuse":5706,"contact":5927,"extension":6870,"proposal":5292},352,"VK_VALVE_mutable_descriptor_type",1725732624296]