[{"data":1,"prerenderedAt":5157},["ShallowReactive",2],{"u8ugCcpqvl":3,"VyF3Mmj32r":3605,"N9m89Rcq0G":3800},{"title":4,"description":5,"body":6,"_type":3604,"_id":4},"VK_EXT_mesh_shader.proposal","This extension provides a new mechanism allowing applications to generate collections of geometric primitives via programmable mesh shading.",{"type":7,"children":8,"toc":3586},"root",[9,16,23,28,33,39,44,64,69,74,79,84,90,97,119,126,131,144,181,191,197,202,215,220,226,294,300,306,321,392,405,411,416,473,558,580,586,591,648,653,681,686,692,697,1148,1167,1210,1248,1254,1259,1687,1692,1773,1778,1923,1928,1953,1958,2071,2076,2082,2087,2176,2234,2240,2245,2250,2263,2268,2273,2278,2283,2316,2366,2371,2376,2381,2386,2391,2396,2401,2406,2427,2432,2652,2657,2772,2777,2783,2788,2874,2879,2910,2922,2927,2941,2946,3144,3149,3154,3211,3223,3236,3267,3279,3348,3354,3366,3396,3416,3442,3448,3454,3459,3495,3500,3506,3524,3536,3547,3553,3558,3564,3569,3575,3580],{"type":10,"tag":11,"props":12,"children":13},"element","p",{},[14],{"type":15,"value":5},"text",{"type":10,"tag":17,"props":18,"children":20},"h2",{"id":19},"_problem_statement",[21],{"type":15,"value":22},"Problem Statement",{"type":10,"tag":11,"props":24,"children":25},{},[26],{"type":15,"value":27},"The rasterization pipeline for Vulkan is fairly fixed - a fixed input stage assembles vertex data for the vertex shader, data optionally passes through tessellation and geometry stages, then fixed vertex processing passes the resulting primitives to the rasterizer.\nAs rendering engines get increasingly complex, the fixed nature of this pipeline has become a bottleneck; many developers are augmenting their rasterization pipelines with compute shaders to make them more flexible.\nUsing compute shaders comes at a cost though - data has to be piped via global memory, and once there it still has to be optimized for an implementation’s vertex caches or face performance penalties.\nWith compute shaders processing geometry, the role of the vertex shader is also somewhat redundant - transformations could be performed just as easily in compute shaders, and the vertex shader serves merely as a way to get at the fixed rasterization interface.",{"type":10,"tag":11,"props":29,"children":30},{},[31],{"type":15,"value":32},"This proposal aims to find a way to make the geometry pipeline more flexible, removing the unnecessary cost of an extra shader.",{"type":10,"tag":17,"props":34,"children":36},{"id":35},"_solution_space",[37],{"type":15,"value":38},"Solution Space",{"type":10,"tag":11,"props":40,"children":41},{},[42],{"type":15,"value":43},"Making the geometry pipeline more flexible requires rethinking how data is transmitted from buffers to device memory; ideally a solution should allow applications to flexibly modify the set of geometry as a whole in the way developers are currently using compute shaders, and how they may use them in future (e.g. culling, grouping, decompression), without compromising on efficiency. Some considered ways to do this include:",{"type":10,"tag":45,"props":46,"children":47},"ol",{},[48,54,59],{"type":10,"tag":49,"props":50,"children":51},"li",{},[52],{"type":15,"value":53},"Giving vertex shaders defined grouping, and enabling communication via subgroup operations",{"type":10,"tag":49,"props":55,"children":56},{},[57],{"type":15,"value":58},"Skipping the vertex shader and using geometry or tessellation shaders at the start of the pipeline",{"type":10,"tag":49,"props":60,"children":61},{},[62],{"type":15,"value":63},"Use compute shaders in place of pre-rasterization shader stages",{"type":10,"tag":11,"props":65,"children":66},{},[67],{"type":15,"value":68},"While a defined grouping in the vertex shaders would give applications the ability to manipulate sets of vertices, there is very limited ability to cull or remove vertices or primitives within a group, and the groups would be limited by the size of subgroups on the GPU without significant modifications.\nSimilarly, applications would be largely constrained by fixed input assembly requiring a 1:1 ratio of indices to input vertices, meaning things like decompressing meshes or acting at any granularity other than vertices would be infeasible.\nChanging the vertex stage to accommodate this extra flexibility would require significant changes to how the stage works, which could likely better be accommodated by other existing stages.",{"type":10,"tag":11,"props":70,"children":71},{},[72],{"type":15,"value":73},"Skipping vertex shading and jumping straight to geometry or tessellation stages would provide a level of flexibility that could be interesting - both have access to geometric data at a granularity other than vertices, and are able to remove or add geometric detail before rasterization.\nThe main issues with these stages is that they are still rather fixed in terms of inputs, output topology, and the granularity they operate at - they are also historically not very efficient across platforms, and removing the vertex shader from the front of the pipeline would not do much to help that.",{"type":10,"tag":11,"props":75,"children":76},{},[77],{"type":15,"value":78},"The last clear option is to effectively use compute shaders in place of existing rasterization stages, enabling applications to more easily port existing compute shaders to this new extension with all the flexibility intact.\nThe main difficulty with this is simply defining the interface between the shader and the rasterizer, as existing compute shaders simply write out to buffers, whereas rasterization hardware is highly specialized, and may need to be fed in a particular manner.",{"type":10,"tag":11,"props":80,"children":81},{},[82],{"type":15,"value":83},"This extension opts for something close to option 3, by replacing all pre-rasterization shaders in the graphics pipeline with two new stages that operate like compute shaders but with output that can be consumed by the rasterizer.",{"type":10,"tag":17,"props":85,"children":87},{"id":86},"_proposal",[88],{"type":15,"value":89},"Proposal",{"type":10,"tag":91,"props":92,"children":94},"h3",{"id":93},"_new_shaders",[95],{"type":15,"value":96},"New Shaders",{"type":10,"tag":11,"props":98,"children":99},{},[100,102,109,111,117],{"type":15,"value":101},"This proposal adds two new shader stages, which can be used in place of the existing pre-rasterization shader stages; ",{"type":10,"tag":103,"props":104,"children":106},"a",{"href":105},"/404#_mesh_shaders",[107],{"type":15,"value":108},"xref::name::_mesh_shaders",{"type":15,"value":110}," and ",{"type":10,"tag":103,"props":112,"children":114},{"href":113},"/404#_task_shaders",[115],{"type":15,"value":116},"xref::name::_task_shaders",{"type":15,"value":118},".",{"type":10,"tag":120,"props":121,"children":123},"h4",{"id":122},"_mesh_shaders",[124],{"type":15,"value":125},"Mesh Shaders",{"type":10,"tag":11,"props":127,"children":128},{},[129],{"type":15,"value":130},"Mesh shaders are a new compute-like shader stage that has a primary aim of generating a set of primitives to the rasterizer, which are passed via its new output interface.\nFor the most part, these map well to compute shaders - they are dispatched in workgroups and have access to shared memory, workgroup barriers, and local IDs, allowing for a lot of flexibility in how they are executed.",{"type":10,"tag":11,"props":132,"children":133},{},[134,136,142],{"type":15,"value":135},"Unlike vertex shaders, they do not use the vertex input interface, and geometry and indices ",{"type":10,"tag":137,"props":138,"children":139},"em",{},[140],{"type":15,"value":141},"must",{"type":15,"value":143}," be generated by the shader or read from buffers with no requirement for applications to provide the data in a particular way.\nAs such, this allows applications to read or generate data however they need to, removing the need to prepare data before launching the graphics pipeline.\nThis allows items such as decompression or decryption of data to be performed within the graphics pipeline directly, avoiding the bandwidth cost typically associated with compute shaders.",{"type":10,"tag":11,"props":145,"children":146},{},[147,149,156,158,164,165,171,173,179],{"type":15,"value":148},"Another key part of mesh shaders is that the number of primitives that a given workgroup can emit is dynamic - there are limits to how much can be emitted, which is advertised by the implementation, but applications can freely emit fewer primitives than the maximum.\nThis allows things like modifying the LOD at a fine granularity without the use of tessellation.\nVertex outputs are written via the ",{"type":10,"tag":150,"props":151,"children":153},"code",{"className":152},[],[154],{"type":15,"value":155},"Output",{"type":15,"value":157}," storage class and using standard built-ins like ",{"type":10,"tag":150,"props":159,"children":161},{"className":160},[],[162],{"type":15,"value":163},"Position",{"type":15,"value":110},{"type":10,"tag":150,"props":166,"children":168},{"className":167},[],[169],{"type":15,"value":170},"PointSize",{"type":15,"value":172},", but are written as arrays in the same way as a tessellation control shader’s outputs.\nAdditionally, the mesh shader outputs indices per primitive according to the output primitive type (points, lines, or triangles). Indices are emitted as a separate array in a similar fashion to vertex outputs.\nMesh shader output topologies are lists only - there is no support for triangle or line strips or triangle fans; data in these formats must be unpacked by the shader.\nOther user data can be emitted at per-vertex or per-primitive rates alongside these built-ins.\nMesh shaders must specify the actual number of primitives and vertices being emitted before writing them, via the ",{"type":10,"tag":150,"props":174,"children":176},{"className":175},[],[177],{"type":15,"value":178},"OpSetMeshOutputsEXT",{"type":15,"value":180}," instruction.\nSubsequent fragment shaders can retrieve input data at both rates, tied to the vertices and primitive being rasterized.",{"type":10,"tag":11,"props":182,"children":183},{},[184,186,190],{"type":15,"value":185},"Mesh shaders can be dispatched from the API like a compute shader would be, or launched via ",{"type":10,"tag":103,"props":187,"children":188},{"href":113},[189],{"type":15,"value":116},{"type":15,"value":118},{"type":10,"tag":120,"props":192,"children":194},{"id":193},"_task_shaders",[195],{"type":15,"value":196},"Task Shaders",{"type":10,"tag":11,"props":198,"children":199},{},[200],{"type":15,"value":201},"Task shaders are an optional shader stage that executes ahead of mesh shaders. A task shader is dispatched like a compute shader, and indirectly dispatches mesh shader workgroups.\nThis shader is another compute-like stage that is executed in workgroups and has all the other features of compute shaders as well, with the addition of access to a dedicated instruction to launch mesh shaders.",{"type":10,"tag":11,"props":203,"children":204},{},[205,207,213],{"type":15,"value":206},"The primary function of task shaders is to dispatch mesh shaders via ",{"type":10,"tag":150,"props":208,"children":210},{"className":209},[],[211],{"type":15,"value":212},"OpEmitMeshTasksEXT",{"type":15,"value":214},", which takes as input a number of mesh shader groups to emit, and a payload variable that will be visible to all mesh shader invocations launched by this instruction.\nThis instruction is executed once per workgroup rather than per-invocation, and the payload itself is in a workgroup-wide storage class, similar to shared memory.\nOnce this instruction is called, the workgroup is terminated immediately, and the mesh shaders are launched.",{"type":10,"tag":11,"props":216,"children":217},{},[218],{"type":15,"value":219},"Task shaders can be used for functionality like coarse culling of entire meshlets or dynamically generating more or less geometry depending on the LOD required.\nThis is notionally similar to the purpose of tessellation shaders, but without the constraint of fixed functionality, and with greater flexibility in how primitives are executed.\nApplications can use task shaders to determine the number of launched mesh shader workgroups at whatever input granularity they want, and however they see fit.",{"type":10,"tag":120,"props":221,"children":223},{"id":222},"_rasterization_order",[224],{"type":15,"value":225},"Rasterization Order",{"type":10,"tag":11,"props":227,"children":228},{},[229,231,237,239,245,247,253,255,261,263,269,270,276,278,284,286,292],{"type":15,"value":230},"As task and mesh shaders change how primitives are dispatched, a subsequent modification of rasterization order is made.\nWithin a mesh shader workgroup, primitives are rasterized in the order in which they are defined in the output.\nA group of mesh shaders either launched directly by the API, indirectly by the API,\nor indirectly from a single task shader workgroup will rasterize their outputs in sequential order based on their flattened global invocation index,\nequal to x + y * width + z * width * height, where ",{"type":10,"tag":150,"props":232,"children":234},{"className":233},[],[235],{"type":15,"value":236},"x",{"type":15,"value":238},", ",{"type":10,"tag":150,"props":240,"children":242},{"className":241},[],[243],{"type":15,"value":244},"y",{"type":15,"value":246},", and ",{"type":10,"tag":150,"props":248,"children":250},{"className":249},[],[251],{"type":15,"value":252},"z",{"type":15,"value":254}," refer to the components of the ",{"type":10,"tag":150,"props":256,"children":258},{"className":257},[],[259],{"type":15,"value":260},"GlobalInvocationId",{"type":15,"value":262}," built-in.\n",{"type":10,"tag":150,"props":264,"children":266},{"className":265},[],[267],{"type":15,"value":268},"width",{"type":15,"value":110},{"type":10,"tag":150,"props":271,"children":273},{"className":272},[],[274],{"type":15,"value":275},"height",{"type":15,"value":277}," are equal to ",{"type":10,"tag":150,"props":279,"children":281},{"className":280},[],[282],{"type":15,"value":283},"NumWorkgroups",{"type":15,"value":285}," times ",{"type":10,"tag":150,"props":287,"children":289},{"className":288},[],[290],{"type":15,"value":291},"WorkgroupSize",{"type":15,"value":293}," for their respective dimensions.\nWhen using task shaders, there is no rasterization order guarantee between mesh shaders launched by separate task shader workgroups, even within the same draw command.",{"type":10,"tag":91,"props":295,"children":297},{"id":296},"_api_changes",[298],{"type":15,"value":299},"API Changes",{"type":10,"tag":120,"props":301,"children":303},{"id":302},"_graphics_pipeline_creation",[304],{"type":15,"value":305},"Graphics Pipeline Creation",{"type":10,"tag":11,"props":307,"children":308},{},[309,311,319],{"type":15,"value":310},"Graphics pipelines can now be created using mesh and task shaders in place of vertex, tessellation, and geometry shaders.\nThis can be achieved by omitting existing pre-rasterization shaders and including a mesh shader stage, and optionally a task shader stage.\nWhen present, a graphics pipeline is complete without the inclusion of the ",{"type":10,"tag":103,"props":312,"children":316},{"href":313,"rel":314},"https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-vertex-input",[315],"nofollow",[317],{"type":15,"value":318},"vertex input state subset",{"type":15,"value":320},", as this state does not participate in mesh pipelines.\nNo other modifications to graphics pipelines are necessary.\nTwo new shader stages are added to the API to describe the new shader stages:",{"type":10,"tag":322,"props":323,"children":328},"pre",{"className":324,"code":325,"language":326,"meta":327,"style":327},"language-c shiki shiki-themes github-light-default github-dark-default","VK_SHADER_STAGE_TASK_BIT = 0x40,\nVK_SHADER_STAGE_MESH_BIT = 0x80,\n","c","",[329],{"type":10,"tag":150,"props":330,"children":331},{"__ignoreMap":327},[332,366],{"type":10,"tag":333,"props":334,"children":337},"span",{"class":335,"line":336},"line",1,[338,344,350,355,361],{"type":10,"tag":333,"props":339,"children":341},{"style":340},"--shiki-default:#1F2328;--shiki-dark:#E6EDF3",[342],{"type":15,"value":343},"VK_SHADER_STAGE_TASK_BIT ",{"type":10,"tag":333,"props":345,"children":347},{"style":346},"--shiki-default:#CF222E;--shiki-dark:#FF7B72",[348],{"type":15,"value":349},"=",{"type":10,"tag":333,"props":351,"children":352},{"style":346},[353],{"type":15,"value":354}," 0x",{"type":10,"tag":333,"props":356,"children":358},{"style":357},"--shiki-default:#0550AE;--shiki-dark:#79C0FF",[359],{"type":15,"value":360},"40",{"type":10,"tag":333,"props":362,"children":363},{"style":340},[364],{"type":15,"value":365},",\n",{"type":10,"tag":333,"props":367,"children":369},{"class":335,"line":368},2,[370,375,379,383,388],{"type":10,"tag":333,"props":371,"children":372},{"style":340},[373],{"type":15,"value":374},"VK_SHADER_STAGE_MESH_BIT ",{"type":10,"tag":333,"props":376,"children":377},{"style":346},[378],{"type":15,"value":349},{"type":10,"tag":333,"props":380,"children":381},{"style":346},[382],{"type":15,"value":354},{"type":10,"tag":333,"props":384,"children":385},{"style":357},[386],{"type":15,"value":387},"80",{"type":10,"tag":333,"props":389,"children":390},{"style":340},[391],{"type":15,"value":365},{"type":10,"tag":11,"props":393,"children":394},{},[395,397,403],{"type":15,"value":396},"Note that ",{"type":10,"tag":150,"props":398,"children":400},{"className":399},[],[401],{"type":15,"value":402},"VK_SHADER_STAGE_ALL_GRAPHICS_BIT",{"type":15,"value":404}," was defined as a mask of existing bits during Vulkan 1.0 development, and thus cannot include these new bits; modifying it would break compatibility.",{"type":10,"tag":120,"props":406,"children":408},{"id":407},"_synchronization",[409],{"type":15,"value":410},"Synchronization",{"type":10,"tag":11,"props":412,"children":413},{},[414],{"type":15,"value":415},"New pipeline stages are added for synchronization of these new stages:",{"type":10,"tag":322,"props":417,"children":419},{"className":324,"code":418,"language":326,"meta":327,"style":327},"VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT = 0x80000,\nVK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT = 0x100000,\n",[420],{"type":10,"tag":150,"props":421,"children":422},{"__ignoreMap":327},[423,448],{"type":10,"tag":333,"props":424,"children":425},{"class":335,"line":336},[426,431,435,439,444],{"type":10,"tag":333,"props":427,"children":428},{"style":340},[429],{"type":15,"value":430},"VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT ",{"type":10,"tag":333,"props":432,"children":433},{"style":346},[434],{"type":15,"value":349},{"type":10,"tag":333,"props":436,"children":437},{"style":346},[438],{"type":15,"value":354},{"type":10,"tag":333,"props":440,"children":441},{"style":357},[442],{"type":15,"value":443},"80000",{"type":10,"tag":333,"props":445,"children":446},{"style":340},[447],{"type":15,"value":365},{"type":10,"tag":333,"props":449,"children":450},{"class":335,"line":368},[451,456,460,464,469],{"type":10,"tag":333,"props":452,"children":453},{"style":340},[454],{"type":15,"value":455},"VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT ",{"type":10,"tag":333,"props":457,"children":458},{"style":346},[459],{"type":15,"value":349},{"type":10,"tag":333,"props":461,"children":462},{"style":346},[463],{"type":15,"value":354},{"type":10,"tag":333,"props":465,"children":466},{"style":357},[467],{"type":15,"value":468},"100000",{"type":10,"tag":333,"props":470,"children":471},{"style":340},[472],{"type":15,"value":365},{"type":10,"tag":322,"props":474,"children":476},{"className":324,"code":475,"language":326,"meta":327,"style":327},"static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_TASK_SHADER_BIT_2_EXT = 0x00080000ULL;\nstatic const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_MESH_SHADER_BIT_2_EXT = 0x00100000ULL;\n",[477],{"type":10,"tag":150,"props":478,"children":479},{"__ignoreMap":327},[480,521],{"type":10,"tag":333,"props":481,"children":482},{"class":335,"line":336},[483,488,493,498,502,506,511,516],{"type":10,"tag":333,"props":484,"children":485},{"style":346},[486],{"type":15,"value":487},"static",{"type":10,"tag":333,"props":489,"children":490},{"style":346},[491],{"type":15,"value":492}," const",{"type":10,"tag":333,"props":494,"children":495},{"style":340},[496],{"type":15,"value":497}," VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_TASK_SHADER_BIT_2_EXT ",{"type":10,"tag":333,"props":499,"children":500},{"style":346},[501],{"type":15,"value":349},{"type":10,"tag":333,"props":503,"children":504},{"style":346},[505],{"type":15,"value":354},{"type":10,"tag":333,"props":507,"children":508},{"style":357},[509],{"type":15,"value":510},"00080000",{"type":10,"tag":333,"props":512,"children":513},{"style":346},[514],{"type":15,"value":515},"ULL",{"type":10,"tag":333,"props":517,"children":518},{"style":340},[519],{"type":15,"value":520},";\n",{"type":10,"tag":333,"props":522,"children":523},{"class":335,"line":368},[524,528,532,537,541,545,550,554],{"type":10,"tag":333,"props":525,"children":526},{"style":346},[527],{"type":15,"value":487},{"type":10,"tag":333,"props":529,"children":530},{"style":346},[531],{"type":15,"value":492},{"type":10,"tag":333,"props":533,"children":534},{"style":340},[535],{"type":15,"value":536}," VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_MESH_SHADER_BIT_2_EXT ",{"type":10,"tag":333,"props":538,"children":539},{"style":346},[540],{"type":15,"value":349},{"type":10,"tag":333,"props":542,"children":543},{"style":346},[544],{"type":15,"value":354},{"type":10,"tag":333,"props":546,"children":547},{"style":357},[548],{"type":15,"value":549},"00100000",{"type":10,"tag":333,"props":551,"children":552},{"style":346},[553],{"type":15,"value":515},{"type":10,"tag":333,"props":555,"children":556},{"style":340},[557],{"type":15,"value":520},{"type":10,"tag":11,"props":559,"children":560},{},[561,563,569,571,578],{"type":15,"value":562},"These new pipeline stages interact similarly to compute shaders, with all the same access types and operations.\nThey are also logically ordered before fragment shading, but have no logical ordering compared to existing pre-rasterization shader stages.\nThe ",{"type":10,"tag":150,"props":564,"children":566},{"className":565},[],[567],{"type":15,"value":568},"VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT",{"type":15,"value":570}," stage added by ",{"type":10,"tag":103,"props":572,"children":575},{"href":573,"rel":574},"https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_synchronization2.html",[315],[576],{"type":15,"value":577},"VK_KHR_synchronization2",{"type":15,"value":579}," includes these new shader stages, and can be used identically.",{"type":10,"tag":120,"props":581,"children":583},{"id":582},"_queries",[584],{"type":15,"value":585},"Queries",{"type":10,"tag":11,"props":587,"children":588},{},[589],{"type":15,"value":590},"Pipeline statistics queries are updated with new bits to count mesh and task shader invocations, in a similar manner to how other shader invocations are counted:",{"type":10,"tag":322,"props":592,"children":594},{"className":324,"code":593,"language":326,"meta":327,"style":327},"VK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT = 0x800,\nVK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT = 0x1000,\n",[595],{"type":10,"tag":150,"props":596,"children":597},{"__ignoreMap":327},[598,623],{"type":10,"tag":333,"props":599,"children":600},{"class":335,"line":336},[601,606,610,614,619],{"type":10,"tag":333,"props":602,"children":603},{"style":340},[604],{"type":15,"value":605},"VK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT ",{"type":10,"tag":333,"props":607,"children":608},{"style":346},[609],{"type":15,"value":349},{"type":10,"tag":333,"props":611,"children":612},{"style":346},[613],{"type":15,"value":354},{"type":10,"tag":333,"props":615,"children":616},{"style":357},[617],{"type":15,"value":618},"800",{"type":10,"tag":333,"props":620,"children":621},{"style":340},[622],{"type":15,"value":365},{"type":10,"tag":333,"props":624,"children":625},{"class":335,"line":368},[626,631,635,639,644],{"type":10,"tag":333,"props":627,"children":628},{"style":340},[629],{"type":15,"value":630},"VK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT ",{"type":10,"tag":333,"props":632,"children":633},{"style":346},[634],{"type":15,"value":349},{"type":10,"tag":333,"props":636,"children":637},{"style":346},[638],{"type":15,"value":354},{"type":10,"tag":333,"props":640,"children":641},{"style":357},[642],{"type":15,"value":643},"1000",{"type":10,"tag":333,"props":645,"children":646},{"style":340},[647],{"type":15,"value":365},{"type":10,"tag":11,"props":649,"children":650},{},[651],{"type":15,"value":652},"An additional standalone query counting the number of mesh primitives generated is added:",{"type":10,"tag":322,"props":654,"children":656},{"className":324,"code":655,"language":326,"meta":327,"style":327},"VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT = 1000328000,\n",[657],{"type":10,"tag":150,"props":658,"children":659},{"__ignoreMap":327},[660],{"type":10,"tag":333,"props":661,"children":662},{"class":335,"line":336},[663,668,672,677],{"type":10,"tag":333,"props":664,"children":665},{"style":340},[666],{"type":15,"value":667},"VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT ",{"type":10,"tag":333,"props":669,"children":670},{"style":346},[671],{"type":15,"value":349},{"type":10,"tag":333,"props":673,"children":674},{"style":357},[675],{"type":15,"value":676}," 1000328000",{"type":10,"tag":333,"props":678,"children":679},{"style":340},[680],{"type":15,"value":365},{"type":10,"tag":11,"props":682,"children":683},{},[684],{"type":15,"value":685},"An active query of this type will generate a count of every individual primitive emitted from any mesh shader workgroup that is not culled by fixed function culling.",{"type":10,"tag":120,"props":687,"children":689},{"id":688},"_draw_calls",[690],{"type":15,"value":691},"Draw Calls",{"type":10,"tag":11,"props":693,"children":694},{},[695],{"type":15,"value":696},"Three new draw calls are added to the API to dispatch mesh pipelines:",{"type":10,"tag":322,"props":698,"children":700},{"className":324,"code":699,"language":326,"meta":327,"style":327},"VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksEXT(\n VkCommandBuffer commandBuffer,\n uint32_t groupCountX,\n uint32_t groupCountY,\n uint32_t groupCountZ);\n\nVKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectEXT(\n VkCommandBuffer commandBuffer,\n VkBuffer buffer,\n VkDeviceSize offset,\n uint32_t drawCount,\n uint32_t stride);\n\nVKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectCountEXT(\n VkCommandBuffer commandBuffer,\n VkBuffer buffer,\n VkDeviceSize offset,\n VkBuffer countBuffer,\n VkDeviceSize countBufferOffset,\n uint32_t maxDrawCount,\n uint32_t stride);\n\ntypedef struct VkDrawMeshTasksIndirectCommandEXT {\n uint32_t x;\n uint32_t y;\n uint32_t z;\n} VkDrawMeshTasksIndirectCommandEXT;\n",[701],{"type":10,"tag":150,"props":702,"children":703},{"__ignoreMap":327},[704,733,751,769,786,804,814,839,855,873,891,908,925,933,958,974,990,1006,1023,1040,1057,1073,1081,1100,1113,1126,1139],{"type":10,"tag":333,"props":705,"children":706},{"class":335,"line":336},[707,712,717,722,728],{"type":10,"tag":333,"props":708,"children":709},{"style":340},[710],{"type":15,"value":711},"VKAPI_ATTR ",{"type":10,"tag":333,"props":713,"children":714},{"style":346},[715],{"type":15,"value":716},"void",{"type":10,"tag":333,"props":718,"children":719},{"style":340},[720],{"type":15,"value":721}," VKAPI_CALL ",{"type":10,"tag":333,"props":723,"children":725},{"style":724},"--shiki-default:#8250DF;--shiki-dark:#D2A8FF",[726],{"type":15,"value":727},"vkCmdDrawMeshTasksEXT",{"type":10,"tag":333,"props":729,"children":730},{"style":340},[731],{"type":15,"value":732},"(\n",{"type":10,"tag":333,"props":734,"children":735},{"class":335,"line":368},[736,741,747],{"type":10,"tag":333,"props":737,"children":738},{"style":340},[739],{"type":15,"value":740}," VkCommandBuffer ",{"type":10,"tag":333,"props":742,"children":744},{"style":743},"--shiki-default:#953800;--shiki-dark:#FFA657",[745],{"type":15,"value":746},"commandBuffer",{"type":10,"tag":333,"props":748,"children":749},{"style":340},[750],{"type":15,"value":365},{"type":10,"tag":333,"props":752,"children":754},{"class":335,"line":753},3,[755,760,765],{"type":10,"tag":333,"props":756,"children":757},{"style":346},[758],{"type":15,"value":759}," uint32_t",{"type":10,"tag":333,"props":761,"children":762},{"style":743},[763],{"type":15,"value":764}," groupCountX",{"type":10,"tag":333,"props":766,"children":767},{"style":340},[768],{"type":15,"value":365},{"type":10,"tag":333,"props":770,"children":772},{"class":335,"line":771},4,[773,777,782],{"type":10,"tag":333,"props":774,"children":775},{"style":346},[776],{"type":15,"value":759},{"type":10,"tag":333,"props":778,"children":779},{"style":743},[780],{"type":15,"value":781}," groupCountY",{"type":10,"tag":333,"props":783,"children":784},{"style":340},[785],{"type":15,"value":365},{"type":10,"tag":333,"props":787,"children":789},{"class":335,"line":788},5,[790,794,799],{"type":10,"tag":333,"props":791,"children":792},{"style":346},[793],{"type":15,"value":759},{"type":10,"tag":333,"props":795,"children":796},{"style":743},[797],{"type":15,"value":798}," groupCountZ",{"type":10,"tag":333,"props":800,"children":801},{"style":340},[802],{"type":15,"value":803},");\n",{"type":10,"tag":333,"props":805,"children":807},{"class":335,"line":806},6,[808],{"type":10,"tag":333,"props":809,"children":811},{"emptyLinePlaceholder":810},true,[812],{"type":15,"value":813},"\n",{"type":10,"tag":333,"props":815,"children":817},{"class":335,"line":816},7,[818,822,826,830,835],{"type":10,"tag":333,"props":819,"children":820},{"style":340},[821],{"type":15,"value":711},{"type":10,"tag":333,"props":823,"children":824},{"style":346},[825],{"type":15,"value":716},{"type":10,"tag":333,"props":827,"children":828},{"style":340},[829],{"type":15,"value":721},{"type":10,"tag":333,"props":831,"children":832},{"style":724},[833],{"type":15,"value":834},"vkCmdDrawMeshTasksIndirectEXT",{"type":10,"tag":333,"props":836,"children":837},{"style":340},[838],{"type":15,"value":732},{"type":10,"tag":333,"props":840,"children":842},{"class":335,"line":841},8,[843,847,851],{"type":10,"tag":333,"props":844,"children":845},{"style":340},[846],{"type":15,"value":740},{"type":10,"tag":333,"props":848,"children":849},{"style":743},[850],{"type":15,"value":746},{"type":10,"tag":333,"props":852,"children":853},{"style":340},[854],{"type":15,"value":365},{"type":10,"tag":333,"props":856,"children":858},{"class":335,"line":857},9,[859,864,869],{"type":10,"tag":333,"props":860,"children":861},{"style":340},[862],{"type":15,"value":863}," VkBuffer ",{"type":10,"tag":333,"props":865,"children":866},{"style":743},[867],{"type":15,"value":868},"buffer",{"type":10,"tag":333,"props":870,"children":871},{"style":340},[872],{"type":15,"value":365},{"type":10,"tag":333,"props":874,"children":876},{"class":335,"line":875},10,[877,882,887],{"type":10,"tag":333,"props":878,"children":879},{"style":340},[880],{"type":15,"value":881}," VkDeviceSize ",{"type":10,"tag":333,"props":883,"children":884},{"style":743},[885],{"type":15,"value":886},"offset",{"type":10,"tag":333,"props":888,"children":889},{"style":340},[890],{"type":15,"value":365},{"type":10,"tag":333,"props":892,"children":894},{"class":335,"line":893},11,[895,899,904],{"type":10,"tag":333,"props":896,"children":897},{"style":346},[898],{"type":15,"value":759},{"type":10,"tag":333,"props":900,"children":901},{"style":743},[902],{"type":15,"value":903}," drawCount",{"type":10,"tag":333,"props":905,"children":906},{"style":340},[907],{"type":15,"value":365},{"type":10,"tag":333,"props":909,"children":911},{"class":335,"line":910},12,[912,916,921],{"type":10,"tag":333,"props":913,"children":914},{"style":346},[915],{"type":15,"value":759},{"type":10,"tag":333,"props":917,"children":918},{"style":743},[919],{"type":15,"value":920}," stride",{"type":10,"tag":333,"props":922,"children":923},{"style":340},[924],{"type":15,"value":803},{"type":10,"tag":333,"props":926,"children":928},{"class":335,"line":927},13,[929],{"type":10,"tag":333,"props":930,"children":931},{"emptyLinePlaceholder":810},[932],{"type":15,"value":813},{"type":10,"tag":333,"props":934,"children":936},{"class":335,"line":935},14,[937,941,945,949,954],{"type":10,"tag":333,"props":938,"children":939},{"style":340},[940],{"type":15,"value":711},{"type":10,"tag":333,"props":942,"children":943},{"style":346},[944],{"type":15,"value":716},{"type":10,"tag":333,"props":946,"children":947},{"style":340},[948],{"type":15,"value":721},{"type":10,"tag":333,"props":950,"children":951},{"style":724},[952],{"type":15,"value":953},"vkCmdDrawMeshTasksIndirectCountEXT",{"type":10,"tag":333,"props":955,"children":956},{"style":340},[957],{"type":15,"value":732},{"type":10,"tag":333,"props":959,"children":961},{"class":335,"line":960},15,[962,966,970],{"type":10,"tag":333,"props":963,"children":964},{"style":340},[965],{"type":15,"value":740},{"type":10,"tag":333,"props":967,"children":968},{"style":743},[969],{"type":15,"value":746},{"type":10,"tag":333,"props":971,"children":972},{"style":340},[973],{"type":15,"value":365},{"type":10,"tag":333,"props":975,"children":977},{"class":335,"line":976},16,[978,982,986],{"type":10,"tag":333,"props":979,"children":980},{"style":340},[981],{"type":15,"value":863},{"type":10,"tag":333,"props":983,"children":984},{"style":743},[985],{"type":15,"value":868},{"type":10,"tag":333,"props":987,"children":988},{"style":340},[989],{"type":15,"value":365},{"type":10,"tag":333,"props":991,"children":993},{"class":335,"line":992},17,[994,998,1002],{"type":10,"tag":333,"props":995,"children":996},{"style":340},[997],{"type":15,"value":881},{"type":10,"tag":333,"props":999,"children":1000},{"style":743},[1001],{"type":15,"value":886},{"type":10,"tag":333,"props":1003,"children":1004},{"style":340},[1005],{"type":15,"value":365},{"type":10,"tag":333,"props":1007,"children":1009},{"class":335,"line":1008},18,[1010,1014,1019],{"type":10,"tag":333,"props":1011,"children":1012},{"style":340},[1013],{"type":15,"value":863},{"type":10,"tag":333,"props":1015,"children":1016},{"style":743},[1017],{"type":15,"value":1018},"countBuffer",{"type":10,"tag":333,"props":1020,"children":1021},{"style":340},[1022],{"type":15,"value":365},{"type":10,"tag":333,"props":1024,"children":1026},{"class":335,"line":1025},19,[1027,1031,1036],{"type":10,"tag":333,"props":1028,"children":1029},{"style":340},[1030],{"type":15,"value":881},{"type":10,"tag":333,"props":1032,"children":1033},{"style":743},[1034],{"type":15,"value":1035},"countBufferOffset",{"type":10,"tag":333,"props":1037,"children":1038},{"style":340},[1039],{"type":15,"value":365},{"type":10,"tag":333,"props":1041,"children":1043},{"class":335,"line":1042},20,[1044,1048,1053],{"type":10,"tag":333,"props":1045,"children":1046},{"style":346},[1047],{"type":15,"value":759},{"type":10,"tag":333,"props":1049,"children":1050},{"style":743},[1051],{"type":15,"value":1052}," maxDrawCount",{"type":10,"tag":333,"props":1054,"children":1055},{"style":340},[1056],{"type":15,"value":365},{"type":10,"tag":333,"props":1058,"children":1060},{"class":335,"line":1059},21,[1061,1065,1069],{"type":10,"tag":333,"props":1062,"children":1063},{"style":346},[1064],{"type":15,"value":759},{"type":10,"tag":333,"props":1066,"children":1067},{"style":743},[1068],{"type":15,"value":920},{"type":10,"tag":333,"props":1070,"children":1071},{"style":340},[1072],{"type":15,"value":803},{"type":10,"tag":333,"props":1074,"children":1076},{"class":335,"line":1075},22,[1077],{"type":10,"tag":333,"props":1078,"children":1079},{"emptyLinePlaceholder":810},[1080],{"type":15,"value":813},{"type":10,"tag":333,"props":1082,"children":1084},{"class":335,"line":1083},23,[1085,1090,1095],{"type":10,"tag":333,"props":1086,"children":1087},{"style":346},[1088],{"type":15,"value":1089},"typedef",{"type":10,"tag":333,"props":1091,"children":1092},{"style":346},[1093],{"type":15,"value":1094}," struct",{"type":10,"tag":333,"props":1096,"children":1097},{"style":340},[1098],{"type":15,"value":1099}," VkDrawMeshTasksIndirectCommandEXT {\n",{"type":10,"tag":333,"props":1101,"children":1103},{"class":335,"line":1102},24,[1104,1108],{"type":10,"tag":333,"props":1105,"children":1106},{"style":346},[1107],{"type":15,"value":759},{"type":10,"tag":333,"props":1109,"children":1110},{"style":340},[1111],{"type":15,"value":1112}," x;\n",{"type":10,"tag":333,"props":1114,"children":1116},{"class":335,"line":1115},25,[1117,1121],{"type":10,"tag":333,"props":1118,"children":1119},{"style":346},[1120],{"type":15,"value":759},{"type":10,"tag":333,"props":1122,"children":1123},{"style":340},[1124],{"type":15,"value":1125}," y;\n",{"type":10,"tag":333,"props":1127,"children":1129},{"class":335,"line":1128},26,[1130,1134],{"type":10,"tag":333,"props":1131,"children":1132},{"style":346},[1133],{"type":15,"value":759},{"type":10,"tag":333,"props":1135,"children":1136},{"style":340},[1137],{"type":15,"value":1138}," z;\n",{"type":10,"tag":333,"props":1140,"children":1142},{"class":335,"line":1141},27,[1143],{"type":10,"tag":333,"props":1144,"children":1145},{"style":340},[1146],{"type":15,"value":1147},"} VkDrawMeshTasksIndirectCommandEXT;\n",{"type":10,"tag":11,"props":1149,"children":1150},{},[1151,1156,1158,1165],{"type":10,"tag":150,"props":1152,"children":1154},{"className":1153},[],[1155],{"type":15,"value":727},{"type":15,"value":1157}," is the simplest as it functions the same as ",{"type":10,"tag":103,"props":1159,"children":1162},{"href":1160,"rel":1161},"https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdDispatch.html",[315],[1163],{"type":15,"value":1164},"vkCmdDispatch",{"type":15,"value":1166},", but dispatches the mesh or task shader in a graphics pipeline with the specified workgroup counts, rather than a compute shader.",{"type":10,"tag":11,"props":1168,"children":1169},{},[1170,1175,1177,1184,1186,1192,1194,1200,1202,1208],{"type":10,"tag":150,"props":1171,"children":1173},{"className":1172},[],[1174],{"type":15,"value":834},{"type":15,"value":1176}," functions similarly to ",{"type":10,"tag":103,"props":1178,"children":1181},{"href":1179,"rel":1180},"https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdDispatchIndirect.html",[315],[1182],{"type":15,"value":1183},"vkCmdDispatchIndirect",{"type":15,"value":1185},", but with the draw count functionality from other draw commands.\nMultiple draws are dispatched according to the ",{"type":10,"tag":150,"props":1187,"children":1189},{"className":1188},[],[1190],{"type":15,"value":1191},"drawCount",{"type":15,"value":1193}," parameter, with data in buffer being consumed as a strided array of ",{"type":10,"tag":150,"props":1195,"children":1197},{"className":1196},[],[1198],{"type":15,"value":1199},"VkDrawMeshTasksIndirectCommandEXT",{"type":15,"value":1201}," structures, with stride equal to ",{"type":10,"tag":150,"props":1203,"children":1205},{"className":1204},[],[1206],{"type":15,"value":1207},"stride",{"type":15,"value":1209},".\nEach element of this array defines a separate draw call’s workgroup counts in each dimension, and dispatches mesh or task shaders for the current pipeline accordingly.",{"type":10,"tag":11,"props":1211,"children":1212},{},[1213,1218,1220,1225,1227,1232,1234,1239,1241,1247],{"type":10,"tag":150,"props":1214,"children":1216},{"className":1215},[],[1217],{"type":15,"value":953},{"type":15,"value":1219}," functions as ",{"type":10,"tag":150,"props":1221,"children":1223},{"className":1222},[],[1224],{"type":15,"value":834},{"type":15,"value":1226},", but takes its draw count from the device as well.\nThe draw count is read from ",{"type":10,"tag":150,"props":1228,"children":1230},{"className":1229},[],[1231],{"type":15,"value":1018},{"type":15,"value":1233}," at an offset of ",{"type":10,"tag":150,"props":1235,"children":1237},{"className":1236},[],[1238],{"type":15,"value":1035},{"type":15,"value":1240},", and must be lower than ",{"type":10,"tag":150,"props":1242,"children":1244},{"className":1243},[],[1245],{"type":15,"value":1246},"maxDrawCount",{"type":15,"value":118},{"type":10,"tag":120,"props":1249,"children":1251},{"id":1250},"_properties",[1252],{"type":15,"value":1253},"Properties",{"type":10,"tag":11,"props":1255,"children":1256},{},[1257],{"type":15,"value":1258},"Several new properties are added to the API - some dictating hard limits, and others indicating performance considerations:",{"type":10,"tag":322,"props":1260,"children":1262},{"className":324,"code":1261,"language":326,"meta":327,"style":327},"typedef struct VkPhysicalDeviceMeshShaderPropertiesEXT {\n VkStructureType sType;\n void* pNext;\n uint32_t maxTaskWorkGroupTotalCount;\n uint32_t maxTaskWorkGroupCount[3];\n uint32_t maxTaskWorkGroupInvocations;\n uint32_t maxTaskWorkGroupSize[3];\n uint32_t maxTaskPayloadSize;\n uint32_t maxTaskSharedMemorySize;\n uint32_t maxTaskPayloadAndSharedMemorySize;\n uint32_t maxMeshWorkGroupTotalCount;\n uint32_t maxMeshWorkGroupCount[3];\n uint32_t maxMeshWorkGroupInvocations;\n uint32_t maxMeshWorkGroupSize[3];\n uint32_t maxMeshSharedMemorySize;\n uint32_t maxMeshPayloadAndSharedMemorySize;\n uint32_t maxMeshOutputMemorySize;\n uint32_t maxMeshPayloadAndOutputMemorySize;\n uint32_t maxMeshOutputComponents;\n uint32_t maxMeshOutputVertices;\n uint32_t maxMeshOutputPrimitives;\n uint32_t maxMeshOutputLayers;\n uint32_t maxMeshMultiviewViewCount;\n uint32_t meshOutputPerVertexGranularity;\n uint32_t meshOutputPerPrimitiveGranularity;\n uint32_t maxPreferredTaskWorkGroupInvocations;\n uint32_t maxPreferredMeshWorkGroupInvocations;\n VkBool32 prefersLocalInvocationVertexOutput;\n VkBool32 prefersLocalInvocationPrimitiveOutput;\n VkBool32 prefersCompactVertexOutput;\n VkBool32 prefersCompactPrimitiveOutput;\n} VkPhysicalDeviceMeshShaderPropertiesEXT;\n",[1263],{"type":10,"tag":150,"props":1264,"children":1265},{"__ignoreMap":327},[1266,1282,1290,1303,1315,1342,1354,1378,1390,1402,1414,1426,1450,1462,1486,1498,1510,1522,1534,1546,1558,1570,1582,1594,1606,1618,1630,1642,1651,1660,1669,1678],{"type":10,"tag":333,"props":1267,"children":1268},{"class":335,"line":336},[1269,1273,1277],{"type":10,"tag":333,"props":1270,"children":1271},{"style":346},[1272],{"type":15,"value":1089},{"type":10,"tag":333,"props":1274,"children":1275},{"style":346},[1276],{"type":15,"value":1094},{"type":10,"tag":333,"props":1278,"children":1279},{"style":340},[1280],{"type":15,"value":1281}," VkPhysicalDeviceMeshShaderPropertiesEXT {\n",{"type":10,"tag":333,"props":1283,"children":1284},{"class":335,"line":368},[1285],{"type":10,"tag":333,"props":1286,"children":1287},{"style":340},[1288],{"type":15,"value":1289}," VkStructureType sType;\n",{"type":10,"tag":333,"props":1291,"children":1292},{"class":335,"line":753},[1293,1298],{"type":10,"tag":333,"props":1294,"children":1295},{"style":346},[1296],{"type":15,"value":1297}," void*",{"type":10,"tag":333,"props":1299,"children":1300},{"style":340},[1301],{"type":15,"value":1302}," pNext;\n",{"type":10,"tag":333,"props":1304,"children":1305},{"class":335,"line":771},[1306,1310],{"type":10,"tag":333,"props":1307,"children":1308},{"style":346},[1309],{"type":15,"value":759},{"type":10,"tag":333,"props":1311,"children":1312},{"style":340},[1313],{"type":15,"value":1314}," maxTaskWorkGroupTotalCount;\n",{"type":10,"tag":333,"props":1316,"children":1317},{"class":335,"line":788},[1318,1322,1327,1332,1337],{"type":10,"tag":333,"props":1319,"children":1320},{"style":346},[1321],{"type":15,"value":759},{"type":10,"tag":333,"props":1323,"children":1324},{"style":743},[1325],{"type":15,"value":1326}," maxTaskWorkGroupCount",{"type":10,"tag":333,"props":1328,"children":1329},{"style":340},[1330],{"type":15,"value":1331},"[",{"type":10,"tag":333,"props":1333,"children":1334},{"style":357},[1335],{"type":15,"value":1336},"3",{"type":10,"tag":333,"props":1338,"children":1339},{"style":340},[1340],{"type":15,"value":1341},"];\n",{"type":10,"tag":333,"props":1343,"children":1344},{"class":335,"line":806},[1345,1349],{"type":10,"tag":333,"props":1346,"children":1347},{"style":346},[1348],{"type":15,"value":759},{"type":10,"tag":333,"props":1350,"children":1351},{"style":340},[1352],{"type":15,"value":1353}," maxTaskWorkGroupInvocations;\n",{"type":10,"tag":333,"props":1355,"children":1356},{"class":335,"line":816},[1357,1361,1366,1370,1374],{"type":10,"tag":333,"props":1358,"children":1359},{"style":346},[1360],{"type":15,"value":759},{"type":10,"tag":333,"props":1362,"children":1363},{"style":743},[1364],{"type":15,"value":1365}," maxTaskWorkGroupSize",{"type":10,"tag":333,"props":1367,"children":1368},{"style":340},[1369],{"type":15,"value":1331},{"type":10,"tag":333,"props":1371,"children":1372},{"style":357},[1373],{"type":15,"value":1336},{"type":10,"tag":333,"props":1375,"children":1376},{"style":340},[1377],{"type":15,"value":1341},{"type":10,"tag":333,"props":1379,"children":1380},{"class":335,"line":841},[1381,1385],{"type":10,"tag":333,"props":1382,"children":1383},{"style":346},[1384],{"type":15,"value":759},{"type":10,"tag":333,"props":1386,"children":1387},{"style":340},[1388],{"type":15,"value":1389}," maxTaskPayloadSize;\n",{"type":10,"tag":333,"props":1391,"children":1392},{"class":335,"line":857},[1393,1397],{"type":10,"tag":333,"props":1394,"children":1395},{"style":346},[1396],{"type":15,"value":759},{"type":10,"tag":333,"props":1398,"children":1399},{"style":340},[1400],{"type":15,"value":1401}," maxTaskSharedMemorySize;\n",{"type":10,"tag":333,"props":1403,"children":1404},{"class":335,"line":875},[1405,1409],{"type":10,"tag":333,"props":1406,"children":1407},{"style":346},[1408],{"type":15,"value":759},{"type":10,"tag":333,"props":1410,"children":1411},{"style":340},[1412],{"type":15,"value":1413}," maxTaskPayloadAndSharedMemorySize;\n",{"type":10,"tag":333,"props":1415,"children":1416},{"class":335,"line":893},[1417,1421],{"type":10,"tag":333,"props":1418,"children":1419},{"style":346},[1420],{"type":15,"value":759},{"type":10,"tag":333,"props":1422,"children":1423},{"style":340},[1424],{"type":15,"value":1425}," maxMeshWorkGroupTotalCount;\n",{"type":10,"tag":333,"props":1427,"children":1428},{"class":335,"line":910},[1429,1433,1438,1442,1446],{"type":10,"tag":333,"props":1430,"children":1431},{"style":346},[1432],{"type":15,"value":759},{"type":10,"tag":333,"props":1434,"children":1435},{"style":743},[1436],{"type":15,"value":1437}," maxMeshWorkGroupCount",{"type":10,"tag":333,"props":1439,"children":1440},{"style":340},[1441],{"type":15,"value":1331},{"type":10,"tag":333,"props":1443,"children":1444},{"style":357},[1445],{"type":15,"value":1336},{"type":10,"tag":333,"props":1447,"children":1448},{"style":340},[1449],{"type":15,"value":1341},{"type":10,"tag":333,"props":1451,"children":1452},{"class":335,"line":927},[1453,1457],{"type":10,"tag":333,"props":1454,"children":1455},{"style":346},[1456],{"type":15,"value":759},{"type":10,"tag":333,"props":1458,"children":1459},{"style":340},[1460],{"type":15,"value":1461}," maxMeshWorkGroupInvocations;\n",{"type":10,"tag":333,"props":1463,"children":1464},{"class":335,"line":935},[1465,1469,1474,1478,1482],{"type":10,"tag":333,"props":1466,"children":1467},{"style":346},[1468],{"type":15,"value":759},{"type":10,"tag":333,"props":1470,"children":1471},{"style":743},[1472],{"type":15,"value":1473}," maxMeshWorkGroupSize",{"type":10,"tag":333,"props":1475,"children":1476},{"style":340},[1477],{"type":15,"value":1331},{"type":10,"tag":333,"props":1479,"children":1480},{"style":357},[1481],{"type":15,"value":1336},{"type":10,"tag":333,"props":1483,"children":1484},{"style":340},[1485],{"type":15,"value":1341},{"type":10,"tag":333,"props":1487,"children":1488},{"class":335,"line":960},[1489,1493],{"type":10,"tag":333,"props":1490,"children":1491},{"style":346},[1492],{"type":15,"value":759},{"type":10,"tag":333,"props":1494,"children":1495},{"style":340},[1496],{"type":15,"value":1497}," maxMeshSharedMemorySize;\n",{"type":10,"tag":333,"props":1499,"children":1500},{"class":335,"line":976},[1501,1505],{"type":10,"tag":333,"props":1502,"children":1503},{"style":346},[1504],{"type":15,"value":759},{"type":10,"tag":333,"props":1506,"children":1507},{"style":340},[1508],{"type":15,"value":1509}," maxMeshPayloadAndSharedMemorySize;\n",{"type":10,"tag":333,"props":1511,"children":1512},{"class":335,"line":992},[1513,1517],{"type":10,"tag":333,"props":1514,"children":1515},{"style":346},[1516],{"type":15,"value":759},{"type":10,"tag":333,"props":1518,"children":1519},{"style":340},[1520],{"type":15,"value":1521}," maxMeshOutputMemorySize;\n",{"type":10,"tag":333,"props":1523,"children":1524},{"class":335,"line":1008},[1525,1529],{"type":10,"tag":333,"props":1526,"children":1527},{"style":346},[1528],{"type":15,"value":759},{"type":10,"tag":333,"props":1530,"children":1531},{"style":340},[1532],{"type":15,"value":1533}," maxMeshPayloadAndOutputMemorySize;\n",{"type":10,"tag":333,"props":1535,"children":1536},{"class":335,"line":1025},[1537,1541],{"type":10,"tag":333,"props":1538,"children":1539},{"style":346},[1540],{"type":15,"value":759},{"type":10,"tag":333,"props":1542,"children":1543},{"style":340},[1544],{"type":15,"value":1545}," maxMeshOutputComponents;\n",{"type":10,"tag":333,"props":1547,"children":1548},{"class":335,"line":1042},[1549,1553],{"type":10,"tag":333,"props":1550,"children":1551},{"style":346},[1552],{"type":15,"value":759},{"type":10,"tag":333,"props":1554,"children":1555},{"style":340},[1556],{"type":15,"value":1557}," maxMeshOutputVertices;\n",{"type":10,"tag":333,"props":1559,"children":1560},{"class":335,"line":1059},[1561,1565],{"type":10,"tag":333,"props":1562,"children":1563},{"style":346},[1564],{"type":15,"value":759},{"type":10,"tag":333,"props":1566,"children":1567},{"style":340},[1568],{"type":15,"value":1569}," maxMeshOutputPrimitives;\n",{"type":10,"tag":333,"props":1571,"children":1572},{"class":335,"line":1075},[1573,1577],{"type":10,"tag":333,"props":1574,"children":1575},{"style":346},[1576],{"type":15,"value":759},{"type":10,"tag":333,"props":1578,"children":1579},{"style":340},[1580],{"type":15,"value":1581}," maxMeshOutputLayers;\n",{"type":10,"tag":333,"props":1583,"children":1584},{"class":335,"line":1083},[1585,1589],{"type":10,"tag":333,"props":1586,"children":1587},{"style":346},[1588],{"type":15,"value":759},{"type":10,"tag":333,"props":1590,"children":1591},{"style":340},[1592],{"type":15,"value":1593}," maxMeshMultiviewViewCount;\n",{"type":10,"tag":333,"props":1595,"children":1596},{"class":335,"line":1102},[1597,1601],{"type":10,"tag":333,"props":1598,"children":1599},{"style":346},[1600],{"type":15,"value":759},{"type":10,"tag":333,"props":1602,"children":1603},{"style":340},[1604],{"type":15,"value":1605}," meshOutputPerVertexGranularity;\n",{"type":10,"tag":333,"props":1607,"children":1608},{"class":335,"line":1115},[1609,1613],{"type":10,"tag":333,"props":1610,"children":1611},{"style":346},[1612],{"type":15,"value":759},{"type":10,"tag":333,"props":1614,"children":1615},{"style":340},[1616],{"type":15,"value":1617}," meshOutputPerPrimitiveGranularity;\n",{"type":10,"tag":333,"props":1619,"children":1620},{"class":335,"line":1128},[1621,1625],{"type":10,"tag":333,"props":1622,"children":1623},{"style":346},[1624],{"type":15,"value":759},{"type":10,"tag":333,"props":1626,"children":1627},{"style":340},[1628],{"type":15,"value":1629}," maxPreferredTaskWorkGroupInvocations;\n",{"type":10,"tag":333,"props":1631,"children":1632},{"class":335,"line":1141},[1633,1637],{"type":10,"tag":333,"props":1634,"children":1635},{"style":346},[1636],{"type":15,"value":759},{"type":10,"tag":333,"props":1638,"children":1639},{"style":340},[1640],{"type":15,"value":1641}," maxPreferredMeshWorkGroupInvocations;\n",{"type":10,"tag":333,"props":1643,"children":1645},{"class":335,"line":1644},28,[1646],{"type":10,"tag":333,"props":1647,"children":1648},{"style":340},[1649],{"type":15,"value":1650}," VkBool32 prefersLocalInvocationVertexOutput;\n",{"type":10,"tag":333,"props":1652,"children":1654},{"class":335,"line":1653},29,[1655],{"type":10,"tag":333,"props":1656,"children":1657},{"style":340},[1658],{"type":15,"value":1659}," VkBool32 prefersLocalInvocationPrimitiveOutput;\n",{"type":10,"tag":333,"props":1661,"children":1663},{"class":335,"line":1662},30,[1664],{"type":10,"tag":333,"props":1665,"children":1666},{"style":340},[1667],{"type":15,"value":1668}," VkBool32 prefersCompactVertexOutput;\n",{"type":10,"tag":333,"props":1670,"children":1672},{"class":335,"line":1671},31,[1673],{"type":10,"tag":333,"props":1674,"children":1675},{"style":340},[1676],{"type":15,"value":1677}," VkBool32 prefersCompactPrimitiveOutput;\n",{"type":10,"tag":333,"props":1679,"children":1681},{"class":335,"line":1680},32,[1682],{"type":10,"tag":333,"props":1683,"children":1684},{"style":340},[1685],{"type":15,"value":1686},"} VkPhysicalDeviceMeshShaderPropertiesEXT;\n",{"type":10,"tag":11,"props":1688,"children":1689},{},[1690],{"type":15,"value":1691},"The following limits affect task shader execution:",{"type":10,"tag":1693,"props":1694,"children":1695},"ul",{},[1696,1707,1718,1729,1740,1751,1762],{"type":10,"tag":49,"props":1697,"children":1698},{},[1699,1705],{"type":10,"tag":150,"props":1700,"children":1702},{"className":1701},[],[1703],{"type":15,"value":1704},"maxTaskWorkGroupTotalCount",{"type":15,"value":1706}," indicates the total number of workgroups that can be launched for a task shader.",{"type":10,"tag":49,"props":1708,"children":1709},{},[1710,1716],{"type":10,"tag":150,"props":1711,"children":1713},{"className":1712},[],[1714],{"type":15,"value":1715},"maxTaskWorkGroupCount",{"type":15,"value":1717}," indicates the number of workgroups that can be launched for a task shader in each given dimension.",{"type":10,"tag":49,"props":1719,"children":1720},{},[1721,1727],{"type":10,"tag":150,"props":1722,"children":1724},{"className":1723},[],[1725],{"type":15,"value":1726},"maxTaskWorkGroupInvocations",{"type":15,"value":1728}," indicates the total number of invocations that can be launched for a task shader in a single workgroup.",{"type":10,"tag":49,"props":1730,"children":1731},{},[1732,1738],{"type":10,"tag":150,"props":1733,"children":1735},{"className":1734},[],[1736],{"type":15,"value":1737},"maxTaskWorkGroupSize",{"type":15,"value":1739}," indicates the maximum number of invocations for a task shader in each dimension for a single workgroup.",{"type":10,"tag":49,"props":1741,"children":1742},{},[1743,1749],{"type":10,"tag":150,"props":1744,"children":1746},{"className":1745},[],[1747],{"type":15,"value":1748},"maxTaskPayloadSize",{"type":15,"value":1750}," indicates the maximum total size of task shader output payloads.",{"type":10,"tag":49,"props":1752,"children":1753},{},[1754,1760],{"type":10,"tag":150,"props":1755,"children":1757},{"className":1756},[],[1758],{"type":15,"value":1759},"maxTaskSharedMemorySize",{"type":15,"value":1761}," indicates the maximum total size of task shader shared memory variables.",{"type":10,"tag":49,"props":1763,"children":1764},{},[1765,1771],{"type":10,"tag":150,"props":1766,"children":1768},{"className":1767},[],[1769],{"type":15,"value":1770},"maxTaskPayloadAndSharedMemorySize",{"type":15,"value":1772}," indicates the maximum total combined size of task shader output payloads and shared memory variables.",{"type":10,"tag":11,"props":1774,"children":1775},{},[1776],{"type":15,"value":1777},"Similar limits affect task shader execution:",{"type":10,"tag":1693,"props":1779,"children":1780},{},[1781,1792,1803,1814,1825,1836,1847,1857,1868,1879,1890,1901,1912],{"type":10,"tag":49,"props":1782,"children":1783},{},[1784,1790],{"type":10,"tag":150,"props":1785,"children":1787},{"className":1786},[],[1788],{"type":15,"value":1789},"maxMeshWorkGroupTotalCount",{"type":15,"value":1791}," indicates the total number of workgroups that can be launched for a mesh shader.",{"type":10,"tag":49,"props":1793,"children":1794},{},[1795,1801],{"type":10,"tag":150,"props":1796,"children":1798},{"className":1797},[],[1799],{"type":15,"value":1800},"maxMeshWorkGroupCount",{"type":15,"value":1802}," indicates the number of workgroups that can be launched for a mesh shader in each given dimension.",{"type":10,"tag":49,"props":1804,"children":1805},{},[1806,1812],{"type":10,"tag":150,"props":1807,"children":1809},{"className":1808},[],[1810],{"type":15,"value":1811},"maxMeshWorkGroupInvocations",{"type":15,"value":1813}," indicates the total number of invocations that can be launched for a mesh shader in a single workgroup.",{"type":10,"tag":49,"props":1815,"children":1816},{},[1817,1823],{"type":10,"tag":150,"props":1818,"children":1820},{"className":1819},[],[1821],{"type":15,"value":1822},"maxMeshWorkGroupSize",{"type":15,"value":1824}," indicates the maximum number of invocations for a mesh shader in each dimension for a single workgroup.",{"type":10,"tag":49,"props":1826,"children":1827},{},[1828,1834],{"type":10,"tag":150,"props":1829,"children":1831},{"className":1830},[],[1832],{"type":15,"value":1833},"maxMeshSharedMemorySize",{"type":15,"value":1835}," indicates the maximum total size of mesh shader shared memory variables.",{"type":10,"tag":49,"props":1837,"children":1838},{},[1839,1845],{"type":10,"tag":150,"props":1840,"children":1842},{"className":1841},[],[1843],{"type":15,"value":1844},"maxMeshPayloadAndSharedMemorySize",{"type":15,"value":1846}," indicates the maximum total combined size of mesh shader input payloads and shared memory variables.",{"type":10,"tag":49,"props":1848,"children":1849},{},[1850,1855],{"type":10,"tag":150,"props":1851,"children":1853},{"className":1852},[],[1854],{"type":15,"value":1833},{"type":15,"value":1856}," indicates the maximum total size of mesh shader output variables.",{"type":10,"tag":49,"props":1858,"children":1859},{},[1860,1866],{"type":10,"tag":150,"props":1861,"children":1863},{"className":1862},[],[1864],{"type":15,"value":1865},"maxMeshPayloadAndOutputMemorySize",{"type":15,"value":1867}," indicates the maximum total combined size of mesh shader input payloads and output variables.",{"type":10,"tag":49,"props":1869,"children":1870},{},[1871,1877],{"type":10,"tag":150,"props":1872,"children":1874},{"className":1873},[],[1875],{"type":15,"value":1876},"maxMeshOutputComponents",{"type":15,"value":1878}," is the maximum number of components of mesh shader output variables.",{"type":10,"tag":49,"props":1880,"children":1881},{},[1882,1888],{"type":10,"tag":150,"props":1883,"children":1885},{"className":1884},[],[1886],{"type":15,"value":1887},"maxMeshOutputVertices",{"type":15,"value":1889}," is the maximum number of vertices a mesh shader can emit.",{"type":10,"tag":49,"props":1891,"children":1892},{},[1893,1899],{"type":10,"tag":150,"props":1894,"children":1896},{"className":1895},[],[1897],{"type":15,"value":1898},"maxMeshOutputPrimitives",{"type":15,"value":1900}," is the maximum number of primitives a mesh shader can emit.",{"type":10,"tag":49,"props":1902,"children":1903},{},[1904,1910],{"type":10,"tag":150,"props":1905,"children":1907},{"className":1906},[],[1908],{"type":15,"value":1909},"maxMeshOutputLayers",{"type":15,"value":1911}," is the maximum number of layers that a mesh shader can render to.",{"type":10,"tag":49,"props":1913,"children":1914},{},[1915,1921],{"type":10,"tag":150,"props":1916,"children":1918},{"className":1917},[],[1919],{"type":15,"value":1920},"maxMeshMultiviewViewCount",{"type":15,"value":1922}," is the maximum number of views that a mesh shader can render to.",{"type":10,"tag":11,"props":1924,"children":1925},{},[1926],{"type":15,"value":1927},"When considering the above properties, the number of mesh shader outputs a shader uses are rounded up to implementation-defined numbers defined by the following properties:",{"type":10,"tag":1693,"props":1929,"children":1930},{},[1931,1942],{"type":10,"tag":49,"props":1932,"children":1933},{},[1934,1940],{"type":10,"tag":150,"props":1935,"children":1937},{"className":1936},[],[1938],{"type":15,"value":1939},"meshOutputPerVertexGranularity",{"type":15,"value":1941}," is the alignment of each per-vertex mesh shader output.",{"type":10,"tag":49,"props":1943,"children":1944},{},[1945,1951],{"type":10,"tag":150,"props":1946,"children":1948},{"className":1947},[],[1949],{"type":15,"value":1950},"meshOutputPerPrimitiveGranularity",{"type":15,"value":1952}," is the alignment of each per-primitive mesh shader output.",{"type":10,"tag":11,"props":1954,"children":1955},{},[1956],{"type":15,"value":1957},"The following properties are implementation preferences.\nViolating these limits will not result in validation errors, but it is strongly recommended that applications adhere to them in order to maximize performance on each implementation.",{"type":10,"tag":1693,"props":1959,"children":1960},{},[1961,1972,1983,2011,2035,2053],{"type":10,"tag":49,"props":1962,"children":1963},{},[1964,1970],{"type":10,"tag":150,"props":1965,"children":1967},{"className":1966},[],[1968],{"type":15,"value":1969},"maxPreferredTaskWorkGroupInvocations",{"type":15,"value":1971}," indicates the maximum preferred number of task shader invocations in a single workgroup.",{"type":10,"tag":49,"props":1973,"children":1974},{},[1975,1981],{"type":10,"tag":150,"props":1976,"children":1978},{"className":1977},[],[1979],{"type":15,"value":1980},"maxPreferredMeshWorkGroupInvocations",{"type":15,"value":1982}," indicates the maximum preferred number of mesh shader invocations in a single workgroup.",{"type":10,"tag":49,"props":1984,"children":1985},{},[1986,1988,1994,1996,2002,2004,2010],{"type":15,"value":1987},"If ",{"type":10,"tag":150,"props":1989,"children":1991},{"className":1990},[],[1992],{"type":15,"value":1993},"prefersLocalInvocationVertexOutput",{"type":15,"value":1995}," is ",{"type":10,"tag":150,"props":1997,"children":1999},{"className":1998},[],[2000],{"type":15,"value":2001},"VK_TRUE",{"type":15,"value":2003},", the implementation will perform best when each invocation writes to an array index in the per-vertex output matching ",{"type":10,"tag":150,"props":2005,"children":2007},{"className":2006},[],[2008],{"type":15,"value":2009},"LocalInvocationIndex",{"type":15,"value":118},{"type":10,"tag":49,"props":2012,"children":2013},{},[2014,2015,2021,2022,2027,2029,2034],{"type":15,"value":1987},{"type":10,"tag":150,"props":2016,"children":2018},{"className":2017},[],[2019],{"type":15,"value":2020},"prefersLocalInvocationPrimitiveOutput",{"type":15,"value":1995},{"type":10,"tag":150,"props":2023,"children":2025},{"className":2024},[],[2026],{"type":15,"value":2001},{"type":15,"value":2028},", the implementation will perform best when each invocation writes to an array index in the per-primitive output matching ",{"type":10,"tag":150,"props":2030,"children":2032},{"className":2031},[],[2033],{"type":15,"value":2009},{"type":15,"value":118},{"type":10,"tag":49,"props":2036,"children":2037},{},[2038,2039,2045,2046,2051],{"type":15,"value":1987},{"type":10,"tag":150,"props":2040,"children":2042},{"className":2041},[],[2043],{"type":15,"value":2044},"prefersCompactVertexOutput",{"type":15,"value":1995},{"type":10,"tag":150,"props":2047,"children":2049},{"className":2048},[],[2050],{"type":15,"value":2001},{"type":15,"value":2052},", the implementation will perform best if there are no unused vertices in the output array.",{"type":10,"tag":49,"props":2054,"children":2055},{},[2056,2057,2063,2064,2069],{"type":15,"value":1987},{"type":10,"tag":150,"props":2058,"children":2060},{"className":2059},[],[2061],{"type":15,"value":2062},"prefersCompactPrimitiveOutput",{"type":15,"value":1995},{"type":10,"tag":150,"props":2065,"children":2067},{"className":2066},[],[2068],{"type":15,"value":2001},{"type":15,"value":2070},", the implementation will perform best if there are no unused primitives in the output array.",{"type":10,"tag":11,"props":2072,"children":2073},{},[2074],{"type":15,"value":2075},"Note that even if some of the above values are false, the implementation can still perform just as well whether or not the corresponding preferences are followed. It is recommended to follow these preferences unless the performance cost of doing so outweighs the gains of hitting the optimal paths in the implementation.",{"type":10,"tag":120,"props":2077,"children":2079},{"id":2078},"_features",[2080],{"type":15,"value":2081},"Features",{"type":10,"tag":11,"props":2083,"children":2084},{},[2085],{"type":15,"value":2086},"A few new features are introduced by this extension:",{"type":10,"tag":322,"props":2088,"children":2090},{"className":324,"code":2089,"language":326,"meta":327,"style":327},"typedef struct VkPhysicalDeviceMeshShaderFeaturesEXT {\n VkStructureType sType;\n void* pNext;\n VkBool32 taskShader;\n VkBool32 meshShader;\n VkBool32 multiviewMeshShader;\n VkBool32 primitiveFragmentShadingRateMeshShader;\n VkBool32 meshShaderQueries;\n} VkPhysicalDeviceMeshShaderFeaturesEXT;\n",[2091],{"type":10,"tag":150,"props":2092,"children":2093},{"__ignoreMap":327},[2094,2110,2117,2128,2136,2144,2152,2160,2168],{"type":10,"tag":333,"props":2095,"children":2096},{"class":335,"line":336},[2097,2101,2105],{"type":10,"tag":333,"props":2098,"children":2099},{"style":346},[2100],{"type":15,"value":1089},{"type":10,"tag":333,"props":2102,"children":2103},{"style":346},[2104],{"type":15,"value":1094},{"type":10,"tag":333,"props":2106,"children":2107},{"style":340},[2108],{"type":15,"value":2109}," VkPhysicalDeviceMeshShaderFeaturesEXT {\n",{"type":10,"tag":333,"props":2111,"children":2112},{"class":335,"line":368},[2113],{"type":10,"tag":333,"props":2114,"children":2115},{"style":340},[2116],{"type":15,"value":1289},{"type":10,"tag":333,"props":2118,"children":2119},{"class":335,"line":753},[2120,2124],{"type":10,"tag":333,"props":2121,"children":2122},{"style":346},[2123],{"type":15,"value":1297},{"type":10,"tag":333,"props":2125,"children":2126},{"style":340},[2127],{"type":15,"value":1302},{"type":10,"tag":333,"props":2129,"children":2130},{"class":335,"line":771},[2131],{"type":10,"tag":333,"props":2132,"children":2133},{"style":340},[2134],{"type":15,"value":2135}," VkBool32 taskShader;\n",{"type":10,"tag":333,"props":2137,"children":2138},{"class":335,"line":788},[2139],{"type":10,"tag":333,"props":2140,"children":2141},{"style":340},[2142],{"type":15,"value":2143}," VkBool32 meshShader;\n",{"type":10,"tag":333,"props":2145,"children":2146},{"class":335,"line":806},[2147],{"type":10,"tag":333,"props":2148,"children":2149},{"style":340},[2150],{"type":15,"value":2151}," VkBool32 multiviewMeshShader;\n",{"type":10,"tag":333,"props":2153,"children":2154},{"class":335,"line":816},[2155],{"type":10,"tag":333,"props":2156,"children":2157},{"style":340},[2158],{"type":15,"value":2159}," VkBool32 primitiveFragmentShadingRateMeshShader;\n",{"type":10,"tag":333,"props":2161,"children":2162},{"class":335,"line":841},[2163],{"type":10,"tag":333,"props":2164,"children":2165},{"style":340},[2166],{"type":15,"value":2167}," VkBool32 meshShaderQueries;\n",{"type":10,"tag":333,"props":2169,"children":2170},{"class":335,"line":857},[2171],{"type":10,"tag":333,"props":2172,"children":2173},{"style":340},[2174],{"type":15,"value":2175},"} VkPhysicalDeviceMeshShaderFeaturesEXT;\n",{"type":10,"tag":1693,"props":2177,"children":2178},{},[2179,2190,2201,2212,2223],{"type":10,"tag":49,"props":2180,"children":2181},{},[2182,2188],{"type":10,"tag":150,"props":2183,"children":2185},{"className":2184},[],[2186],{"type":15,"value":2187},"taskShader",{"type":15,"value":2189}," indicates support for task shaders and associated features - if not supported, only mesh shaders can be used.",{"type":10,"tag":49,"props":2191,"children":2192},{},[2193,2199],{"type":10,"tag":150,"props":2194,"children":2196},{"className":2195},[],[2197],{"type":15,"value":2198},"meshShader",{"type":15,"value":2200}," indicates support for mesh shaders and associated features - if not supported, none of the features in this extension can be used.",{"type":10,"tag":49,"props":2202,"children":2203},{},[2204,2210],{"type":10,"tag":150,"props":2205,"children":2207},{"className":2206},[],[2208],{"type":15,"value":2209},"multiviewMeshShader",{"type":15,"value":2211}," indicates support for the use of multi-view with mesh shaders.",{"type":10,"tag":49,"props":2213,"children":2214},{},[2215,2221],{"type":10,"tag":150,"props":2216,"children":2218},{"className":2217},[],[2219],{"type":15,"value":2220},"primitiveFragmentShadingRateMeshShader",{"type":15,"value":2222}," indicates whether the per-primitive fragment shading rate can be written by mesh shaders when fragment shading rates are supported.",{"type":10,"tag":49,"props":2224,"children":2225},{},[2226,2232],{"type":10,"tag":150,"props":2227,"children":2229},{"className":2228},[],[2230],{"type":15,"value":2231},"meshShaderQueries",{"type":15,"value":2233}," indicates support for the new queries added by this extension.",{"type":10,"tag":91,"props":2235,"children":2237},{"id":2236},"_spir_v_changes",[2238],{"type":15,"value":2239},"SPIR-V Changes",{"type":10,"tag":11,"props":2241,"children":2242},{},[2243],{"type":15,"value":2244},"One new capability is added gating all of the new functionality:",{"type":10,"tag":11,"props":2246,"children":2247},{},[2248],{"type":15,"value":2249},"MeshShadingEXT",{"type":10,"tag":11,"props":2251,"children":2252},{},[2253,2255,2261],{"type":15,"value":2254},"Two new execution models are added, corresponding to the two ",{"type":10,"tag":103,"props":2256,"children":2258},{"href":2257},"/404#_new_shaders",[2259],{"type":15,"value":2260},"xref::name::_new_shaders",{"type":15,"value":2262}," added by this extension:",{"type":10,"tag":11,"props":2264,"children":2265},{},[2266],{"type":15,"value":2267},"TaskEXT\nMeshEXT",{"type":10,"tag":11,"props":2269,"children":2270},{},[2271],{"type":15,"value":2272},"Task shader output/mesh shader input payloads are declared in a new storage class:",{"type":10,"tag":11,"props":2274,"children":2275},{},[2276],{"type":15,"value":2277},"TaskPayloadWorkgroupEXT",{"type":10,"tag":11,"props":2279,"children":2280},{},[2281],{"type":15,"value":2282},"Variables in this storage class are accessible by all invocations in a workgroup in a task shader, and is broadcast to all invocations in workgroups dispatched by the same task shader workgroup where it is read-only.",{"type":10,"tag":11,"props":2284,"children":2285},{},[2286,2288,2293,2295,2300,2301,2307,2309,2314],{"type":15,"value":2287},"In task shaders, ",{"type":10,"tag":150,"props":2289,"children":2291},{"className":2290},[],[2292],{"type":15,"value":2277},{"type":15,"value":2294}," is a hybrid of ",{"type":10,"tag":150,"props":2296,"children":2298},{"className":2297},[],[2299],{"type":15,"value":155},{"type":15,"value":110},{"type":10,"tag":150,"props":2302,"children":2304},{"className":2303},[],[2305],{"type":15,"value":2306},"Workgroup",{"type":15,"value":2308}," storage classes. It supports all usual operations ",{"type":10,"tag":150,"props":2310,"children":2312},{"className":2311},[],[2313],{"type":15,"value":2306},{"type":15,"value":2315}," supports, with the caveats of:",{"type":10,"tag":45,"props":2317,"children":2318},{},[2319,2330,2347],{"type":10,"tag":49,"props":2320,"children":2321},{},[2322,2324],{"type":15,"value":2323},"No explicit memory layout support with ",{"type":10,"tag":150,"props":2325,"children":2327},{"className":2326},[],[2328],{"type":15,"value":2329},"VK_KHR_workgroup_memory_explicit_layout",{"type":10,"tag":49,"props":2331,"children":2332},{},[2333,2335,2340,2342],{"type":15,"value":2334},"Can be declared independently of ",{"type":10,"tag":150,"props":2336,"children":2338},{"className":2337},[],[2339],{"type":15,"value":2306},{"type":15,"value":2341},", meaning local scratch workgroup memory can still be used with ",{"type":10,"tag":150,"props":2343,"children":2345},{"className":2344},[],[2346],{"type":15,"value":2329},{"type":10,"tag":49,"props":2348,"children":2349},{},[2350,2352,2357,2359,2364],{"type":15,"value":2351},"Has two separate limits for size, ",{"type":10,"tag":150,"props":2353,"children":2355},{"className":2354},[],[2356],{"type":15,"value":1748},{"type":15,"value":2358}," for its size in isolation, and ",{"type":10,"tag":150,"props":2360,"children":2362},{"className":2361},[],[2363],{"type":15,"value":1770},{"type":15,"value":2365}," for the combined size",{"type":10,"tag":11,"props":2367,"children":2368},{},[2369],{"type":15,"value":2370},"Mesh shaders declare the type of primitive being output by way of three execution modes, two of which are introduced by this extension:",{"type":10,"tag":11,"props":2372,"children":2373},{},[2374],{"type":15,"value":2375},"OutputPoints\nOutputLinesEXT\nOutputTrianglesEXT",{"type":10,"tag":11,"props":2377,"children":2378},{},[2379],{"type":15,"value":2380},"Mesh shaders declare the maximum number of vertex and primitives the shader will ever emit for the invocation group by way of two execution modes, one of which is introduced by this extension:",{"type":10,"tag":11,"props":2382,"children":2383},{},[2384],{"type":15,"value":2385},"OutputVertices\nOutputPrimitivesEXT",{"type":10,"tag":11,"props":2387,"children":2388},{},[2389],{"type":15,"value":2390},"A new decoration is added to for mesh shader outputs/fragment shader inputs to indicate per-primitive data rather than per-vertex data:",{"type":10,"tag":11,"props":2392,"children":2393},{},[2394],{"type":15,"value":2395},"PerPrimitiveEXT",{"type":10,"tag":11,"props":2397,"children":2398},{},[2399],{"type":15,"value":2400},"New per-primitive built-ins are added:",{"type":10,"tag":11,"props":2402,"children":2403},{},[2404],{"type":15,"value":2405},"PrimitivePointIndicesEXT\nPrimitiveLineIndicesEXT\nPrimitiveTriangleIndicesEXT\nCullPrimitiveEXT",{"type":10,"tag":11,"props":2407,"children":2408},{},[2409,2411,2417,2419,2425],{"type":15,"value":2410},"Each of the ",{"type":10,"tag":150,"props":2412,"children":2414},{"className":2413},[],[2415],{"type":15,"value":2416},"Primitive*IndicesEXT",{"type":15,"value":2418}," built-ins is used when the corresponding execution mode is specified, declared as scalars or vectors with a number of components equal to the number of vertices in the primitive type.\n",{"type":10,"tag":150,"props":2420,"children":2422},{"className":2421},[],[2423],{"type":15,"value":2424},"CullPrimitiveEXT",{"type":15,"value":2426}," is a per-primitive boolean value indicating to the implementation that its corresponding primitive must not be rasterized and is instead discarded with no further processing once emitted.",{"type":10,"tag":11,"props":2428,"children":2429},{},[2430],{"type":15,"value":2431},"A new instruction is added to task shaders to launch mesh shader workgroups:",{"type":10,"tag":2433,"props":2434,"children":2440},"table",{"className":2435},[2436,2437,2438,2439],"tableblock","frame-all","grid-all","stretch",[2441,2466],{"type":10,"tag":2442,"props":2443,"children":2444},"colgroup",{},[2445,2450,2453,2457,2460,2463],{"type":10,"tag":2446,"props":2447,"children":2449},"col",{"style":2448},"width: 10%;",[],{"type":10,"tag":2446,"props":2451,"children":2452},{"style":2448},[],{"type":10,"tag":2446,"props":2454,"children":2456},{"style":2455},"width: 20%;",[],{"type":10,"tag":2446,"props":2458,"children":2459},{"style":2455},[],{"type":10,"tag":2446,"props":2461,"children":2462},{"style":2455},[],{"type":10,"tag":2446,"props":2464,"children":2465},{"style":2455},[],{"type":10,"tag":2467,"props":2468,"children":2469},"tbody",{},[2470,2581],{"type":10,"tag":2471,"props":2472,"children":2473},"tr",{},[2474,2567],{"type":10,"tag":2475,"props":2476,"children":2481},"td",{"className":2477,"colSpan":2480},[2436,2478,2479],"halign-left","valign-top","5",[2482],{"type":10,"tag":11,"props":2483,"children":2485},{"className":2484},[2436],[2486],{"type":10,"tag":2487,"props":2488,"children":2490},"anchor",{"xml:id":212,"xreflabel":2489},"[OpEmitMeshTasksEXT]",[2491,2497,2499,2501,2503,2508,2510,2514,2515,2517,2522,2524,2528,2530,2534,2536,2541,2543,2548,2550,2554,2556,2558,2560,2565],{"type":10,"tag":2492,"props":2493,"children":2495},"emphasis",{"role":2494},"strong",[2496],{"type":15,"value":212},{"type":15,"value":2498},"\nDefines the grid size of subsequent mesh shader workgroups to generate\nupon completion of the task shader workgroup.",{"type":15,"value":2500},"\n'Group Count X Y Z' must each be a 32-bit unsigned integer value.\nThey configure the number of local workgroups in each respective dimensions\nfor the launch of child mesh tasks. See Vulkan API specification for more detail.",{"type":15,"value":2502},"\n'Payload' is an optional pointer to the payload structure to pass to the generated mesh shader invocations.\n'Payload' must be the result of an ",{"type":10,"tag":2492,"props":2504,"children":2505},{"role":2494},[2506],{"type":15,"value":2507},"OpVariable",{"type":15,"value":2509}," with a storage class of ",{"type":10,"tag":2492,"props":2511,"children":2512},{"role":2494},[2513],{"type":15,"value":2277},{"type":15,"value":118},{"type":15,"value":2516},"\nThe arguments are taken from the first invocation in each workgroup.\nAny invocation must execute this instruction exactly once and under uniform\ncontrol flow.\nThis instruction also serves as an ",{"type":10,"tag":2492,"props":2518,"children":2519},{"role":2494},[2520],{"type":15,"value":2521},"OpControlBarrier",{"type":15,"value":2523}," instruction, and also\nperforms and adheres to the description and semantics of an ",{"type":10,"tag":2492,"props":2525,"children":2526},{"role":2494},[2527],{"type":15,"value":2521},{"type":15,"value":2529},"\ninstruction with the 'Execution' and 'Memory' operands set to ",{"type":10,"tag":2492,"props":2531,"children":2532},{"role":2494},[2533],{"type":15,"value":2306},{"type":15,"value":2535}," and\nthe 'Semantics' operand set to a combination of ",{"type":10,"tag":2492,"props":2537,"children":2538},{"role":2494},[2539],{"type":15,"value":2540},"WorkgroupMemory",{"type":15,"value":2542}," and\n",{"type":10,"tag":2492,"props":2544,"children":2545},{"role":2494},[2546],{"type":15,"value":2547},"AcquireRelease",{"type":15,"value":2549},".\nCeases all further processing: Only instructions executed before\n",{"type":10,"tag":2492,"props":2551,"children":2552},{"role":2494},[2553],{"type":15,"value":212},{"type":15,"value":2555}," have observable side effects.",{"type":15,"value":2557},"\nThis instruction must be the last instruction in a block.",{"type":15,"value":2559},"\nThis instruction is only valid in the ",{"type":10,"tag":2492,"props":2561,"children":2562},{"role":2494},[2563],{"type":15,"value":2564},"TaskEXT",{"type":15,"value":2566}," Execution Model.",{"type":10,"tag":2475,"props":2568,"children":2570},{"className":2569},[2436,2478,2479],[2571],{"type":10,"tag":11,"props":2572,"children":2574},{"className":2573},[2436],[2575,2577],{"type":15,"value":2576},"Capability:",{"type":10,"tag":2492,"props":2578,"children":2579},{"role":2494},[2580],{"type":15,"value":2249},{"type":10,"tag":2471,"props":2582,"children":2583},{},[2584,2594,2604,2616,2627,2638],{"type":10,"tag":2475,"props":2585,"children":2587},{"className":2586},[2436,2478,2479],[2588],{"type":10,"tag":11,"props":2589,"children":2591},{"className":2590},[2436],[2592],{"type":15,"value":2593},"4 + variable",{"type":10,"tag":2475,"props":2595,"children":2597},{"className":2596},[2436,2478,2479],[2598],{"type":10,"tag":11,"props":2599,"children":2601},{"className":2600},[2436],[2602],{"type":15,"value":2603},"5294",{"type":10,"tag":2475,"props":2605,"children":2607},{"className":2606},[2436,2478,2479],[2608],{"type":10,"tag":11,"props":2609,"children":2611},{"className":2610},[2436],[2612,2614],{"type":15,"value":2613},"'\u003Cid>'",{"type":15,"value":2615},"\n'Group Count X'",{"type":10,"tag":2475,"props":2617,"children":2619},{"className":2618},[2436,2478,2479],[2620],{"type":10,"tag":11,"props":2621,"children":2623},{"className":2622},[2436],[2624,2625],{"type":15,"value":2613},{"type":15,"value":2626},"\n'Group Count Y'",{"type":10,"tag":2475,"props":2628,"children":2630},{"className":2629},[2436,2478,2479],[2631],{"type":10,"tag":11,"props":2632,"children":2634},{"className":2633},[2436],[2635,2636],{"type":15,"value":2613},{"type":15,"value":2637},"\n'Group Count Z'",{"type":10,"tag":2475,"props":2639,"children":2641},{"className":2640},[2436,2478,2479],[2642],{"type":10,"tag":11,"props":2643,"children":2645},{"className":2644},[2436],[2646,2648,2650],{"type":15,"value":2647},"Optional",{"type":15,"value":2649},"\n'\u003Cid>'",{"type":15,"value":2651},"\n'Payload'",{"type":10,"tag":11,"props":2653,"children":2654},{},[2655],{"type":15,"value":2656},"A new mesh shader instruction is added to set the number of actual primitives and vertices that a mesh shader writes, avoiding unnecessary allocations or processing by the implementation:",{"type":10,"tag":2433,"props":2658,"children":2660},{"className":2659},[2436,2437,2438,2439],[2661,2678],{"type":10,"tag":2442,"props":2662,"children":2663},{},[2664,2668,2671,2675],{"type":10,"tag":2446,"props":2665,"children":2667},{"style":2666},"width: 12.5%;",[],{"type":10,"tag":2446,"props":2669,"children":2670},{"style":2666},[],{"type":10,"tag":2446,"props":2672,"children":2674},{"style":2673},"width: 37.5%;",[],{"type":10,"tag":2446,"props":2676,"children":2677},{"style":2673},[],{"type":10,"tag":2467,"props":2679,"children":2680},{},[2681,2728],{"type":10,"tag":2471,"props":2682,"children":2683},{},[2684,2715],{"type":10,"tag":2475,"props":2685,"children":2687},{"className":2686,"colSpan":1336},[2436,2478,2479],[2688],{"type":10,"tag":11,"props":2689,"children":2691},{"className":2690},[2436],[2692],{"type":10,"tag":2487,"props":2693,"children":2695},{"xml:id":178,"xreflabel":2694},"[OpSetMeshOutputsEXT]",[2696,2700,2702,2704,2706,2708,2709,2714],{"type":10,"tag":2492,"props":2697,"children":2698},{"role":2494},[2699],{"type":15,"value":178},{"type":15,"value":2701},"\nSets the actual output size of the primitives and vertices that the mesh shader\nworkgroup will emit upon completion.",{"type":15,"value":2703},"\n'Vertex Count' must be a 32-bit unsigned integer value.\nIt defines the array size of per-vertex outputs.",{"type":15,"value":2705},"\n'Primitive Count' must a 32-bit unsigned integer value.\nIt defines the array size of per-primitive outputs.",{"type":15,"value":2707},"\nThe arguments are taken from the first invocation in each workgroup.\nAny invocation must execute this instruction no more than once and under\nuniform control flow.\nThere must not be any control flow path to an output write that is not preceded\nby this instruction.",{"type":15,"value":2559},{"type":10,"tag":2492,"props":2710,"children":2711},{"role":2494},[2712],{"type":15,"value":2713},"MeshEXT",{"type":15,"value":2566},{"type":10,"tag":2475,"props":2716,"children":2718},{"className":2717},[2436,2478,2479],[2719],{"type":10,"tag":11,"props":2720,"children":2722},{"className":2721},[2436],[2723,2724],{"type":15,"value":2576},{"type":10,"tag":2492,"props":2725,"children":2726},{"role":2494},[2727],{"type":15,"value":2249},{"type":10,"tag":2471,"props":2729,"children":2730},{},[2731,2740,2750,2761],{"type":10,"tag":2475,"props":2732,"children":2734},{"className":2733},[2436,2478,2479],[2735],{"type":10,"tag":11,"props":2736,"children":2738},{"className":2737},[2436],[2739],{"type":15,"value":1336},{"type":10,"tag":2475,"props":2741,"children":2743},{"className":2742},[2436,2478,2479],[2744],{"type":10,"tag":11,"props":2745,"children":2747},{"className":2746},[2436],[2748],{"type":15,"value":2749},"5295",{"type":10,"tag":2475,"props":2751,"children":2753},{"className":2752},[2436,2478,2479],[2754],{"type":10,"tag":11,"props":2755,"children":2757},{"className":2756},[2436],[2758,2759],{"type":15,"value":2613},{"type":15,"value":2760},"\n'Vertex Count'",{"type":10,"tag":2475,"props":2762,"children":2764},{"className":2763},[2436,2478,2479],[2765],{"type":10,"tag":11,"props":2766,"children":2768},{"className":2767},[2436],[2769,2770],{"type":15,"value":2613},{"type":15,"value":2771},"\n'Primitive Count'",{"type":10,"tag":11,"props":2773,"children":2774},{},[2775],{"type":15,"value":2776},"This instruction must be called before writing to mesh shader outputs.",{"type":10,"tag":91,"props":2778,"children":2780},{"id":2779},"_glsl_changes",[2781],{"type":15,"value":2782},"GLSL Changes",{"type":10,"tag":11,"props":2784,"children":2785},{},[2786],{"type":15,"value":2787},"Mesh shaders defined in GLSL the same as compute shaders, with the addition of access to shader outputs normally available in vertex shaders and the following new features:",{"type":10,"tag":322,"props":2789,"children":2793},{"className":2790,"code":2791,"language":2792,"meta":327,"style":327},"language-glsl shiki shiki-themes github-light-default github-dark-default","out uint gl_PrimitivePointIndicesEXT[];\nout uvec2 gl_PrimitiveLineIndicesEXT[];\nout uvec3 gl_PrimitiveTriangleIndicesEXT[];\n","glsl",[2794],{"type":10,"tag":150,"props":2795,"children":2796},{"__ignoreMap":327},[2797,2824,2849],{"type":10,"tag":333,"props":2798,"children":2799},{"class":335,"line":336},[2800,2805,2810,2815,2820],{"type":10,"tag":333,"props":2801,"children":2802},{"style":346},[2803],{"type":15,"value":2804},"out",{"type":10,"tag":333,"props":2806,"children":2807},{"style":346},[2808],{"type":15,"value":2809}," uint",{"type":10,"tag":333,"props":2811,"children":2812},{"style":340},[2813],{"type":15,"value":2814}," gl_PrimitivePointIndicesEXT",{"type":10,"tag":333,"props":2816,"children":2817},{"style":346},[2818],{"type":15,"value":2819},"[]",{"type":10,"tag":333,"props":2821,"children":2822},{"style":340},[2823],{"type":15,"value":520},{"type":10,"tag":333,"props":2825,"children":2826},{"class":335,"line":368},[2827,2831,2836,2841,2845],{"type":10,"tag":333,"props":2828,"children":2829},{"style":346},[2830],{"type":15,"value":2804},{"type":10,"tag":333,"props":2832,"children":2833},{"style":346},[2834],{"type":15,"value":2835}," uvec2",{"type":10,"tag":333,"props":2837,"children":2838},{"style":340},[2839],{"type":15,"value":2840}," gl_PrimitiveLineIndicesEXT",{"type":10,"tag":333,"props":2842,"children":2843},{"style":346},[2844],{"type":15,"value":2819},{"type":10,"tag":333,"props":2846,"children":2847},{"style":340},[2848],{"type":15,"value":520},{"type":10,"tag":333,"props":2850,"children":2851},{"class":335,"line":753},[2852,2856,2861,2866,2870],{"type":10,"tag":333,"props":2853,"children":2854},{"style":346},[2855],{"type":15,"value":2804},{"type":10,"tag":333,"props":2857,"children":2858},{"style":346},[2859],{"type":15,"value":2860}," uvec3",{"type":10,"tag":333,"props":2862,"children":2863},{"style":340},[2864],{"type":15,"value":2865}," gl_PrimitiveTriangleIndicesEXT",{"type":10,"tag":333,"props":2867,"children":2868},{"style":346},[2869],{"type":15,"value":2819},{"type":10,"tag":333,"props":2871,"children":2872},{"style":340},[2873],{"type":15,"value":520},{"type":10,"tag":11,"props":2875,"children":2876},{},[2877],{"type":15,"value":2878},"These built-ins correspond to the identically named SPIR-V constructs, and are written in the same way.\nApplications should access only the index output corresponding to the primitive type declared by the following layout qualifiers:",{"type":10,"tag":322,"props":2880,"children":2882},{"className":2790,"code":2881,"language":2792,"meta":327,"style":327},"points\nlines\ntriangles\n",[2883],{"type":10,"tag":150,"props":2884,"children":2885},{"__ignoreMap":327},[2886,2894,2902],{"type":10,"tag":333,"props":2887,"children":2888},{"class":335,"line":336},[2889],{"type":10,"tag":333,"props":2890,"children":2891},{"style":340},[2892],{"type":15,"value":2893},"points\n",{"type":10,"tag":333,"props":2895,"children":2896},{"class":335,"line":368},[2897],{"type":10,"tag":333,"props":2898,"children":2899},{"style":340},[2900],{"type":15,"value":2901},"lines\n",{"type":10,"tag":333,"props":2903,"children":2904},{"class":335,"line":753},[2905],{"type":10,"tag":333,"props":2906,"children":2907},{"style":340},[2908],{"type":15,"value":2909},"triangles\n",{"type":10,"tag":11,"props":2911,"children":2912},{},[2913,2915,2921],{"type":15,"value":2914},"Each layout qualifier is declared as ",{"type":10,"tag":150,"props":2916,"children":2918},{"className":2917},[],[2919],{"type":15,"value":2920},"layout(\u003Cqualifier>) out;",{"type":15,"value":118},{"type":10,"tag":11,"props":2923,"children":2924},{},[2925],{"type":15,"value":2926},"A new auxiliary storage qualifier can be added to interface variables to indicate that they are per-primitive rate:",{"type":10,"tag":322,"props":2928,"children":2930},{"className":2790,"code":2929,"language":2792,"meta":327,"style":327},"perprimitiveEXT\n",[2931],{"type":10,"tag":150,"props":2932,"children":2933},{"__ignoreMap":327},[2934],{"type":10,"tag":333,"props":2935,"children":2936},{"class":335,"line":336},[2937],{"type":10,"tag":333,"props":2938,"children":2939},{"style":340},[2940],{"type":15,"value":2929},{"type":10,"tag":11,"props":2942,"children":2943},{},[2944],{"type":15,"value":2945},"New write-only output blocks are defined for built-in output values from mesh shaders:",{"type":10,"tag":322,"props":2947,"children":2949},{"className":2790,"code":2948,"language":2792,"meta":327,"style":327},"out gl_MeshPerVertexEXT {\n vec4 gl_Position;\n float gl_PointSize;\n float gl_ClipDistance[];\n float gl_CullDistance[];\n} gl_MeshVerticesEXT[];\n\nperprimitiveEXT out gl_MeshPerPrimitiveEXT {\n int gl_PrimitiveID;\n int gl_Layer;\n int gl_ViewportIndex;\n bool gl_CullPrimitiveEXT;\n int gl_PrimitiveShadingRateEXT;\n} gl_MeshPrimitivesEXT[];\n",[2950],{"type":10,"tag":150,"props":2951,"children":2952},{"__ignoreMap":327},[2953,2965,2973,2986,3006,3026,3042,3049,3066,3079,3091,3103,3116,3128],{"type":10,"tag":333,"props":2954,"children":2955},{"class":335,"line":336},[2956,2960],{"type":10,"tag":333,"props":2957,"children":2958},{"style":346},[2959],{"type":15,"value":2804},{"type":10,"tag":333,"props":2961,"children":2962},{"style":340},[2963],{"type":15,"value":2964}," gl_MeshPerVertexEXT {\n",{"type":10,"tag":333,"props":2966,"children":2967},{"class":335,"line":368},[2968],{"type":10,"tag":333,"props":2969,"children":2970},{"style":340},[2971],{"type":15,"value":2972}," vec4 gl_Position;\n",{"type":10,"tag":333,"props":2974,"children":2975},{"class":335,"line":753},[2976,2981],{"type":10,"tag":333,"props":2977,"children":2978},{"style":346},[2979],{"type":15,"value":2980}," float",{"type":10,"tag":333,"props":2982,"children":2983},{"style":340},[2984],{"type":15,"value":2985}," gl_PointSize;\n",{"type":10,"tag":333,"props":2987,"children":2988},{"class":335,"line":771},[2989,2993,2998,3002],{"type":10,"tag":333,"props":2990,"children":2991},{"style":346},[2992],{"type":15,"value":2980},{"type":10,"tag":333,"props":2994,"children":2995},{"style":340},[2996],{"type":15,"value":2997}," gl_ClipDistance",{"type":10,"tag":333,"props":2999,"children":3000},{"style":346},[3001],{"type":15,"value":2819},{"type":10,"tag":333,"props":3003,"children":3004},{"style":340},[3005],{"type":15,"value":520},{"type":10,"tag":333,"props":3007,"children":3008},{"class":335,"line":788},[3009,3013,3018,3022],{"type":10,"tag":333,"props":3010,"children":3011},{"style":346},[3012],{"type":15,"value":2980},{"type":10,"tag":333,"props":3014,"children":3015},{"style":340},[3016],{"type":15,"value":3017}," gl_CullDistance",{"type":10,"tag":333,"props":3019,"children":3020},{"style":346},[3021],{"type":15,"value":2819},{"type":10,"tag":333,"props":3023,"children":3024},{"style":340},[3025],{"type":15,"value":520},{"type":10,"tag":333,"props":3027,"children":3028},{"class":335,"line":806},[3029,3034,3038],{"type":10,"tag":333,"props":3030,"children":3031},{"style":340},[3032],{"type":15,"value":3033},"} gl_MeshVerticesEXT",{"type":10,"tag":333,"props":3035,"children":3036},{"style":346},[3037],{"type":15,"value":2819},{"type":10,"tag":333,"props":3039,"children":3040},{"style":340},[3041],{"type":15,"value":520},{"type":10,"tag":333,"props":3043,"children":3044},{"class":335,"line":816},[3045],{"type":10,"tag":333,"props":3046,"children":3047},{"emptyLinePlaceholder":810},[3048],{"type":15,"value":813},{"type":10,"tag":333,"props":3050,"children":3051},{"class":335,"line":841},[3052,3057,3061],{"type":10,"tag":333,"props":3053,"children":3054},{"style":340},[3055],{"type":15,"value":3056},"perprimitiveEXT ",{"type":10,"tag":333,"props":3058,"children":3059},{"style":346},[3060],{"type":15,"value":2804},{"type":10,"tag":333,"props":3062,"children":3063},{"style":340},[3064],{"type":15,"value":3065}," gl_MeshPerPrimitiveEXT {\n",{"type":10,"tag":333,"props":3067,"children":3068},{"class":335,"line":857},[3069,3074],{"type":10,"tag":333,"props":3070,"children":3071},{"style":346},[3072],{"type":15,"value":3073}," int",{"type":10,"tag":333,"props":3075,"children":3076},{"style":340},[3077],{"type":15,"value":3078}," gl_PrimitiveID;\n",{"type":10,"tag":333,"props":3080,"children":3081},{"class":335,"line":875},[3082,3086],{"type":10,"tag":333,"props":3083,"children":3084},{"style":346},[3085],{"type":15,"value":3073},{"type":10,"tag":333,"props":3087,"children":3088},{"style":340},[3089],{"type":15,"value":3090}," gl_Layer;\n",{"type":10,"tag":333,"props":3092,"children":3093},{"class":335,"line":893},[3094,3098],{"type":10,"tag":333,"props":3095,"children":3096},{"style":346},[3097],{"type":15,"value":3073},{"type":10,"tag":333,"props":3099,"children":3100},{"style":340},[3101],{"type":15,"value":3102}," gl_ViewportIndex;\n",{"type":10,"tag":333,"props":3104,"children":3105},{"class":335,"line":910},[3106,3111],{"type":10,"tag":333,"props":3107,"children":3108},{"style":346},[3109],{"type":15,"value":3110}," bool",{"type":10,"tag":333,"props":3112,"children":3113},{"style":340},[3114],{"type":15,"value":3115}," gl_CullPrimitiveEXT;\n",{"type":10,"tag":333,"props":3117,"children":3118},{"class":335,"line":927},[3119,3123],{"type":10,"tag":333,"props":3120,"children":3121},{"style":346},[3122],{"type":15,"value":3073},{"type":10,"tag":333,"props":3124,"children":3125},{"style":340},[3126],{"type":15,"value":3127}," gl_PrimitiveShadingRateEXT;\n",{"type":10,"tag":333,"props":3129,"children":3130},{"class":335,"line":935},[3131,3136,3140],{"type":10,"tag":333,"props":3132,"children":3133},{"style":340},[3134],{"type":15,"value":3135},"} gl_MeshPrimitivesEXT",{"type":10,"tag":333,"props":3137,"children":3138},{"style":346},[3139],{"type":15,"value":2819},{"type":10,"tag":333,"props":3141,"children":3142},{"style":340},[3143],{"type":15,"value":520},{"type":10,"tag":11,"props":3145,"children":3146},{},[3147],{"type":15,"value":3148},"Note that some existing outputs that previously were associated by provoking vertices are now directly declared as per-primitive variables.",{"type":10,"tag":11,"props":3150,"children":3151},{},[3152],{"type":15,"value":3153},"Finally a new mesh-shader function is added:",{"type":10,"tag":322,"props":3155,"children":3157},{"className":2790,"code":3156,"language":2792,"meta":327,"style":327}," void SetMeshOutputsEXT(uint vertexCount,\n uint primitiveCount)\n",[3158],{"type":10,"tag":150,"props":3159,"children":3160},{"__ignoreMap":327},[3161,3193],{"type":10,"tag":333,"props":3162,"children":3163},{"class":335,"line":336},[3164,3169,3174,3179,3184,3189],{"type":10,"tag":333,"props":3165,"children":3166},{"style":346},[3167],{"type":15,"value":3168}," void",{"type":10,"tag":333,"props":3170,"children":3171},{"style":724},[3172],{"type":15,"value":3173}," SetMeshOutputsEXT",{"type":10,"tag":333,"props":3175,"children":3176},{"style":340},[3177],{"type":15,"value":3178},"(",{"type":10,"tag":333,"props":3180,"children":3181},{"style":346},[3182],{"type":15,"value":3183},"uint",{"type":10,"tag":333,"props":3185,"children":3186},{"style":743},[3187],{"type":15,"value":3188}," vertexCount",{"type":10,"tag":333,"props":3190,"children":3191},{"style":340},[3192],{"type":15,"value":365},{"type":10,"tag":333,"props":3194,"children":3195},{"class":335,"line":368},[3196,3201,3206],{"type":10,"tag":333,"props":3197,"children":3198},{"style":346},[3199],{"type":15,"value":3200}," uint",{"type":10,"tag":333,"props":3202,"children":3203},{"style":743},[3204],{"type":15,"value":3205}," primitiveCount",{"type":10,"tag":333,"props":3207,"children":3208},{"style":340},[3209],{"type":15,"value":3210},")\n",{"type":10,"tag":11,"props":3212,"children":3213},{},[3214,3216,3221],{"type":15,"value":3215},"This function maps exactly to the ",{"type":10,"tag":150,"props":3217,"children":3219},{"className":3218},[],[3220],{"type":15,"value":178},{"type":15,"value":3222}," instruction - setting the number of valid vertices and primitives that are output by the mesh shader workgroup.",{"type":10,"tag":11,"props":3224,"children":3225},{},[3226,3228,3234],{"type":15,"value":3227},"Task shader payloads can be declared in task and mesh shaders using the new ",{"type":10,"tag":150,"props":3229,"children":3231},{"className":3230},[],[3232],{"type":15,"value":3233},"taskPayloadSharedEXT",{"type":15,"value":3235}," storage qualifier as follows:",{"type":10,"tag":322,"props":3237,"children":3239},{"className":2790,"code":3238,"language":2792,"meta":327,"style":327},"taskPayloadSharedEXT MyPayloadStruct {\n ...\n} payload;\n",[3240],{"type":10,"tag":150,"props":3241,"children":3242},{"__ignoreMap":327},[3243,3251,3259],{"type":10,"tag":333,"props":3244,"children":3245},{"class":335,"line":336},[3246],{"type":10,"tag":333,"props":3247,"children":3248},{"style":340},[3249],{"type":15,"value":3250},"taskPayloadSharedEXT MyPayloadStruct {\n",{"type":10,"tag":333,"props":3252,"children":3253},{"class":335,"line":368},[3254],{"type":10,"tag":333,"props":3255,"children":3256},{"style":340},[3257],{"type":15,"value":3258}," ...\n",{"type":10,"tag":333,"props":3260,"children":3261},{"class":335,"line":753},[3262],{"type":10,"tag":333,"props":3263,"children":3264},{"style":340},[3265],{"type":15,"value":3266},"} payload;\n",{"type":10,"tag":11,"props":3268,"children":3269},{},[3270,3272,3277],{"type":15,"value":3271},"Finally a new function corresponding to ",{"type":10,"tag":150,"props":3273,"children":3275},{"className":3274},[],[3276],{"type":15,"value":212},{"type":15,"value":3278}," is added to launch mesh workgroups:",{"type":10,"tag":322,"props":3280,"children":3282},{"className":2790,"code":3281,"language":2792,"meta":327,"style":327}," void EmitMeshTasksEXT(uint groupCountX,\n uint groupCountY,\n uint groupCountZ)\n",[3283],{"type":10,"tag":150,"props":3284,"children":3285},{"__ignoreMap":327},[3286,3315,3332],{"type":10,"tag":333,"props":3287,"children":3288},{"class":335,"line":336},[3289,3293,3298,3302,3306,3311],{"type":10,"tag":333,"props":3290,"children":3291},{"style":346},[3292],{"type":15,"value":3168},{"type":10,"tag":333,"props":3294,"children":3295},{"style":724},[3296],{"type":15,"value":3297}," EmitMeshTasksEXT",{"type":10,"tag":333,"props":3299,"children":3300},{"style":340},[3301],{"type":15,"value":3178},{"type":10,"tag":333,"props":3303,"children":3304},{"style":346},[3305],{"type":15,"value":3183},{"type":10,"tag":333,"props":3307,"children":3308},{"style":743},[3309],{"type":15,"value":3310}," groupCountX",{"type":10,"tag":333,"props":3312,"children":3313},{"style":340},[3314],{"type":15,"value":365},{"type":10,"tag":333,"props":3316,"children":3317},{"class":335,"line":368},[3318,3323,3328],{"type":10,"tag":333,"props":3319,"children":3320},{"style":346},[3321],{"type":15,"value":3322}," uint",{"type":10,"tag":333,"props":3324,"children":3325},{"style":743},[3326],{"type":15,"value":3327}," groupCountY",{"type":10,"tag":333,"props":3329,"children":3330},{"style":340},[3331],{"type":15,"value":365},{"type":10,"tag":333,"props":3333,"children":3334},{"class":335,"line":753},[3335,3339,3344],{"type":10,"tag":333,"props":3336,"children":3337},{"style":346},[3338],{"type":15,"value":3322},{"type":10,"tag":333,"props":3340,"children":3341},{"style":743},[3342],{"type":15,"value":3343}," groupCountZ",{"type":10,"tag":333,"props":3345,"children":3346},{"style":340},[3347],{"type":15,"value":3210},{"type":10,"tag":91,"props":3349,"children":3351},{"id":3350},"_hlsl_changes",[3352],{"type":15,"value":3353},"HLSL Changes",{"type":10,"tag":11,"props":3355,"children":3356},{},[3357,3359,3365],{"type":15,"value":3358},"The HLSL specification for mesh shaders is defined by Microsoft® here: ",{"type":10,"tag":103,"props":3360,"children":3363},{"href":3361,"rel":3362},"https://microsoft.github.io/DirectX-Specs/d3d/MeshShader.html",[315],[3364],{"type":15,"value":3361},{"type":15,"value":118},{"type":10,"tag":11,"props":3367,"children":3368},{},[3369,3371,3378,3380,3386,3388,3394],{"type":15,"value":3370},"Everything in that specification should work directly as described, with the exception of linking per-primitive interface variables between pixel and mesh shaders.\nMicrosoft defined the fragment/mesh interface to effectively be fixed up at link time - making no distinction between per-vertex and per-primitive variables in the pixel shader.\nThis works okay with monolithic pipeline construction, but with the addition of things like ",{"type":10,"tag":103,"props":3372,"children":3375},{"href":3373,"rel":3374},"https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_graphics_pipeline_library.html",[315],[3376],{"type":15,"value":3377},"VK_EXT_graphics_pipeline_library",{"type":15,"value":3379},", modifying this at link time would cause undesirable slowdown.\nAs a result, the Vulkan version of this feature requires the ",{"type":10,"tag":150,"props":3381,"children":3383},{"className":3382},[],[3384],{"type":15,"value":3385},"[[vk::perprimitive]]",{"type":15,"value":3387}," attribute on pixel shader inputs in order to generate a match with mesh shader outputs denoted with the ",{"type":10,"tag":150,"props":3389,"children":3391},{"className":3390},[],[3392],{"type":15,"value":3393},"primitives",{"type":15,"value":3395}," qualifier.",{"type":10,"tag":11,"props":3397,"children":3398},{},[3399,3401,3407,3409,3415],{"type":15,"value":3400},"Mapping to SPIR-V is largely performed identically to any other shader for both mesh and task shaders, with most new functionality mapping 1:1.\nOne outlier is in index generation - the primitive index outputs are denoted by a variable in the function signature preceded by ",{"type":10,"tag":150,"props":3402,"children":3404},{"className":3403},[],[3405],{"type":15,"value":3406},"out indices …​",{"type":15,"value":3408},".\nThe HLSL compiler should map this variable to the appropriate built-in value based on the selected ",{"type":10,"tag":150,"props":3410,"children":3412},{"className":3411},[],[3413],{"type":15,"value":3414},"outputtopology",{"type":15,"value":3395},{"type":10,"tag":11,"props":3417,"children":3418},{},[3419,3421,3426,3428,3434,3436,3441],{"type":15,"value":3420},"Another outlier is the groupshared task payload. In HLSL this is declared as groupshared, but must be declared in the ",{"type":10,"tag":150,"props":3422,"children":3424},{"className":3423},[],[3425],{"type":15,"value":2277},{"type":15,"value":3427}," storage class in SPIR-V.\nThe call to ",{"type":10,"tag":150,"props":3429,"children":3431},{"className":3430},[],[3432],{"type":15,"value":3433},"DispatchMesh()",{"type":15,"value":3435}," can inform the compiler which groupshared variable to promote to ",{"type":10,"tag":150,"props":3437,"children":3439},{"className":3438},[],[3440],{"type":15,"value":2277},{"type":15,"value":118},{"type":10,"tag":17,"props":3443,"children":3445},{"id":3444},"_issues",[3446],{"type":15,"value":3447},"Issues",{"type":10,"tag":91,"props":3449,"children":3451},{"id":3450},"_what_are_the_differences_to_vk_nv_mesh_shader",[3452],{"type":15,"value":3453},"What are the differences to VK_NV_mesh_shader?",{"type":10,"tag":11,"props":3455,"children":3456},{},[3457],{"type":15,"value":3458},"The following changes have been made to the API:",{"type":10,"tag":1693,"props":3460,"children":3461},{},[3462,3467,3472,3477,3482],{"type":10,"tag":49,"props":3463,"children":3464},{},[3465],{"type":15,"value":3466},"Drawing mesh tasks can now be done with a three-dimensional number of workgroups, rather than just one-dimensional.",{"type":10,"tag":49,"props":3468,"children":3469},{},[3470],{"type":15,"value":3471},"There are new device queries for the number of mesh primitives generated, and the number of shader invocations for the new shader stages.",{"type":10,"tag":49,"props":3473,"children":3474},{},[3475],{"type":15,"value":3476},"A new command token is added when interacting with VK_NV_device_generated_commands, as mesh shaders from each extension are incompatible.",{"type":10,"tag":49,"props":3478,"children":3479},{},[3480],{"type":15,"value":3481},"New optional features have been added for interactions with multiview, primitive fragment shading rate specification, and the new queries.",{"type":10,"tag":49,"props":3483,"children":3484},{},[3485,3487,3493],{"type":15,"value":3486},"Several more device properties are expressed to enable application developers to use mesh shaders optimally across vendors (see ",{"type":10,"tag":103,"props":3488,"children":3490},{"href":3489},"/404#_properties",[3491],{"type":15,"value":3492},"xref::name::_properties",{"type":15,"value":3494}," for details of how these are expressed and used).",{"type":10,"tag":11,"props":3496,"children":3497},{},[3498],{"type":15,"value":3499},"Note that the SPIR-V and GLSL expression of these extensions have changed, details of which are outlined in those extensions.\nThese changes aim to make the extension more portable across multiple vendors, and increase compatibility with the similar feature in Microsoft® DirectX®.",{"type":10,"tag":91,"props":3501,"children":3503},{"id":3502},"_what_are_the_differences_to_directx_12s_mesh_shaders",[3504],{"type":15,"value":3505},"What are the differences to DirectX® 12’s Mesh shaders?",{"type":10,"tag":11,"props":3507,"children":3508},{},[3509,3511,3516,3518,3523],{"type":15,"value":3510},"From the shader side, declaring mesh or amplification shaders in HLSL will have no meaningful differences - HLSL code written for DirectX should also work fine in Vulkan, with all the expected limits and features available.\nOne difference is present in pixel shaders though - any user-declared attributes with the \"primitive\" keyword in the mesh shader will need to be declared in the fragment shader with the ",{"type":10,"tag":150,"props":3512,"children":3514},{"className":3513},[],[3515],{"type":15,"value":3385},{"type":15,"value":3517}," attribute to facilitate linking.\nThis makes it so that the shader can be compiled without modifying the input interface, which is particularly important for interactions with extensions like ",{"type":10,"tag":103,"props":3519,"children":3521},{"href":3373,"rel":3520},[315],[3522],{"type":15,"value":3377},{"type":15,"value":118},{"type":10,"tag":11,"props":3525,"children":3526},{},[3527,3529,3534],{"type":15,"value":3528},"Some amount of massaging by the HLSL compiler will be required to the shader interfaces as DirectX does linking by name rather than location between mesh and pixel shaders, but the requirement to use ",{"type":10,"tag":150,"props":3530,"children":3532},{"className":3531},[],[3533],{"type":15,"value":3385},{"type":15,"value":3535}," allows the different attributes to continue using locations in Vulkan.",{"type":10,"tag":11,"props":3537,"children":3538},{},[3539,3541,3546],{"type":15,"value":3540},"The only notable difference on the API side is that Vulkan provides additional device properties that allow developers to tune their shaders to different vendors' fast paths, should they wish to.\nDetails of how these are expressed are detailed ",{"type":10,"tag":103,"props":3542,"children":3543},{"href":3489},[3544],{"type":15,"value":3545},"here",{"type":15,"value":118},{"type":10,"tag":91,"props":3548,"children":3550},{"id":3549},"_can_there_be_more_than_one_output_payload_in_a_task_shader",[3551],{"type":15,"value":3552},"Can there be more than one output payload in a task shader?",{"type":10,"tag":11,"props":3554,"children":3555},{},[3556],{"type":15,"value":3557},"There can only be one output payload per task shader; one declaration in HLSL or GLSL, and only one in the interface declaration for SPIR-V.\nMore would have no effect anyway, as only one payload can be emitted for mesh shader consumption.",{"type":10,"tag":91,"props":3559,"children":3561},{"id":3560},"_should_developers_port_everything_to_mesh_shading",[3562],{"type":15,"value":3563},"Should developers port everything to mesh shading?",{"type":10,"tag":11,"props":3565,"children":3566},{},[3567],{"type":15,"value":3568},"Mesh shaders are not necessarily a performance win compared to the existing pipeline - their purpose is to offer greater flexibility at decent performance, but this flexibility may come at a cost, and that cost is likely platform dependent.\nWhat task and mesh shading offer is a way to perform novel techniques efficiently compared to the hoops developers would previously have to jump through.\nTask and mesh shaders are a tool that should be used when it makes sense to do so - if a developer has a novel technique that would be easier to implement using task and mesh shaders, then they are likely the appropriate tool.\nMoving from an existing optimized pipeline without this consideration may lead to decreased performance.",{"type":10,"tag":91,"props":3570,"children":3572},{"id":3571},"_does_vertex_input_interface_state_interact_with_taskmesh_shaders",[3573],{"type":15,"value":3574},"Does vertex input interface state interact with task/mesh shaders?",{"type":10,"tag":11,"props":3576,"children":3577},{},[3578],{"type":15,"value":3579},"No, topology information is specified within the mesh shader, and data must be read or generated these shader stages programmatically.",{"type":10,"tag":3581,"props":3582,"children":3583},"style",{},[3584],{"type":15,"value":3585},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":327,"searchDepth":368,"depth":368,"links":3587},[3588,3589,3590,3597],{"id":19,"depth":368,"text":22},{"id":35,"depth":368,"text":38},{"id":86,"depth":368,"text":89,"children":3591},[3592,3593,3594,3595,3596],{"id":93,"depth":753,"text":96},{"id":296,"depth":753,"text":299},{"id":2236,"depth":753,"text":2239},{"id":2779,"depth":753,"text":2782},{"id":3350,"depth":753,"text":3353},{"id":3444,"depth":368,"text":3447,"children":3598},[3599,3600,3601,3602,3603],{"id":3450,"depth":753,"text":3453},{"id":3502,"depth":753,"text":3505},{"id":3549,"depth":753,"text":3552},{"id":3560,"depth":753,"text":3563},{"id":3571,"depth":753,"text":3574},"markdown",[3606,3611,3614,3617,3620,3623,3626,3629,3632,3635,3638,3641,3644,3647,3650,3653,3656,3659,3661,3664,3667,3670,3673,3676,3679,3682,3685,3688,3691,3694,3697,3700,3703,3706,3710,3714,3718,3722,3726,3730,3734,3738,3742,3746,3750,3754,3757,3761,3765,3769,3773,3776,3779,3782,3785,3788,3791,3794,3797],{"index":3607,"title":3608,"id":3609,"appendix":3610},0,"Preamble","preamble",false,{"index":336,"title":3612,"id":3613,"appendix":3610},"Introduction","introduction",{"index":368,"title":3615,"id":3616,"appendix":3610},"Fundamentals","fundamentals",{"index":753,"title":3618,"id":3619,"appendix":3610},"Initialization","initialization",{"index":771,"title":3621,"id":3622,"appendix":3610},"Devices and Queues","devsandqueues",{"index":788,"title":3624,"id":3625,"appendix":3610},"Command Buffers","commandbuffers",{"index":806,"title":3627,"id":3628,"appendix":3610},"Synchronization and Cache Control","synchronization",{"index":816,"title":3630,"id":3631,"appendix":3610},"Render Pass","renderpass",{"index":841,"title":3633,"id":3634,"appendix":3610},"Shaders","shaders",{"index":857,"title":3636,"id":3637,"appendix":3610},"Pipelines","pipelines",{"index":875,"title":3639,"id":3640,"appendix":3610},"Memory Allocation","memory",{"index":893,"title":3642,"id":3643,"appendix":3610},"Resource Creation","resources",{"index":910,"title":3645,"id":3646,"appendix":3610},"Samplers","samplers",{"index":927,"title":3648,"id":3649,"appendix":3610},"Resource Descriptors","descriptorsets",{"index":935,"title":3651,"id":3652,"appendix":3610},"Shader Interfaces","interfaces",{"index":960,"title":3654,"id":3655,"appendix":3610},"Image Operations","textures",{"index":976,"title":3657,"id":3658,"appendix":3610},"Fragment Density Map Operations","fragmentdensitymapops",{"index":992,"title":585,"id":3660,"appendix":3610},"queries",{"index":1008,"title":3662,"id":3663,"appendix":3610},"Clear Commands","clears",{"index":1025,"title":3665,"id":3666,"appendix":3610},"Copy Commands","copies",{"index":1042,"title":3668,"id":3669,"appendix":3610},"Drawing Commands","drawing",{"index":1059,"title":3671,"id":3672,"appendix":3610},"Fixed-Function Vertex Processing","fxvertex",{"index":1075,"title":3674,"id":3675,"appendix":3610},"Tessellation","tessellation",{"index":1083,"title":3677,"id":3678,"appendix":3610},"Geometry Shading","geometry",{"index":1102,"title":3680,"id":3681,"appendix":3610},"Mesh Shading","mesh",{"index":1115,"title":3683,"id":3684,"appendix":3610},"Cluster Culling Shading","cluster-culling",{"index":1128,"title":3686,"id":3687,"appendix":3610},"Fixed-Function Vertex Post-Processing","vertexpostproc",{"index":1141,"title":3689,"id":3690,"appendix":3610},"Rasterization","primsrast",{"index":1644,"title":3692,"id":3693,"appendix":3610},"Fragment Operations","fragops",{"index":1653,"title":3695,"id":3696,"appendix":3610},"The Framebuffer","framebuffer",{"index":1662,"title":3698,"id":3699,"appendix":3610},"Dispatching Commands","dispatch",{"index":1671,"title":3701,"id":3702,"appendix":3610},"Device-Generated Commands","device-generated-commands",{"index":1680,"title":3704,"id":3705,"appendix":3610},"Sparse Resources","sparsememory",{"index":3707,"title":3708,"id":3709,"appendix":3610},33,"Window System Integration (WSI)","wsi",{"index":3711,"title":3712,"id":3713,"appendix":3610},34,"Deferred Host Operations","deferred-host-operations",{"index":3715,"title":3716,"id":3717,"appendix":3610},35,"Private Data","private-data",{"index":3719,"title":3720,"id":3721,"appendix":3610},36,"Acceleration Structures","acceleration-structure",{"index":3723,"title":3724,"id":3725,"appendix":3610},37,"Micromap","micromap",{"index":3727,"title":3728,"id":3729,"appendix":3610},38,"Ray Traversal","ray-traversal",{"index":3731,"title":3732,"id":3733,"appendix":3610},39,"Ray Tracing","ray-tracing",{"index":3735,"title":3736,"id":3737,"appendix":3610},40,"Memory Decompression","memory-decompression",{"index":3739,"title":3740,"id":3741,"appendix":3610},41,"Video Coding","video-coding",{"index":3743,"title":3744,"id":3745,"appendix":3610},42,"Optical Flow","opticalflow",{"index":3747,"title":3748,"id":3749,"appendix":3610},43,"Execution Graphs","executiongraphs",{"index":3751,"title":3752,"id":3753,"appendix":3610},44,"Extending Vulkan","extendingvulkan",{"index":3755,"title":2081,"id":3756,"appendix":3610},45,"features",{"index":3758,"title":3759,"id":3760,"appendix":3610},46,"Limits","limits",{"index":3762,"title":3763,"id":3764,"appendix":3610},47,"Formats","formats",{"index":3766,"title":3767,"id":3768,"appendix":3610},48,"Additional Capabilities","capabilities",{"index":3770,"title":3771,"id":3772,"appendix":3610},49,"Debugging","debugging",{"index":3607,"title":3774,"id":3775,"appendix":810},"Vulkan Environment for SPIR-V","spirvenv",{"index":336,"title":3777,"id":3778,"appendix":810},"Memory Model","memory-model",{"index":368,"title":3780,"id":3781,"appendix":810},"Compressed Image Formats","compressed_image_formats",{"index":753,"title":3783,"id":3784,"appendix":810},"Core Revisions (Informative)","versions",{"index":771,"title":3786,"id":3787,"appendix":810},"Layers & Extensions (Informative)","extensions",{"index":788,"title":3789,"id":3790,"appendix":810},"API Boilerplate","boilerplate",{"index":806,"title":3792,"id":3793,"appendix":810},"Invariance","invariance",{"index":816,"title":3795,"id":3796,"appendix":810},"Lexicon","lexicon",{"index":841,"title":3798,"id":3799,"appendix":810},"Credits (Informative)","credits",[3801,3809,3813,3818,3822,3827,3830,3833,3836,3840,3844,3847,3850,3853,3855,3857,3860,3863,3867,3869,3873,3875,3878,3880,3883,3891,3895,3901,3905,3910,3912,3916,3922,3928,3934,3936,3939,3945,3948,3952,3958,3962,3966,3971,3975,3978,3981,3987,3990,3993,3997,4001,4005,4008,4010,4014,4019,4025,4028,4032,4035,4041,4044,4048,4051,4055,4058,4062,4065,4070,4074,4077,4082,4085,4088,4091,4095,4100,4105,4109,4112,4116,4120,4124,4128,4132,4135,4138,4142,4145,4148,4151,4155,4160,4164,4167,4171,4176,4180,4185,4188,4191,4196,4201,4205,4208,4212,4217,4220,4225,4230,4233,4236,4240,4244,4248,4253,4257,4260,4265,4269,4272,4276,4280,4284,4287,4289,4293,4296,4299,4302,4305,4308,4311,4314,4317,4320,4324,4328,4331,4334,4337,4340,4343,4346,4350,4354,4358,4361,4365,4368,4371,4374,4376,4380,4385,4389,4393,4395,4399,4402,4409,4413,4417,4421,4427,4430,4434,4438,4441,4444,4448,4453,4459,4463,4465,4470,4473,4478,4482,4487,4491,4495,4497,4500,4503,4505,4510,4513,4516,4521,4525,4529,4534,4538,4542,4544,4546,4549,4551,4554,4557,4561,4565,4567,4571,4574,4578,4581,4583,4586,4590,4592,4596,4599,4602,4605,4609,4612,4615,4617,4620,4622,4625,4629,4632,4634,4636,4638,4640,4644,4646,4649,4654,4658,4661,4663,4666,4668,4672,4675,4678,4681,4685,4688,4693,4697,4700,4704,4707,4710,4714,4718,4720,4725,4728,4732,4735,4738,4741,4743,4746,4750,4753,4757,4760,4764,4768,4771,4774,4777,4780,4784,4786,4789,4791,4796,4797,4801,4803,4806,4809,4812,4814,4818,4821,4824,4827,4831,4833,4835,4839,4841,4844,4848,4852,4854,4857,4860,4863,4866,4869,4873,4878,4883,4887,4893,4897,4900,4904,4908,4911,4915,4919,4922,4926,4929,4934,4938,4940,4946,4949,4952,4955,4959,4962,4966,4970,4974,4976,4979,4981,4984,4986,4988,4991,4994,4997,5000,5003,5006,5008,5012,5016,5020,5024,5027,5030,5034,5037,5041,5043,5047,5051,5054,5057,5060,5063,5066,5069,5072,5075,5078,5081,5084,5087,5090,5093,5097,5100,5104,5108,5111,5114,5117,5120,5123,5126,5130,5133,5136,5142,5146,5150,5154],{"number":3802,"type":3803,"author":3804,"provisional":810,"depends":3805,"platform":3806,"contact":3807,"extension":3808,"proposal":810},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":3810,"type":3803,"author":3804,"provisional":3610,"contact":3811,"extension":3812,"proposal":810},477,"Stu Smith","VK_AMD_anti_lag",{"number":3814,"type":3803,"author":3804,"provisional":3610,"specialuse":3815,"contact":3816,"extension":3817,"proposal":3610},180,"devtools","Daniel Rakos @drakos-amd","VK_AMD_buffer_marker",{"number":3819,"type":3803,"author":3804,"provisional":3610,"depends":3820,"contact":3807,"extension":3821,"proposal":3610},230,"VK_KHR_get_physical_device_properties2,VK_VERSION_1_1","VK_AMD_device_coherent_memory",{"number":3823,"type":3803,"author":3804,"provisional":3610,"depends":3824,"contact":3825,"extension":3826,"proposal":3610},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":3711,"type":3803,"author":3804,"promotedto":3828,"provisional":3610,"contact":3816,"extension":3829,"proposal":3610},"VK_KHR_draw_indirect_count","VK_AMD_draw_indirect_count",{"number":1128,"type":3803,"author":3804,"provisional":3610,"contact":3831,"extension":3832,"proposal":3610},"Dominik Witczak @dominikwitczakamd","VK_AMD_gcn_shader",{"number":3723,"type":3803,"author":3804,"deprecatedby":3834,"provisional":3610,"contact":3831,"extension":3835,"proposal":3610},"VK_KHR_shader_float16_int8","VK_AMD_gpu_shader_half_float",{"number":3837,"type":3803,"author":3804,"deprecatedby":3834,"provisional":3610,"contact":3838,"extension":3839,"proposal":3610},133,"Qun Lin @linqun","VK_AMD_gpu_shader_int16",{"number":3841,"type":3803,"author":3804,"provisional":3610,"contact":3842,"extension":3843,"proposal":3610},190,"Martin Dinkov @mdinkov","VK_AMD_memory_overallocation_behavior",{"number":3845,"type":3803,"author":3804,"provisional":3610,"contact":3825,"extension":3846,"proposal":3610},137,"VK_AMD_mixed_attachment_samples",{"number":3719,"type":3803,"author":3804,"obsoletedby":3848,"provisional":3610,"contact":3825,"extension":3849,"proposal":3610},"VK_KHR_maintenance1","VK_AMD_negative_viewport_height",{"number":3851,"type":3803,"author":3804,"provisional":3610,"contact":3825,"extension":3852,"proposal":3610},184,"VK_AMD_pipeline_compiler_control",{"number":1025,"type":3803,"author":3804,"provisional":3610,"contact":3816,"extension":3854,"proposal":3610},"VK_AMD_rasterization_order",{"number":3727,"type":3803,"author":3804,"provisional":3610,"contact":3831,"extension":3856,"proposal":3610},"VK_AMD_shader_ballot",{"number":3858,"type":3803,"author":3804,"provisional":3610,"depends":3820,"contact":3842,"extension":3859,"proposal":3610},186,"VK_AMD_shader_core_properties",{"number":3861,"type":3803,"author":3804,"provisional":3610,"depends":3859,"contact":3825,"extension":3862,"proposal":3610},228,"VK_AMD_shader_core_properties2",{"number":3864,"type":3803,"author":3865,"provisional":3610,"depends":3820,"contact":3807,"extension":3866,"proposal":810},322,"EXT","VK_AMD_shader_early_and_late_fragment_tests",{"number":1075,"type":3803,"author":3804,"provisional":3610,"contact":3838,"extension":3868,"proposal":3610},"VK_AMD_shader_explicit_vertex_parameter",{"number":3870,"type":3803,"author":3804,"provisional":3610,"contact":3871,"extension":3872,"proposal":3610},138,"Aaron Hagan @AaronHaganAMD","VK_AMD_shader_fragment_mask",{"number":3762,"type":3803,"author":3804,"provisional":3610,"contact":3831,"extension":3874,"proposal":3610},"VK_AMD_shader_image_load_store_lod",{"number":3747,"type":3803,"author":3804,"provisional":3610,"specialuse":3815,"contact":3876,"extension":3877,"proposal":3610},"Jaakko Konttinen @jaakkoamd","VK_AMD_shader_info",{"number":1059,"type":3803,"author":3804,"provisional":3610,"contact":3838,"extension":3879,"proposal":3610},"VK_AMD_shader_trinary_minmax",{"number":3743,"type":3803,"author":3804,"provisional":3610,"depends":3820,"contact":3881,"extension":3882,"proposal":3610},"Rex Xu @amdrexu","VK_AMD_texture_gather_bias_lod",{"number":3884,"type":3803,"author":3885,"provisional":3610,"depends":3886,"platform":3887,"specialuse":3888,"contact":3889,"extension":3890,"proposal":810},469,"ANDROID","VK_ANDROID_external_memory_android_hardware_buffer","android","glemulation","Chris Forbes @chrisforbes","VK_ANDROID_external_format_resolve",{"number":3892,"type":3803,"author":3885,"provisional":3610,"depends":3893,"platform":3887,"contact":3894,"extension":3886,"proposal":3610},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":3896,"type":3803,"author":3897,"promotedto":3898,"provisional":3610,"depends":3820,"contact":3899,"extension":3900,"proposal":3610},343,"ARM","VK_EXT_rasterization_order_attachment_access","Jan-Harald Fredriksen @janharaldfredriksen-arm","VK_ARM_rasterization_order_attachment_access",{"number":3902,"type":3803,"author":3897,"provisional":3610,"depends":3903,"contact":3899,"extension":3904,"proposal":810},425,"((VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_synchronization2),VK_VERSION_1_3","VK_ARM_render_pass_striped",{"number":3906,"type":3803,"author":3897,"provisional":3610,"depends":3907,"contact":3908,"extension":3909,"proposal":3610},418,"VK_ARM_shader_core_builtins","Kevin Petit @kpet","VK_ARM_scheduling_controls",{"number":3911,"type":3803,"author":3897,"provisional":3610,"depends":3820,"contact":3908,"extension":3907,"proposal":3610},498,{"number":3913,"type":3803,"author":3897,"provisional":3610,"depends":3914,"contact":3899,"extension":3915,"proposal":3610},416,"VK_VERSION_1_1","VK_ARM_shader_core_properties",{"number":3917,"type":3803,"author":3865,"promotedto":3918,"provisional":3610,"depends":3820,"ratified":3919,"contact":3920,"extension":3921,"proposal":3610},341,"VK_VERSION_1_3","vulkansc","Joshua Ashton @Joshua-Ashton","VK_EXT_4444_formats",{"number":3923,"type":3924,"author":3865,"provisional":3610,"depends":3925,"contact":3926,"extension":3927,"proposal":3610},286,"instance","VK_EXT_direct_mode_display","Drew DeVault sir@cmpwn.com","VK_EXT_acquire_drm_display",{"number":3929,"type":3924,"author":3930,"provisional":3610,"depends":3925,"platform":3931,"contact":3932,"extension":3933,"proposal":3610},90,"NV","xlib_xrandr","James Jones @cubanismo","VK_EXT_acquire_xlib_display",{"extension":3935,"proposal":3610},"VK_EXT_application_parameters",{"number":3937,"type":3803,"author":3897,"provisional":3610,"depends":3820,"contact":3899,"extension":3938,"proposal":3610},68,"VK_EXT_astc_decode_mode",{"number":3940,"type":3803,"author":3865,"provisional":3610,"depends":3941,"ratified":3942,"contact":3943,"extension":3944,"proposal":810},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":3946,"type":3803,"author":3865,"provisional":3610,"depends":3820,"ratified":3942,"contact":3920,"extension":3947,"proposal":810},340,"VK_EXT_attachment_feedback_loop_layout",{"number":3949,"type":3803,"author":3930,"provisional":3610,"depends":3820,"ratified":3942,"contact":3950,"extension":3951,"proposal":3610},149,"Jeff Bolz @jeffbolznv","VK_EXT_blend_operation_advanced",{"number":3953,"type":3803,"author":3865,"provisional":3610,"depends":3954,"specialuse":3955,"contact":3956,"extension":3957,"proposal":3610},412,"VK_EXT_custom_border_color","glemulation,d3demulation","Piers Daniell @pdaniell-nv","VK_EXT_border_color_swizzle",{"number":3959,"type":3803,"author":3930,"deprecatedby":3960,"provisional":3610,"depends":3820,"contact":3950,"extension":3961,"proposal":3610},245,"VK_KHR_buffer_device_address","VK_EXT_buffer_device_address",{"number":3963,"type":3803,"author":3865,"promotedto":3964,"provisional":3610,"depends":3820,"contact":3816,"extension":3965,"proposal":810},185,"VK_KHR_calibrated_timestamps","VK_EXT_calibrated_timestamps",{"number":3967,"type":3803,"author":3865,"provisional":3610,"depends":3820,"ratified":3968,"contact":3969,"extension":3970,"proposal":3610},382,"vulkan,vulkansc","Sharif Elcott @selcott","VK_EXT_color_write_enable",{"number":3972,"type":3803,"author":3930,"provisional":3610,"depends":3820,"contact":3973,"extension":3974,"proposal":3610},82,"Vikram Kushwaha @vkushwaha","VK_EXT_conditional_rendering",{"number":3976,"type":3803,"author":3930,"provisional":3610,"depends":3820,"ratified":3942,"contact":3956,"extension":3977,"proposal":3610},102,"VK_EXT_conservative_rasterization",{"number":3979,"type":3803,"author":3865,"provisional":3610,"depends":3820,"ratified":3968,"specialuse":3955,"contact":3980,"extension":3954,"proposal":3610},288,"Liam Middlebrook @liam-middlebrook",{"number":1083,"type":3803,"author":3982,"promotedto":3983,"provisional":3610,"depends":3984,"specialuse":3772,"contact":3985,"extension":3986,"proposal":3610},"Baldur Karlsson","VK_EXT_debug_utils","VK_EXT_debug_report","Baldur Karlsson @baldurk","VK_EXT_debug_marker",{"number":910,"type":3924,"author":3988,"deprecatedby":3983,"provisional":3610,"specialuse":3772,"contact":3989,"extension":3984,"proposal":3610},"GOOGLE","Courtney Goeltzenleuchter @courtney-g",{"number":3991,"type":3924,"author":3865,"provisional":3610,"specialuse":3772,"contact":3992,"extension":3983,"proposal":3610},129,"Mark Young @marky-lunarg",{"number":3994,"type":3803,"author":3865,"provisional":3610,"depends":3820,"ratified":3942,"specialuse":3995,"contact":3920,"extension":3996,"proposal":810},284,"d3demulation","VK_EXT_depth_bias_control",{"number":3998,"type":3803,"author":3865,"provisional":3610,"depends":3820,"contact":3999,"extension":4000,"proposal":3610},422,"Graeme Leese @gnl21","VK_EXT_depth_clamp_zero_one",{"number":4002,"type":3803,"author":3865,"provisional":3610,"depends":3820,"ratified":3942,"specialuse":3888,"contact":4003,"extension":4004,"proposal":3610},356,"Shahbaz Youssefi @syoussefi","VK_EXT_depth_clip_control",{"number":4006,"type":3803,"author":3865,"provisional":3610,"depends":3820,"ratified":3968,"specialuse":3995,"contact":3956,"extension":4007,"proposal":3610},103,"VK_EXT_depth_clip_enable",{"number":935,"type":3803,"author":3930,"provisional":3610,"ratified":3968,"contact":3956,"extension":4009,"proposal":3610},"VK_EXT_depth_range_unrestricted",{"number":4011,"type":3803,"author":3865,"provisional":3610,"depends":4012,"contact":3807,"extension":4013,"proposal":810},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":4015,"type":3803,"author":3930,"promotedto":4016,"provisional":3610,"depends":4017,"contact":3950,"extension":4018,"proposal":3610},162,"VK_VERSION_1_2","(VK_KHR_get_physical_device_properties2+VK_KHR_maintenance3),VK_VERSION_1_1","VK_EXT_descriptor_indexing",{"number":4020,"type":3803,"author":3865,"provisional":3610,"depends":4021,"specialuse":4022,"contact":4023,"extension":4024,"proposal":3610},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":4026,"type":3803,"author":3865,"provisional":3610,"depends":3820,"contact":4023,"extension":4027,"proposal":810},342,"VK_EXT_device_fault",{"number":4029,"type":3803,"author":3865,"provisional":3610,"depends":3820,"ratified":3942,"specialuse":3815,"contact":4030,"extension":4031,"proposal":3610},285,"Yiwei Zhang @zhangyiwei","VK_EXT_device_memory_report",{"number":4033,"type":3924,"author":3930,"provisional":3610,"depends":4034,"contact":3932,"extension":3925,"proposal":3610},89,"VK_KHR_display",{"number":4036,"type":3924,"author":3865,"provisional":3610,"depends":4037,"platform":4038,"contact":4039,"extension":4040,"proposal":3610},347,"VK_KHR_surface","directfb","Nicolas Caramelli @caramelli","VK_EXT_directfb_surface",{"number":4042,"type":3803,"author":3930,"provisional":3610,"depends":3820,"ratified":3968,"contact":3956,"extension":4043,"proposal":3610},100,"VK_EXT_discard_rectangles",{"number":4045,"type":3803,"author":3930,"provisional":3610,"depends":4046,"ratified":3942,"contact":3932,"extension":4047,"proposal":3610},92,"VK_EXT_display_surface_counter+VK_KHR_swapchain","VK_EXT_display_control",{"number":4049,"type":3924,"author":3930,"provisional":3610,"depends":4034,"ratified":3942,"contact":3932,"extension":4050,"proposal":3610},91,"VK_EXT_display_surface_counter",{"number":4052,"type":3803,"author":3865,"provisional":3610,"depends":4053,"ratified":3942,"contact":3956,"extension":4054,"proposal":810},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":4056,"type":3803,"author":3865,"promotedto":3918,"provisional":3610,"depends":3820,"ratified":3919,"contact":3956,"extension":4057,"proposal":3610},268,"VK_EXT_extended_dynamic_state",{"number":4059,"type":3803,"author":3865,"promotedto":3918,"provisional":3610,"depends":3820,"ratified":3919,"contact":4060,"extension":4061,"proposal":3610},378,"Vikram Kushwaha @vkushwaha-nv","VK_EXT_extended_dynamic_state2",{"number":4063,"type":3803,"author":3930,"provisional":3610,"depends":3820,"ratified":3942,"contact":3956,"extension":4064,"proposal":810},456,"VK_EXT_extended_dynamic_state3",{"number":4066,"type":3803,"author":3865,"provisional":3610,"depends":4067,"ratified":3942,"contact":4068,"extension":4069,"proposal":810},454,"VK_KHR_external_memory,VK_VERSION_1_1","Lina Versace @versalinyaa","VK_EXT_external_memory_acquire_unmodified",{"number":4071,"type":3803,"author":3865,"provisional":3610,"depends":4072,"ratified":3968,"contact":4068,"extension":4073,"proposal":3610},126,"VK_KHR_external_memory_fd","VK_EXT_external_memory_dma_buf",{"number":4075,"type":3803,"author":3865,"provisional":3610,"depends":4067,"ratified":3968,"contact":3816,"extension":4076,"proposal":3610},179,"VK_EXT_external_memory_host",{"number":4078,"type":3803,"author":4079,"provisional":3610,"ratified":3942,"contact":4080,"extension":4081,"proposal":3610},171,"QCOM","Matthew Netsch @mnetsch","VK_EXT_filter_cubic",{"number":4083,"type":3803,"author":3865,"provisional":3610,"depends":3820,"contact":4080,"extension":4084,"proposal":3610},219,"VK_EXT_fragment_density_map",{"number":4086,"type":3803,"author":3865,"provisional":3610,"depends":4084,"contact":4080,"extension":4087,"proposal":3610},333,"VK_EXT_fragment_density_map2",{"number":4089,"type":3803,"author":3865,"provisional":3610,"depends":3820,"contact":3956,"extension":4090,"proposal":3610},252,"VK_EXT_fragment_shader_interlock",{"number":4092,"type":3803,"author":3865,"provisional":3610,"ratified":3942,"contact":4093,"extension":4094,"proposal":810},376,"James Fitzpatrick @jamesfitzpatrick","VK_EXT_frame_boundary",{"number":4096,"type":3803,"author":3865,"provisional":3610,"depends":4097,"platform":4098,"ratified":3942,"contact":3932,"extension":4099,"proposal":3610},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":4101,"type":3803,"author":3865,"promotedto":4102,"provisional":3610,"contact":4103,"extension":4104,"proposal":3610},175,"VK_KHR_global_priority","Andres Rodriguez @lostgoat","VK_EXT_global_priority",{"number":4106,"type":3803,"author":3865,"promotedto":4102,"provisional":3610,"depends":4107,"contact":4030,"extension":4108,"proposal":3610},389,"VK_EXT_global_priority+(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)","VK_EXT_global_priority_query",{"number":4110,"type":3803,"author":3804,"provisional":3610,"depends":4111,"contact":3807,"extension":3377,"proposal":810},321,"(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_pipeline_library",{"number":4113,"type":3803,"author":3988,"provisional":3610,"depends":4114,"ratified":3968,"contact":3989,"extension":4115,"proposal":3610},106,"VK_KHR_swapchain","VK_EXT_hdr_metadata",{"number":4117,"type":3924,"author":3865,"provisional":3610,"depends":4037,"contact":4118,"extension":4119,"proposal":3610},257,"Lisa Wu @chengtianww","VK_EXT_headless_surface",{"number":4121,"type":3803,"author":3865,"provisional":3610,"depends":4122,"ratified":3942,"contact":4003,"extension":4123,"proposal":810},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":4125,"type":3803,"author":3865,"promotedto":4016,"provisional":3610,"depends":3820,"contact":4126,"extension":4127,"proposal":3610},262,"Bas Nieuwenhuizen @BNieuwenhuizen","VK_EXT_host_query_reset",{"number":4129,"type":3803,"author":3865,"provisional":3610,"depends":4130,"specialuse":3888,"contact":3943,"extension":4131,"proposal":3610},394,"(VK_KHR_maintenance1+VK_KHR_get_physical_device_properties2),VK_VERSION_1_1","VK_EXT_image_2d_view_of_3d",{"number":4133,"type":3803,"author":3865,"provisional":3610,"depends":3820,"contact":3899,"extension":4134,"proposal":810},339,"VK_EXT_image_compression_control",{"number":4136,"type":3803,"author":3865,"provisional":3610,"depends":4134,"contact":3899,"extension":4137,"proposal":3610},438,"VK_EXT_image_compression_control_swapchain",{"number":4139,"type":3803,"author":3865,"provisional":3610,"depends":4140,"ratified":3942,"contact":4068,"extension":4141,"proposal":3610},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":4143,"type":3803,"author":3865,"promotedto":3918,"provisional":3610,"depends":3820,"ratified":3919,"contact":3999,"extension":4144,"proposal":3610},336,"VK_EXT_image_robustness",{"number":4146,"type":3803,"author":3865,"provisional":3610,"depends":4130,"specialuse":3995,"contact":3943,"extension":4147,"proposal":810},419,"VK_EXT_image_sliced_view_of_3d",{"number":4149,"type":3803,"author":3865,"provisional":3610,"depends":3820,"contact":3920,"extension":4150,"proposal":3610},392,"VK_EXT_image_view_min_lod",{"number":4152,"type":3803,"author":3865,"promotedto":4153,"provisional":3610,"depends":3820,"contact":3956,"extension":4154,"proposal":3610},266,"VK_KHR_index_type_uint8","VK_EXT_index_type_uint8",{"number":4156,"type":3803,"author":3865,"promotedto":3918,"provisional":3610,"depends":4157,"contact":4158,"extension":4159,"proposal":3610},139,"(VK_KHR_get_physical_device_properties2+VK_KHR_maintenance1),VK_VERSION_1_1","Daniel Rakos @aqnuep","VK_EXT_inline_uniform_block",{"number":4161,"type":3924,"author":3865,"provisional":3610,"ratified":3942,"contact":4162,"extension":4163,"proposal":810},497,"Christophe Riccio @christophe","VK_EXT_layer_settings",{"number":4165,"type":3803,"author":3865,"provisional":3610,"depends":3820,"specialuse":3888,"contact":4003,"extension":4166,"proposal":810},466,"VK_EXT_legacy_dithering",{"number":4168,"type":3803,"author":3865,"provisional":3610,"depends":4169,"ratified":3942,"specialuse":3888,"contact":3943,"extension":4170,"proposal":810},496,"VK_EXT_vertex_input_dynamic_state","VK_EXT_legacy_vertex_attributes",{"number":4172,"type":3803,"author":3865,"promotedto":4173,"provisional":3610,"depends":3820,"specialuse":4174,"contact":3950,"extension":4175,"proposal":3610},260,"VK_KHR_line_rasterization","cadsupport","VK_EXT_line_rasterization",{"number":4177,"type":3803,"author":3865,"promotedto":4178,"provisional":3610,"ratified":3942,"contact":4003,"extension":4179,"proposal":3610},401,"VK_KHR_load_store_op_none","VK_EXT_load_store_op_none",{"number":4181,"type":3803,"author":3865,"provisional":3610,"depends":4182,"ratified":3942,"contact":4183,"extension":4184,"proposal":810},273,"VK_KHR_map_memory2","Faith Ekstrand @gfxstrand","VK_EXT_map_memory_placed",{"number":4186,"type":3803,"author":3865,"provisional":3610,"depends":3820,"ratified":3942,"contact":3950,"extension":4187,"proposal":3610},238,"VK_EXT_memory_budget",{"number":4189,"type":3803,"author":3865,"provisional":3610,"depends":3820,"ratified":3942,"contact":3950,"extension":4190,"proposal":3610},239,"VK_EXT_memory_priority",{"number":4192,"type":3803,"author":3865,"provisional":3610,"depends":4193,"contact":4194,"extension":4195,"proposal":810},329,"VK_KHR_spirv_1_4","Christoph Kubisch @pixeljetstream","VK_EXT_mesh_shader",{"number":4197,"type":3803,"author":3865,"provisional":3610,"platform":4198,"contact":4199,"extension":4200,"proposal":810},312,"metal","Bill Hollings @billhollings","VK_EXT_metal_objects",{"number":4202,"type":3924,"author":3865,"provisional":3610,"depends":4037,"platform":4198,"contact":4203,"extension":4204,"proposal":3610},218,"Dzmitry Malyshau @kvark","VK_EXT_metal_surface",{"number":4206,"type":3803,"author":3865,"provisional":3610,"depends":3820,"contact":3943,"extension":4207,"proposal":3610},393,"VK_EXT_multi_draw",{"number":4209,"type":3803,"author":3865,"provisional":3610,"depends":4210,"contact":4003,"extension":4211,"proposal":810},377,"(VK_KHR_create_renderpass2+VK_KHR_depth_stencil_resolve),VK_VERSION_1_2","VK_EXT_multisampled_render_to_single_sampled",{"number":4213,"type":3803,"author":3865,"provisional":3610,"depends":4214,"specialuse":3995,"contact":4215,"extension":4216,"proposal":810},495,"VK_KHR_maintenance3","Joshua Ashton @Joshua-Ashton,Hans-Kristian Arntzen @HansKristian-Work","VK_EXT_mutable_descriptor_type",{"number":4218,"type":3803,"author":3865,"provisional":3610,"depends":3820,"ratified":3942,"contact":3956,"extension":4219,"proposal":3610},452,"VK_EXT_nested_command_buffer",{"number":4221,"type":3803,"author":3865,"provisional":3610,"depends":3820,"specialuse":4222,"contact":4223,"extension":4224,"proposal":810},423,"d3demulation,glemulation","Georg Lehmann @DadSchoorse","VK_EXT_non_seamless_cube_map",{"number":4226,"type":3803,"author":3865,"provisional":3610,"depends":4227,"ratified":3942,"contact":4228,"extension":4229,"proposal":810},397,"VK_KHR_acceleration_structure+(VK_KHR_synchronization2,VK_VERSION_1_3)","Christoph Kubisch @pixeljetstream, Eric Werness","VK_EXT_opacity_micromap",{"number":4231,"type":3803,"author":3865,"provisional":3610,"depends":4190,"contact":3956,"extension":4232,"proposal":3610},413,"VK_EXT_pageable_device_local_memory",{"number":4234,"type":3803,"author":3865,"provisional":3610,"depends":3820,"ratified":3968,"contact":3825,"extension":4235,"proposal":3610},213,"VK_EXT_pci_bus_info",{"number":4237,"type":3803,"author":3865,"provisional":3610,"depends":3820,"contact":4238,"extension":4239,"proposal":3610},354,"Simon Ser @emersion","VK_EXT_physical_device_drm",{"number":4241,"type":3803,"author":3804,"promotedto":3918,"provisional":3610,"depends":3820,"contact":4242,"extension":4243,"proposal":3610},298,"Gregory Grebe @grgrebe_amd","VK_EXT_pipeline_creation_cache_control",{"number":4245,"type":3803,"author":3988,"promotedto":3918,"provisional":3610,"specialuse":3815,"contact":4246,"extension":4247,"proposal":3610},193,"Jean-Francois Roy @jfroy","VK_EXT_pipeline_creation_feedback",{"number":4249,"type":3803,"author":3865,"provisional":3610,"depends":4250,"contact":4251,"extension":4252,"proposal":810},499,"VK_KHR_ray_tracing_pipeline+VK_KHR_pipeline_library","Hans-Kristian Arntzen @HansKristian-Work","VK_EXT_pipeline_library_group_handles",{"number":4254,"type":3803,"author":3865,"provisional":3610,"depends":3820,"contact":4255,"extension":4256,"proposal":3610},373,"Mukund Keshava @mkeshavanv","VK_EXT_pipeline_properties",{"number":4258,"type":3803,"author":3865,"provisional":3610,"depends":3820,"contact":4003,"extension":4259,"proposal":810},467,"VK_EXT_pipeline_protected_access",{"number":4261,"type":3803,"author":4262,"provisional":3610,"depends":3820,"contact":4263,"extension":4264,"proposal":3610},69,"IMG","Jarred Davies","VK_EXT_pipeline_robustness",{"number":4266,"type":3803,"author":3930,"provisional":3610,"ratified":3942,"contact":4267,"extension":4268,"proposal":3610},156,"Daniel Koch @dgkoch","VK_EXT_post_depth_coverage",{"number":4270,"type":3803,"author":3865,"provisional":3610,"depends":3820,"ratified":3942,"specialuse":3888,"contact":4003,"extension":4271,"proposal":3610},357,"VK_EXT_primitive_topology_list_restart",{"number":4273,"type":3803,"author":3865,"provisional":3610,"depends":4274,"specialuse":3888,"contact":4003,"extension":4275,"proposal":810},383,"VK_EXT_transform_feedback","VK_EXT_primitives_generated_query",{"number":4277,"type":3803,"author":3930,"promotedto":3918,"provisional":3610,"depends":3820,"contact":4278,"extension":4279,"proposal":3610},296,"Matthew Rusch @mattruschnv","VK_EXT_private_data",{"number":4281,"type":3803,"author":3865,"provisional":3610,"depends":3820,"ratified":3942,"specialuse":3888,"contact":4282,"extension":4283,"proposal":3610},255,"Jesse Hall @jessehall","VK_EXT_provoking_vertex",{"number":4285,"type":3803,"author":3865,"provisional":3610,"depends":4067,"ratified":3968,"contact":4068,"extension":4286,"proposal":3610},127,"VK_EXT_queue_family_foreign",{"number":4288,"type":3803,"author":3897,"provisional":3610,"depends":3820,"contact":3899,"extension":3898,"proposal":810},464,{"number":4290,"type":3803,"author":3865,"provisional":3610,"depends":4291,"contact":3899,"extension":4292,"proposal":3610},345,"VK_KHR_sampler_ycbcr_conversion,VK_VERSION_1_1","VK_EXT_rgba10x6_formats",{"number":4294,"type":3803,"author":3865,"provisional":3610,"depends":3820,"ratified":3968,"contact":3980,"extension":4295,"proposal":3610},287,"VK_EXT_robustness2",{"number":4297,"type":3803,"author":3804,"provisional":3610,"depends":3820,"ratified":3968,"contact":3816,"extension":4298,"proposal":3610},144,"VK_EXT_sample_locations",{"number":4300,"type":3803,"author":3930,"promotedto":4016,"provisional":3610,"depends":3820,"contact":3950,"extension":4301,"proposal":3610},131,"VK_EXT_sampler_filter_minmax",{"number":4303,"type":3803,"author":3865,"promotedto":4016,"provisional":3610,"depends":3820,"contact":3807,"extension":4304,"proposal":3610},222,"VK_EXT_scalar_block_layout",{"number":4306,"type":3803,"author":3865,"promotedto":4016,"provisional":3610,"contact":3816,"extension":4307,"proposal":3610},247,"VK_EXT_separate_stencil_usage",{"number":4309,"type":3803,"author":3930,"provisional":3610,"depends":3820,"ratified":3968,"contact":4060,"extension":4310,"proposal":3610},261,"VK_EXT_shader_atomic_float",{"number":4312,"type":3803,"author":3865,"provisional":3610,"depends":4310,"ratified":3942,"contact":4183,"extension":4313,"proposal":3610},274,"VK_EXT_shader_atomic_float2",{"number":4315,"type":3803,"author":3865,"promotedto":3918,"provisional":3610,"depends":3820,"ratified":3919,"contact":3950,"extension":4316,"proposal":3610},277,"VK_EXT_shader_demote_to_helper_invocation",{"number":4318,"type":3803,"author":3865,"provisional":3610,"depends":3820,"ratified":3942,"contact":3807,"extension":4319,"proposal":3610},235,"VK_EXT_shader_image_atomic_int64",{"number":4321,"type":3803,"author":3865,"provisional":3610,"depends":4322,"contact":4251,"extension":4323,"proposal":810},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":4325,"type":3803,"author":3865,"provisional":3610,"depends":4053,"ratified":3942,"contact":4326,"extension":4327,"proposal":810},483,"Daniel Story @daniel-story","VK_EXT_shader_object",{"number":4329,"type":3803,"author":3865,"provisional":3610,"ratified":3942,"contact":3908,"extension":4330,"proposal":810},565,"VK_EXT_shader_replicated_composites",{"number":4332,"type":3803,"author":3865,"provisional":3610,"ratified":3968,"contact":3831,"extension":4333,"proposal":3610},141,"VK_EXT_shader_stencil_export",{"number":4335,"type":3803,"author":3930,"deprecatedby":4016,"provisional":3610,"contact":4267,"extension":4336,"proposal":3610},65,"VK_EXT_shader_subgroup_ballot",{"number":4338,"type":3803,"author":3930,"deprecatedby":3914,"provisional":3610,"contact":4267,"extension":4339,"proposal":3610},66,"VK_EXT_shader_subgroup_vote",{"number":4341,"type":3803,"author":3865,"provisional":3610,"depends":3918,"ratified":3942,"contact":3899,"extension":4342,"proposal":810},396,"VK_EXT_shader_tile_image",{"number":4344,"type":3803,"author":3930,"promotedto":4016,"provisional":3610,"contact":4267,"extension":4345,"proposal":3610},163,"VK_EXT_shader_viewport_index_layer",{"number":4347,"type":3803,"author":3865,"promotedto":3918,"provisional":3610,"depends":3914,"ratified":3919,"contact":4348,"extension":4349,"proposal":3610},226,"Neil Henning @sheredom","VK_EXT_subgroup_size_control",{"number":4351,"type":3803,"author":3865,"provisional":3610,"depends":3820,"contact":4352,"extension":4353,"proposal":810},459,"Ting Wei @catweiting","VK_EXT_subpass_merge_feedback",{"number":4355,"type":3924,"author":3865,"provisional":3610,"depends":4356,"contact":4003,"extension":4357,"proposal":810},275,"VK_KHR_surface+VK_KHR_get_surface_capabilities2","VK_EXT_surface_maintenance1",{"number":4359,"type":3924,"author":3988,"provisional":3610,"depends":4037,"contact":3989,"extension":4360,"proposal":3610},105,"VK_EXT_swapchain_colorspace",{"number":4362,"type":3803,"author":3865,"provisional":3610,"depends":4363,"contact":4003,"extension":4364,"proposal":810},276,"VK_KHR_swapchain+VK_EXT_surface_maintenance1+(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)","VK_EXT_swapchain_maintenance1",{"number":4366,"type":3803,"author":3865,"promotedto":3918,"provisional":3610,"depends":3820,"ratified":3919,"contact":3950,"extension":4367,"proposal":3610},282,"VK_EXT_texel_buffer_alignment",{"number":4369,"type":3803,"author":3897,"promotedto":3918,"provisional":3610,"depends":3820,"ratified":3919,"contact":3899,"extension":4370,"proposal":3610},67,"VK_EXT_texture_compression_astc_hdr",{"number":4372,"type":3803,"author":3865,"promotedto":3918,"provisional":3610,"contact":3807,"extension":4373,"proposal":3610},246,"VK_EXT_tooling_info",{"number":1653,"type":3803,"author":3930,"provisional":3610,"depends":3820,"ratified":3942,"specialuse":4375,"contact":3956,"extension":4274,"proposal":3610},"glemulation,d3demulation,devtools",{"number":4377,"type":3803,"author":3988,"provisional":3610,"contact":4378,"extension":4379,"proposal":3610},161,"Cort Stratton @cdwfs","VK_EXT_validation_cache",{"number":4381,"type":3924,"author":4382,"deprecatedby":4163,"provisional":3610,"specialuse":3772,"contact":4383,"extension":4384,"proposal":3610},248,"LUNARG","Karl Schultz @karl-lunarg","VK_EXT_validation_features",{"number":4386,"type":3924,"author":3988,"deprecatedby":4163,"provisional":3610,"specialuse":3772,"contact":4387,"extension":4388,"proposal":3610},62,"Tobin Ehlis @tobine","VK_EXT_validation_flags",{"number":4390,"type":3803,"author":3930,"promotedto":4391,"provisional":3610,"depends":3820,"contact":3973,"extension":4392,"proposal":3610},191,"VK_KHR_vertex_attribute_divisor","VK_EXT_vertex_attribute_divisor",{"number":4394,"type":3803,"author":3865,"provisional":3610,"depends":3820,"ratified":3942,"contact":3956,"extension":4169,"proposal":3610},353,{"number":4396,"type":3803,"author":3865,"promotedto":3918,"provisional":3610,"depends":4291,"ratified":3919,"contact":4397,"extension":4398,"proposal":3610},331,"Tony Zlatinski @tzlatinski","VK_EXT_ycbcr_2plane_444_formats",{"number":4400,"type":3803,"author":3865,"provisional":3610,"depends":4291,"ratified":3968,"contact":3956,"extension":4401,"proposal":3610},253,"VK_EXT_ycbcr_image_arrays",{"number":4403,"type":3803,"author":4404,"provisional":3610,"depends":4405,"platform":4406,"contact":4407,"extension":4408,"proposal":3610},367,"FUCHSIA","VK_FUCHSIA_external_memory+(VK_KHR_sampler_ycbcr_conversion,VK_VERSION_1_1)","fuchsia","John Rosasco @rosasco","VK_FUCHSIA_buffer_collection",{"number":4410,"type":3803,"author":4404,"provisional":3610,"depends":4411,"platform":4406,"contact":4407,"extension":4412,"proposal":3610},365,"(VK_KHR_external_memory_capabilities+VK_KHR_external_memory),VK_VERSION_1_1","VK_FUCHSIA_external_memory",{"number":4414,"type":3803,"author":4404,"provisional":3610,"depends":4415,"platform":4406,"contact":4407,"extension":4416,"proposal":3610},366,"VK_KHR_external_semaphore_capabilities+VK_KHR_external_semaphore","VK_FUCHSIA_external_semaphore",{"number":4418,"type":3924,"author":4404,"provisional":3610,"depends":4037,"platform":4406,"contact":4419,"extension":4420,"proposal":3610},215,"Craig Stout @cdotstout","VK_FUCHSIA_imagepipe_surface",{"number":4422,"type":3803,"author":4423,"provisional":3610,"depends":4424,"platform":4425,"contact":4246,"extension":4426,"proposal":3610},192,"GGP","VK_KHR_swapchain+VK_GGP_stream_descriptor_surface","ggp","VK_GGP_frame_token",{"number":4428,"type":3924,"author":4423,"provisional":3610,"depends":4037,"platform":4425,"contact":4246,"extension":4429,"proposal":3610},50,"VK_GGP_stream_descriptor_surface",{"number":4431,"type":3803,"author":3988,"provisional":3610,"contact":4432,"extension":4433,"proposal":3610},225,"Hai Nguyen @chaoticbob","VK_GOOGLE_decorate_string",{"number":4435,"type":3803,"author":3988,"provisional":3610,"depends":4114,"contact":4436,"extension":4437,"proposal":3610},93,"Ian Elliott @ianelliottus","VK_GOOGLE_display_timing",{"number":4439,"type":3803,"author":3988,"provisional":3610,"contact":4432,"extension":4440,"proposal":3610},224,"VK_GOOGLE_hlsl_functionality1",{"number":4442,"type":3924,"author":3988,"provisional":3610,"depends":4037,"specialuse":3888,"contact":4003,"extension":4443,"proposal":810},434,"VK_GOOGLE_surfaceless_query",{"number":4445,"type":3803,"author":3988,"provisional":3610,"contact":4446,"extension":4447,"proposal":3610},290,"Kaye Mason @chaleur","VK_GOOGLE_user_type",{"number":4449,"type":3803,"author":4450,"provisional":3610,"depends":3820,"contact":4451,"extension":4452,"proposal":810},405,"HUAWEI","Yuchang Wang @richard_Wang2","VK_HUAWEI_cluster_culling_shader",{"number":4454,"type":3803,"author":4455,"provisional":3610,"depends":4456,"contact":4457,"extension":4458,"proposal":810},371,"Huawei","VK_KHR_ray_tracing_pipeline+(VK_KHR_synchronization2,VK_VERSION_1_3)","Pan Gao @PanGao-h","VK_HUAWEI_invocation_mask",{"number":4460,"type":3803,"author":4450,"provisional":3610,"depends":4461,"contact":4457,"extension":4462,"proposal":3610},370,"((VK_KHR_create_renderpass2,VK_VERSION_1_2)+VK_KHR_synchronization2),VK_VERSION_1_3","VK_HUAWEI_subpass_shading",{"number":976,"type":3803,"author":4262,"provisional":3610,"contact":3807,"extension":4464,"proposal":3610},"VK_IMG_filter_cubic",{"number":4466,"type":3803,"author":4262,"deprecatedby":4467,"provisional":3610,"contact":4468,"extension":4469,"proposal":3610},55,null,"Stuart Smith","VK_IMG_format_pvrtc",{"number":4471,"type":3803,"author":4262,"provisional":3610,"depends":3820,"specialuse":3888,"contact":4093,"extension":4472,"proposal":3610},111,"VK_IMG_relaxed_line_rasterization",{"number":4474,"type":3803,"author":4475,"provisional":3610,"specialuse":3815,"contact":4476,"extension":4477,"proposal":3610},211,"INTEL","Lionel Landwerlin @llandwerlin","VK_INTEL_performance_query",{"number":4479,"type":3803,"author":4475,"provisional":3610,"depends":3820,"contact":4480,"extension":4481,"proposal":3610},210,"Ian Romanick @ianromanick","VK_INTEL_shader_integer_functions2",{"number":4483,"type":3803,"author":4484,"promotedto":3914,"provisional":3610,"depends":4485,"ratified":3942,"contact":3899,"extension":4486,"proposal":3610},84,"KHR","(VK_KHR_get_physical_device_properties2+VK_KHR_storage_buffer_storage_class),VK_VERSION_1_1","VK_KHR_16bit_storage",{"number":4488,"type":3803,"author":4484,"promotedto":4016,"provisional":3610,"depends":4485,"ratified":3942,"contact":4489,"extension":4490,"proposal":3610},178,"Alexander Galazin @alegal-arm","VK_KHR_8bit_storage",{"number":4492,"type":3803,"author":4484,"provisional":3610,"depends":4493,"ratified":3942,"contact":4267,"extension":4494,"proposal":3610},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":857,"type":3924,"author":4484,"provisional":3610,"depends":4037,"platform":3887,"ratified":3942,"contact":3894,"extension":4496,"proposal":3610},"VK_KHR_android_surface",{"number":4498,"type":3803,"author":4484,"promotedto":3914,"provisional":3610,"ratified":3942,"contact":3807,"extension":4499,"proposal":3610},158,"VK_KHR_bind_memory2",{"number":4501,"type":3803,"author":4484,"promotedto":4016,"provisional":3610,"depends":4502,"ratified":3942,"contact":3950,"extension":3960,"proposal":3610},258,"(VK_KHR_get_physical_device_properties2+VK_KHR_device_group),VK_VERSION_1_1",{"number":4504,"type":3803,"author":4484,"provisional":3610,"depends":3820,"ratified":3968,"contact":4158,"extension":3964,"proposal":3610},544,{"number":4506,"type":3803,"author":4484,"provisional":3610,"depends":4507,"ratified":3942,"contact":4508,"extension":4509,"proposal":810},512,"VK_KHR_get_physical_device_properties2","Jean-Noe Morissette @MagicPoncho","VK_KHR_compute_shader_derivatives",{"number":4511,"type":3803,"author":4484,"provisional":3610,"depends":3820,"ratified":3942,"contact":3908,"extension":4512,"proposal":810},507,"VK_KHR_cooperative_matrix",{"number":4514,"type":3803,"author":4484,"promotedto":3918,"provisional":3610,"depends":3820,"ratified":3968,"contact":4080,"extension":4515,"proposal":3610},338,"VK_KHR_copy_commands2",{"number":4517,"type":3803,"author":4484,"promotedto":4016,"provisional":3610,"depends":4518,"ratified":3942,"contact":4519,"extension":4520,"proposal":3610},110,"(VK_KHR_multiview+VK_KHR_maintenance2),VK_VERSION_1_1","Tobias Hector @tobias","VK_KHR_create_renderpass2",{"number":4522,"type":3803,"author":4484,"promotedto":3914,"provisional":3610,"depends":4523,"ratified":3942,"contact":3932,"extension":4524,"proposal":3610},128,"VK_KHR_get_memory_requirements2,VK_VERSION_1_1","VK_KHR_dedicated_allocation",{"number":4526,"type":3803,"author":4484,"provisional":3610,"ratified":3942,"contact":4527,"extension":4528,"proposal":3610},269,"Josh Barczak @jbarczak","VK_KHR_deferred_host_operations",{"number":4530,"type":3803,"author":4484,"promotedto":4016,"provisional":3610,"depends":4531,"ratified":3942,"contact":4532,"extension":4533,"proposal":3610},200,"VK_KHR_create_renderpass2,VK_VERSION_1_2","Jan-Harald Fredriksen @janharald","VK_KHR_depth_stencil_resolve",{"number":4535,"type":3803,"author":4484,"promotedto":3914,"provisional":3610,"ratified":3942,"contact":4536,"extension":4537,"proposal":3610},86,"Markus Tavenrath @mtavenrath","VK_KHR_descriptor_update_template",{"number":4539,"type":3803,"author":4484,"promotedto":3914,"provisional":3610,"depends":4540,"ratified":3942,"contact":3950,"extension":4541,"proposal":3610},61,"VK_KHR_device_group_creation","VK_KHR_device_group",{"number":4543,"type":3924,"author":4484,"promotedto":3914,"provisional":3610,"ratified":3942,"contact":3950,"extension":4540,"proposal":3610},71,{"number":753,"type":3924,"author":4484,"provisional":3610,"depends":4037,"ratified":3968,"contact":4545,"extension":4034,"proposal":3610},"James Jones @cubanismo,Norbert Nopper @FslNopper",{"number":771,"type":3803,"author":4484,"provisional":3610,"depends":4547,"ratified":3968,"contact":3932,"extension":4548,"proposal":3610},"VK_KHR_swapchain+VK_KHR_display","VK_KHR_display_swapchain",{"number":4550,"type":3803,"author":4484,"promotedto":4016,"provisional":3610,"ratified":3942,"contact":3956,"extension":3828,"proposal":3610},170,{"number":4552,"type":3803,"author":4484,"promotedto":4016,"provisional":3610,"depends":3820,"ratified":3942,"contact":3816,"extension":4553,"proposal":3610},197,"VK_KHR_driver_properties",{"number":3755,"type":3803,"author":4484,"promotedto":3918,"provisional":3610,"depends":4555,"ratified":3942,"contact":3807,"extension":4556,"proposal":810},"((VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_depth_stencil_resolve),VK_VERSION_1_2","VK_KHR_dynamic_rendering",{"number":4558,"type":3803,"author":3804,"provisional":3610,"depends":4559,"ratified":3942,"contact":3807,"extension":4560,"proposal":810},233,"VK_KHR_dynamic_rendering,VK_VERSION_1_3","VK_KHR_dynamic_rendering_local_read",{"number":4562,"type":3803,"author":4484,"promotedto":3914,"provisional":3610,"depends":4563,"ratified":3942,"contact":3894,"extension":4564,"proposal":3610},114,"VK_KHR_external_fence_capabilities","VK_KHR_external_fence",{"number":4566,"type":3924,"author":4484,"promotedto":3914,"provisional":3610,"depends":3820,"ratified":3942,"contact":3894,"extension":4563,"proposal":3610},113,{"number":4568,"type":3803,"author":4484,"provisional":3610,"depends":4569,"ratified":3968,"contact":3894,"extension":4570,"proposal":3610},116,"VK_KHR_external_fence,VK_VERSION_1_1","VK_KHR_external_fence_fd",{"number":4572,"type":3803,"author":4484,"provisional":3610,"depends":4564,"platform":4098,"ratified":3942,"contact":3894,"extension":4573,"proposal":3610},115,"VK_KHR_external_fence_win32",{"number":4575,"type":3803,"author":4484,"promotedto":3914,"provisional":3610,"depends":4576,"ratified":3942,"contact":3932,"extension":4577,"proposal":3610},73,"VK_KHR_external_memory_capabilities,VK_VERSION_1_1","VK_KHR_external_memory",{"number":4579,"type":3924,"author":4484,"promotedto":3914,"provisional":3610,"depends":3820,"ratified":3942,"contact":3932,"extension":4580,"proposal":3610},72,"VK_KHR_external_memory_capabilities",{"number":4582,"type":3803,"author":4484,"provisional":3610,"depends":4067,"ratified":3968,"contact":3932,"extension":4072,"proposal":3610},75,{"number":4584,"type":3803,"author":4484,"provisional":3610,"depends":4067,"platform":4098,"ratified":3942,"contact":3932,"extension":4585,"proposal":3610},74,"VK_KHR_external_memory_win32",{"number":4587,"type":3803,"author":4484,"promotedto":3914,"provisional":3610,"depends":4588,"ratified":3942,"contact":3932,"extension":4589,"proposal":3610},78,"VK_KHR_external_semaphore_capabilities","VK_KHR_external_semaphore",{"number":4591,"type":3924,"author":4484,"promotedto":3914,"provisional":3610,"depends":3820,"ratified":3942,"contact":3932,"extension":4588,"proposal":3610},77,{"number":4593,"type":3803,"author":4484,"provisional":3610,"depends":4594,"ratified":3968,"contact":3932,"extension":4595,"proposal":3610},80,"VK_KHR_external_semaphore,VK_VERSION_1_1","VK_KHR_external_semaphore_fd",{"number":4597,"type":3803,"author":4484,"provisional":3610,"depends":4589,"platform":4098,"ratified":3942,"contact":3932,"extension":4598,"proposal":3610},79,"VK_KHR_external_semaphore_win32",{"number":4600,"type":3803,"author":4484,"promotedto":3918,"provisional":3610,"depends":3820,"ratified":3942,"contact":4476,"extension":4601,"proposal":3610},361,"VK_KHR_format_feature_flags2",{"number":4603,"type":3803,"author":4484,"provisional":3610,"depends":3820,"ratified":3942,"contact":3811,"extension":4604,"proposal":810},323,"VK_KHR_fragment_shader_barycentric",{"number":4606,"type":3803,"author":4484,"provisional":3610,"depends":4607,"ratified":3968,"contact":3807,"extension":4608,"proposal":810},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":4610,"type":3924,"author":4484,"provisional":3610,"depends":4034,"ratified":3968,"contact":3932,"extension":4611,"proposal":3610},122,"VK_KHR_get_display_properties2",{"number":4613,"type":3803,"author":4484,"promotedto":3914,"provisional":3610,"ratified":3942,"contact":4183,"extension":4614,"proposal":3610},147,"VK_KHR_get_memory_requirements2",{"number":4616,"type":3924,"author":4484,"promotedto":3914,"provisional":3610,"ratified":3942,"contact":3950,"extension":4507,"proposal":3610},60,{"number":4618,"type":3924,"author":4484,"provisional":3610,"depends":4037,"ratified":3968,"contact":3932,"extension":4619,"proposal":3610},120,"VK_KHR_get_surface_capabilities2",{"number":4621,"type":3803,"author":4484,"provisional":3610,"depends":3820,"ratified":3968,"contact":3807,"extension":4102,"proposal":3610},189,{"number":4623,"type":3803,"author":4484,"promotedto":4016,"provisional":3610,"ratified":3942,"contact":4183,"extension":4624,"proposal":3610},148,"VK_KHR_image_format_list",{"number":4626,"type":3803,"author":4484,"promotedto":4016,"provisional":3610,"depends":4627,"ratified":3942,"contact":4519,"extension":4628,"proposal":3610},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":4630,"type":3803,"author":4484,"provisional":3610,"depends":4114,"ratified":3968,"contact":4436,"extension":4631,"proposal":3610},85,"VK_KHR_incremental_present",{"number":4633,"type":3803,"author":4484,"provisional":3610,"depends":3820,"ratified":3968,"contact":3956,"extension":4153,"proposal":3610},534,{"number":4635,"type":3803,"author":4484,"provisional":3610,"depends":3820,"ratified":3968,"contact":3956,"extension":4173,"proposal":3610},535,{"number":4637,"type":3803,"author":4484,"provisional":3610,"ratified":3942,"contact":4003,"extension":4178,"proposal":810},527,{"number":4639,"type":3803,"author":4484,"promotedto":3914,"provisional":3610,"ratified":3942,"contact":3956,"extension":3848,"proposal":3610},70,{"number":4641,"type":3803,"author":4484,"promotedto":3914,"provisional":3610,"ratified":3942,"contact":4642,"extension":4643,"proposal":3610},118,"Michael Worcester @michaelworcester","VK_KHR_maintenance2",{"number":4645,"type":3803,"author":4484,"promotedto":3914,"provisional":3610,"depends":3820,"ratified":3942,"contact":3950,"extension":4214,"proposal":3610},169,{"number":4647,"type":3803,"author":4484,"promotedto":3918,"provisional":3610,"depends":3914,"ratified":3942,"contact":3956,"extension":4648,"proposal":3610},414,"VK_KHR_maintenance4",{"number":4650,"type":3803,"author":4484,"provisional":3610,"depends":4651,"ratified":3942,"contact":4652,"extension":4653,"proposal":810},471,"(VK_VERSION_1_1+VK_KHR_dynamic_rendering),VK_VERSION_1_3","Stu Smith @stu-s","VK_KHR_maintenance5",{"number":4655,"type":3803,"author":4484,"provisional":3610,"depends":3914,"ratified":3942,"contact":4656,"extension":4657,"proposal":810},546,"Jon Leech @oddhack","VK_KHR_maintenance6",{"number":4659,"type":3803,"author":4484,"provisional":3610,"depends":3914,"ratified":3942,"contact":3943,"extension":4660,"proposal":810},563,"VK_KHR_maintenance7",{"number":4662,"type":3803,"author":4484,"provisional":3610,"ratified":3942,"contact":4183,"extension":4182,"proposal":810},272,{"number":4664,"type":3803,"author":4484,"promotedto":3914,"provisional":3610,"depends":3820,"ratified":3942,"contact":3950,"extension":4665,"proposal":3610},54,"VK_KHR_multiview",{"extension":4667,"proposal":3610},"VK_KHR_object_refresh",{"number":4669,"type":3803,"author":4484,"provisional":3610,"depends":3820,"ratified":3968,"specialuse":3815,"contact":4670,"extension":4671,"proposal":3610},117,"Alon Or-bach @alonorbach","VK_KHR_performance_query",{"number":4673,"type":3803,"author":4484,"provisional":3610,"depends":4653,"ratified":3942,"contact":4652,"extension":4674,"proposal":810},484,"VK_KHR_pipeline_binary",{"number":4676,"type":3803,"author":4484,"provisional":3610,"depends":3820,"ratified":3942,"specialuse":3815,"contact":4183,"extension":4677,"proposal":3610},270,"VK_KHR_pipeline_executable_properties",{"number":4679,"type":3803,"author":4484,"provisional":3610,"ratified":3942,"contact":4194,"extension":4680,"proposal":3610},291,"VK_KHR_pipeline_library",{"number":4682,"type":3924,"author":4484,"provisional":3610,"ratified":3942,"contact":4683,"extension":4684,"proposal":3610},395,"Charles Giessen @charles-lunarg","VK_KHR_portability_enumeration",{"number":4686,"type":3803,"author":4484,"provisional":810,"depends":3820,"platform":3806,"ratified":3942,"contact":4199,"extension":4687,"proposal":3610},164,"VK_KHR_portability_subset",{"number":4689,"type":3803,"author":4484,"provisional":3610,"depends":4690,"ratified":3942,"contact":4691,"extension":4692,"proposal":3610},295,"VK_KHR_swapchain+VK_KHR_get_physical_device_properties2,VK_VERSION_1_1","Keith Packard @keithp","VK_KHR_present_id",{"number":4694,"type":3803,"author":4484,"provisional":3610,"depends":4695,"ratified":3942,"contact":4691,"extension":4696,"proposal":3610},249,"VK_KHR_swapchain+VK_KHR_present_id","VK_KHR_present_wait",{"number":4698,"type":3803,"author":4484,"provisional":3610,"depends":3820,"ratified":3942,"contact":3950,"extension":4699,"proposal":3610},81,"VK_KHR_push_descriptor",{"number":4701,"type":3803,"author":4484,"provisional":3610,"depends":4702,"ratified":3942,"contact":4267,"extension":4703,"proposal":3610},349,"VK_KHR_spirv_1_4+VK_KHR_acceleration_structure","VK_KHR_ray_query",{"number":4705,"type":3803,"author":4484,"provisional":3610,"depends":4494,"ratified":3942,"contact":4267,"extension":4706,"proposal":3610},387,"VK_KHR_ray_tracing_maintenance1",{"number":4708,"type":3803,"author":4484,"provisional":3610,"depends":4702,"ratified":3942,"contact":4267,"extension":4709,"proposal":3610},348,"VK_KHR_ray_tracing_pipeline",{"number":4711,"type":3803,"author":4484,"provisional":3610,"depends":4494,"ratified":3942,"contact":4712,"extension":4713,"proposal":810},482,"Eric Werness","VK_KHR_ray_tracing_position_fetch",{"number":4715,"type":3803,"author":4484,"promotedto":3914,"provisional":3610,"ratified":3942,"contact":4716,"extension":4717,"proposal":3610},145,"John Kessenich @johnkslang","VK_KHR_relaxed_block_layout",{"number":960,"type":3803,"author":4484,"promotedto":4016,"provisional":3610,"ratified":3942,"contact":3807,"extension":4719,"proposal":3610},"VK_KHR_sampler_mirror_clamp_to_edge",{"number":4721,"type":3803,"author":4484,"promotedto":3914,"provisional":3610,"depends":4722,"ratified":3942,"contact":4723,"extension":4724,"proposal":3610},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":4726,"type":3803,"author":4484,"promotedto":4016,"provisional":3610,"depends":4607,"ratified":3942,"contact":3956,"extension":4727,"proposal":3610},242,"VK_KHR_separate_depth_stencil_layouts",{"number":4729,"type":3803,"author":4484,"promotedto":4016,"provisional":3610,"depends":3820,"ratified":3942,"contact":4730,"extension":4731,"proposal":3610},181,"Aaron Hagan @ahagan","VK_KHR_shader_atomic_int64",{"number":4733,"type":3803,"author":4484,"provisional":3610,"depends":3820,"ratified":3968,"contact":4730,"extension":4734,"proposal":3610},182,"VK_KHR_shader_clock",{"number":4736,"type":3803,"author":4484,"promotedto":3914,"provisional":3610,"ratified":3942,"contact":4267,"extension":4737,"proposal":3610},64,"VK_KHR_shader_draw_parameters",{"number":4739,"type":3803,"author":4484,"provisional":3610,"depends":3820,"ratified":3942,"contact":3908,"extension":4740,"proposal":810},545,"VK_KHR_shader_expect_assume",{"number":4742,"type":3803,"author":4484,"promotedto":4016,"provisional":3610,"depends":3820,"ratified":3942,"contact":4489,"extension":3834,"proposal":3610},83,{"number":4744,"type":3803,"author":4484,"promotedto":4016,"provisional":3610,"depends":3820,"ratified":3942,"contact":4489,"extension":4745,"proposal":3610},198,"VK_KHR_shader_float_controls",{"number":4747,"type":3803,"author":4484,"provisional":3610,"depends":4748,"ratified":3942,"contact":3999,"extension":4749,"proposal":810},529,"VK_VERSION_1_1+VK_KHR_shader_float_controls","VK_KHR_shader_float_controls2",{"number":4751,"type":3803,"author":4484,"promotedto":3918,"provisional":3610,"depends":3820,"ratified":3942,"contact":3908,"extension":4752,"proposal":810},281,"VK_KHR_shader_integer_dot_product",{"number":4754,"type":3803,"author":4484,"provisional":3610,"depends":3914,"ratified":3942,"contact":4755,"extension":4756,"proposal":810},435,"Alan Baker @alan-baker","VK_KHR_shader_maximal_reconvergence",{"number":4758,"type":3803,"author":4484,"promotedto":3918,"provisional":3610,"ratified":3942,"contact":3985,"extension":4759,"proposal":3610},294,"VK_KHR_shader_non_semantic_info",{"number":4761,"type":3803,"author":4484,"provisional":3610,"depends":4762,"ratified":3942,"contact":3807,"extension":4763,"proposal":810},236,"VK_VERSION_1_1+VK_KHR_vulkan_memory_model+VK_KHR_shader_maximal_reconvergence","VK_KHR_shader_quad_control",{"number":4765,"type":3803,"author":4484,"provisional":3610,"ratified":3942,"contact":4766,"extension":4767,"proposal":810},559,"Nathan Gauër @Keenuts","VK_KHR_shader_relaxed_extended_instruction",{"number":4769,"type":3803,"author":4484,"promotedto":4016,"provisional":3610,"depends":3914,"ratified":3942,"contact":4348,"extension":4770,"proposal":3610},176,"VK_KHR_shader_subgroup_extended_types",{"number":4772,"type":3803,"author":4484,"provisional":3610,"ratified":3942,"contact":3908,"extension":4773,"proposal":810},417,"VK_KHR_shader_subgroup_rotate",{"number":4775,"type":3803,"author":4484,"provisional":3610,"depends":3914,"ratified":3942,"contact":4755,"extension":4776,"proposal":3610},324,"VK_KHR_shader_subgroup_uniform_control_flow",{"number":4778,"type":3803,"author":4484,"promotedto":3918,"provisional":3610,"depends":3820,"ratified":3968,"contact":3894,"extension":4779,"proposal":3610},216,"VK_KHR_shader_terminate_invocation",{"number":4781,"type":3803,"author":4484,"provisional":3610,"depends":4782,"ratified":3968,"contact":4670,"extension":4783,"proposal":3610},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":4785,"type":3803,"author":4484,"promotedto":4016,"provisional":3610,"depends":4748,"ratified":3942,"contact":3894,"extension":4193,"proposal":3610},237,{"number":4787,"type":3803,"author":4484,"promotedto":3914,"provisional":3610,"ratified":3942,"contact":4489,"extension":4788,"proposal":3610},132,"VK_KHR_storage_buffer_storage_class",{"number":336,"type":3924,"author":4484,"provisional":3610,"ratified":3968,"contact":4790,"extension":4037,"proposal":3610},"James Jones @cubanismo,Ian Elliott @ianelliottus",{"number":4792,"type":3924,"author":4484,"provisional":3610,"depends":4793,"ratified":3942,"contact":4794,"extension":4795,"proposal":3610},240,"VK_VERSION_1_1+VK_KHR_get_surface_capabilities2","Sandeep Shinde @sashinde","VK_KHR_surface_protected_capabilities",{"number":368,"type":3803,"author":4484,"provisional":3610,"depends":4037,"ratified":3968,"contact":4790,"extension":4114,"proposal":3610},{"number":4798,"type":3803,"author":4484,"provisional":3610,"depends":4799,"ratified":3968,"contact":3816,"extension":4800,"proposal":3610},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":4802,"type":3803,"author":4484,"promotedto":3918,"provisional":3610,"depends":3820,"ratified":3968,"contact":3807,"extension":577,"proposal":3610},315,{"number":4804,"type":3803,"author":4484,"promotedto":4016,"provisional":3610,"depends":3820,"ratified":3942,"contact":4183,"extension":4805,"proposal":3610},208,"VK_KHR_timeline_semaphore",{"number":4807,"type":3803,"author":4484,"promotedto":4016,"provisional":3610,"depends":3820,"ratified":3942,"contact":3999,"extension":4808,"proposal":3610},254,"VK_KHR_uniform_buffer_standard_layout",{"number":4810,"type":3803,"author":4484,"promotedto":3914,"provisional":3610,"depends":4485,"ratified":3942,"contact":3894,"extension":4811,"proposal":3610},121,"VK_KHR_variable_pointers",{"number":4813,"type":3803,"author":4484,"provisional":3610,"depends":3820,"ratified":3968,"contact":4003,"extension":4391,"proposal":810},526,{"number":4815,"type":3803,"author":4484,"provisional":3610,"depends":4816,"ratified":3942,"contact":4158,"extension":4817,"proposal":810},513,"VK_KHR_video_decode_queue","VK_KHR_video_decode_av1",{"number":3739,"type":3803,"author":4484,"provisional":3610,"depends":4816,"ratified":3942,"contact":4819,"extension":4820,"proposal":810},"peter.fang@amd.com","VK_KHR_video_decode_h264",{"number":4822,"type":3803,"author":4484,"provisional":3610,"depends":4816,"ratified":3942,"contact":4819,"extension":4823,"proposal":810},188,"VK_KHR_video_decode_h265",{"number":1115,"type":3803,"author":4484,"provisional":3610,"depends":4825,"ratified":3942,"contact":4826,"extension":4816,"proposal":810},"VK_KHR_video_queue+(VK_KHR_synchronization2,VK_VERSION_1_3)","jake.beju@amd.com",{"number":3731,"type":3803,"author":4484,"provisional":3610,"depends":4828,"ratified":3942,"contact":4829,"extension":4830,"proposal":810},"VK_KHR_video_encode_queue","Ahmed Abdelkhalek @aabdelkh","VK_KHR_video_encode_h264",{"number":3735,"type":3803,"author":4484,"provisional":3610,"depends":4828,"ratified":3942,"contact":4829,"extension":4832,"proposal":810},"VK_KHR_video_encode_h265",{"number":4834,"type":3803,"author":4484,"provisional":3610,"depends":4825,"ratified":3942,"contact":4829,"extension":4828,"proposal":810},300,{"number":4836,"type":3803,"author":4484,"provisional":3610,"depends":4837,"ratified":3942,"contact":4158,"extension":4838,"proposal":810},516,"VK_KHR_video_queue","VK_KHR_video_maintenance1",{"number":1102,"type":3803,"author":4484,"provisional":3610,"depends":4840,"ratified":3942,"contact":4397,"extension":4837,"proposal":810},"(VK_VERSION_1_1+VK_KHR_synchronization2),VK_VERSION_1_3",{"number":4842,"type":3803,"author":4484,"promotedto":4016,"provisional":3610,"depends":3820,"ratified":3942,"contact":3950,"extension":4843,"proposal":3610},212,"VK_KHR_vulkan_memory_model",{"number":816,"type":3924,"author":4484,"provisional":3610,"depends":4037,"platform":4845,"ratified":3942,"contact":4846,"extension":4847,"proposal":3610},"wayland","Jesse Hall @critsec,Ian Elliott @ianelliottus","VK_KHR_wayland_surface",{"number":4849,"type":3803,"author":4484,"provisional":3610,"depends":4585,"platform":4098,"ratified":3942,"contact":4850,"extension":4851,"proposal":3610},76,"Carsten Rohde @crohde","VK_KHR_win32_keyed_mutex",{"number":875,"type":3924,"author":4484,"provisional":3610,"depends":4037,"platform":4098,"ratified":3942,"contact":4846,"extension":4853,"proposal":3610},"VK_KHR_win32_surface",{"number":4855,"type":3803,"author":4484,"provisional":3610,"depends":3820,"ratified":3942,"contact":4856,"extension":2329,"proposal":3610},337,"Caio Marcelo de Oliveira Filho @cmarcelo",{"number":806,"type":3924,"author":4484,"provisional":3610,"depends":4037,"platform":4858,"ratified":3942,"contact":4846,"extension":4859,"proposal":3610},"xcb","VK_KHR_xcb_surface",{"number":788,"type":3924,"author":4484,"provisional":3610,"depends":4037,"platform":4861,"ratified":3942,"contact":4846,"extension":4862,"proposal":3610},"xlib","VK_KHR_xlib_surface",{"number":4864,"type":3803,"author":4484,"promotedto":3918,"provisional":3610,"depends":3820,"ratified":3942,"contact":4755,"extension":4865,"proposal":3610},326,"VK_KHR_zero_initialize_workgroup_memory",{"number":4867,"type":3924,"author":4382,"provisional":3610,"contact":4683,"extension":4868,"proposal":810},460,"VK_LUNARG_direct_driver_loading",{"number":4870,"type":3803,"author":4871,"provisional":3610,"depends":3820,"specialuse":3995,"contact":4251,"extension":4872,"proposal":3610},576,"MESA","VK_MESA_image_alignment_control",{"number":4874,"type":3803,"author":4875,"provisional":3610,"depends":3820,"contact":4876,"extension":4877,"proposal":810},531,"MSFT","Jesse Natalie @jenatali","VK_MSFT_layered_driver",{"number":4879,"type":3924,"author":4880,"deprecatedby":4204,"provisional":3610,"depends":4037,"platform":4881,"contact":4199,"extension":4882,"proposal":3610},123,"MVK","ios","VK_MVK_ios_surface",{"number":4884,"type":3924,"author":4880,"deprecatedby":4204,"provisional":3610,"depends":4037,"platform":4885,"contact":4199,"extension":4886,"proposal":3610},124,"macos","VK_MVK_macos_surface",{"number":4888,"type":3924,"author":4889,"provisional":3610,"depends":4037,"platform":4890,"contact":4891,"extension":4892,"proposal":3610},63,"NN","vi","Mathias Heyer gitlab:@mheyer","VK_NN_vi_surface",{"number":1662,"type":3803,"author":4894,"provisional":3610,"contact":4895,"extension":4896,"proposal":3610},"NVX","Eric Werness @ewerness-nv,Liam Middlebrook @liam-middlebrook","VK_NVX_binary_import",{"number":1671,"type":3803,"author":4894,"provisional":3610,"contact":4898,"extension":4899,"proposal":3610},"Eric Werness @ewerness-nv","VK_NVX_image_view_handle",{"number":4901,"type":3803,"author":4894,"provisional":3610,"depends":4902,"contact":3950,"extension":4903,"proposal":3610},98,"VK_KHR_multiview,VK_VERSION_1_1","VK_NVX_multiview_per_view_attributes",{"number":4905,"type":3803,"author":3930,"provisional":3610,"depends":3925,"platform":4098,"contact":4906,"extension":4907,"proposal":3610},346,"Jeff Juliano @jjuliano","VK_NV_acquire_winrt_display",{"number":4909,"type":3803,"author":3930,"provisional":3610,"contact":4898,"extension":4910,"proposal":3610},88,"VK_NV_clip_space_w_scaling",{"number":4912,"type":3803,"author":3930,"provisional":3610,"contact":4913,"extension":4914,"proposal":3610},560,"Lujin Wang @lujinwangnv","VK_NV_command_buffer_inheritance",{"number":4916,"type":3803,"author":3930,"promotedto":4509,"provisional":3610,"depends":3820,"contact":4917,"extension":4918,"proposal":3610},202,"Pat Brown @nvpbrown","VK_NV_compute_shader_derivatives",{"number":4920,"type":3803,"author":3930,"provisional":3610,"depends":3820,"contact":3950,"extension":4921,"proposal":3610},250,"VK_NV_cooperative_matrix",{"number":4923,"type":3803,"author":3930,"provisional":3610,"depends":4924,"contact":4060,"extension":4925,"proposal":3610},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":4927,"type":3803,"author":3930,"provisional":3610,"depends":3820,"contact":4267,"extension":4928,"proposal":3610},51,"VK_NV_corner_sampled_image",{"number":4930,"type":3803,"author":3930,"provisional":3610,"depends":4931,"contact":4932,"extension":4933,"proposal":3610},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":4935,"type":3803,"author":3930,"provisional":810,"contact":4936,"extension":4937,"proposal":3610},308,"Tristan Lorach @tlorach","VK_NV_cuda_kernel_launch",{"number":1141,"type":3803,"author":3930,"deprecatedby":4524,"provisional":3610,"contact":3950,"extension":4939,"proposal":3610},"VK_NV_dedicated_allocation",{"number":4941,"type":3803,"author":4942,"provisional":3610,"depends":4943,"contact":4944,"extension":4945,"proposal":3610},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":4947,"type":3803,"author":3930,"provisional":3610,"depends":3914,"contact":3956,"extension":4948,"proposal":3610},547,"VK_NV_descriptor_pool_overallocation",{"number":4950,"type":3803,"author":4942,"provisional":3610,"depends":3820,"contact":4944,"extension":4951,"proposal":3610},207,"VK_NV_device_diagnostic_checkpoints",{"number":4953,"type":3803,"author":3930,"provisional":3610,"depends":3820,"contact":4932,"extension":4954,"proposal":3610},301,"VK_NV_device_diagnostics_config",{"number":4956,"type":3803,"author":3930,"provisional":3610,"depends":4957,"contact":4194,"extension":4958,"proposal":3610},278,"(VK_VERSION_1_1+VK_KHR_buffer_device_address),VK_VERSION_1_2","VK_NV_device_generated_commands",{"number":4960,"type":3803,"author":3930,"provisional":3610,"depends":4958,"contact":4060,"extension":4961,"proposal":3610},429,"VK_NV_device_generated_commands_compute",{"number":4963,"type":3803,"author":3930,"provisional":810,"depends":4229,"platform":3806,"contact":4964,"extension":4965,"proposal":3610},398,"Christoph Kubisch @pixeljetstream, Eric Werness @ewerness-nv","VK_NV_displacement_micromap",{"number":4967,"type":3803,"author":3930,"provisional":3610,"contact":4968,"extension":4969,"proposal":3610},493,"Russell Chou @russellcnv","VK_NV_extended_sparse_address_space",{"number":4971,"type":3803,"author":3930,"deprecatedby":4577,"provisional":3610,"depends":4972,"contact":3932,"extension":4973,"proposal":3610},57,"VK_NV_external_memory_capabilities","VK_NV_external_memory",{"number":4975,"type":3924,"author":3930,"deprecatedby":4580,"provisional":3610,"contact":3932,"extension":4972,"proposal":3610},56,{"number":4977,"type":3803,"author":3930,"provisional":3610,"depends":4067,"contact":4850,"extension":4978,"proposal":3610},372,"VK_NV_external_memory_rdma",{"extension":4980,"proposal":3610},"VK_NV_external_memory_sci_buf",{"number":4982,"type":3803,"author":3930,"deprecatedby":4585,"provisional":3610,"depends":4973,"platform":4098,"contact":3932,"extension":4983,"proposal":3610},58,"VK_NV_external_memory_win32",{"extension":4985,"proposal":3610},"VK_NV_external_sci_sync",{"extension":4987,"proposal":3610},"VK_NV_external_sci_sync2",{"number":4989,"type":3803,"author":3930,"provisional":3610,"contact":3950,"extension":4990,"proposal":3610},154,"VK_NV_fill_rectangle",{"number":4992,"type":3803,"author":3930,"provisional":3610,"contact":3950,"extension":4993,"proposal":3610},150,"VK_NV_fragment_coverage_to_color",{"number":4995,"type":3803,"author":3930,"promotedto":4604,"provisional":3610,"depends":3820,"contact":4917,"extension":4996,"proposal":3610},204,"VK_NV_fragment_shader_barycentric",{"number":4998,"type":3803,"author":3930,"provisional":3610,"depends":4608,"contact":4917,"extension":4999,"proposal":3610},327,"VK_NV_fragment_shading_rate_enums",{"number":5001,"type":3803,"author":3930,"provisional":3610,"contact":3950,"extension":5002,"proposal":3610},153,"VK_NV_framebuffer_mixed_samples",{"number":5004,"type":3803,"author":3930,"provisional":3610,"contact":4267,"extension":5005,"proposal":3610},96,"VK_NV_geometry_shader_passthrough",{"number":927,"type":3803,"author":3930,"deprecatedby":4467,"provisional":3610,"contact":3956,"extension":5007,"proposal":3610},"VK_NV_glsl_shader",{"number":5009,"type":3803,"author":3930,"provisional":3610,"depends":3820,"contact":5010,"extension":5011,"proposal":3610},279,"David Zhao Akeley @akeley98","VK_NV_inherited_viewport_scissor",{"number":5013,"type":3803,"author":4942,"provisional":3610,"depends":3820,"contact":5014,"extension":5015,"proposal":3610},431,"sourav parmar @souravpNV","VK_NV_linear_color_attachment",{"number":5017,"type":3803,"author":3930,"provisional":3610,"contact":5018,"extension":5019,"proposal":3610},311,"Charles Hansen @cshansen","VK_NV_low_latency",{"number":5021,"type":3803,"author":3930,"provisional":3610,"depends":5022,"contact":5018,"extension":5023,"proposal":3610},506,"VK_VERSION_1_2,VK_KHR_timeline_semaphore","VK_NV_low_latency2",{"number":5025,"type":3803,"author":3930,"provisional":3610,"depends":4924,"contact":4060,"extension":5026,"proposal":3610},428,"VK_NV_memory_decompression",{"number":5028,"type":3803,"author":3930,"provisional":3610,"depends":3820,"contact":4194,"extension":5029,"proposal":3610},203,"VK_NV_mesh_shader",{"number":5031,"type":3803,"author":3930,"provisional":3610,"depends":5032,"contact":4850,"extension":5033,"proposal":3610},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":5035,"type":3803,"author":3930,"provisional":3610,"depends":4657,"contact":3956,"extension":5036,"proposal":3610},517,"VK_NV_per_stage_descriptor_set",{"number":5038,"type":3803,"author":3930,"provisional":3610,"depends":4097,"contact":5039,"extension":5040,"proposal":3610},293,"Liya Li @liyli","VK_NV_present_barrier",{"extension":5042,"proposal":3610},"VK_NV_private_vendor_info",{"number":5044,"type":3803,"author":3930,"provisional":3610,"contact":5045,"extension":5046,"proposal":3610},556,"Rodrigo Locatti @rlocatti","VK_NV_raw_access_chains",{"number":5048,"type":3803,"author":3930,"deprecatedby":4709,"provisional":3610,"depends":5049,"contact":4898,"extension":5050,"proposal":3610},166,"(VK_KHR_get_physical_device_properties2+VK_KHR_get_memory_requirements2),VK_VERSION_1_1","VK_NV_ray_tracing",{"number":5052,"type":3803,"author":3930,"provisional":3610,"depends":4709,"contact":4898,"extension":5053,"proposal":3610},491,"VK_NV_ray_tracing_invocation_reorder",{"number":5055,"type":3803,"author":3930,"provisional":3610,"depends":4709,"contact":4712,"extension":5056,"proposal":3610},328,"VK_NV_ray_tracing_motion_blur",{"number":5058,"type":3803,"author":3930,"provisional":3610,"contact":4060,"extension":5059,"proposal":810},569,"VK_NV_ray_tracing_validation",{"number":5061,"type":3803,"author":3930,"provisional":3610,"depends":3820,"contact":4932,"extension":5062,"proposal":3610},167,"VK_NV_representative_fragment_test",{"number":5064,"type":3803,"author":3930,"provisional":3610,"contact":3956,"extension":5065,"proposal":3610},95,"VK_NV_sample_mask_override_coverage",{"number":5067,"type":3803,"author":3930,"provisional":3610,"depends":3820,"contact":4917,"extension":5068,"proposal":3610},206,"VK_NV_scissor_exclusive",{"number":5070,"type":3803,"author":3930,"provisional":3610,"contact":3950,"extension":5071,"proposal":3610},564,"VK_NV_shader_atomic_float16_vector",{"number":5073,"type":3803,"author":3930,"provisional":3610,"depends":3820,"contact":4917,"extension":5074,"proposal":3610},205,"VK_NV_shader_image_footprint",{"number":5076,"type":3803,"author":3930,"provisional":3610,"depends":3914,"contact":4267,"extension":5077,"proposal":3610},155,"VK_NV_shader_sm_builtins",{"number":5079,"type":3803,"author":3930,"provisional":3610,"depends":3914,"contact":3950,"extension":5080,"proposal":3610},199,"VK_NV_shader_subgroup_partitioned",{"number":5082,"type":3803,"author":3930,"provisional":3610,"depends":3820,"contact":4917,"extension":5083,"proposal":3610},165,"VK_NV_shading_rate_image",{"number":5085,"type":3803,"author":3930,"provisional":3610,"contact":4267,"extension":5086,"proposal":3610},97,"VK_NV_viewport_array2",{"number":5088,"type":3803,"author":3930,"provisional":3610,"contact":3956,"extension":5089,"proposal":3610},99,"VK_NV_viewport_swizzle",{"number":5091,"type":3803,"author":3930,"promotedto":4851,"provisional":3610,"depends":4983,"platform":4098,"contact":4850,"extension":5092,"proposal":3610},59,"VK_NV_win32_keyed_mutex",{"number":5094,"type":3803,"author":4079,"provisional":3610,"depends":5095,"contact":4080,"extension":5096,"proposal":3610},522,"(VK_EXT_filter_cubic)+(VK_VERSION_1_2,VK_EXT_sampler_filter_minmax)","VK_QCOM_filter_cubic_clamp",{"number":5098,"type":3803,"author":4079,"provisional":3610,"depends":4081,"contact":4080,"extension":5099,"proposal":3610},520,"VK_QCOM_filter_cubic_weights",{"number":5101,"type":3803,"author":4079,"provisional":3610,"depends":5102,"contact":4080,"extension":5103,"proposal":3610},426,"(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_EXT_fragment_density_map","VK_QCOM_fragment_density_map_offset",{"number":5105,"type":3803,"author":4079,"provisional":3610,"depends":5106,"contact":4080,"extension":5107,"proposal":810},441,"VK_KHR_format_feature_flags2,VK_VERSION_1_3","VK_QCOM_image_processing",{"number":5109,"type":3803,"author":4079,"provisional":3610,"depends":5107,"contact":4080,"extension":5110,"proposal":3610},519,"VK_QCOM_image_processing2",{"number":5112,"type":3803,"author":4079,"provisional":3610,"contact":4080,"extension":5113,"proposal":3610},511,"VK_QCOM_multiview_per_view_render_areas",{"number":5115,"type":3803,"author":4079,"provisional":3610,"depends":3820,"contact":4080,"extension":5116,"proposal":3610},489,"VK_QCOM_multiview_per_view_viewports",{"number":5118,"type":3803,"author":4079,"provisional":3610,"contact":4080,"extension":5119,"proposal":3610},172,"VK_QCOM_render_pass_shader_resolve",{"number":5121,"type":3803,"author":4079,"provisional":3610,"contact":4080,"extension":5122,"proposal":3610},302,"VK_QCOM_render_pass_store_ops",{"number":5124,"type":3803,"author":4079,"provisional":3610,"contact":4080,"extension":5125,"proposal":3610},283,"VK_QCOM_render_pass_transform",{"number":5127,"type":3803,"author":4079,"provisional":3610,"depends":5128,"contact":4080,"extension":5129,"proposal":3610},334,"VK_KHR_copy_commands2,VK_VERSION_1_3","VK_QCOM_rotated_copy_commands",{"number":5131,"type":3803,"author":4079,"provisional":3610,"depends":3820,"contact":4080,"extension":5132,"proposal":810},485,"VK_QCOM_tile_properties",{"number":5134,"type":3803,"author":4079,"provisional":3610,"contact":4080,"extension":5135,"proposal":3610},521,"VK_QCOM_ycbcr_degamma",{"number":5137,"type":3803,"author":5138,"provisional":3610,"depends":3893,"platform":5139,"contact":5140,"extension":5141,"proposal":3610},530,"QNX","screen","Mike Gorchak @mgorchak-blackberry, Aaron Ruby @aruby-blackberry","VK_QNX_external_memory_screen_buffer",{"number":5143,"type":3924,"author":5138,"provisional":3610,"depends":4037,"platform":5139,"contact":5144,"extension":5145,"proposal":3610},379,"Mike Gorchak @mgorchak-blackberry","VK_QNX_screen_surface",{"number":5147,"type":3803,"author":5148,"provisional":3610,"depends":3820,"contact":4023,"extension":5149,"proposal":3610},486,"SEC","VK_SEC_amigo_profiling",{"number":5151,"type":3803,"author":5152,"provisional":3610,"depends":3820,"specialuse":3995,"contact":4251,"extension":5153,"proposal":3610},421,"VALVE","VK_VALVE_descriptor_set_host_mapping",{"number":5155,"type":3803,"author":5152,"promotedto":4216,"provisional":3610,"depends":4214,"specialuse":3995,"contact":4215,"extension":5156,"proposal":3610},352,"VK_VALVE_mutable_descriptor_type",1725732650918]