[{"data":1,"prerenderedAt":9534},["ShallowReactive",2],{"mmBq0y8o7b":3,"VyF3Mmj32r":7971,"N9m89Rcq0G":8184},{"title":4,"description":5,"body":6,"_type":7969,"_id":7970},"Shaders","A shader specifies programmable operations that execute for each vertex,\ncontrol point, tessellated vertex, primitive, fragment, or workgroup in the\ncorresponding stage(s) of the graphics and compute pipelines.",{"type":7,"children":8,"toc":7883},"root",[9,17,22,60,65,82,95,102,150,164,175,182,192,202,212,222,232,283,292,298,307,313,337,353,403,458,487,554,560,569,575,593,625,643,698,716,728,753,1114,1142,1315,1356,1368,1396,1408,1437,1492,1519,1555,1576,1588,1616,1650,1684,1696,1772,1815,1834,1846,1884,1898,1931,1943,1960,1994,2010,2022,2057,2091,2118,2176,2209,2221,2253,2265,2298,2341,2361,2396,2411,2427,2433,2468,2499,2520,2526,2535,2541,2550,2559,2568,2577,2586,2595,2601,2610,2619,2628,2638,2644,2654,2683,2688,3150,3156,3183,3188,3194,3206,3247,3277,3282,3329,3335,3345,3350,3399,3407,3435,3445,3495,3501,3527,3551,3557,3562,3575,3638,3643,3649,3725,3731,3736,3746,3751,3756,3762,3804,3837,3843,3856,3861,3866,3871,3877,3920,3926,3944,3950,3965,3975,3995,4001,4027,4044,4052,4063,4099,4105,4122,4145,4151,4156,4162,4171,4177,4182,4188,4211,4217,4229,4235,4255,4298,4304,4325,4331,4381,4387,4392,4405,4421,4427,4432,4437,4443,4475,4481,4486,4491,4497,4519,4525,4530,4536,4562,4568,4573,4579,4589,4595,4608,4614,4627,4635,4677,4708,4713,4759,4780,4785,4797,4826,4832,4882,4888,4907,4912,4918,4929,4955,4961,4972,5031,5078,5088,5093,5099,5110,5169,5212,5220,5236,5242,5275,5292,5308,5335,5341,5352,5363,5374,5389,5401,5407,5426,5456,5471,5477,5495,5517,5538,5552,5573,5577,5627,5633,5644,5662,5745,5768,5848,5865,5912,5917,5933,5954,5968,5973,5979,5997,6002,6078,6083,6108,6122,6128,6152,6167,6189,6208,6228,6243,6249,6254,6270,6300,6305,6310,6391,6407,6415,6441,6494,6504,6555,6565,6600,6666,6695,6735,6798,6822,6828,6890,6919,6925,6936,6946,6955,6963,7003,7314,7560,7572,7580,7587,7596,7605,7611,7620,7629,7638,7646,7655,7664,7673,7682,7688,7694,7703,7712,7721,7727,7736,7745,7754,7760,7769,7775,7784,7790,7795,7804,7810,7820,7877],{"type":10,"tag":11,"props":12,"children":14},"element","h1",{"id":13},"shaders",[15],{"type":16,"value":4},"text",{"type":10,"tag":18,"props":19,"children":20},"p",{},[21],{"type":16,"value":5},{"type":10,"tag":18,"props":23,"children":24},{},[25,27,34,36,42,44,50,52,58],{"type":16,"value":26},"Graphics pipelines include vertex shader execution as a result of\n",{"type":10,"tag":28,"props":29,"children":31},"a",{"href":30},"/chapters/drawing#drawing",[32],{"type":16,"value":33},"primitive assembly",{"type":16,"value":35},", followed, if enabled, by tessellation\ncontrol and evaluation shaders operating on ",{"type":10,"tag":28,"props":37,"children":39},{"href":38},"/chapters/drawing#drawing-patch-lists",[40],{"type":16,"value":41},"patches",{"type":16,"value":43},",\ngeometry shaders, if enabled, operating on primitives, and fragment shaders,\nif present, operating on fragments generated by ",{"type":10,"tag":28,"props":45,"children":47},{"href":46},"/chapters/primsrast#primsrast",[48],{"type":16,"value":49},"Rasterization",{"type":16,"value":51},".\nIn this specification, vertex, tessellation control, tessellation evaluation\nand geometry shaders are collectively referred to as\n",{"type":10,"tag":28,"props":53,"children":55},{"href":54},"/man/VkGraphicsPipelineCreateInfo#pipelines-graphics-subsets-pre-rasterization",[56],{"type":16,"value":57},"pre-rasterization shader\nstage",{"type":16,"value":59},"s and occur in the logical pipeline before rasterization.\nThe fragment shader occurs logically after rasterization.",{"type":10,"tag":18,"props":61,"children":62},{},[63],{"type":16,"value":64},"Only the compute shader stage is included in a compute pipeline.\nCompute shaders operate on compute invocations in a workgroup.",{"type":10,"tag":18,"props":66,"children":67},{},[68,70,75,77,80],{"type":16,"value":69},"Shaders ",{"type":10,"tag":71,"props":72,"children":74},"normative",{"type":73},"can",[],{"type":16,"value":76}," read from input variables, and read from and write to output\nvariables.\nInput and output variables ",{"type":10,"tag":71,"props":78,"children":79},{"type":73},[],{"type":16,"value":81}," be used to transfer data between shader\nstages, or to allow the shader to interact with values that exist in the\nexecution environment.\nSimilarly, the execution environment provides constants describing\ncapabilities.",{"type":10,"tag":18,"props":83,"children":84},{},[85,87,93],{"type":16,"value":86},"Shader variables are associated with execution environment-provided inputs\nand outputs using ",{"type":10,"tag":88,"props":89,"children":90},"em",{},[91],{"type":16,"value":92},"built-in",{"type":16,"value":94}," decorations in the shader.\nThe available decorations for each stage are documented in the following\nsubsections.",{"type":10,"tag":96,"props":97,"children":99},"h2",{"id":98},"shaders-objects",[100],{"type":16,"value":101},"Shader Objects",{"type":10,"tag":18,"props":103,"children":104},{},[105,106,110,112,118,120,131,133,136,138,143,145,148],{"type":16,"value":69},{"type":10,"tag":71,"props":107,"children":109},{"type":108},"may",[],{"type":16,"value":111}," be compiled and linked into pipeline objects as described in\n",{"type":10,"tag":28,"props":113,"children":115},{"href":114},"/chapters/pipelines#pipelines",[116],{"type":16,"value":117},"Pipelines",{"type":16,"value":119}," chapter, or if the ",{"type":10,"tag":28,"props":121,"children":123},{"href":122},"/man/VkPhysicalDeviceShaderObjectFeaturesEXT#features-shaderObject",[124],{"type":10,"tag":125,"props":126,"children":128},"code",{"className":127},[],[129],{"type":16,"value":130},"shaderObject",{"type":16,"value":132}," feature is enabled they ",{"type":10,"tag":71,"props":134,"children":135},{"type":108},[],{"type":16,"value":137}," be compiled into\nindividual per-stage ",{"type":10,"tag":88,"props":139,"children":140},{},[141],{"type":16,"value":142},"shader objects",{"type":16,"value":144}," which ",{"type":10,"tag":71,"props":146,"children":147},{"type":73},[],{"type":16,"value":149}," be bound on a command\nbuffer independently from one another.\nUnlike pipelines, shader objects are not intrinsically tied to any specific\nset of state.\nInstead, state is specified dynamically in the command buffer.",{"type":10,"tag":18,"props":151,"children":152},{},[153,155,158,162],{"type":16,"value":154},"Each shader object represents a single compiled shader stage, which ",{"type":10,"tag":71,"props":156,"children":157},{"type":108},[],{"type":10,"tag":71,"props":159,"children":161},{"type":160},"optionally",[],{"type":16,"value":163}," be linked with one or more other stages.",{"type":10,"tag":165,"props":166,"children":169},"refpage",{"name":167,"type":168},"VkShaderEXT","handles",[170],{"type":10,"tag":18,"props":171,"children":172},{},[173],{"type":16,"value":174},"Opaque handle to a shader object",{"type":10,"tag":176,"props":177,"children":179},"h3",{"id":178},"shaders-objects-creation",[180],{"type":16,"value":181},"Shader Object Creation",{"type":10,"tag":18,"props":183,"children":184},{},[185,187,190],{"type":16,"value":186},"Shader objects ",{"type":10,"tag":71,"props":188,"children":189},{"type":108},[],{"type":16,"value":191}," be created from shader code provided as SPIR-V, or in an\nopaque, implementation-defined binary format specific to the physical\ndevice.",{"type":10,"tag":165,"props":193,"children":196},{"name":194,"type":195},"vkCreateShadersEXT","protos",[197],{"type":10,"tag":18,"props":198,"children":199},{},[200],{"type":16,"value":201},"Create one or more new shaders",{"type":10,"tag":165,"props":203,"children":206},{"name":204,"type":205},"VkShaderCreateInfoEXT","structs",[207],{"type":10,"tag":18,"props":208,"children":209},{},[210],{"type":16,"value":211},"Structure specifying parameters of a newly created shader",{"type":10,"tag":165,"props":213,"children":216},{"name":214,"type":215},"VkShaderCreateFlagsEXT","flags",[217],{"type":10,"tag":18,"props":218,"children":219},{},[220],{"type":16,"value":221},"Bitmask of VkShaderCreateFlagBitsEXT",{"type":10,"tag":165,"props":223,"children":226},{"name":224,"type":225},"VkShaderCreateFlagBitsEXT","enums",[227],{"type":10,"tag":18,"props":228,"children":229},{},[230],{"type":16,"value":231},"Bitmask controlling how a shader object is created",{"type":10,"tag":233,"props":234,"children":235},"note",{},[236],{"type":10,"tag":18,"props":237,"children":238},{},[239,241,247,249,255,257,263,264,270,272,275,277,281],{"type":16,"value":240},"The behavior of\n",{"type":10,"tag":125,"props":242,"children":244},{"className":243},[],[245],{"type":16,"value":246},"VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT",{"type":16,"value":248},"\nand\n",{"type":10,"tag":125,"props":250,"children":252},{"className":251},[],[253],{"type":16,"value":254},"VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT",{"type":16,"value":256},"\ndiffers subtly from the behavior of\n",{"type":10,"tag":125,"props":258,"children":260},{"className":259},[],[261],{"type":16,"value":262},"VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR",{"type":16,"value":248},{"type":10,"tag":125,"props":265,"children":267},{"className":266},[],[268],{"type":16,"value":269},"VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT",{"type":16,"value":271},"\nin that the shader bit allows, but does not require the shader to be used\nwith that type of attachment.\nThis means that the application need not create multiple shaders when it\ndoes not know in advance whether the shader will be used with or without the\nattachment type, or when it needs the same shader to be compatible with\nusage both with and without.\nThis ",{"type":10,"tag":71,"props":273,"children":274},{"type":108},[],{"type":16,"value":276}," come at some performance cost on some implementations, so\napplications ",{"type":10,"tag":71,"props":278,"children":280},{"type":279},"should",[],{"type":16,"value":282}," still only set bits that are actually necessary.",{"type":10,"tag":165,"props":284,"children":286},{"name":285,"type":225},"VkShaderCodeTypeEXT",[287],{"type":10,"tag":18,"props":288,"children":289},{},[290],{"type":16,"value":291},"Indicate a shader code type",{"type":10,"tag":176,"props":293,"children":295},{"id":294},"shaders-objects-binary-code",[296],{"type":16,"value":297},"Binary Shader Code",{"type":10,"tag":165,"props":299,"children":301},{"name":300,"type":195},"vkGetShaderBinaryDataEXT",[302],{"type":10,"tag":18,"props":303,"children":304},{},[305],{"type":16,"value":306},"Get the binary shader code from a shader object",{"type":10,"tag":176,"props":308,"children":310},{"id":309},"shaders-objects-binary-compatibility",[311],{"type":16,"value":312},"Binary Shader Compatibility",{"type":10,"tag":18,"props":314,"children":315},{},[316,318,323,325,328,330,335],{"type":16,"value":317},"Binary shader compatibility means that binary shader code returned from a\ncall to ",{"type":10,"tag":28,"props":319,"children":321},{"href":320},"/man/vkGetShaderBinaryDataEXT",[322],{"type":16,"value":300},{"type":16,"value":324}," ",{"type":10,"tag":71,"props":326,"children":327},{"type":73},[],{"type":16,"value":329}," be passed to a later call to\n",{"type":10,"tag":28,"props":331,"children":333},{"href":332},"/man/vkCreateShadersEXT",[334],{"type":16,"value":194},{"type":16,"value":336},", potentially on a different logical and/or physical\ndevice, and that this will result in the successful creation of a shader\nobject functionally equivalent to the shader object that the code was\noriginally queried from.",{"type":10,"tag":18,"props":338,"children":339},{},[340,342,346,348,351],{"type":16,"value":341},"Binary shader code queried from ",{"type":10,"tag":28,"props":343,"children":344},{"href":320},[345],{"type":16,"value":300},{"type":16,"value":347}," is not\nguaranteed to be compatible across all devices, but implementations are\nrequired to provide some compatibility guarantees.\nApplications ",{"type":10,"tag":71,"props":349,"children":350},{"type":108},[],{"type":16,"value":352}," determine binary shader compatibility using either (or\nboth) of two mechanisms.",{"type":10,"tag":18,"props":354,"children":355},{},[356,358,364,366,372,374,380,382,387,389,394,396,401],{"type":16,"value":357},"Guaranteed compatibility of shader binaries is expressed through a\ncombination of the ",{"type":10,"tag":125,"props":359,"children":361},{"className":360},[],[362],{"type":16,"value":363},"shaderBinaryUUID",{"type":16,"value":365}," and ",{"type":10,"tag":125,"props":367,"children":369},{"className":368},[],[370],{"type":16,"value":371},"shaderBinaryVersion",{"type":16,"value":373},"\nmembers of the ",{"type":10,"tag":28,"props":375,"children":377},{"href":376},"/man/VkPhysicalDeviceShaderObjectPropertiesEXT",[378],{"type":16,"value":379},"VkPhysicalDeviceShaderObjectPropertiesEXT",{"type":16,"value":381}," structure\nqueried from a physical device.\nBinary shaders retrieved from a physical device with a certain\n",{"type":10,"tag":125,"props":383,"children":385},{"className":384},[],[386],{"type":16,"value":363},{"type":16,"value":388}," are guaranteed to be compatible with all other\nphysical devices reporting the same ",{"type":10,"tag":125,"props":390,"children":392},{"className":391},[],[393],{"type":16,"value":363},{"type":16,"value":395}," and the same or\nhigher ",{"type":10,"tag":125,"props":397,"children":399},{"className":398},[],[400],{"type":16,"value":371},{"type":16,"value":402},".",{"type":10,"tag":18,"props":404,"children":405},{},[406,408,412,414,417,419,424,426,431,433,438,440,445,447,451,453,456],{"type":16,"value":407},"Whenever a new version of an implementation incorporates any changes that\naffect the output of ",{"type":10,"tag":28,"props":409,"children":410},{"href":320},[411],{"type":16,"value":300},{"type":16,"value":413},", the implementation\n",{"type":10,"tag":71,"props":415,"children":416},{"type":279},[],{"type":16,"value":418}," either increment ",{"type":10,"tag":125,"props":420,"children":422},{"className":421},[],[423],{"type":16,"value":371},{"type":16,"value":425}," if binary shader code\nretrieved from older versions remains compatible with the new\nimplementation, or else replace ",{"type":10,"tag":125,"props":427,"children":429},{"className":428},[],[430],{"type":16,"value":363},{"type":16,"value":432}," with a new value if\nbackward compatibility has been broken.\nBinary shader code queried from a device with a matching\n",{"type":10,"tag":125,"props":434,"children":436},{"className":435},[],[437],{"type":16,"value":363},{"type":16,"value":439}," and lower ",{"type":10,"tag":125,"props":441,"children":443},{"className":442},[],[444],{"type":16,"value":371},{"type":16,"value":446}," relative to the\ndevice on which ",{"type":10,"tag":28,"props":448,"children":449},{"href":332},[450],{"type":16,"value":194},{"type":16,"value":452}," is being called ",{"type":10,"tag":71,"props":454,"children":455},{"type":108},[],{"type":16,"value":457}," be suboptimal\nfor the new device in ways that do not change shader functionality, but it\nis still guaranteed to be usable to successfully create the shader\nobject(s).",{"type":10,"tag":233,"props":459,"children":460},{},[461],{"type":10,"tag":18,"props":462,"children":463},{},[464,466,471,473,478,480,485],{"type":16,"value":465},"Implementations are encouraged to share ",{"type":10,"tag":125,"props":467,"children":469},{"className":468},[],[470],{"type":16,"value":363},{"type":16,"value":472}," between\ndevices and driver versions to the maximum extent their hardware naturally\nallows, and are ",{"type":10,"tag":88,"props":474,"children":475},{},[476],{"type":16,"value":477},"strongly",{"type":16,"value":479}," discouraged from ever changing the\n",{"type":10,"tag":125,"props":481,"children":483},{"className":482},[],[484],{"type":16,"value":363},{"type":16,"value":486}," for the same hardware except unless absolutely\nnecessary.",{"type":10,"tag":18,"props":488,"children":489},{},[490,492,496,498,503,505,510,512,515,517,521,522,526,528,534,536,540,541,544,546,552],{"type":16,"value":491},"In addition to the shader compatibility guarantees described above, it is\nvalid for an application to call ",{"type":10,"tag":28,"props":493,"children":494},{"href":332},[495],{"type":16,"value":194},{"type":16,"value":497}," with binary shader\ncode created on a device with a different or unknown ",{"type":10,"tag":125,"props":499,"children":501},{"className":500},[],[502],{"type":16,"value":363},{"type":16,"value":504},"\nand/or higher ",{"type":10,"tag":125,"props":506,"children":508},{"className":507},[],[509],{"type":16,"value":371},{"type":16,"value":511},".\nIn this case, the implementation ",{"type":10,"tag":71,"props":513,"children":514},{"type":108},[],{"type":16,"value":516}," use any unspecified means of its\nchoosing to determine whether the provided binary shader code is usable.\nIf it is, ",{"type":10,"tag":28,"props":518,"children":519},{"href":332},[520],{"type":16,"value":194},{"type":16,"value":324},{"type":10,"tag":71,"props":523,"children":525},{"type":524},"must",[],{"type":16,"value":527}," return ",{"type":10,"tag":125,"props":529,"children":531},{"className":530},[],[532],{"type":16,"value":533},"VK_SUCCESS",{"type":16,"value":535},", and the\ncreated shader object is guaranteed to be valid.\nOtherwise, in the absence of some error, ",{"type":10,"tag":28,"props":537,"children":538},{"href":332},[539],{"type":16,"value":194},{"type":16,"value":324},{"type":10,"tag":71,"props":542,"children":543},{"type":524},[],{"type":16,"value":545},"\nreturn ",{"type":10,"tag":125,"props":547,"children":549},{"className":548},[],[550],{"type":16,"value":551},"VK_INCOMPATIBLE_SHADER_BINARY_EXT",{"type":16,"value":553}," to indicate that the provided\nbinary shader code is not compatible with the device.",{"type":10,"tag":176,"props":555,"children":557},{"id":556},"shaders-objects-binding",[558],{"type":16,"value":559},"Binding Shader Objects",{"type":10,"tag":165,"props":561,"children":563},{"name":562,"type":195},"vkCmdBindShadersEXT",[564],{"type":10,"tag":18,"props":565,"children":566},{},[567],{"type":16,"value":568},"Bind shader objects to a command buffer",{"type":10,"tag":176,"props":570,"children":572},{"id":571},"shaders-objects-state",[573],{"type":16,"value":574},"Setting State",{"type":10,"tag":18,"props":576,"children":577},{},[578,580,586,588,591],{"type":16,"value":579},"Whenever shader objects are used to issue drawing commands, the appropriate\n",{"type":10,"tag":28,"props":581,"children":583},{"href":582},"/chapters/pipelines#pipelines-dynamic-state",[584],{"type":16,"value":585},"dynamic state",{"type":16,"value":587}," setting commands ",{"type":10,"tag":71,"props":589,"children":590},{"type":524},[],{"type":16,"value":592}," have been\ncalled to set the relevant state in the command buffer prior to drawing:",{"type":10,"tag":594,"props":595,"children":596},"ul",{},[597,607,616],{"type":10,"tag":598,"props":599,"children":600},"li",{},[601],{"type":10,"tag":28,"props":602,"children":604},{"href":603},"/man/vkCmdSetViewportWithCount",[605],{"type":16,"value":606},"vkCmdSetViewportWithCount",{"type":10,"tag":598,"props":608,"children":609},{},[610],{"type":10,"tag":28,"props":611,"children":613},{"href":612},"/man/vkCmdSetScissorWithCount",[614],{"type":16,"value":615},"vkCmdSetScissorWithCount",{"type":10,"tag":598,"props":617,"children":618},{},[619],{"type":10,"tag":28,"props":620,"children":622},{"href":621},"/man/vkCmdSetRasterizerDiscardEnable",[623],{"type":16,"value":624},"vkCmdSetRasterizerDiscardEnable",{"type":10,"tag":18,"props":626,"children":627},{},[628,630,636,638,641],{"type":16,"value":629},"If a shader is bound to the ",{"type":10,"tag":125,"props":631,"children":633},{"className":632},[],[634],{"type":16,"value":635},"VK_SHADER_STAGE_VERTEX_BIT",{"type":16,"value":637}," stage, the\nfollowing commands ",{"type":10,"tag":71,"props":639,"children":640},{"type":524},[],{"type":16,"value":642}," have been called in the command buffer prior to\ndrawing:",{"type":10,"tag":594,"props":644,"children":645},{},[646,655,664,689],{"type":10,"tag":598,"props":647,"children":648},{},[649],{"type":10,"tag":28,"props":650,"children":652},{"href":651},"/man/vkCmdSetVertexInputEXT",[653],{"type":16,"value":654},"vkCmdSetVertexInputEXT",{"type":10,"tag":598,"props":656,"children":657},{},[658],{"type":10,"tag":28,"props":659,"children":661},{"href":660},"/man/vkCmdSetPrimitiveTopology",[662],{"type":16,"value":663},"vkCmdSetPrimitiveTopology",{"type":10,"tag":598,"props":665,"children":666},{},[667,673,675,681,683],{"type":10,"tag":28,"props":668,"children":670},{"href":669},"/man/vkCmdSetPatchControlPointsEXT",[671],{"type":16,"value":672},"vkCmdSetPatchControlPointsEXT",{"type":16,"value":674},", if ",{"type":10,"tag":125,"props":676,"children":678},{"className":677},[],[679],{"type":16,"value":680},"primitiveTopology",{"type":16,"value":682}," is\n",{"type":10,"tag":125,"props":684,"children":686},{"className":685},[],[687],{"type":16,"value":688},"VK_PRIMITIVE_TOPOLOGY_PATCH_LIST",{"type":10,"tag":598,"props":690,"children":691},{},[692],{"type":10,"tag":28,"props":693,"children":695},{"href":694},"/man/vkCmdSetPrimitiveRestartEnable",[696],{"type":16,"value":697},"vkCmdSetPrimitiveRestartEnable",{"type":10,"tag":18,"props":699,"children":700},{},[701,703,709,711,714],{"type":16,"value":702},"If a shader is bound to the\n",{"type":10,"tag":125,"props":704,"children":706},{"className":705},[],[707],{"type":16,"value":708},"VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT",{"type":16,"value":710}," stage, the following\ncommand ",{"type":10,"tag":71,"props":712,"children":713},{"type":524},[],{"type":16,"value":715}," have been called in the command buffer prior to drawing:",{"type":10,"tag":594,"props":717,"children":718},{},[719],{"type":10,"tag":598,"props":720,"children":721},{},[722],{"type":10,"tag":28,"props":723,"children":725},{"href":724},"/man/vkCmdSetTessellationDomainOriginEXT",[726],{"type":16,"value":727},"vkCmdSetTessellationDomainOriginEXT",{"type":10,"tag":18,"props":729,"children":730},{},[731,733,739,741,747,749,752],{"type":16,"value":732},"If ",{"type":10,"tag":125,"props":734,"children":736},{"className":735},[],[737],{"type":16,"value":738},"rasterizerDiscardEnable",{"type":16,"value":740}," is ",{"type":10,"tag":125,"props":742,"children":744},{"className":743},[],[745],{"type":16,"value":746},"VK_FALSE",{"type":16,"value":748},", the following commands\n",{"type":10,"tag":71,"props":750,"children":751},{"type":524},[],{"type":16,"value":715},{"type":10,"tag":594,"props":754,"children":755},{},[756,765,774,783,802,811,865,874,883,892,901,924,941,963,972,1003,1020,1029,1051,1072,1093],{"type":10,"tag":598,"props":757,"children":758},{},[759],{"type":10,"tag":28,"props":760,"children":762},{"href":761},"/man/vkCmdSetRasterizationSamplesEXT",[763],{"type":16,"value":764},"vkCmdSetRasterizationSamplesEXT",{"type":10,"tag":598,"props":766,"children":767},{},[768],{"type":10,"tag":28,"props":769,"children":771},{"href":770},"/man/vkCmdSetSampleMaskEXT",[772],{"type":16,"value":773},"vkCmdSetSampleMaskEXT",{"type":10,"tag":598,"props":775,"children":776},{},[777],{"type":10,"tag":28,"props":778,"children":780},{"href":779},"/man/vkCmdSetAlphaToCoverageEnableEXT",[781],{"type":16,"value":782},"vkCmdSetAlphaToCoverageEnableEXT",{"type":10,"tag":598,"props":784,"children":785},{},[786,792,794,800],{"type":10,"tag":28,"props":787,"children":789},{"href":788},"/man/vkCmdSetAlphaToOneEnableEXT",[790],{"type":16,"value":791},"vkCmdSetAlphaToOneEnableEXT",{"type":16,"value":793},", if the ",{"type":10,"tag":28,"props":795,"children":797},{"href":796},"/man/VkPhysicalDeviceFeatures#features-alphaToOne",[798],{"type":16,"value":799},"alphaToOne",{"type":16,"value":801}," feature is enabled on the device",{"type":10,"tag":598,"props":803,"children":804},{},[805],{"type":10,"tag":28,"props":806,"children":808},{"href":807},"/man/vkCmdSetPolygonModeEXT",[809],{"type":16,"value":810},"vkCmdSetPolygonModeEXT",{"type":10,"tag":598,"props":812,"children":813},{},[814,820,821,827,828,834,836,841,843,848,850,855,857,863],{"type":10,"tag":28,"props":815,"children":817},{"href":816},"/man/vkCmdSetLineWidth",[818],{"type":16,"value":819},"vkCmdSetLineWidth",{"type":16,"value":674},{"type":10,"tag":125,"props":822,"children":824},{"className":823},[],[825],{"type":16,"value":826},"polygonMode",{"type":16,"value":682},{"type":10,"tag":125,"props":829,"children":831},{"className":830},[],[832],{"type":16,"value":833},"VK_POLYGON_MODE_LINE",{"type":16,"value":835},", or if\na shader is bound to the ",{"type":10,"tag":125,"props":837,"children":839},{"className":838},[],[840],{"type":16,"value":635},{"type":16,"value":842}," stage and\n",{"type":10,"tag":125,"props":844,"children":846},{"className":845},[],[847],{"type":16,"value":680},{"type":16,"value":849}," is a line topology, or if a shader which outputs\nline primitives is bound to the\n",{"type":10,"tag":125,"props":851,"children":853},{"className":852},[],[854],{"type":16,"value":708},{"type":16,"value":856}," or\n",{"type":10,"tag":125,"props":858,"children":860},{"className":859},[],[861],{"type":16,"value":862},"VK_SHADER_STAGE_GEOMETRY_BIT",{"type":16,"value":864}," stage",{"type":10,"tag":598,"props":866,"children":867},{},[868],{"type":10,"tag":28,"props":869,"children":871},{"href":870},"/man/vkCmdSetCullMode",[872],{"type":16,"value":873},"vkCmdSetCullMode",{"type":10,"tag":598,"props":875,"children":876},{},[877],{"type":10,"tag":28,"props":878,"children":880},{"href":879},"/man/vkCmdSetFrontFace",[881],{"type":16,"value":882},"vkCmdSetFrontFace",{"type":10,"tag":598,"props":884,"children":885},{},[886],{"type":10,"tag":28,"props":887,"children":889},{"href":888},"/man/vkCmdSetDepthTestEnable",[890],{"type":16,"value":891},"vkCmdSetDepthTestEnable",{"type":10,"tag":598,"props":893,"children":894},{},[895],{"type":10,"tag":28,"props":896,"children":898},{"href":897},"/man/vkCmdSetDepthWriteEnable",[899],{"type":16,"value":900},"vkCmdSetDepthWriteEnable",{"type":10,"tag":598,"props":902,"children":903},{},[904,910,911,917,918],{"type":10,"tag":28,"props":905,"children":907},{"href":906},"/man/vkCmdSetDepthCompareOp",[908],{"type":16,"value":909},"vkCmdSetDepthCompareOp",{"type":16,"value":674},{"type":10,"tag":125,"props":912,"children":914},{"className":913},[],[915],{"type":16,"value":916},"depthTestEnable",{"type":16,"value":740},{"type":10,"tag":125,"props":919,"children":921},{"className":920},[],[922],{"type":16,"value":923},"VK_TRUE",{"type":10,"tag":598,"props":925,"children":926},{},[927,933,934,940],{"type":10,"tag":28,"props":928,"children":930},{"href":929},"/man/vkCmdSetDepthBoundsTestEnable",[931],{"type":16,"value":932},"vkCmdSetDepthBoundsTestEnable",{"type":16,"value":793},{"type":10,"tag":28,"props":935,"children":937},{"href":936},"/man/VkPhysicalDeviceFeatures#features-depthBounds",[938],{"type":16,"value":939},"depthBounds",{"type":16,"value":801},{"type":10,"tag":598,"props":942,"children":943},{},[944,950,951,957,958],{"type":10,"tag":28,"props":945,"children":947},{"href":946},"/man/vkCmdSetDepthBounds",[948],{"type":16,"value":949},"vkCmdSetDepthBounds",{"type":16,"value":674},{"type":10,"tag":125,"props":952,"children":954},{"className":953},[],[955],{"type":16,"value":956},"depthBoundsTestEnable",{"type":16,"value":682},{"type":10,"tag":125,"props":959,"children":961},{"className":960},[],[962],{"type":16,"value":923},{"type":10,"tag":598,"props":964,"children":965},{},[966],{"type":10,"tag":28,"props":967,"children":969},{"href":968},"/man/vkCmdSetDepthBiasEnable",[970],{"type":16,"value":971},"vkCmdSetDepthBiasEnable",{"type":10,"tag":598,"props":973,"children":974},{},[975,981,983,989,991,997,998],{"type":10,"tag":28,"props":976,"children":978},{"href":977},"/man/vkCmdSetDepthBias",[979],{"type":16,"value":980},"vkCmdSetDepthBias",{"type":16,"value":982}," or ",{"type":10,"tag":28,"props":984,"children":986},{"href":985},"/man/vkCmdSetDepthBias2EXT",[987],{"type":16,"value":988},"vkCmdSetDepthBias2EXT",{"type":16,"value":990},",\nif ",{"type":10,"tag":125,"props":992,"children":994},{"className":993},[],[995],{"type":16,"value":996},"depthBiasEnable",{"type":16,"value":740},{"type":10,"tag":125,"props":999,"children":1001},{"className":1000},[],[1002],{"type":16,"value":923},{"type":10,"tag":598,"props":1004,"children":1005},{},[1006,1012,1013,1019],{"type":10,"tag":28,"props":1007,"children":1009},{"href":1008},"/man/vkCmdSetDepthClampEnableEXT",[1010],{"type":16,"value":1011},"vkCmdSetDepthClampEnableEXT",{"type":16,"value":793},{"type":10,"tag":28,"props":1014,"children":1016},{"href":1015},"/man/VkPhysicalDeviceFeatures#features-depthClamp",[1017],{"type":16,"value":1018},"depthClamp",{"type":16,"value":801},{"type":10,"tag":598,"props":1021,"children":1022},{},[1023],{"type":10,"tag":28,"props":1024,"children":1026},{"href":1025},"/man/vkCmdSetStencilTestEnable",[1027],{"type":16,"value":1028},"vkCmdSetStencilTestEnable",{"type":10,"tag":598,"props":1030,"children":1031},{},[1032,1038,1039,1045,1046],{"type":10,"tag":28,"props":1033,"children":1035},{"href":1034},"/man/vkCmdSetStencilOp",[1036],{"type":16,"value":1037},"vkCmdSetStencilOp",{"type":16,"value":674},{"type":10,"tag":125,"props":1040,"children":1042},{"className":1041},[],[1043],{"type":16,"value":1044},"stencilTestEnable",{"type":16,"value":740},{"type":10,"tag":125,"props":1047,"children":1049},{"className":1048},[],[1050],{"type":16,"value":923},{"type":10,"tag":598,"props":1052,"children":1053},{},[1054,1060,1061,1066,1067],{"type":10,"tag":28,"props":1055,"children":1057},{"href":1056},"/man/vkCmdSetStencilCompareMask",[1058],{"type":16,"value":1059},"vkCmdSetStencilCompareMask",{"type":16,"value":674},{"type":10,"tag":125,"props":1062,"children":1064},{"className":1063},[],[1065],{"type":16,"value":1044},{"type":16,"value":682},{"type":10,"tag":125,"props":1068,"children":1070},{"className":1069},[],[1071],{"type":16,"value":923},{"type":10,"tag":598,"props":1073,"children":1074},{},[1075,1081,1082,1087,1088],{"type":10,"tag":28,"props":1076,"children":1078},{"href":1077},"/man/vkCmdSetStencilWriteMask",[1079],{"type":16,"value":1080},"vkCmdSetStencilWriteMask",{"type":16,"value":674},{"type":10,"tag":125,"props":1083,"children":1085},{"className":1084},[],[1086],{"type":16,"value":1044},{"type":16,"value":682},{"type":10,"tag":125,"props":1089,"children":1091},{"className":1090},[],[1092],{"type":16,"value":923},{"type":10,"tag":598,"props":1094,"children":1095},{},[1096,1102,1103,1108,1109],{"type":10,"tag":28,"props":1097,"children":1099},{"href":1098},"/man/vkCmdSetStencilReference",[1100],{"type":16,"value":1101},"vkCmdSetStencilReference",{"type":16,"value":674},{"type":10,"tag":125,"props":1104,"children":1106},{"className":1105},[],[1107],{"type":16,"value":1044},{"type":16,"value":682},{"type":10,"tag":125,"props":1110,"children":1112},{"className":1111},[],[1113],{"type":16,"value":923},{"type":10,"tag":18,"props":1115,"children":1116},{},[1117,1118,1124,1126,1131,1132,1137,1138,1141],{"type":16,"value":629},{"type":10,"tag":125,"props":1119,"children":1121},{"className":1120},[],[1122],{"type":16,"value":1123},"VK_SHADER_STAGE_FRAGMENT_BIT",{"type":16,"value":1125}," stage, and\n",{"type":10,"tag":125,"props":1127,"children":1129},{"className":1128},[],[1130],{"type":16,"value":738},{"type":16,"value":740},{"type":10,"tag":125,"props":1133,"children":1135},{"className":1134},[],[1136],{"type":16,"value":746},{"type":16,"value":748},{"type":10,"tag":71,"props":1139,"children":1140},{"type":524},[],{"type":16,"value":715},{"type":10,"tag":594,"props":1143,"children":1144},{},[1145,1166,1188,1206,1237],{"type":10,"tag":598,"props":1146,"children":1147},{},[1148,1154,1155,1165],{"type":10,"tag":28,"props":1149,"children":1151},{"href":1150},"/man/vkCmdSetLogicOpEnableEXT",[1152],{"type":16,"value":1153},"vkCmdSetLogicOpEnableEXT",{"type":16,"value":793},{"type":10,"tag":28,"props":1156,"children":1158},{"href":1157},"/man/VkPhysicalDeviceFeatures#features-logicOp",[1159],{"type":10,"tag":125,"props":1160,"children":1162},{"className":1161},[],[1163],{"type":16,"value":1164},"logicOp",{"type":16,"value":801},{"type":10,"tag":598,"props":1167,"children":1168},{},[1169,1175,1176,1182,1183],{"type":10,"tag":28,"props":1170,"children":1172},{"href":1171},"/man/vkCmdSetLogicOpEXT",[1173],{"type":16,"value":1174},"vkCmdSetLogicOpEXT",{"type":16,"value":674},{"type":10,"tag":125,"props":1177,"children":1179},{"className":1178},[],[1180],{"type":16,"value":1181},"logicOpEnable",{"type":16,"value":740},{"type":10,"tag":125,"props":1184,"children":1186},{"className":1185},[],[1187],{"type":16,"value":923},{"type":10,"tag":598,"props":1189,"children":1190},{},[1191,1197,1198,1204],{"type":10,"tag":28,"props":1192,"children":1194},{"href":1193},"/man/vkCmdSetColorBlendEnableEXT",[1195],{"type":16,"value":1196},"vkCmdSetColorBlendEnableEXT",{"type":16,"value":365},{"type":10,"tag":28,"props":1199,"children":1201},{"href":1200},"/man/vkCmdSetColorWriteMaskEXT",[1202],{"type":16,"value":1203},"vkCmdSetColorWriteMaskEXT",{"type":16,"value":1205},",\nif color attachments are bound, with values set for every color\nattachment in the render pass instance active at draw time",{"type":10,"tag":598,"props":1207,"children":1208},{},[1209,1215,1216,1222,1224,1230,1232],{"type":10,"tag":28,"props":1210,"children":1212},{"href":1211},"/man/vkCmdSetColorBlendEquationEXT",[1213],{"type":16,"value":1214},"vkCmdSetColorBlendEquationEXT",{"type":16,"value":856},{"type":10,"tag":28,"props":1217,"children":1219},{"href":1218},"/man/vkCmdSetColorBlendAdvancedEXT",[1220],{"type":16,"value":1221},"vkCmdSetColorBlendAdvancedEXT",{"type":16,"value":1223},",\nif color attachments are bound, for every attachment whose index in\n",{"type":10,"tag":125,"props":1225,"children":1227},{"className":1226},[],[1228],{"type":16,"value":1229},"pColorBlendEnables",{"type":16,"value":1231}," is a pointer to a value of ",{"type":10,"tag":125,"props":1233,"children":1235},{"className":1234},[],[1236],{"type":16,"value":923},{"type":10,"tag":598,"props":1238,"children":1239},{},[1240,1246,1248,1253,1255,1260,1262,1268,1270,1276,1278,1284,1286,1292,1294,1300,1301,1307,1309],{"type":10,"tag":28,"props":1241,"children":1243},{"href":1242},"/man/vkCmdSetBlendConstants",[1244],{"type":16,"value":1245},"vkCmdSetBlendConstants",{"type":16,"value":1247},", if any index in ",{"type":10,"tag":125,"props":1249,"children":1251},{"className":1250},[],[1252],{"type":16,"value":1229},{"type":16,"value":1254},"\nis ",{"type":10,"tag":125,"props":1256,"children":1258},{"className":1257},[],[1259],{"type":16,"value":923},{"type":16,"value":1261},", and the same index in ",{"type":10,"tag":125,"props":1263,"children":1265},{"className":1264},[],[1266],{"type":16,"value":1267},"pColorBlendEquations",{"type":16,"value":1269}," is a\n",{"type":10,"tag":125,"props":1271,"children":1273},{"className":1272},[],[1274],{"type":16,"value":1275},"VkColorBlendEquationEXT",{"type":16,"value":1277}," structure with any ",{"type":10,"tag":28,"props":1279,"children":1281},{"href":1280},"/man/VkBlendFactor",[1282],{"type":16,"value":1283},"VkBlendFactor",{"type":16,"value":1285},"\nmember with a value of ",{"type":10,"tag":125,"props":1287,"children":1289},{"className":1288},[],[1290],{"type":16,"value":1291},"VK_BLEND_FACTOR_CONSTANT_COLOR",{"type":16,"value":1293},",\n",{"type":10,"tag":125,"props":1295,"children":1297},{"className":1296},[],[1298],{"type":16,"value":1299},"VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR",{"type":16,"value":1293},{"type":10,"tag":125,"props":1302,"children":1304},{"className":1303},[],[1305],{"type":16,"value":1306},"VK_BLEND_FACTOR_CONSTANT_ALPHA",{"type":16,"value":1308},", or\n",{"type":10,"tag":125,"props":1310,"children":1312},{"className":1311},[],[1313],{"type":16,"value":1314},"VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA",{"type":10,"tag":18,"props":1316,"children":1317},{},[1318,1320,1330,1332,1337,1338,1343,1344,1349,1351,1354],{"type":16,"value":1319},"If the ",{"type":10,"tag":28,"props":1321,"children":1323},{"href":1322},"/man/VkPhysicalDeviceFragmentShadingRateFeaturesKHR#features-pipelineFragmentShadingRate",[1324],{"type":10,"tag":125,"props":1325,"children":1327},{"className":1326},[],[1328],{"type":16,"value":1329},"pipelineFragmentShadingRate",{"type":16,"value":1331}," feature is enabled on the device, and a\nshader is bound to the ",{"type":10,"tag":125,"props":1333,"children":1335},{"className":1334},[],[1336],{"type":16,"value":1123},{"type":16,"value":1125},{"type":10,"tag":125,"props":1339,"children":1341},{"className":1340},[],[1342],{"type":16,"value":738},{"type":16,"value":740},{"type":10,"tag":125,"props":1345,"children":1347},{"className":1346},[],[1348],{"type":16,"value":746},{"type":16,"value":1350},", the following command ",{"type":10,"tag":71,"props":1352,"children":1353},{"type":524},[],{"type":16,"value":1355},"\nhave been called in the command buffer prior to drawing:",{"type":10,"tag":594,"props":1357,"children":1358},{},[1359],{"type":10,"tag":598,"props":1360,"children":1361},{},[1362],{"type":10,"tag":28,"props":1363,"children":1365},{"href":1364},"/man/vkCmdSetFragmentShadingRateKHR",[1366],{"type":16,"value":1367},"vkCmdSetFragmentShadingRateKHR",{"type":10,"tag":18,"props":1369,"children":1370},{},[1371,1372,1382,1384,1389,1391,1394],{"type":16,"value":1319},{"type":10,"tag":28,"props":1373,"children":1375},{"href":1374},"/man/VkPhysicalDeviceTransformFeedbackFeaturesEXT#features-geometryStreams",[1376],{"type":10,"tag":125,"props":1377,"children":1379},{"className":1378},[],[1380],{"type":16,"value":1381},"geometryStreams",{"type":16,"value":1383}," feature is\nenabled on the device, and a shader is bound to the\n",{"type":10,"tag":125,"props":1385,"children":1387},{"className":1386},[],[1388],{"type":16,"value":862},{"type":16,"value":1390}," stage, the following command ",{"type":10,"tag":71,"props":1392,"children":1393},{"type":524},[],{"type":16,"value":1395}," have\nbeen called in the command buffer prior to drawing:",{"type":10,"tag":594,"props":1397,"children":1398},{},[1399],{"type":10,"tag":598,"props":1400,"children":1401},{},[1402],{"type":10,"tag":28,"props":1403,"children":1405},{"href":1404},"/man/vkCmdSetRasterizationStreamEXT",[1406],{"type":16,"value":1407},"vkCmdSetRasterizationStreamEXT",{"type":10,"tag":18,"props":1409,"children":1410},{},[1411,1412,1418,1420,1425,1426,1431,1433,1436],{"type":16,"value":1319},{"type":10,"tag":28,"props":1413,"children":1415},{"href":1414},"/extensions/VK_EXT_discard_rectangles",[1416],{"type":16,"value":1417},"VK_EXT_discard_rectangles",{"type":16,"value":1419}," extension is enabled on the\ndevice, and ",{"type":10,"tag":125,"props":1421,"children":1423},{"className":1422},[],[1424],{"type":16,"value":738},{"type":16,"value":740},{"type":10,"tag":125,"props":1427,"children":1429},{"className":1428},[],[1430],{"type":16,"value":746},{"type":16,"value":1432},", the following\ncommands ",{"type":10,"tag":71,"props":1434,"children":1435},{"type":524},[],{"type":16,"value":715},{"type":10,"tag":594,"props":1438,"children":1439},{},[1440,1449,1471],{"type":10,"tag":598,"props":1441,"children":1442},{},[1443],{"type":10,"tag":28,"props":1444,"children":1446},{"href":1445},"/man/vkCmdSetDiscardRectangleEnableEXT",[1447],{"type":16,"value":1448},"vkCmdSetDiscardRectangleEnableEXT",{"type":10,"tag":598,"props":1450,"children":1451},{},[1452,1458,1459,1465,1466],{"type":10,"tag":28,"props":1453,"children":1455},{"href":1454},"/man/vkCmdSetDiscardRectangleModeEXT",[1456],{"type":16,"value":1457},"vkCmdSetDiscardRectangleModeEXT",{"type":16,"value":674},{"type":10,"tag":125,"props":1460,"children":1462},{"className":1461},[],[1463],{"type":16,"value":1464},"discardRectangleEnable",{"type":16,"value":682},{"type":10,"tag":125,"props":1467,"children":1469},{"className":1468},[],[1470],{"type":16,"value":923},{"type":10,"tag":598,"props":1472,"children":1473},{},[1474,1480,1481,1486,1487],{"type":10,"tag":28,"props":1475,"children":1477},{"href":1476},"/man/vkCmdSetDiscardRectangleEXT",[1478],{"type":16,"value":1479},"vkCmdSetDiscardRectangleEXT",{"type":16,"value":674},{"type":10,"tag":125,"props":1482,"children":1484},{"className":1483},[],[1485],{"type":16,"value":1464},{"type":16,"value":682},{"type":10,"tag":125,"props":1488,"children":1490},{"className":1489},[],[1491],{"type":16,"value":923},{"type":10,"tag":18,"props":1493,"children":1494},{},[1495,1496,1502,1503,1508,1509,1514,1515,1518],{"type":16,"value":732},{"type":10,"tag":28,"props":1497,"children":1499},{"href":1498},"/extensions/VK_EXT_conservative_rasterization",[1500],{"type":16,"value":1501},"VK_EXT_conservative_rasterization",{"type":16,"value":1419},{"type":10,"tag":125,"props":1504,"children":1506},{"className":1505},[],[1507],{"type":16,"value":738},{"type":16,"value":740},{"type":10,"tag":125,"props":1510,"children":1512},{"className":1511},[],[1513],{"type":16,"value":746},{"type":16,"value":1432},{"type":10,"tag":71,"props":1516,"children":1517},{"type":524},[],{"type":16,"value":715},{"type":10,"tag":594,"props":1520,"children":1521},{},[1522,1531],{"type":10,"tag":598,"props":1523,"children":1524},{},[1525],{"type":10,"tag":28,"props":1526,"children":1528},{"href":1527},"/man/vkCmdSetConservativeRasterizationModeEXT",[1529],{"type":16,"value":1530},"vkCmdSetConservativeRasterizationModeEXT",{"type":10,"tag":598,"props":1532,"children":1533},{},[1534,1540,1542,1548,1549],{"type":10,"tag":28,"props":1535,"children":1537},{"href":1536},"/man/vkCmdSetExtraPrimitiveOverestimationSizeEXT",[1538],{"type":16,"value":1539},"vkCmdSetExtraPrimitiveOverestimationSizeEXT",{"type":16,"value":1541},", if\n",{"type":10,"tag":125,"props":1543,"children":1545},{"className":1544},[],[1546],{"type":16,"value":1547},"conservativeRasterizationMode",{"type":16,"value":682},{"type":10,"tag":125,"props":1550,"children":1552},{"className":1551},[],[1553],{"type":16,"value":1554},"VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT",{"type":10,"tag":18,"props":1556,"children":1557},{},[1558,1559,1569,1571,1574],{"type":16,"value":1319},{"type":10,"tag":28,"props":1560,"children":1562},{"href":1561},"/man/VkPhysicalDeviceDepthClipEnableFeaturesEXT#features-depthClipEnable",[1563],{"type":10,"tag":125,"props":1564,"children":1566},{"className":1565},[],[1567],{"type":16,"value":1568},"depthClipEnable",{"type":16,"value":1570}," feature is\nenabled on the device, the following command ",{"type":10,"tag":71,"props":1572,"children":1573},{"type":524},[],{"type":16,"value":1575}," have been called in the\ncommand buffer prior to drawing:",{"type":10,"tag":594,"props":1577,"children":1578},{},[1579],{"type":10,"tag":598,"props":1580,"children":1581},{},[1582],{"type":10,"tag":28,"props":1583,"children":1585},{"href":1584},"/man/vkCmdSetDepthClipEnableEXT",[1586],{"type":16,"value":1587},"vkCmdSetDepthClipEnableEXT",{"type":10,"tag":18,"props":1589,"children":1590},{},[1591,1592,1598,1600,1605,1606,1611,1612,1615],{"type":16,"value":1319},{"type":10,"tag":28,"props":1593,"children":1595},{"href":1594},"/extensions/VK_EXT_sample_locations",[1596],{"type":16,"value":1597},"VK_EXT_sample_locations",{"type":16,"value":1599}," extension is enabled on the device,\nand ",{"type":10,"tag":125,"props":1601,"children":1603},{"className":1602},[],[1604],{"type":16,"value":738},{"type":16,"value":740},{"type":10,"tag":125,"props":1607,"children":1609},{"className":1608},[],[1610],{"type":16,"value":746},{"type":16,"value":748},{"type":10,"tag":71,"props":1613,"children":1614},{"type":524},[],{"type":16,"value":715},{"type":10,"tag":594,"props":1617,"children":1618},{},[1619,1628],{"type":10,"tag":598,"props":1620,"children":1621},{},[1622],{"type":10,"tag":28,"props":1623,"children":1625},{"href":1624},"/man/vkCmdSetSampleLocationsEnableEXT",[1626],{"type":16,"value":1627},"vkCmdSetSampleLocationsEnableEXT",{"type":10,"tag":598,"props":1629,"children":1630},{},[1631,1637,1638,1644,1645],{"type":10,"tag":28,"props":1632,"children":1634},{"href":1633},"/man/vkCmdSetSampleLocationsEXT",[1635],{"type":16,"value":1636},"vkCmdSetSampleLocationsEXT",{"type":16,"value":674},{"type":10,"tag":125,"props":1639,"children":1641},{"className":1640},[],[1642],{"type":16,"value":1643},"sampleLocationsEnable",{"type":16,"value":682},{"type":10,"tag":125,"props":1646,"children":1648},{"className":1647},[],[1649],{"type":16,"value":923},{"type":10,"tag":18,"props":1651,"children":1652},{},[1653,1654,1660,1661,1666,1667,1672,1674,1679,1680,1683],{"type":16,"value":1319},{"type":10,"tag":28,"props":1655,"children":1657},{"href":1656},"/extensions/VK_EXT_provoking_vertex",[1658],{"type":16,"value":1659},"VK_EXT_provoking_vertex",{"type":16,"value":1599},{"type":10,"tag":125,"props":1662,"children":1664},{"className":1663},[],[1665],{"type":16,"value":738},{"type":16,"value":740},{"type":10,"tag":125,"props":1668,"children":1670},{"className":1669},[],[1671],{"type":16,"value":746},{"type":16,"value":1673},", and a shader is bound\nto the ",{"type":10,"tag":125,"props":1675,"children":1677},{"className":1676},[],[1678],{"type":16,"value":635},{"type":16,"value":1390},{"type":10,"tag":71,"props":1681,"children":1682},{"type":524},[],{"type":16,"value":1355},{"type":10,"tag":594,"props":1685,"children":1686},{},[1687],{"type":10,"tag":598,"props":1688,"children":1689},{},[1690],{"type":10,"tag":28,"props":1691,"children":1693},{"href":1692},"/man/vkCmdSetProvokingVertexModeEXT",[1694],{"type":16,"value":1695},"vkCmdSetProvokingVertexModeEXT",{"type":10,"tag":18,"props":1697,"children":1698},{},[1699,1700,1706,1707,1713,1715,1720,1721,1726,1728,1733,1734,1739,1741,1746,1748,1753,1755,1760,1761,1766,1768,1771],{"type":16,"value":1319},{"type":10,"tag":28,"props":1701,"children":1703},{"href":1702},"/extensions/VK_KHR_line_rasterization",[1704],{"type":16,"value":1705},"VK_KHR_line_rasterization",{"type":16,"value":856},{"type":10,"tag":28,"props":1708,"children":1710},{"href":1709},"/extensions/VK_EXT_line_rasterization",[1711],{"type":16,"value":1712},"VK_EXT_line_rasterization",{"type":16,"value":1714}," extension is enabled on the device, and\n",{"type":10,"tag":125,"props":1716,"children":1718},{"className":1717},[],[1719],{"type":16,"value":738},{"type":16,"value":740},{"type":10,"tag":125,"props":1722,"children":1724},{"className":1723},[],[1725],{"type":16,"value":746},{"type":16,"value":1727},", and if ",{"type":10,"tag":125,"props":1729,"children":1731},{"className":1730},[],[1732],{"type":16,"value":826},{"type":16,"value":682},{"type":10,"tag":125,"props":1735,"children":1737},{"className":1736},[],[1738],{"type":16,"value":833},{"type":16,"value":1740}," or a shader is bound to the\n",{"type":10,"tag":125,"props":1742,"children":1744},{"className":1743},[],[1745],{"type":16,"value":635},{"type":16,"value":1747}," stage and ",{"type":10,"tag":125,"props":1749,"children":1751},{"className":1750},[],[1752],{"type":16,"value":680},{"type":16,"value":1754}," is a line\ntopology or a shader which outputs line primitives is bound to the\n",{"type":10,"tag":125,"props":1756,"children":1758},{"className":1757},[],[1759],{"type":16,"value":708},{"type":16,"value":856},{"type":10,"tag":125,"props":1762,"children":1764},{"className":1763},[],[1765],{"type":16,"value":862},{"type":16,"value":1767}," stage, the following commands ",{"type":10,"tag":71,"props":1769,"children":1770},{"type":524},[],{"type":16,"value":1395},{"type":10,"tag":594,"props":1773,"children":1774},{},[1775,1784,1793],{"type":10,"tag":598,"props":1776,"children":1777},{},[1778],{"type":10,"tag":28,"props":1779,"children":1781},{"href":1780},"/man/vkCmdSetLineRasterizationModeEXT",[1782],{"type":16,"value":1783},"vkCmdSetLineRasterizationModeEXT",{"type":10,"tag":598,"props":1785,"children":1786},{},[1787],{"type":10,"tag":28,"props":1788,"children":1790},{"href":1789},"/man/vkCmdSetLineStippleEnableEXT",[1791],{"type":16,"value":1792},"vkCmdSetLineStippleEnableEXT",{"type":10,"tag":598,"props":1794,"children":1795},{},[1796,1802,1803,1809,1810],{"type":10,"tag":28,"props":1797,"children":1799},{"href":1798},"/man/vkCmdSetLineStippleKHR",[1800],{"type":16,"value":1801},"vkCmdSetLineStippleKHR",{"type":16,"value":674},{"type":10,"tag":125,"props":1804,"children":1806},{"className":1805},[],[1807],{"type":16,"value":1808},"stippledLineEnable",{"type":16,"value":682},{"type":10,"tag":125,"props":1811,"children":1813},{"className":1812},[],[1814],{"type":16,"value":923},{"type":10,"tag":18,"props":1816,"children":1817},{},[1818,1819,1829,1830,1833],{"type":16,"value":1319},{"type":10,"tag":28,"props":1820,"children":1822},{"href":1821},"/man/VkPhysicalDeviceDepthClipControlFeaturesEXT#features-depthClipControl",[1823],{"type":10,"tag":125,"props":1824,"children":1826},{"className":1825},[],[1827],{"type":16,"value":1828},"depthClipControl",{"type":16,"value":1570},{"type":10,"tag":71,"props":1831,"children":1832},{"type":524},[],{"type":16,"value":1575},{"type":10,"tag":594,"props":1835,"children":1836},{},[1837],{"type":10,"tag":598,"props":1838,"children":1839},{},[1840],{"type":10,"tag":28,"props":1841,"children":1843},{"href":1842},"/man/vkCmdSetDepthClipNegativeOneToOneEXT",[1844],{"type":16,"value":1845},"vkCmdSetDepthClipNegativeOneToOneEXT",{"type":10,"tag":18,"props":1847,"children":1848},{},[1849,1850,1860,1861,1866,1868,1873,1874,1879,1880,1883],{"type":16,"value":1319},{"type":10,"tag":28,"props":1851,"children":1853},{"href":1852},"/man/VkPhysicalDeviceColorWriteEnableFeaturesEXT#features-colorWriteEnable",[1854],{"type":10,"tag":125,"props":1855,"children":1857},{"className":1856},[],[1858],{"type":16,"value":1859},"colorWriteEnable",{"type":16,"value":1383},{"type":10,"tag":125,"props":1862,"children":1864},{"className":1863},[],[1865],{"type":16,"value":1123},{"type":16,"value":1867}," stage, and ",{"type":10,"tag":125,"props":1869,"children":1871},{"className":1870},[],[1872],{"type":16,"value":738},{"type":16,"value":1254},{"type":10,"tag":125,"props":1875,"children":1877},{"className":1876},[],[1878],{"type":16,"value":746},{"type":16,"value":1350},{"type":10,"tag":71,"props":1881,"children":1882},{"type":524},[],{"type":16,"value":1575},{"type":10,"tag":594,"props":1885,"children":1886},{},[1887],{"type":10,"tag":598,"props":1888,"children":1889},{},[1890,1896],{"type":10,"tag":28,"props":1891,"children":1893},{"href":1892},"/man/vkCmdSetColorWriteEnableEXT",[1894],{"type":16,"value":1895},"vkCmdSetColorWriteEnableEXT",{"type":16,"value":1897},", with values set for every color\nattachment in the render pass instance active at draw time",{"type":10,"tag":18,"props":1899,"children":1900},{},[1901,1902,1908,1909,1914,1915,1920,1921,1926,1927,1930],{"type":16,"value":1319},{"type":10,"tag":28,"props":1903,"children":1905},{"href":1904},"/man/VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT#features-attachmentFeedbackLoopDynamicState",[1906],{"type":16,"value":1907},"attachmentFeedbackLoopDynamicState",{"type":16,"value":1331},{"type":10,"tag":125,"props":1910,"children":1912},{"className":1911},[],[1913],{"type":16,"value":1123},{"type":16,"value":1125},{"type":10,"tag":125,"props":1916,"children":1918},{"className":1917},[],[1919],{"type":16,"value":738},{"type":16,"value":740},{"type":10,"tag":125,"props":1922,"children":1924},{"className":1923},[],[1925],{"type":16,"value":746},{"type":16,"value":1350},{"type":10,"tag":71,"props":1928,"children":1929},{"type":524},[],{"type":16,"value":1355},{"type":10,"tag":594,"props":1932,"children":1933},{},[1934],{"type":10,"tag":598,"props":1935,"children":1936},{},[1937],{"type":10,"tag":28,"props":1938,"children":1940},{"href":1939},"/man/vkCmdSetAttachmentFeedbackLoopEnableEXT",[1941],{"type":16,"value":1942},"vkCmdSetAttachmentFeedbackLoopEnableEXT",{"type":10,"tag":18,"props":1944,"children":1945},{},[1946,1947,1953,1955,1958],{"type":16,"value":1319},{"type":10,"tag":28,"props":1948,"children":1950},{"href":1949},"/extensions/VK_NV_clip_space_w_scaling",[1951],{"type":16,"value":1952},"VK_NV_clip_space_w_scaling",{"type":16,"value":1954}," extension is enabled on the\ndevice, the following commands ",{"type":10,"tag":71,"props":1956,"children":1957},{"type":524},[],{"type":16,"value":1959}," have been called in the command buffer\nprior to drawing:",{"type":10,"tag":594,"props":1961,"children":1962},{},[1963,1972],{"type":10,"tag":598,"props":1964,"children":1965},{},[1966],{"type":10,"tag":28,"props":1967,"children":1969},{"href":1968},"/man/vkCmdSetViewportWScalingEnableNV",[1970],{"type":16,"value":1971},"vkCmdSetViewportWScalingEnableNV",{"type":10,"tag":598,"props":1973,"children":1974},{},[1975,1981,1982,1988,1989],{"type":10,"tag":28,"props":1976,"children":1978},{"href":1977},"/man/vkCmdSetViewportWScalingNV",[1979],{"type":16,"value":1980},"vkCmdSetViewportWScalingNV",{"type":16,"value":674},{"type":10,"tag":125,"props":1983,"children":1985},{"className":1984},[],[1986],{"type":16,"value":1987},"viewportWScalingEnable",{"type":16,"value":682},{"type":10,"tag":125,"props":1990,"children":1992},{"className":1991},[],[1993],{"type":16,"value":923},{"type":10,"tag":18,"props":1995,"children":1996},{},[1997,1998,2004,2006,2009],{"type":16,"value":1319},{"type":10,"tag":28,"props":1999,"children":2001},{"href":2000},"/extensions/VK_NV_viewport_swizzle",[2002],{"type":16,"value":2003},"VK_NV_viewport_swizzle",{"type":16,"value":2005}," extension is enabled on the device,\nthe following command ",{"type":10,"tag":71,"props":2007,"children":2008},{"type":524},[],{"type":16,"value":642},{"type":10,"tag":594,"props":2011,"children":2012},{},[2013],{"type":10,"tag":598,"props":2014,"children":2015},{},[2016],{"type":10,"tag":28,"props":2017,"children":2019},{"href":2018},"/man/vkCmdSetViewportSwizzleNV",[2020],{"type":16,"value":2021},"vkCmdSetViewportSwizzleNV",{"type":10,"tag":18,"props":2023,"children":2024},{},[2025,2026,2032,2034,2039,2041,2046,2047,2052,2053,2056],{"type":16,"value":1319},{"type":10,"tag":28,"props":2027,"children":2029},{"href":2028},"/extensions/VK_NV_fragment_coverage_to_color",[2030],{"type":16,"value":2031},"VK_NV_fragment_coverage_to_color",{"type":16,"value":2033}," extension is enabled on the\ndevice, and a shader is bound to the ",{"type":10,"tag":125,"props":2035,"children":2037},{"className":2036},[],[2038],{"type":16,"value":1123},{"type":16,"value":2040},"\nstage, and ",{"type":10,"tag":125,"props":2042,"children":2044},{"className":2043},[],[2045],{"type":16,"value":738},{"type":16,"value":740},{"type":10,"tag":125,"props":2048,"children":2050},{"className":2049},[],[2051],{"type":16,"value":746},{"type":16,"value":1432},{"type":10,"tag":71,"props":2054,"children":2055},{"type":524},[],{"type":16,"value":715},{"type":10,"tag":594,"props":2058,"children":2059},{},[2060,2069],{"type":10,"tag":598,"props":2061,"children":2062},{},[2063],{"type":10,"tag":28,"props":2064,"children":2066},{"href":2065},"/man/vkCmdSetCoverageToColorEnableNV",[2067],{"type":16,"value":2068},"vkCmdSetCoverageToColorEnableNV",{"type":10,"tag":598,"props":2070,"children":2071},{},[2072,2078,2079,2085,2086],{"type":10,"tag":28,"props":2073,"children":2075},{"href":2074},"/man/vkCmdSetCoverageToColorLocationNV",[2076],{"type":16,"value":2077},"vkCmdSetCoverageToColorLocationNV",{"type":16,"value":674},{"type":10,"tag":125,"props":2080,"children":2082},{"className":2081},[],[2083],{"type":16,"value":2084},"coverageToColorEnable",{"type":16,"value":1254},{"type":10,"tag":125,"props":2087,"children":2089},{"className":2088},[],[2090],{"type":16,"value":923},{"type":10,"tag":18,"props":2092,"children":2093},{},[2094,2095,2101,2102,2107,2108,2113,2114,2117],{"type":16,"value":1319},{"type":10,"tag":28,"props":2096,"children":2098},{"href":2097},"/extensions/VK_NV_framebuffer_mixed_samples",[2099],{"type":16,"value":2100},"VK_NV_framebuffer_mixed_samples",{"type":16,"value":1419},{"type":10,"tag":125,"props":2103,"children":2105},{"className":2104},[],[2106],{"type":16,"value":738},{"type":16,"value":740},{"type":10,"tag":125,"props":2109,"children":2111},{"className":2110},[],[2112],{"type":16,"value":746},{"type":16,"value":1432},{"type":10,"tag":71,"props":2115,"children":2116},{"type":524},[],{"type":16,"value":715},{"type":10,"tag":594,"props":2119,"children":2120},{},[2121,2130,2154],{"type":10,"tag":598,"props":2122,"children":2123},{},[2124],{"type":10,"tag":28,"props":2125,"children":2127},{"href":2126},"/man/vkCmdSetCoverageModulationModeNV",[2128],{"type":16,"value":2129},"vkCmdSetCoverageModulationModeNV",{"type":10,"tag":598,"props":2131,"children":2132},{},[2133,2139,2140,2146,2148],{"type":10,"tag":28,"props":2134,"children":2136},{"href":2135},"/man/vkCmdSetCoverageModulationTableEnableNV",[2137],{"type":16,"value":2138},"vkCmdSetCoverageModulationTableEnableNV",{"type":16,"value":1541},{"type":10,"tag":125,"props":2141,"children":2143},{"className":2142},[],[2144],{"type":16,"value":2145},"coverageModulationMode",{"type":16,"value":2147}," is not\n",{"type":10,"tag":125,"props":2149,"children":2151},{"className":2150},[],[2152],{"type":16,"value":2153},"VK_COVERAGE_MODULATION_MODE_NONE_NV",{"type":10,"tag":598,"props":2155,"children":2156},{},[2157,2163,2164,2170,2171],{"type":10,"tag":28,"props":2158,"children":2160},{"href":2159},"/man/vkCmdSetCoverageModulationTableNV",[2161],{"type":16,"value":2162},"vkCmdSetCoverageModulationTableNV",{"type":16,"value":1541},{"type":10,"tag":125,"props":2165,"children":2167},{"className":2166},[],[2168],{"type":16,"value":2169},"coverageModulationTableEnable",{"type":16,"value":740},{"type":10,"tag":125,"props":2172,"children":2174},{"className":2173},[],[2175],{"type":16,"value":923},{"type":10,"tag":18,"props":2177,"children":2178},{},[2179,2180,2190,2192,2197,2198,2203,2204,2207],{"type":16,"value":1319},{"type":10,"tag":28,"props":2181,"children":2183},{"href":2182},"/man/VkPhysicalDeviceCoverageReductionModeFeaturesNV#features-coverageReductionMode",[2184],{"type":10,"tag":125,"props":2185,"children":2187},{"className":2186},[],[2188],{"type":16,"value":2189},"coverageReductionMode",{"type":16,"value":2191},"\nfeature is enabled on the device, and ",{"type":10,"tag":125,"props":2193,"children":2195},{"className":2194},[],[2196],{"type":16,"value":738},{"type":16,"value":682},{"type":10,"tag":125,"props":2199,"children":2201},{"className":2200},[],[2202],{"type":16,"value":746},{"type":16,"value":1350},{"type":10,"tag":71,"props":2205,"children":2206},{"type":524},[],{"type":16,"value":2208}," have been called in the command\nbuffer prior to drawing:",{"type":10,"tag":594,"props":2210,"children":2211},{},[2212],{"type":10,"tag":598,"props":2213,"children":2214},{},[2215],{"type":10,"tag":28,"props":2216,"children":2218},{"href":2217},"/man/vkCmdSetCoverageReductionModeNV",[2219],{"type":16,"value":2220},"vkCmdSetCoverageReductionModeNV",{"type":10,"tag":18,"props":2222,"children":2223},{},[2224,2225,2235,2237,2242,2243,2248,2249,2252],{"type":16,"value":1319},{"type":10,"tag":28,"props":2226,"children":2228},{"href":2227},"/man/VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV#features-representativeFragmentTest",[2229],{"type":10,"tag":125,"props":2230,"children":2232},{"className":2231},[],[2233],{"type":16,"value":2234},"representativeFragmentTest",{"type":16,"value":2236}," feature is enabled on the device, and\n",{"type":10,"tag":125,"props":2238,"children":2240},{"className":2239},[],[2241],{"type":16,"value":738},{"type":16,"value":740},{"type":10,"tag":125,"props":2244,"children":2246},{"className":2245},[],[2247],{"type":16,"value":746},{"type":16,"value":1350},{"type":10,"tag":71,"props":2250,"children":2251},{"type":524},[],{"type":16,"value":1355},{"type":10,"tag":594,"props":2254,"children":2255},{},[2256],{"type":10,"tag":598,"props":2257,"children":2258},{},[2259],{"type":10,"tag":28,"props":2260,"children":2262},{"href":2261},"/man/vkCmdSetRepresentativeFragmentTestEnableNV",[2263],{"type":16,"value":2264},"vkCmdSetRepresentativeFragmentTestEnableNV",{"type":10,"tag":18,"props":2266,"children":2267},{},[2268,2269,2279,2281,2286,2287,2292,2294,2297],{"type":16,"value":1319},{"type":10,"tag":28,"props":2270,"children":2272},{"href":2271},"/man/VkPhysicalDeviceShadingRateImageFeaturesNV#features-shadingRateImage",[2273],{"type":10,"tag":125,"props":2274,"children":2276},{"className":2275},[],[2277],{"type":16,"value":2278},"shadingRateImage",{"type":16,"value":2280}," feature is\nenabled on the device, and ",{"type":10,"tag":125,"props":2282,"children":2284},{"className":2283},[],[2285],{"type":16,"value":738},{"type":16,"value":740},{"type":10,"tag":125,"props":2288,"children":2290},{"className":2289},[],[2291],{"type":16,"value":746},{"type":16,"value":2293},",\nthe following commands ",{"type":10,"tag":71,"props":2295,"children":2296},{"type":524},[],{"type":16,"value":642},{"type":10,"tag":594,"props":2299,"children":2300},{},[2301,2310,2319],{"type":10,"tag":598,"props":2302,"children":2303},{},[2304],{"type":10,"tag":28,"props":2305,"children":2307},{"href":2306},"/man/vkCmdSetCoarseSampleOrderNV",[2308],{"type":16,"value":2309},"vkCmdSetCoarseSampleOrderNV",{"type":10,"tag":598,"props":2311,"children":2312},{},[2313],{"type":10,"tag":28,"props":2314,"children":2316},{"href":2315},"/man/vkCmdSetShadingRateImageEnableNV",[2317],{"type":16,"value":2318},"vkCmdSetShadingRateImageEnableNV",{"type":10,"tag":598,"props":2320,"children":2321},{},[2322,2328,2329,2335,2336],{"type":10,"tag":28,"props":2323,"children":2325},{"href":2324},"/man/vkCmdSetViewportShadingRatePaletteNV",[2326],{"type":16,"value":2327},"vkCmdSetViewportShadingRatePaletteNV",{"type":16,"value":1541},{"type":10,"tag":125,"props":2330,"children":2332},{"className":2331},[],[2333],{"type":16,"value":2334},"shadingRateImageEnable",{"type":16,"value":740},{"type":10,"tag":125,"props":2337,"children":2339},{"className":2338},[],[2340],{"type":16,"value":923},{"type":10,"tag":18,"props":2342,"children":2343},{},[2344,2345,2355,2357,2360],{"type":16,"value":1319},{"type":10,"tag":28,"props":2346,"children":2348},{"href":2347},"/man/VkPhysicalDeviceExclusiveScissorFeaturesNV#features-exclusiveScissor",[2349],{"type":10,"tag":125,"props":2350,"children":2352},{"className":2351},[],[2353],{"type":16,"value":2354},"exclusiveScissor",{"type":16,"value":2356}," feature is\nenabled on the device, the following commands ",{"type":10,"tag":71,"props":2358,"children":2359},{"type":524},[],{"type":16,"value":1575},{"type":10,"tag":594,"props":2362,"children":2363},{},[2364,2373],{"type":10,"tag":598,"props":2365,"children":2366},{},[2367],{"type":10,"tag":28,"props":2368,"children":2370},{"href":2369},"/man/vkCmdSetExclusiveScissorEnableNV",[2371],{"type":16,"value":2372},"vkCmdSetExclusiveScissorEnableNV",{"type":10,"tag":598,"props":2374,"children":2375},{},[2376,2382,2384,2390,2391],{"type":10,"tag":28,"props":2377,"children":2379},{"href":2378},"/man/vkCmdSetExclusiveScissorNV",[2380],{"type":16,"value":2381},"vkCmdSetExclusiveScissorNV",{"type":16,"value":2383},", if any value in\n",{"type":10,"tag":125,"props":2385,"children":2387},{"className":2386},[],[2388],{"type":16,"value":2389},"pExclusiveScissorEnables",{"type":16,"value":740},{"type":10,"tag":125,"props":2392,"children":2394},{"className":2393},[],[2395],{"type":16,"value":923},{"type":10,"tag":18,"props":2397,"children":2398},{},[2399,2401,2404,2406,2409],{"type":16,"value":2400},"State ",{"type":10,"tag":71,"props":2402,"children":2403},{"type":73},[],{"type":16,"value":2405}," be set either at any time before or after shader objects are\nbound, but all required state ",{"type":10,"tag":71,"props":2407,"children":2408},{"type":524},[],{"type":16,"value":2410}," be set prior to issuing drawing\ncommands.",{"type":10,"tag":18,"props":2412,"children":2413},{},[2414,2415,2425],{"type":16,"value":1319},{"type":10,"tag":28,"props":2416,"children":2418},{"href":2417},"/man/VkPhysicalDeviceCommandBufferInheritanceFeaturesNV#features-commandBufferInheritance",[2419],{"type":10,"tag":125,"props":2420,"children":2422},{"className":2421},[],[2423],{"type":16,"value":2424},"commandBufferInheritance",{"type":16,"value":2426},"\nfeature is enabled, graphics and compute state is inherited from the\npreviously executed command buffer in the queue.\nAny valid state inherited in this way does not need to be set again in the\ncurrent command buffer.",{"type":10,"tag":176,"props":2428,"children":2430},{"id":2429},"shaders-objects-pipeline-interaction",[2431],{"type":16,"value":2432},"Interaction With Pipelines",{"type":10,"tag":18,"props":2434,"children":2435},{},[2436,2438,2443,2445,2451,2453,2459,2461,2466],{"type":16,"value":2437},"Calling ",{"type":10,"tag":28,"props":2439,"children":2441},{"href":2440},"/man/vkCmdBindShadersEXT",[2442],{"type":16,"value":562},{"type":16,"value":2444}," causes the pipeline bind points\n",{"type":10,"tag":28,"props":2446,"children":2448},{"href":2447},"/chapters/shaders#shaders-binding",[2449],{"type":16,"value":2450},"corresponding to each stage",{"type":16,"value":2452}," in ",{"type":10,"tag":125,"props":2454,"children":2456},{"className":2455},[],[2457],{"type":16,"value":2458},"pStages",{"type":16,"value":2460}," to be\ndisturbed, meaning that any ",{"type":10,"tag":28,"props":2462,"children":2463},{"href":114},[2464],{"type":16,"value":2465},"pipelines",{"type":16,"value":2467}," that had previously\nbeen bound to those pipeline bind points are no longer bound.",{"type":10,"tag":18,"props":2469,"children":2470},{},[2471,2472,2478,2480,2485,2487,2492,2494,2497],{"type":16,"value":732},{"type":10,"tag":125,"props":2473,"children":2475},{"className":2474},[],[2476],{"type":16,"value":2477},"VK_PIPELINE_BIND_POINT_GRAPHICS",{"type":16,"value":2479}," is disturbed (i.e., if\n",{"type":10,"tag":125,"props":2481,"children":2483},{"className":2482},[],[2484],{"type":16,"value":2458},{"type":16,"value":2486}," contains any graphics stage), any graphics pipeline state that\nthe previously bound pipeline did not specify as ",{"type":10,"tag":28,"props":2488,"children":2489},{"href":582},[2490],{"type":16,"value":2491},"dynamic",{"type":16,"value":2493}," becomes undefined:, and ",{"type":10,"tag":71,"props":2495,"children":2496},{"type":524},[],{"type":16,"value":2498}," be set in the command buffer before\nissuing drawing commands using shader objects.",{"type":10,"tag":18,"props":2500,"children":2501},{},[2502,2504,2510,2512,2518],{"type":16,"value":2503},"Calls to ",{"type":10,"tag":28,"props":2505,"children":2507},{"href":2506},"/man/vkCmdBindPipeline",[2508],{"type":16,"value":2509},"vkCmdBindPipeline",{"type":16,"value":2511}," likewise disturb the shader stage(s)\ncorresponding to ",{"type":10,"tag":125,"props":2513,"children":2515},{"className":2514},[],[2516],{"type":16,"value":2517},"pipelineBindPoint",{"type":16,"value":2519},", meaning that any shaders that had\npreviously been bound to any of those stages are no longer bound, even if\nthe pipeline was created without shaders for some of those stages.",{"type":10,"tag":176,"props":2521,"children":2523},{"id":2522},"shaders-objects-destruction",[2524],{"type":16,"value":2525},"Shader Object Destruction",{"type":10,"tag":165,"props":2527,"children":2529},{"name":2528,"type":195},"vkDestroyShaderEXT",[2530],{"type":10,"tag":18,"props":2531,"children":2532},{},[2533],{"type":16,"value":2534},"Destroy a shader object",{"type":10,"tag":96,"props":2536,"children":2538},{"id":2537},"shader-modules",[2539],{"type":16,"value":2540},"Shader Modules",{"type":10,"tag":165,"props":2542,"children":2544},{"name":2543,"type":168},"VkShaderModule",[2545],{"type":10,"tag":18,"props":2546,"children":2547},{},[2548],{"type":16,"value":2549},"Opaque handle to a shader module object",{"type":10,"tag":165,"props":2551,"children":2553},{"name":2552,"type":195},"vkCreateShaderModule",[2554],{"type":10,"tag":18,"props":2555,"children":2556},{},[2557],{"type":16,"value":2558},"Creates a new shader module object",{"type":10,"tag":165,"props":2560,"children":2562},{"name":2561,"type":205},"VkShaderModuleCreateInfo",[2563],{"type":10,"tag":18,"props":2564,"children":2565},{},[2566],{"type":16,"value":2567},"Structure specifying parameters of a newly created shader module",{"type":10,"tag":165,"props":2569,"children":2571},{"name":2570,"type":215},"VkShaderModuleCreateFlags",[2572],{"type":10,"tag":18,"props":2573,"children":2574},{},[2575],{"type":16,"value":2576},"Reserved for future use",{"type":10,"tag":165,"props":2578,"children":2580},{"name":2579,"type":205},"VkShaderModuleValidationCacheCreateInfoEXT",[2581],{"type":10,"tag":18,"props":2582,"children":2583},{},[2584],{"type":16,"value":2585},"Specify validation cache to use during shader module creation",{"type":10,"tag":165,"props":2587,"children":2589},{"name":2588,"type":195},"vkDestroyShaderModule",[2590],{"type":10,"tag":18,"props":2591,"children":2592},{},[2593],{"type":16,"value":2594},"Destroy a shader module",{"type":10,"tag":96,"props":2596,"children":2598},{"id":2597},"shaders-identifiers",[2599],{"type":16,"value":2600},"Shader Module Identifiers",{"type":10,"tag":165,"props":2602,"children":2604},{"name":2603,"type":195},"vkGetShaderModuleIdentifierEXT",[2605],{"type":10,"tag":18,"props":2606,"children":2607},{},[2608],{"type":16,"value":2609},"Query a unique identifier for a shader module",{"type":10,"tag":165,"props":2611,"children":2613},{"name":2612,"type":195},"vkGetShaderModuleCreateInfoIdentifierEXT",[2614],{"type":10,"tag":18,"props":2615,"children":2616},{},[2617],{"type":16,"value":2618},"Query a unique identifier for a shader module create info",{"type":10,"tag":165,"props":2620,"children":2622},{"name":2621,"type":205},"VkShaderModuleIdentifierEXT",[2623],{"type":10,"tag":18,"props":2624,"children":2625},{},[2626],{"type":16,"value":2627},"A unique identifier for a shader module",{"type":10,"tag":165,"props":2629,"children":2632},{"name":2630,"type":2631},"VK\\_MAX\\_SHADER\\_MODULE\\_IDENTIFIER\\_SIZE\\_EXT","consts",[2633],{"type":10,"tag":18,"props":2634,"children":2635},{},[2636],{"type":16,"value":2637},"Maximum length of a shader module identifier",{"type":10,"tag":96,"props":2639,"children":2641},{"id":2640},"shaders-binding",[2642],{"type":16,"value":2643},"Binding Shaders",{"type":10,"tag":18,"props":2645,"children":2646},{},[2647,2649,2652],{"type":16,"value":2648},"Before a shader can be used it ",{"type":10,"tag":71,"props":2650,"children":2651},{"type":524},[],{"type":16,"value":2653}," be first bound to the command buffer.",{"type":10,"tag":18,"props":2655,"children":2656},{},[2657,2658,2662,2664,2670,2672,2676,2678],{"type":16,"value":2437},{"type":10,"tag":28,"props":2659,"children":2660},{"href":2506},[2661],{"type":16,"value":2509},{"type":16,"value":2663}," binds all stages corresponding to the\n",{"type":10,"tag":28,"props":2665,"children":2667},{"href":2666},"/man/VkPipelineBindPoint",[2668],{"type":16,"value":2669},"VkPipelineBindPoint",{"type":16,"value":2671},".\nCalling ",{"type":10,"tag":28,"props":2673,"children":2674},{"href":2440},[2675],{"type":16,"value":562},{"type":16,"value":2677}," binds all stages in ",{"type":10,"tag":125,"props":2679,"children":2681},{"className":2680},[],[2682],{"type":16,"value":2458},{"type":10,"tag":18,"props":2684,"children":2685},{},[2686],{"type":16,"value":2687},"The following table describes the relationship between shader stages and\npipeline bind points:",{"type":10,"tag":2689,"props":2690,"children":2696},"table",{"className":2691},[2692,2693,2694,2695],"tableblock","frame-all","grid-all","stretch",[2697,2713,2742],{"type":10,"tag":2698,"props":2699,"children":2700},"colgroup",{},[2701,2706,2709],{"type":10,"tag":2702,"props":2703,"children":2705},"col",{"style":2704},"width: 33.3333%;",[],{"type":10,"tag":2702,"props":2707,"children":2708},{"style":2704},[],{"type":10,"tag":2702,"props":2710,"children":2712},{"style":2711},"width: 33.3334%;",[],{"type":10,"tag":2714,"props":2715,"children":2716},"thead",{},[2717],{"type":10,"tag":2718,"props":2719,"children":2720},"tr",{},[2721,2730,2736],{"type":10,"tag":2722,"props":2723,"children":2727},"th",{"className":2724},[2692,2725,2726],"halign-left","valign-top",[2728],{"type":16,"value":2729},"Shader stage",{"type":10,"tag":2722,"props":2731,"children":2733},{"className":2732},[2692,2725,2726],[2734],{"type":16,"value":2735},"Pipeline bind point",{"type":10,"tag":2722,"props":2737,"children":2739},{"className":2738},[2692,2725,2726],[2740],{"type":16,"value":2741},"behavior controlled",{"type":10,"tag":2743,"props":2744,"children":2745},"tbody",{},[2746,2869,2922,3035,3098],{"type":10,"tag":2718,"props":2747,"children":2748},{},[2749,2840,2852],{"type":10,"tag":2750,"props":2751,"children":2753},"td",{"className":2752},[2692,2725,2726],[2754],{"type":10,"tag":2755,"props":2756,"children":2759},"div",{"className":2757},[2758],"content",[2760],{"type":10,"tag":2761,"props":2762,"children":2763},"itemizedlist",{},[2764,2777,2788,2798,2808,2818,2829],{"type":10,"tag":2765,"props":2766,"children":2767},"listitem",{},[2768],{"type":10,"tag":2769,"props":2770,"children":2771},"simpara",{},[2772],{"type":10,"tag":2773,"props":2774,"children":2775},"literal",{},[2776],{"type":16,"value":635},{"type":10,"tag":2765,"props":2778,"children":2779},{},[2780],{"type":10,"tag":2769,"props":2781,"children":2782},{},[2783],{"type":10,"tag":2773,"props":2784,"children":2785},{},[2786],{"type":16,"value":2787},"VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT",{"type":10,"tag":2765,"props":2789,"children":2790},{},[2791],{"type":10,"tag":2769,"props":2792,"children":2793},{},[2794],{"type":10,"tag":2773,"props":2795,"children":2796},{},[2797],{"type":16,"value":708},{"type":10,"tag":2765,"props":2799,"children":2800},{},[2801],{"type":10,"tag":2769,"props":2802,"children":2803},{},[2804],{"type":10,"tag":2773,"props":2805,"children":2806},{},[2807],{"type":16,"value":862},{"type":10,"tag":2765,"props":2809,"children":2810},{},[2811],{"type":10,"tag":2769,"props":2812,"children":2813},{},[2814],{"type":10,"tag":2773,"props":2815,"children":2816},{},[2817],{"type":16,"value":1123},{"type":10,"tag":2765,"props":2819,"children":2820},{},[2821],{"type":10,"tag":2769,"props":2822,"children":2823},{},[2824],{"type":10,"tag":2773,"props":2825,"children":2826},{},[2827],{"type":16,"value":2828},"VK_SHADER_STAGE_TASK_BIT_EXT",{"type":10,"tag":2765,"props":2830,"children":2831},{},[2832],{"type":10,"tag":2769,"props":2833,"children":2834},{},[2835],{"type":10,"tag":2773,"props":2836,"children":2837},{},[2838],{"type":16,"value":2839},"VK_SHADER_STAGE_MESH_BIT_EXT",{"type":10,"tag":2750,"props":2841,"children":2843},{"className":2842},[2692,2725,2726],[2844],{"type":10,"tag":18,"props":2845,"children":2847},{"className":2846},[2692],[2848],{"type":10,"tag":2773,"props":2849,"children":2850},{},[2851],{"type":16,"value":2477},{"type":10,"tag":2750,"props":2853,"children":2855},{"className":2854},[2692,2725,2726],[2856],{"type":10,"tag":18,"props":2857,"children":2859},{"className":2858},[2692],[2860,2862,2867],{"type":16,"value":2861},"all ",{"type":10,"tag":2863,"props":2864,"children":2866},"link",{"linkend":2865},"drawing",[],{"type":16,"value":2868},"drawing commands",{"type":10,"tag":2718,"props":2870,"children":2871},{},[2872,2894,2907],{"type":10,"tag":2750,"props":2873,"children":2875},{"className":2874},[2692,2725,2726],[2876],{"type":10,"tag":2755,"props":2877,"children":2879},{"className":2878},[2758],[2880],{"type":10,"tag":2761,"props":2881,"children":2882},{},[2883],{"type":10,"tag":2765,"props":2884,"children":2885},{},[2886],{"type":10,"tag":2769,"props":2887,"children":2888},{},[2889],{"type":10,"tag":2773,"props":2890,"children":2891},{},[2892],{"type":16,"value":2893},"VK_SHADER_STAGE_COMPUTE_BIT",{"type":10,"tag":2750,"props":2895,"children":2897},{"className":2896},[2692,2725,2726],[2898],{"type":10,"tag":18,"props":2899,"children":2901},{"className":2900},[2692],[2902],{"type":10,"tag":2773,"props":2903,"children":2904},{},[2905],{"type":16,"value":2906},"VK_PIPELINE_BIND_POINT_COMPUTE",{"type":10,"tag":2750,"props":2908,"children":2910},{"className":2909},[2692,2725,2726],[2911],{"type":10,"tag":18,"props":2912,"children":2914},{"className":2913},[2692],[2915,2916,2920],{"type":16,"value":2861},{"type":10,"tag":2863,"props":2917,"children":2919},{"linkend":2918},"dispatch",[],{"type":16,"value":2921},"dispatch commands",{"type":10,"tag":2718,"props":2923,"children":2924},{},[2925,3002,3015],{"type":10,"tag":2750,"props":2926,"children":2928},{"className":2927},[2692,2725,2726],[2929],{"type":10,"tag":2755,"props":2930,"children":2932},{"className":2931},[2758],[2933],{"type":10,"tag":2761,"props":2934,"children":2935},{},[2936,2947,2958,2969,2980,2991],{"type":10,"tag":2765,"props":2937,"children":2938},{},[2939],{"type":10,"tag":2769,"props":2940,"children":2941},{},[2942],{"type":10,"tag":2773,"props":2943,"children":2944},{},[2945],{"type":16,"value":2946},"VK_SHADER_STAGE_ANY_HIT_BIT_KHR",{"type":10,"tag":2765,"props":2948,"children":2949},{},[2950],{"type":10,"tag":2769,"props":2951,"children":2952},{},[2953],{"type":10,"tag":2773,"props":2954,"children":2955},{},[2956],{"type":16,"value":2957},"VK_SHADER_STAGE_CALLABLE_BIT_KHR",{"type":10,"tag":2765,"props":2959,"children":2960},{},[2961],{"type":10,"tag":2769,"props":2962,"children":2963},{},[2964],{"type":10,"tag":2773,"props":2965,"children":2966},{},[2967],{"type":16,"value":2968},"VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR",{"type":10,"tag":2765,"props":2970,"children":2971},{},[2972],{"type":10,"tag":2769,"props":2973,"children":2974},{},[2975],{"type":10,"tag":2773,"props":2976,"children":2977},{},[2978],{"type":16,"value":2979},"VK_SHADER_STAGE_INTERSECTION_BIT_KHR",{"type":10,"tag":2765,"props":2981,"children":2982},{},[2983],{"type":10,"tag":2769,"props":2984,"children":2985},{},[2986],{"type":10,"tag":2773,"props":2987,"children":2988},{},[2989],{"type":16,"value":2990},"VK_SHADER_STAGE_MISS_BIT_KHR",{"type":10,"tag":2765,"props":2992,"children":2993},{},[2994],{"type":10,"tag":2769,"props":2995,"children":2996},{},[2997],{"type":10,"tag":2773,"props":2998,"children":2999},{},[3000],{"type":16,"value":3001},"VK_SHADER_STAGE_RAYGEN_BIT_KHR",{"type":10,"tag":2750,"props":3003,"children":3005},{"className":3004},[2692,2725,2726],[3006],{"type":10,"tag":18,"props":3007,"children":3009},{"className":3008},[2692],[3010],{"type":10,"tag":2773,"props":3011,"children":3012},{},[3013],{"type":16,"value":3014},"VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR",{"type":10,"tag":2750,"props":3016,"children":3018},{"className":3017},[2692,2725,2726],[3019],{"type":10,"tag":18,"props":3020,"children":3022},{"className":3021},[2692],[3023,3027,3029,3033],{"type":10,"tag":2863,"props":3024,"children":3026},{"xl:href":3025},"/man/vkCmdTraceRaysKHR",[],{"type":16,"value":3028},"vkCmdTraceRaysKHR and ",{"type":10,"tag":2863,"props":3030,"children":3032},{"xl:href":3031},"/man/vkCmdTraceRaysIndirectKHR",[],{"type":16,"value":3034},"vkCmdTraceRaysIndirectKHR",{"type":10,"tag":2718,"props":3036,"children":3037},{},[3038,3071,3084],{"type":10,"tag":2750,"props":3039,"children":3041},{"className":3040},[2692,2725,2726],[3042],{"type":10,"tag":2755,"props":3043,"children":3045},{"className":3044},[2758],[3046],{"type":10,"tag":2761,"props":3047,"children":3048},{},[3049,3060],{"type":10,"tag":2765,"props":3050,"children":3051},{},[3052],{"type":10,"tag":2769,"props":3053,"children":3054},{},[3055],{"type":10,"tag":2773,"props":3056,"children":3057},{},[3058],{"type":16,"value":3059},"VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI",{"type":10,"tag":2765,"props":3061,"children":3062},{},[3063],{"type":10,"tag":2769,"props":3064,"children":3065},{},[3066],{"type":10,"tag":2773,"props":3067,"children":3068},{},[3069],{"type":16,"value":3070},"VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI",{"type":10,"tag":2750,"props":3072,"children":3074},{"className":3073},[2692,2725,2726],[3075],{"type":10,"tag":18,"props":3076,"children":3078},{"className":3077},[2692],[3079],{"type":10,"tag":2773,"props":3080,"children":3081},{},[3082],{"type":16,"value":3083},"VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI",{"type":10,"tag":2750,"props":3085,"children":3087},{"className":3086},[2692,2725,2726],[3088],{"type":10,"tag":18,"props":3089,"children":3091},{"className":3090},[2692],[3092,3096],{"type":10,"tag":2863,"props":3093,"children":3095},{"xl:href":3094},"/man/vkCmdSubpassShadingHUAWEI",[],{"type":16,"value":3097},"vkCmdSubpassShadingHUAWEI",{"type":10,"tag":2718,"props":3099,"children":3100},{},[3101,3122,3135],{"type":10,"tag":2750,"props":3102,"children":3104},{"className":3103},[2692,2725,2726],[3105],{"type":10,"tag":2755,"props":3106,"children":3108},{"className":3107},[2758],[3109],{"type":10,"tag":2761,"props":3110,"children":3111},{},[3112],{"type":10,"tag":2765,"props":3113,"children":3114},{},[3115],{"type":10,"tag":2769,"props":3116,"children":3117},{},[3118],{"type":10,"tag":2773,"props":3119,"children":3120},{},[3121],{"type":16,"value":2893},{"type":10,"tag":2750,"props":3123,"children":3125},{"className":3124},[2692,2725,2726],[3126],{"type":10,"tag":18,"props":3127,"children":3129},{"className":3128},[2692],[3130],{"type":10,"tag":2773,"props":3131,"children":3132},{},[3133],{"type":16,"value":3134},"VK_PIPELINE_BIND_POINT_EXECUTION_GRAPH_AMDX",{"type":10,"tag":2750,"props":3136,"children":3138},{"className":3137},[2692,2725,2726],[3139],{"type":10,"tag":18,"props":3140,"children":3142},{"className":3141},[2692],[3143,3144,3148],{"type":16,"value":2861},{"type":10,"tag":2863,"props":3145,"children":3147},{"linkend":3146},"executiongraphs",[],{"type":16,"value":3149},"execution graph commands",{"type":10,"tag":96,"props":3151,"children":3153},{"id":3152},"shaders-execution",[3154],{"type":16,"value":3155},"Shader Execution",{"type":10,"tag":18,"props":3157,"children":3158},{},[3159,3161,3164,3166,3169,3171,3174,3176,3182],{"type":16,"value":3160},"At each stage of the pipeline, multiple invocations of a shader ",{"type":10,"tag":71,"props":3162,"children":3163},{"type":108},[],{"type":16,"value":3165}," execute\nsimultaneously.\nFurther, invocations of a single shader produced as the result of different\ncommands ",{"type":10,"tag":71,"props":3167,"children":3168},{"type":108},[],{"type":16,"value":3170}," execute simultaneously.\nThe relative execution order of invocations of the same shader type is\nundefined:.\nShader invocations ",{"type":10,"tag":71,"props":3172,"children":3173},{"type":108},[],{"type":16,"value":3175}," complete in a different order than that in which the\nprimitives they originated from were drawn or dispatched by the application.\nHowever, fragment shader outputs are written to attachments in\n",{"type":10,"tag":28,"props":3177,"children":3179},{"href":3178},"/chapters/primsrast#primsrast-order",[3180],{"type":16,"value":3181},"rasterization order",{"type":16,"value":402},{"type":10,"tag":18,"props":3184,"children":3185},{},[3186],{"type":16,"value":3187},"The relative execution order of invocations of different shader types is\nlargely undefined:.\nHowever, when invoking a shader whose inputs are generated from a previous\npipeline stage, the shader invocations from the previous stage are\nguaranteed to have executed far enough to generate input values for all\nrequired inputs.",{"type":10,"tag":176,"props":3189,"children":3191},{"id":3190},"shaders-termination",[3192],{"type":16,"value":3193},"Shader Termination",{"type":10,"tag":18,"props":3195,"children":3196},{},[3197,3199,3204],{"type":16,"value":3198},"A shader invocation that is ",{"type":10,"tag":88,"props":3200,"children":3201},{},[3202],{"type":16,"value":3203},"terminated",{"type":16,"value":3205}," has finished executing\ninstructions.",{"type":10,"tag":18,"props":3207,"children":3208},{},[3209,3211,3217,3219,3225,3227,3230,3232,3238,3240,3246],{"type":16,"value":3210},"Executing ",{"type":10,"tag":125,"props":3212,"children":3214},{"className":3213},[],[3215],{"type":16,"value":3216},"OpReturn",{"type":16,"value":3218}," in the entry point, or executing\n",{"type":10,"tag":125,"props":3220,"children":3222},{"className":3221},[],[3223],{"type":16,"value":3224},"OpTerminateInvocation",{"type":16,"value":3226}," in any function will terminate an invocation.\nImplementations ",{"type":10,"tag":71,"props":3228,"children":3229},{"type":108},[],{"type":16,"value":3231}," also terminate a shader invocation when ",{"type":10,"tag":125,"props":3233,"children":3235},{"className":3234},[],[3236],{"type":16,"value":3237},"OpKill",{"type":16,"value":3239}," is\nexecuted in any function; otherwise it becomes a\n",{"type":10,"tag":28,"props":3241,"children":3243},{"href":3242},"/chapters/shaders#shaders-helper-invocations",[3244],{"type":16,"value":3245},"helper invocation",{"type":16,"value":402},{"type":10,"tag":18,"props":3248,"children":3249},{},[3250,3252,3257,3258,3261,3263,3269,3271,3276],{"type":16,"value":3251},"In addition to the above conditions, ",{"type":10,"tag":28,"props":3253,"children":3254},{"href":3242},[3255],{"type":16,"value":3256},"helper\ninvocations",{"type":16,"value":324},{"type":10,"tag":71,"props":3259,"children":3260},{"type":108},[],{"type":16,"value":3262}," be terminated when all non-helper invocations in the same\n",{"type":10,"tag":28,"props":3264,"children":3266},{"href":3265},"/chapters/shaders#shaders-derivative-operations",[3267],{"type":16,"value":3268},"derivative group",{"type":16,"value":3270}," either terminate or\nbecome ",{"type":10,"tag":28,"props":3272,"children":3273},{"href":3242},[3274],{"type":16,"value":3275},"helper invocations",{"type":16,"value":402},{"type":10,"tag":18,"props":3278,"children":3279},{},[3280],{"type":16,"value":3281},"A shader stage for a given command completes execution when all invocations\nfor that stage have terminated.",{"type":10,"tag":233,"props":3283,"children":3284},{},[3285],{"type":10,"tag":18,"props":3286,"children":3287},{},[3288,3293,3295,3300,3301,3307,3309,3314,3315,3320,3322,3327],{"type":10,"tag":125,"props":3289,"children":3291},{"className":3290},[],[3292],{"type":16,"value":3237},{"type":16,"value":3294}," will behave the same as either ",{"type":10,"tag":125,"props":3296,"children":3298},{"className":3297},[],[3299],{"type":16,"value":3224},{"type":16,"value":856},{"type":10,"tag":125,"props":3302,"children":3304},{"className":3303},[],[3305],{"type":16,"value":3306},"OpDemoteToHelperInvocation",{"type":16,"value":3308}," depending on the implementation.\nIt is recommended that shader authors use ",{"type":10,"tag":125,"props":3310,"children":3312},{"className":3311},[],[3313],{"type":16,"value":3224},{"type":16,"value":856},{"type":10,"tag":125,"props":3316,"children":3318},{"className":3317},[],[3319],{"type":16,"value":3306},{"type":16,"value":3321}," instead of ",{"type":10,"tag":125,"props":3323,"children":3325},{"className":3324},[],[3326],{"type":16,"value":3237},{"type":16,"value":3328}," whenever possible to\nproduce more predictable behavior.",{"type":10,"tag":96,"props":3330,"children":3332},{"id":3331},"shaders-execution-memory-ordering",[3333],{"type":16,"value":3334},"Shader Memory Access Ordering",{"type":10,"tag":18,"props":3336,"children":3337},{},[3338,3340,3343],{"type":16,"value":3339},"The order in which image or buffer memory is read or written by shaders is\nlargely undefined:.\nFor some shader types (vertex, tessellation evaluation, and in some cases,\nfragment), even the number of shader invocations that ",{"type":10,"tag":71,"props":3341,"children":3342},{"type":108},[],{"type":16,"value":3344}," perform loads and\nstores is undefined:.",{"type":10,"tag":18,"props":3346,"children":3347},{},[3348],{"type":16,"value":3349},"In particular, the following rules apply:",{"type":10,"tag":594,"props":3351,"children":3352},{},[3353,3372,3383,3394],{"type":10,"tag":598,"props":3354,"children":3355},{},[3356,3362,3364,3370],{"type":10,"tag":28,"props":3357,"children":3359},{"href":3358},"/chapters/shaders#shaders-vertex-execution",[3360],{"type":16,"value":3361},"Vertex",{"type":16,"value":3363}," and\n",{"type":10,"tag":28,"props":3365,"children":3367},{"href":3366},"/chapters/shaders#shaders-tessellation-evaluation-execution",[3368],{"type":16,"value":3369},"tessellation evaluation",{"type":16,"value":3371},"\nshaders will be invoked at least once for each unique vertex, as defined\nin those sections.",{"type":10,"tag":598,"props":3373,"children":3374},{},[3375,3381],{"type":10,"tag":28,"props":3376,"children":3378},{"href":3377},"/chapters/fragops#fragops-shader",[3379],{"type":16,"value":3380},"Fragment",{"type":16,"value":3382}," shaders will be invoked zero or more times,\nas defined in that section.",{"type":10,"tag":598,"props":3384,"children":3385},{},[3386,3388,3392],{"type":16,"value":3387},"The relative execution order of invocations of the same shader type is\nundefined:.\nA store issued by a shader when working on primitive B might complete\nprior to a store for primitive A, even if primitive A is specified prior\nto primitive B. This applies even to fragment shaders; while fragment\nshader outputs are always written to the framebuffer in\n",{"type":10,"tag":28,"props":3389,"children":3390},{"href":3178},[3391],{"type":16,"value":3181},{"type":16,"value":3393},", stores executed by fragment\nshader invocations are not.",{"type":10,"tag":598,"props":3395,"children":3396},{},[3397],{"type":16,"value":3398},"The relative execution order of invocations of different shader types is\nlargely undefined:.",{"type":10,"tag":233,"props":3400,"children":3401},{},[3402],{"type":10,"tag":18,"props":3403,"children":3404},{},[3405],{"type":16,"value":3406},"The above limitations on shader invocation order make some forms of\nsynchronization between shader invocations within a single set of primitives\nunimplementable.\nFor example, having one invocation poll memory written by another invocation\nassumes that the other invocation has been launched and will complete its\nwrites in finite time.",{"type":10,"tag":18,"props":3408,"children":3409},{},[3410,3412,3418,3420,3426,3428,3434],{"type":16,"value":3411},"The ",{"type":10,"tag":28,"props":3413,"children":3415},{"href":3414},"/chapters/memory-model#memory-model",[3416],{"type":16,"value":3417},"Memory Model",{"type":16,"value":3419}," appendix defines the terminology and rules\nfor how to correctly communicate between shader invocations, such as when a\nwrite is ",{"type":10,"tag":28,"props":3421,"children":3423},{"href":3422},"/chapters/memory-model#memory-model-visible-to",[3424],{"type":16,"value":3425},"Visible-To",{"type":16,"value":3427}," a read, and what constitutes\na ",{"type":10,"tag":28,"props":3429,"children":3431},{"href":3430},"/chapters/memory-model#memory-model-access-data-race",[3432],{"type":16,"value":3433},"Data Race",{"type":16,"value":402},{"type":10,"tag":18,"props":3436,"children":3437},{},[3438,3440,3443],{"type":16,"value":3439},"Applications ",{"type":10,"tag":71,"props":3441,"children":3442},{"type":524},[],{"type":16,"value":3444}," not cause a data race.",{"type":10,"tag":18,"props":3446,"children":3447},{},[3448,3450,3455,3457,3462,3464,3469,3471,3476,3478,3483,3485,3489,3490,3493],{"type":16,"value":3449},"The SPIR-V ",{"type":10,"tag":88,"props":3451,"children":3452},{},[3453],{"type":16,"value":3454},"SubgroupMemory",{"type":16,"value":3456},", ",{"type":10,"tag":88,"props":3458,"children":3459},{},[3460],{"type":16,"value":3461},"CrossWorkgroupMemory",{"type":16,"value":3463},", and\n",{"type":10,"tag":88,"props":3465,"children":3466},{},[3467],{"type":16,"value":3468},"AtomicCounterMemory",{"type":16,"value":3470}," memory semantics are ignored.\nSequentially consistent atomics and barriers are not supported and\n",{"type":10,"tag":88,"props":3472,"children":3473},{},[3474],{"type":16,"value":3475},"SequentiallyConsistent",{"type":16,"value":3477}," is treated as ",{"type":10,"tag":88,"props":3479,"children":3480},{},[3481],{"type":16,"value":3482},"AcquireRelease",{"type":16,"value":3484},".\n",{"type":10,"tag":88,"props":3486,"children":3487},{},[3488],{"type":16,"value":3475},{"type":16,"value":324},{"type":10,"tag":71,"props":3491,"children":3492},{"type":279},[],{"type":16,"value":3494}," not be used.",{"type":10,"tag":96,"props":3496,"children":3498},{"id":3497},"shaders-inputs",[3499],{"type":16,"value":3500},"Shader Inputs and Outputs",{"type":10,"tag":18,"props":3502,"children":3503},{},[3504,3506,3512,3514,3517,3519,3525],{"type":16,"value":3505},"Data is passed into and out of shaders using variables with input or output\nstorage class, respectively.\nUser-defined inputs and outputs are connected between stages by matching\ntheir ",{"type":10,"tag":125,"props":3507,"children":3509},{"className":3508},[],[3510],{"type":16,"value":3511},"Location",{"type":16,"value":3513}," decorations.\nAdditionally, data ",{"type":10,"tag":71,"props":3515,"children":3516},{"type":73},[],{"type":16,"value":3518}," be provided by or communicated to special functions\nprovided by the execution environment using ",{"type":10,"tag":125,"props":3520,"children":3522},{"className":3521},[],[3523],{"type":16,"value":3524},"BuiltIn",{"type":16,"value":3526}," decorations.",{"type":10,"tag":18,"props":3528,"children":3529},{},[3530,3532,3537,3539,3542,3544,3549],{"type":16,"value":3531},"In many cases, the same ",{"type":10,"tag":125,"props":3533,"children":3535},{"className":3534},[],[3536],{"type":16,"value":3524},{"type":16,"value":3538}," decoration ",{"type":10,"tag":71,"props":3540,"children":3541},{"type":73},[],{"type":16,"value":3543}," be used in multiple\nshader stages with similar meaning.\nThe specific behavior of variables decorated as ",{"type":10,"tag":125,"props":3545,"children":3547},{"className":3546},[],[3548],{"type":16,"value":3524},{"type":16,"value":3550}," is documented\nin the following sections.",{"type":10,"tag":96,"props":3552,"children":3554},{"id":3553},"shaders-task",[3555],{"type":16,"value":3556},"Task Shaders",{"type":10,"tag":18,"props":3558,"children":3559},{},[3560],{"type":16,"value":3561},"Task shaders operate in conjunction with the mesh shaders to produce a\ncollection of primitives that will be processed by subsequent stages of the\ngraphics pipeline.\nIts primary purpose is to create a variable amount of subsequent mesh shader\ninvocations.",{"type":10,"tag":18,"props":3563,"children":3564},{},[3565,3567,3573],{"type":16,"value":3566},"Task shaders are invoked via the execution of the\n",{"type":10,"tag":28,"props":3568,"children":3570},{"href":3569},"/chapters/drawing#drawing-mesh-shading",[3571],{"type":16,"value":3572},"programmable mesh shading",{"type":16,"value":3574}," pipeline.",{"type":10,"tag":18,"props":3576,"children":3577},{},[3578,3580,3586,3587,3593,3594,3600,3602,3608,3610,3616,3617,3622,3623,3628,3630,3636],{"type":16,"value":3579},"The task shader has no fixed-function inputs other than variables\nidentifying the specific workgroup and invocation.\nIn the ",{"type":10,"tag":125,"props":3581,"children":3583},{"className":3582},[],[3584],{"type":16,"value":3585},"TaskNV",{"type":16,"value":324},{"type":10,"tag":125,"props":3588,"children":3590},{"className":3589},[],[3591],{"type":16,"value":3592},"Execution",{"type":16,"value":324},{"type":10,"tag":125,"props":3595,"children":3597},{"className":3596},[],[3598],{"type":16,"value":3599},"Model",{"type":16,"value":3601}," the number of mesh shader workgroups to\ncreate is specified via a ",{"type":10,"tag":125,"props":3603,"children":3605},{"className":3604},[],[3606],{"type":16,"value":3607},"TaskCountNV",{"type":16,"value":3609}," decorated output variable.\nIn the ",{"type":10,"tag":125,"props":3611,"children":3613},{"className":3612},[],[3614],{"type":16,"value":3615},"TaskEXT",{"type":16,"value":324},{"type":10,"tag":125,"props":3618,"children":3620},{"className":3619},[],[3621],{"type":16,"value":3592},{"type":16,"value":324},{"type":10,"tag":125,"props":3624,"children":3626},{"className":3625},[],[3627],{"type":16,"value":3599},{"type":16,"value":3629}," the number of mesh shader workgroups to\ncreate is specified via the ",{"type":10,"tag":125,"props":3631,"children":3633},{"className":3632},[],[3634],{"type":16,"value":3635},"OpEmitMeshTasksEXT",{"type":16,"value":3637}," instruction.",{"type":10,"tag":18,"props":3639,"children":3640},{},[3641],{"type":16,"value":3642},"The task shader can write additional outputs to task memory, which can be\nread by all of the mesh shader workgroups it created.",{"type":10,"tag":176,"props":3644,"children":3646},{"id":3645},"_task_shader_execution",[3647],{"type":16,"value":3648},"Task Shader Execution",{"type":10,"tag":18,"props":3650,"children":3651},{},[3652,3654,3659,3661,3666,3668,3671,3673,3679,3681,3687,3689,3695,3697,3700,3702,3707,3708,3713,3714,3719,3720,3723],{"type":16,"value":3653},"Task workloads are formed from groups of work items called workgroups and\nprocessed by the task shader in the current graphics pipeline.\nA workgroup is a collection of shader invocations that execute the same\nshader, potentially in parallel.\nTask shaders execute in ",{"type":10,"tag":88,"props":3655,"children":3656},{},[3657],{"type":16,"value":3658},"global workgroups",{"type":16,"value":3660}," which are divided into a number\nof ",{"type":10,"tag":88,"props":3662,"children":3663},{},[3664],{"type":16,"value":3665},"local workgroups",{"type":16,"value":3667}," with a size that ",{"type":10,"tag":71,"props":3669,"children":3670},{"type":73},[],{"type":16,"value":3672}," be set by assigning a value to\nthe ",{"type":10,"tag":125,"props":3674,"children":3676},{"className":3675},[],[3677],{"type":16,"value":3678},"LocalSize",{"type":16,"value":3680},"\nor ",{"type":10,"tag":125,"props":3682,"children":3684},{"className":3683},[],[3685],{"type":16,"value":3686},"LocalSizeId",{"type":16,"value":3688},"\nexecution mode or via an object decorated by the ",{"type":10,"tag":125,"props":3690,"children":3692},{"className":3691},[],[3693],{"type":16,"value":3694},"WorkgroupSize",{"type":16,"value":3696},"\ndecoration.\nAn invocation within a local workgroup ",{"type":10,"tag":71,"props":3698,"children":3699},{"type":73},[],{"type":16,"value":3701}," share data with other members of\nthe local workgroup through shared variables and issue memory and control\nflow barriers to synchronize with other members of the local workgroup.\nIf the subpass includes multiple views in its view mask, a Task shader using\n",{"type":10,"tag":125,"props":3703,"children":3705},{"className":3704},[],[3706],{"type":16,"value":3615},{"type":16,"value":324},{"type":10,"tag":125,"props":3709,"children":3711},{"className":3710},[],[3712],{"type":16,"value":3592},{"type":16,"value":324},{"type":10,"tag":125,"props":3715,"children":3717},{"className":3716},[],[3718],{"type":16,"value":3599},{"type":16,"value":324},{"type":10,"tag":71,"props":3721,"children":3722},{"type":108},[],{"type":16,"value":3724}," be invoked separately for each view.",{"type":10,"tag":96,"props":3726,"children":3728},{"id":3727},"shaders-mesh",[3729],{"type":16,"value":3730},"Mesh Shaders",{"type":10,"tag":18,"props":3732,"children":3733},{},[3734],{"type":16,"value":3735},"Mesh shaders operate in workgroups to produce a collection of primitives\nthat will be processed by subsequent stages of the graphics pipeline.\nEach workgroup emits zero or more output primitives and the group of\nvertices and their associated data required for each output primitive.",{"type":10,"tag":18,"props":3737,"children":3738},{},[3739,3741,3745],{"type":16,"value":3740},"Mesh shaders are invoked via the execution of the\n",{"type":10,"tag":28,"props":3742,"children":3743},{"href":3569},[3744],{"type":16,"value":3572},{"type":16,"value":3574},{"type":10,"tag":18,"props":3747,"children":3748},{},[3749],{"type":16,"value":3750},"The only inputs available to the mesh shader are variables identifying the\nspecific workgroup and invocation and, if applicable, any outputs written to\ntask memory by the task shader that spawned the mesh shader’s workgroup.\nThe mesh shader can operate without a task shader as well.",{"type":10,"tag":18,"props":3752,"children":3753},{},[3754],{"type":16,"value":3755},"The invocations of the mesh shader workgroup write an output mesh,\ncomprising a set of primitives with per-primitive attributes, a set of\nvertices with per-vertex attributes, and an array of indices identifying the\nmesh vertices that belong to each primitive.\nThe primitives of this mesh are then processed by subsequent graphics\npipeline stages, where the outputs of the mesh shader form an interface with\nthe fragment shader.",{"type":10,"tag":176,"props":3757,"children":3759},{"id":3758},"_mesh_shader_execution",[3760],{"type":16,"value":3761},"Mesh Shader Execution",{"type":10,"tag":18,"props":3763,"children":3764},{},[3765,3767,3771,3772,3776,3777,3780,3781,3786,3787,3792,3793,3798,3799,3802],{"type":16,"value":3766},"Mesh workloads are formed from groups of work items called workgroups and\nprocessed by the mesh shader in the current graphics pipeline.\nA workgroup is a collection of shader invocations that execute the same\nshader, potentially in parallel.\nMesh shaders execute in ",{"type":10,"tag":88,"props":3768,"children":3769},{},[3770],{"type":16,"value":3658},{"type":16,"value":3660},{"type":10,"tag":88,"props":3773,"children":3774},{},[3775],{"type":16,"value":3665},{"type":16,"value":3667},{"type":10,"tag":71,"props":3778,"children":3779},{"type":73},[],{"type":16,"value":3672},{"type":10,"tag":125,"props":3782,"children":3784},{"className":3783},[],[3785],{"type":16,"value":3678},{"type":16,"value":3680},{"type":10,"tag":125,"props":3788,"children":3790},{"className":3789},[],[3791],{"type":16,"value":3686},{"type":16,"value":3688},{"type":10,"tag":125,"props":3794,"children":3796},{"className":3795},[],[3797],{"type":16,"value":3694},{"type":16,"value":3696},{"type":10,"tag":71,"props":3800,"children":3801},{"type":73},[],{"type":16,"value":3803}," share data with other members of\nthe local workgroup through shared variables and issue memory and control\nflow barriers to synchronize with other members of the local workgroup.",{"type":10,"tag":18,"props":3805,"children":3806},{},[3807,3808,3812,3814,3820,3821,3826,3827,3832,3833,3836],{"type":16,"value":3411},{"type":10,"tag":88,"props":3809,"children":3810},{},[3811],{"type":16,"value":3658},{"type":16,"value":3813}," may be generated explicitly via the API, or\nimplicitly through the task shader’s work creation mechanism.\nIf the subpass includes multiple views in its view mask, a Mesh shader using\n",{"type":10,"tag":125,"props":3815,"children":3817},{"className":3816},[],[3818],{"type":16,"value":3819},"MeshEXT",{"type":16,"value":324},{"type":10,"tag":125,"props":3822,"children":3824},{"className":3823},[],[3825],{"type":16,"value":3592},{"type":16,"value":324},{"type":10,"tag":125,"props":3828,"children":3830},{"className":3829},[],[3831],{"type":16,"value":3599},{"type":16,"value":324},{"type":10,"tag":71,"props":3834,"children":3835},{"type":108},[],{"type":16,"value":3724},{"type":10,"tag":96,"props":3838,"children":3840},{"id":3839},"shaders-cluster-culling",[3841],{"type":16,"value":3842},"Cluster Culling Shaders",{"type":10,"tag":18,"props":3844,"children":3845},{},[3846,3848,3854],{"type":16,"value":3847},"Cluster Culling shaders are invoked via the execution of the\n",{"type":10,"tag":28,"props":3849,"children":3851},{"href":3850},"/chapters/drawing#drawing-cluster-culling-shading",[3852],{"type":16,"value":3853},"Programmable Cluster Culling Shading",{"type":16,"value":3855},"\npipeline.",{"type":10,"tag":18,"props":3857,"children":3858},{},[3859],{"type":16,"value":3860},"The only inputs available to the cluster culling shader are variables\nidentifying the specific workgroup and invocation.",{"type":10,"tag":18,"props":3862,"children":3863},{},[3864],{"type":16,"value":3865},"Cluster Culling shaders operate in workgroups to perform cluster-based\nculling and produce zero or more cluster drawing command that will be\nprocessed by subsequent stages of the graphics pipeline.",{"type":10,"tag":18,"props":3867,"children":3868},{},[3869],{"type":16,"value":3870},"The Cluster Drawing Command(CDC) is very similar to the MDI command,\ninvocations in workgroup can emit zero of more CDC to draw zero or more\nvisible cluster.",{"type":10,"tag":176,"props":3872,"children":3874},{"id":3873},"_cluster_culling_shader_execution",[3875],{"type":16,"value":3876},"Cluster Culling Shader Execution",{"type":10,"tag":18,"props":3878,"children":3879},{},[3880,3882,3886,3888,3892,3893,3896,3898,3903,3904,3909,3910,3915,3916,3919],{"type":16,"value":3881},"Cluster Culling workloads are formed from groups of work items called\nworkgroups and processed by the cluster culling shader in the current\ngraphics pipeline.\nA workgroup is a collection of shader invocations that execute the same\nshader, potentially in parallel.\nCluster Culling shaders execute in ",{"type":10,"tag":88,"props":3883,"children":3884},{},[3885],{"type":16,"value":3658},{"type":16,"value":3887}," which are divided\ninto a number of ",{"type":10,"tag":88,"props":3889,"children":3890},{},[3891],{"type":16,"value":3665},{"type":16,"value":3667},{"type":10,"tag":71,"props":3894,"children":3895},{"type":73},[],{"type":16,"value":3897}," be set by\nassigning a value to the ",{"type":10,"tag":125,"props":3899,"children":3901},{"className":3900},[],[3902],{"type":16,"value":3678},{"type":16,"value":3680},{"type":10,"tag":125,"props":3905,"children":3907},{"className":3906},[],[3908],{"type":16,"value":3686},{"type":16,"value":3688},{"type":10,"tag":125,"props":3911,"children":3913},{"className":3912},[],[3914],{"type":16,"value":3694},{"type":16,"value":3696},{"type":10,"tag":71,"props":3917,"children":3918},{"type":73},[],{"type":16,"value":3803},{"type":10,"tag":96,"props":3921,"children":3923},{"id":3922},"shaders-vertex",[3924],{"type":16,"value":3925},"Vertex Shaders",{"type":10,"tag":18,"props":3927,"children":3928},{},[3929,3931,3937,3939,3942],{"type":16,"value":3930},"Each vertex shader invocation operates on one vertex and its associated\n",{"type":10,"tag":28,"props":3932,"children":3934},{"href":3933},"/chapters/fxvertex#fxvertex-attrib",[3935],{"type":16,"value":3936},"vertex attribute",{"type":16,"value":3938}," data, and outputs one vertex and\nassociated data.\nGraphics pipelines using primitive shading ",{"type":10,"tag":71,"props":3940,"children":3941},{"type":524},[],{"type":16,"value":3943}," include a vertex shader,\nand the vertex shader stage is always the first shader stage in the graphics\npipeline.",{"type":10,"tag":176,"props":3945,"children":3947},{"id":3946},"shaders-vertex-execution",[3948],{"type":16,"value":3949},"Vertex Shader Execution",{"type":10,"tag":18,"props":3951,"children":3952},{},[3953,3955,3958,3960,3963],{"type":16,"value":3954},"A vertex shader ",{"type":10,"tag":71,"props":3956,"children":3957},{"type":524},[],{"type":16,"value":3959}," be executed at least once for each vertex specified by\na drawing command.\nIf the subpass includes multiple views in its view mask, the shader ",{"type":10,"tag":71,"props":3961,"children":3962},{"type":108},[],{"type":16,"value":3964}," be\ninvoked separately for each view.\nDuring execution, the shader is presented with the index of the vertex and\ninstance for which it has been invoked.\nInput variables declared in the vertex shader are filled by the\nimplementation with the values of vertex attributes associated with the\ninvocation being executed.",{"type":10,"tag":18,"props":3966,"children":3967},{},[3968,3970,3973],{"type":16,"value":3969},"If the same vertex is specified multiple times in a drawing command (e.g. by\nincluding the same index value multiple times in an index buffer) the\nimplementation ",{"type":10,"tag":71,"props":3971,"children":3972},{"type":108},[],{"type":16,"value":3974}," reuse the results of vertex shading if it can statically\ndetermine that the vertex shader invocations will produce identical results.",{"type":10,"tag":233,"props":3976,"children":3977},{},[3978],{"type":10,"tag":18,"props":3979,"children":3980},{},[3981,3983,3993],{"type":16,"value":3982},"It is implementation-dependent when and if results of vertex shading are\nreused, and thus how many times the vertex shader will be executed.\nThis is true also if the vertex shader contains stores or atomic operations\n(see ",{"type":10,"tag":28,"props":3984,"children":3986},{"href":3985},"/man/VkPhysicalDeviceFeatures#features-vertexPipelineStoresAndAtomics",[3987],{"type":10,"tag":125,"props":3988,"children":3990},{"className":3989},[],[3991],{"type":16,"value":3992},"vertexPipelineStoresAndAtomics",{"type":16,"value":3994},").",{"type":10,"tag":96,"props":3996,"children":3998},{"id":3997},"shaders-tessellation-control",[3999],{"type":16,"value":4000},"Tessellation Control Shaders",{"type":10,"tag":18,"props":4002,"children":4003},{},[4004,4006,4009,4011,4017,4019,4025],{"type":16,"value":4005},"The tessellation control shader is used to read an input patch provided by\nthe application and to produce an output patch.\nEach tessellation control shader invocation operates on an input patch\n(after all control points in the patch are processed by a vertex shader) and\nits associated data, and outputs a single control point of the output patch\nand its associated data, and ",{"type":10,"tag":71,"props":4007,"children":4008},{"type":73},[],{"type":16,"value":4010}," also output additional per-patch data.\nThe input patch is sized according to the ",{"type":10,"tag":125,"props":4012,"children":4014},{"className":4013},[],[4015],{"type":16,"value":4016},"patchControlPoints",{"type":16,"value":4018}," member of\n",{"type":10,"tag":28,"props":4020,"children":4022},{"href":4021},"/man/VkPipelineTessellationStateCreateInfo",[4023],{"type":16,"value":4024},"VkPipelineTessellationStateCreateInfo",{"type":16,"value":4026},", as part of input assembly.",{"type":10,"tag":18,"props":4028,"children":4029},{},[4030,4032,4037,4039,4043],{"type":16,"value":4031},"The input patch can also be dynamically sized with ",{"type":10,"tag":125,"props":4033,"children":4035},{"className":4034},[],[4036],{"type":16,"value":4016},{"type":16,"value":4038},"\nparameter of ",{"type":10,"tag":28,"props":4040,"children":4041},{"href":669},[4042],{"type":16,"value":672},{"type":16,"value":402},{"type":10,"tag":165,"props":4045,"children":4046},{"name":672,"type":195},[4047],{"type":10,"tag":18,"props":4048,"children":4049},{},[4050],{"type":16,"value":4051},"Specify the number of control points per patch dynamically for a command buffer",{"type":10,"tag":18,"props":4053,"children":4054},{},[4055,4057],{"type":16,"value":4056},"The size of the output patch is controlled by the ",{"type":10,"tag":125,"props":4058,"children":4060},{"className":4059},[],[4061],{"type":16,"value":4062},"OpExecutionMode",{"type":10,"tag":18,"props":4064,"children":4065},{},[4066,4072,4074,4077,4079,4082,4084,4090,4092,4098],{"type":10,"tag":125,"props":4067,"children":4069},{"className":4068},[],[4070],{"type":16,"value":4071},"OutputVertices",{"type":16,"value":4073}," specified in the tessellation control or tessellation\nevaluation shaders, which ",{"type":10,"tag":71,"props":4075,"children":4076},{"type":524},[],{"type":16,"value":4078}," be specified in at least one of the shaders.\nThe size of the input and output patches ",{"type":10,"tag":71,"props":4080,"children":4081},{"type":524},[],{"type":16,"value":4083}," each be greater than zero and\nless than or equal to\n",{"type":10,"tag":125,"props":4085,"children":4087},{"className":4086},[],[4088],{"type":16,"value":4089},"VkPhysicalDeviceLimits",{"type":16,"value":4091},"::",{"type":10,"tag":125,"props":4093,"children":4095},{"className":4094},[],[4096],{"type":16,"value":4097},"maxTessellationPatchSize",{"type":16,"value":402},{"type":10,"tag":176,"props":4100,"children":4102},{"id":4101},"shaders-tessellation-control-execution",[4103],{"type":16,"value":4104},"Tessellation Control Shader Execution",{"type":10,"tag":18,"props":4106,"children":4107},{},[4108,4110,4115,4117,4120],{"type":16,"value":4109},"A tessellation control shader is invoked at least once for each ",{"type":10,"tag":88,"props":4111,"children":4112},{},[4113],{"type":16,"value":4114},"output",{"type":16,"value":4116},"\nvertex in a patch.\nIf the subpass includes multiple views in its view mask, the shader ",{"type":10,"tag":71,"props":4118,"children":4119},{"type":108},[],{"type":16,"value":4121}," be\ninvoked separately for each view.",{"type":10,"tag":18,"props":4123,"children":4124},{},[4125,4127,4130,4132,4138,4140,4143],{"type":16,"value":4126},"Inputs to the tessellation control shader are generated by the vertex\nshader.\nEach invocation of the tessellation control shader ",{"type":10,"tag":71,"props":4128,"children":4129},{"type":73},[],{"type":16,"value":4131}," read the attributes\nof any incoming vertices and their associated data.\nThe invocations corresponding to a given patch execute logically in\nparallel, with undefined: relative execution order.\nHowever, the ",{"type":10,"tag":125,"props":4133,"children":4135},{"className":4134},[],[4136],{"type":16,"value":4137},"OpControlBarrier",{"type":16,"value":4139}," instruction ",{"type":10,"tag":71,"props":4141,"children":4142},{"type":73},[],{"type":16,"value":4144}," be used to provide\nlimited control of the execution order by synchronizing invocations within a\npatch, effectively dividing tessellation control shader execution into a set\nof phases.\nTessellation control shaders will read undefined: values if one invocation\nreads a per-vertex or per-patch output written by another invocation at any\npoint during the same phase, or if two invocations attempt to write\ndifferent values to the same per-patch output in a single phase.",{"type":10,"tag":96,"props":4146,"children":4148},{"id":4147},"shaders-tessellation-evaluation",[4149],{"type":16,"value":4150},"Tessellation Evaluation Shaders",{"type":10,"tag":18,"props":4152,"children":4153},{},[4154],{"type":16,"value":4155},"The Tessellation Evaluation Shader operates on an input patch of control\npoints and their associated data, and a single input barycentric coordinate\nindicating the invocation’s relative position within the subdivided patch,\nand outputs a single vertex and its associated data.",{"type":10,"tag":176,"props":4157,"children":4159},{"id":4158},"shaders-tessellation-evaluation-execution",[4160],{"type":16,"value":4161},"Tessellation Evaluation Shader Execution",{"type":10,"tag":18,"props":4163,"children":4164},{},[4165,4167,4170],{"type":16,"value":4166},"A tessellation evaluation shader is invoked at least once for each unique\nvertex generated by the tessellator.\nIf the subpass includes multiple views in its view mask, the shader ",{"type":10,"tag":71,"props":4168,"children":4169},{"type":108},[],{"type":16,"value":4121},{"type":10,"tag":96,"props":4172,"children":4174},{"id":4173},"shaders-geometry",[4175],{"type":16,"value":4176},"Geometry Shaders",{"type":10,"tag":18,"props":4178,"children":4179},{},[4180],{"type":16,"value":4181},"The geometry shader operates on a group of vertices and their associated\ndata assembled from a single input primitive, and emits zero or more output\nprimitives and the group of vertices and their associated data required for\neach output primitive.",{"type":10,"tag":176,"props":4183,"children":4185},{"id":4184},"shaders-geometry-execution",[4186],{"type":16,"value":4187},"Geometry Shader Execution",{"type":10,"tag":18,"props":4189,"children":4190},{},[4191,4193,4197,4199,4205,4207,4210],{"type":16,"value":4192},"A geometry shader is invoked at least once for each primitive produced by\nthe tessellation stages, or at least once for each primitive generated by\n",{"type":10,"tag":28,"props":4194,"children":4195},{"href":30},[4196],{"type":16,"value":33},{"type":16,"value":4198}," when tessellation is not in use.\nA shader can request that the geometry shader runs multiple\n",{"type":10,"tag":28,"props":4200,"children":4202},{"href":4201},"/chapters/geometry#geometry-invocations",[4203],{"type":16,"value":4204},"instances",{"type":16,"value":4206},".\nA geometry shader is invoked at least once for each instance.\nIf the subpass includes multiple views in its view mask, the shader ",{"type":10,"tag":71,"props":4208,"children":4209},{"type":108},[],{"type":16,"value":4121},{"type":10,"tag":96,"props":4212,"children":4214},{"id":4213},"shaders-fragment",[4215],{"type":16,"value":4216},"Fragment Shaders",{"type":10,"tag":18,"props":4218,"children":4219},{},[4220,4222,4227],{"type":16,"value":4221},"Fragment shaders are invoked as a ",{"type":10,"tag":28,"props":4223,"children":4224},{"href":3377},[4225],{"type":16,"value":4226},"fragment operation",{"type":16,"value":4228}," in\na graphics pipeline.\nEach fragment shader invocation operates on a single fragment and its\nassociated data.\nWith few exceptions, fragment shaders do not have access to any data\nassociated with other fragments and are considered to execute in isolation\nof fragment shader invocations associated with other fragments.",{"type":10,"tag":96,"props":4230,"children":4232},{"id":4231},"shaders-compute",[4233],{"type":16,"value":4234},"Compute Shaders",{"type":10,"tag":18,"props":4236,"children":4237},{},[4238,4240,4246,4247,4253],{"type":16,"value":4239},"Compute shaders are invoked via ",{"type":10,"tag":28,"props":4241,"children":4243},{"href":4242},"/man/vkCmdDispatch",[4244],{"type":16,"value":4245},"vkCmdDispatch",{"type":16,"value":3363},{"type":10,"tag":28,"props":4248,"children":4250},{"href":4249},"/man/vkCmdDispatchIndirect",[4251],{"type":16,"value":4252},"vkCmdDispatchIndirect",{"type":16,"value":4254}," commands.\nIn general, they have access to similar resources as shader stages executing\nas part of a graphics pipeline.",{"type":10,"tag":18,"props":4256,"children":4257},{},[4258,4260,4264,4266,4270,4271,4274,4276,4281,4282,4287,4288,4293,4294,4297],{"type":16,"value":4259},"Compute workloads are formed from groups of work items called workgroups and\nprocessed by the compute shader in the current compute pipeline.\nA workgroup is a collection of shader invocations that execute the same\nshader, potentially in parallel.\nCompute shaders execute in ",{"type":10,"tag":88,"props":4261,"children":4262},{},[4263],{"type":16,"value":3658},{"type":16,"value":4265}," which are divided into a\nnumber of ",{"type":10,"tag":88,"props":4267,"children":4268},{},[4269],{"type":16,"value":3665},{"type":16,"value":3667},{"type":10,"tag":71,"props":4272,"children":4273},{"type":73},[],{"type":16,"value":4275}," be set by assigning a\nvalue to the ",{"type":10,"tag":125,"props":4277,"children":4279},{"className":4278},[],[4280],{"type":16,"value":3678},{"type":16,"value":3680},{"type":10,"tag":125,"props":4283,"children":4285},{"className":4284},[],[4286],{"type":16,"value":3686},{"type":16,"value":3688},{"type":10,"tag":125,"props":4289,"children":4291},{"className":4290},[],[4292],{"type":16,"value":3694},{"type":16,"value":3696},{"type":10,"tag":71,"props":4295,"children":4296},{"type":73},[],{"type":16,"value":3803},{"type":10,"tag":96,"props":4299,"children":4301},{"id":4300},"shaders-ray-generation",[4302],{"type":16,"value":4303},"Ray Generation Shaders",{"type":10,"tag":18,"props":4305,"children":4306},{},[4307,4309,4315,4317,4323],{"type":16,"value":4308},"A ray generation shader is similar to a compute shader.\nIts main purpose is to execute ray tracing queries using\n",{"type":10,"tag":28,"props":4310,"children":4312},{"href":4311},"/404#glossary-pipeline-trace-ray",[4313],{"type":16,"value":4314},"pipeline trace ray",{"type":16,"value":4316}," instructions (such as\n",{"type":10,"tag":125,"props":4318,"children":4320},{"className":4319},[],[4321],{"type":16,"value":4322},"OpTraceRayKHR",{"type":16,"value":4324},") and process the results.",{"type":10,"tag":176,"props":4326,"children":4328},{"id":4327},"shaders-ray-generation-execution",[4329],{"type":16,"value":4330},"Ray Generation Shader Execution",{"type":10,"tag":18,"props":4332,"children":4333},{},[4334,4336,4342,4344,4349,4351,4357,4359,4365,4366,4372,4373,4379],{"type":16,"value":4335},"One ray generation shader is executed per ray tracing dispatch.\nIts location in the shader binding table (see ",{"type":10,"tag":28,"props":4337,"children":4339},{"href":4338},"/chapters/ray-tracing#shader-binding-table",[4340],{"type":16,"value":4341},"Shader\nBinding Table",{"type":16,"value":4343}," for details) is passed directly into\n",{"type":10,"tag":28,"props":4345,"children":4346},{"href":3025},[4347],{"type":16,"value":4348},"vkCmdTraceRaysKHR",{"type":16,"value":4350}," using the ",{"type":10,"tag":125,"props":4352,"children":4354},{"className":4353},[],[4355],{"type":16,"value":4356},"pRaygenShaderBindingTable",{"type":16,"value":4358}," parameter\nor\n",{"type":10,"tag":28,"props":4360,"children":4362},{"href":4361},"/man/vkCmdTraceRaysNV",[4363],{"type":16,"value":4364},"vkCmdTraceRaysNV",{"type":16,"value":4350},{"type":10,"tag":125,"props":4367,"children":4369},{"className":4368},[],[4370],{"type":16,"value":4371},"raygenShaderBindingTableBuffer",{"type":16,"value":3363},{"type":10,"tag":125,"props":4374,"children":4376},{"className":4375},[],[4377],{"type":16,"value":4378},"raygenShaderBindingOffset",{"type":16,"value":4380}," parameters\n.",{"type":10,"tag":96,"props":4382,"children":4384},{"id":4383},"shaders-intersection",[4385],{"type":16,"value":4386},"Intersection Shaders",{"type":10,"tag":18,"props":4388,"children":4389},{},[4390],{"type":16,"value":4391},"Intersection shaders enable the implementation of arbitrary, application\ndefined geometric primitives.\nAn intersection shader for a primitive is executed whenever its axis-aligned\nbounding box is hit by a ray.",{"type":10,"tag":18,"props":4393,"children":4394},{},[4395,4397,4403],{"type":16,"value":4396},"Like other ray tracing shader domains, an intersection shader operates on a\nsingle ray at a time.\nIt also operates on a single primitive at a time.\nIt is therefore the purpose of an intersection shader to compute the\nray-primitive intersections and report them.\nTo report an intersection, the shader calls the ",{"type":10,"tag":125,"props":4398,"children":4400},{"className":4399},[],[4401],{"type":16,"value":4402},"OpReportIntersectionKHR",{"type":16,"value":4404},"\ninstruction.",{"type":10,"tag":18,"props":4406,"children":4407},{},[4408,4410,4413,4415,4419],{"type":16,"value":4409},"An intersection shader communicates with any-hit and closest shaders by\ngenerating attribute values that they ",{"type":10,"tag":71,"props":4411,"children":4412},{"type":73},[],{"type":16,"value":4414}," read.\nIntersection shaders ",{"type":10,"tag":71,"props":4416,"children":4418},{"type":4417},"cannot",[],{"type":16,"value":4420}," read or modify the ray payload.",{"type":10,"tag":176,"props":4422,"children":4424},{"id":4423},"shaders-intersection-execution",[4425],{"type":16,"value":4426},"Intersection Shader Execution",{"type":10,"tag":18,"props":4428,"children":4429},{},[4430],{"type":16,"value":4431},"The order in which intersections are found along a ray, and therefore the\norder in which intersection shaders are executed, is unspecified.",{"type":10,"tag":18,"props":4433,"children":4434},{},[4435],{"type":16,"value":4436},"The intersection shader of the closest AABB which intersects the ray is\nguaranteed to be executed at some point during traversal, unless the ray is\nforcibly terminated.",{"type":10,"tag":96,"props":4438,"children":4440},{"id":4439},"shaders-any-hit",[4441],{"type":16,"value":4442},"Any-Hit Shaders",{"type":10,"tag":18,"props":4444,"children":4445},{},[4446,4448,4454,4456,4461,4463,4469,4471,4474],{"type":16,"value":4447},"The any-hit shader is executed after the intersection shader reports an\nintersection that lies within the current [t",{"type":10,"tag":4449,"props":4450,"children":4451},"sub",{},[4452],{"type":16,"value":4453},"min",{"type":16,"value":4455},",t",{"type":10,"tag":4449,"props":4457,"children":4458},{},[4459],{"type":16,"value":4460},"max",{"type":16,"value":4462},"] of the ray.\nThe main use of any-hit shaders is to programmatically decide whether or not\nan intersection will be accepted.\nThe intersection will be accepted unless the shader calls the\n",{"type":10,"tag":125,"props":4464,"children":4466},{"className":4465},[],[4467],{"type":16,"value":4468},"OpIgnoreIntersectionKHR",{"type":16,"value":4470}," instruction.\nAny-hit shaders have read-only access to the attributes generated by the\ncorresponding intersection shader, and ",{"type":10,"tag":71,"props":4472,"children":4473},{"type":73},[],{"type":16,"value":4420},{"type":10,"tag":176,"props":4476,"children":4478},{"id":4477},"shaders-any-hit-execution",[4479],{"type":16,"value":4480},"Any-Hit Shader Execution",{"type":10,"tag":18,"props":4482,"children":4483},{},[4484],{"type":16,"value":4485},"The order in which intersections are found along a ray, and therefore the\norder in which any-hit shaders are executed, is unspecified.",{"type":10,"tag":18,"props":4487,"children":4488},{},[4489],{"type":16,"value":4490},"The any-hit shader of the closest hit is guaranteed to be executed at some\npoint during traversal, unless the ray is forcibly terminated.",{"type":10,"tag":96,"props":4492,"children":4494},{"id":4493},"shaders-closest-hit",[4495],{"type":16,"value":4496},"Closest Hit Shaders",{"type":10,"tag":18,"props":4498,"children":4499},{},[4500,4502,4505,4507,4510,4512,4517],{"type":16,"value":4501},"Closest hit shaders have read-only access to the attributes generated by the\ncorresponding intersection shader, and ",{"type":10,"tag":71,"props":4503,"children":4504},{"type":73},[],{"type":16,"value":4506}," read or modify the ray payload.\nThey also have access to a number of system-generated values.\nClosest hit shaders ",{"type":10,"tag":71,"props":4508,"children":4509},{"type":73},[],{"type":16,"value":4511}," call ",{"type":10,"tag":28,"props":4513,"children":4514},{"href":4311},[4515],{"type":16,"value":4516},"pipeline trace\nray",{"type":16,"value":4518}," instructions to recursively trace rays.",{"type":10,"tag":176,"props":4520,"children":4522},{"id":4521},"shaders-closest-hit-execution",[4523],{"type":16,"value":4524},"Closest Hit Shader Execution",{"type":10,"tag":18,"props":4526,"children":4527},{},[4528],{"type":16,"value":4529},"Exactly one closest hit shader is executed when traversal is finished and an\nintersection has been found and accepted.",{"type":10,"tag":96,"props":4531,"children":4533},{"id":4532},"shaders-miss",[4534],{"type":16,"value":4535},"Miss Shaders",{"type":10,"tag":18,"props":4537,"children":4538},{},[4539,4541,4544,4546,4549,4551,4555,4557,4560],{"type":16,"value":4540},"Miss shaders ",{"type":10,"tag":71,"props":4542,"children":4543},{"type":73},[],{"type":16,"value":4545}," access the ray payload and ",{"type":10,"tag":71,"props":4547,"children":4548},{"type":73},[],{"type":16,"value":4550}," trace new rays through the\n",{"type":10,"tag":28,"props":4552,"children":4553},{"href":4311},[4554],{"type":16,"value":4314},{"type":16,"value":4556}," instructions, but\n",{"type":10,"tag":71,"props":4558,"children":4559},{"type":4417},[],{"type":16,"value":4561}," access attributes since they are not associated with an\nintersection.",{"type":10,"tag":176,"props":4563,"children":4565},{"id":4564},"shaders-miss-execution",[4566],{"type":16,"value":4567},"Miss Shader Execution",{"type":10,"tag":18,"props":4569,"children":4570},{},[4571],{"type":16,"value":4572},"A miss shader is executed instead of a closest hit shader if no intersection\nwas found during traversal.",{"type":10,"tag":96,"props":4574,"children":4576},{"id":4575},"shaders-callable",[4577],{"type":16,"value":4578},"Callable Shaders",{"type":10,"tag":18,"props":4580,"children":4581},{},[4582,4584,4587],{"type":16,"value":4583},"Callable shaders ",{"type":10,"tag":71,"props":4585,"children":4586},{"type":73},[],{"type":16,"value":4588}," access a callable payload that works similarly to ray\npayloads to do subroutine work.",{"type":10,"tag":176,"props":4590,"children":4592},{"id":4591},"shaders-callable-execution",[4593],{"type":16,"value":4594},"Callable Shader Execution",{"type":10,"tag":18,"props":4596,"children":4597},{},[4598,4600,4606],{"type":16,"value":4599},"A callable shader is executed by calling ",{"type":10,"tag":125,"props":4601,"children":4603},{"className":4602},[],[4604],{"type":16,"value":4605},"OpExecuteCallableKHR",{"type":16,"value":4607}," from an\nallowed shader stage.",{"type":10,"tag":96,"props":4609,"children":4611},{"id":4610},"shaders-interpolation-decorations",[4612],{"type":16,"value":4613},"Interpolation Decorations",{"type":10,"tag":18,"props":4615,"children":4616},{},[4617,4619,4625],{"type":16,"value":4618},"Variables in the ",{"type":10,"tag":125,"props":4620,"children":4622},{"className":4621},[],[4623],{"type":16,"value":4624},"Input",{"type":16,"value":4626}," storage class in a fragment shader’s interface\nare interpolated from the values specified by the primitive being\nrasterized.",{"type":10,"tag":233,"props":4628,"children":4629},{},[4630],{"type":10,"tag":18,"props":4631,"children":4632},{},[4633],{"type":16,"value":4634},"Interpolation decorations can be present on input and output variables in\npre-rasterization shaders but have no effect on the interpolation performed.",{"type":10,"tag":18,"props":4636,"children":4637},{},[4638,4640,4646,4647,4653,4655,4661,4663,4669,4670,4675],{"type":16,"value":4639},"An undecorated input variable will be interpolated with perspective-correct\ninterpolation according to the primitive type being rasterized.\n",{"type":10,"tag":28,"props":4641,"children":4643},{"href":4642},"/chapters/primsrast#line_perspective_interpolation",[4644],{"type":16,"value":4645},"Lines",{"type":16,"value":3363},{"type":10,"tag":28,"props":4648,"children":4650},{"href":4649},"/chapters/primsrast#triangle_perspective_interpolation",[4651],{"type":16,"value":4652},"polygons",{"type":16,"value":4654}," are interpolated in the same\nway as the primitive’s clip coordinates.\nIf the ",{"type":10,"tag":125,"props":4656,"children":4658},{"className":4657},[],[4659],{"type":16,"value":4660},"NoPerspective",{"type":16,"value":4662}," decoration is present, linear interpolation is\ninstead used for ",{"type":10,"tag":28,"props":4664,"children":4666},{"href":4665},"/chapters/primsrast#line_linear_interpolation",[4667],{"type":16,"value":4668},"lines",{"type":16,"value":3363},{"type":10,"tag":28,"props":4671,"children":4673},{"href":4672},"/chapters/primsrast#triangle_linear_interpolation",[4674],{"type":16,"value":4652},{"type":16,"value":4676},".\nFor points, as there is only a single vertex, input values are never\ninterpolated and instead take the value written for the single vertex.",{"type":10,"tag":18,"props":4678,"children":4679},{},[4680,4681,4687,4689,4695,4697,4700,4702,4707],{"type":16,"value":1319},{"type":10,"tag":125,"props":4682,"children":4684},{"className":4683},[],[4685],{"type":16,"value":4686},"Flat",{"type":16,"value":4688}," decoration is present on an input variable, the value is\nnot interpolated, and instead takes its value directly from the\n",{"type":10,"tag":28,"props":4690,"children":4692},{"href":4691},"/chapters/vertexpostproc#vertexpostproc-flatshading",[4693],{"type":16,"value":4694},"provoking vertex",{"type":16,"value":4696},".\nFragment shader inputs that are signed or unsigned integers, integer\nvectors, or any double-precision floating-point type ",{"type":10,"tag":71,"props":4698,"children":4699},{"type":524},[],{"type":16,"value":4701}," be decorated with\n",{"type":10,"tag":125,"props":4703,"children":4705},{"className":4704},[],[4706],{"type":16,"value":4686},{"type":16,"value":402},{"type":10,"tag":18,"props":4709,"children":4710},{},[4711],{"type":16,"value":4712},"Interpolation of input variables is performed at an implementation-defined\nposition within the fragment area being shaded.\nThe position is further constrained as follows:",{"type":10,"tag":594,"props":4714,"children":4715},{},[4716,4733,4749],{"type":10,"tag":598,"props":4717,"children":4718},{},[4719,4720,4726,4728,4731],{"type":16,"value":1319},{"type":10,"tag":125,"props":4721,"children":4723},{"className":4722},[],[4724],{"type":16,"value":4725},"Centroid",{"type":16,"value":4727}," decoration is used, the interpolation position used\nfor the variable ",{"type":10,"tag":71,"props":4729,"children":4730},{"type":524},[],{"type":16,"value":4732}," also fall within the bounds of the primitive\nbeing rasterized.",{"type":10,"tag":598,"props":4734,"children":4735},{},[4736,4737,4743,4744,4747],{"type":16,"value":1319},{"type":10,"tag":125,"props":4738,"children":4740},{"className":4739},[],[4741],{"type":16,"value":4742},"Sample",{"type":16,"value":4727},{"type":10,"tag":71,"props":4745,"children":4746},{"type":524},[],{"type":16,"value":4748}," be at the position of the sample being shaded by\nthe current fragment shader invocation.",{"type":10,"tag":598,"props":4750,"children":4751},{},[4752,4754,4757],{"type":16,"value":4753},"If a sample count of 1 is used, the interpolation position ",{"type":10,"tag":71,"props":4755,"children":4756},{"type":524},[],{"type":16,"value":4758}," be at\nthe center of the fragment area.",{"type":10,"tag":233,"props":4760,"children":4761},{},[4762],{"type":10,"tag":18,"props":4763,"children":4764},{},[4765,4767,4772,4774,4779],{"type":16,"value":4766},"As ",{"type":10,"tag":125,"props":4768,"children":4770},{"className":4769},[],[4771],{"type":16,"value":4725},{"type":16,"value":4773}," restricts the possible interpolation position to the\ncovered area of the primitive, the position can be forced to vary between\nneighboring fragments when it otherwise would not.\nDerivatives calculated based on these differing locations can produce\ninconsistent results compared to undecorated inputs.\nIt is recommended that input variables used in derivative calculations are\nnot decorated with ",{"type":10,"tag":125,"props":4775,"children":4777},{"className":4776},[],[4778],{"type":16,"value":4725},{"type":16,"value":402},{"type":10,"tag":4781,"props":4782,"children":4784},"anchor",{"id":4783},"shaders-interpolation-decorations-pervertexkhr",[],{"type":10,"tag":18,"props":4786,"children":4787},{},[4788,4789,4795],{"type":16,"value":1319},{"type":10,"tag":125,"props":4790,"children":4792},{"className":4791},[],[4793],{"type":16,"value":4794},"PerVertexKHR",{"type":16,"value":4796}," decoration is present on an input variable, the\nvalue is not interpolated, and instead values from all input vertices are\navailable in an array.\nEach index of the array corresponds to one of the vertices of the primitive\nthat produced the fragment.",{"type":10,"tag":18,"props":4798,"children":4799},{},[4800,4801,4807,4809,4812,4814,4820,4821,4824],{"type":16,"value":1319},{"type":10,"tag":125,"props":4802,"children":4804},{"className":4803},[],[4805],{"type":16,"value":4806},"CustomInterpAMD",{"type":16,"value":4808}," decoration is present on an input variable, the\nvalue ",{"type":10,"tag":71,"props":4810,"children":4811},{"type":4417},[],{"type":16,"value":4813}," be accessed directly; instead the extended instruction\n",{"type":10,"tag":125,"props":4815,"children":4817},{"className":4816},[],[4818],{"type":16,"value":4819},"InterpolateAtVertexAMD",{"type":16,"value":324},{"type":10,"tag":71,"props":4822,"children":4823},{"type":524},[],{"type":16,"value":4825}," be used to obtain values from the input\nvertices.",{"type":10,"tag":96,"props":4827,"children":4829},{"id":4828},"shaders-staticuse",[4830],{"type":16,"value":4831},"Static Use",{"type":10,"tag":18,"props":4833,"children":4834},{},[4835,4837,4843,4845,4851,4853,4858,4860,4865,4867,4873,4875,4880],{"type":16,"value":4836},"A SPIR-V module declares a global object in memory using the ",{"type":10,"tag":125,"props":4838,"children":4840},{"className":4839},[],[4841],{"type":16,"value":4842},"OpVariable",{"type":16,"value":4844},"\ninstruction, which results in a pointer ",{"type":10,"tag":125,"props":4846,"children":4848},{"className":4847},[],[4849],{"type":16,"value":4850},"x",{"type":16,"value":4852}," to that object.\nA specific entry point in a SPIR-V module is said to ",{"type":10,"tag":88,"props":4854,"children":4855},{},[4856],{"type":16,"value":4857},"statically use",{"type":16,"value":4859}," that\nobject if that entry point’s call tree contains a function containing a\ninstruction with ",{"type":10,"tag":125,"props":4861,"children":4863},{"className":4862},[],[4864],{"type":16,"value":4850},{"type":16,"value":4866}," as an ",{"type":10,"tag":125,"props":4868,"children":4870},{"className":4869},[],[4871],{"type":16,"value":4872},"id",{"type":16,"value":4874}," operand.\nA shader entry point also ",{"type":10,"tag":88,"props":4876,"children":4877},{},[4878],{"type":16,"value":4879},"statically uses",{"type":16,"value":4881}," any variables explicitly\ndeclared in its interface.",{"type":10,"tag":96,"props":4883,"children":4885},{"id":4884},"shaders-scope",[4886],{"type":16,"value":4887},"Scope",{"type":10,"tag":18,"props":4889,"children":4890},{},[4891,4893,4898,4900,4905],{"type":16,"value":4892},"A ",{"type":10,"tag":88,"props":4894,"children":4895},{},[4896],{"type":16,"value":4897},"scope",{"type":16,"value":4899}," describes a set of shader invocations, where each such set is a\n",{"type":10,"tag":88,"props":4901,"children":4902},{},[4903],{"type":16,"value":4904},"scope instance",{"type":16,"value":4906},".\nEach invocation belongs to one or more scope instances, but belongs to no\nmore than one scope instance for each scope.",{"type":10,"tag":18,"props":4908,"children":4909},{},[4910],{"type":16,"value":4911},"The operations available between invocations in a given scope instance vary,\nwith smaller scopes generally able to perform more operations, and with\ngreater efficiency.",{"type":10,"tag":176,"props":4913,"children":4915},{"id":4914},"shaders-scope-cross-device",[4916],{"type":16,"value":4917},"Cross Device",{"type":10,"tag":18,"props":4919,"children":4920},{},[4921,4923,4928],{"type":16,"value":4922},"All invocations executed in a Vulkan instance fall into a single ",{"type":10,"tag":88,"props":4924,"children":4925},{},[4926],{"type":16,"value":4927},"cross\ndevice scope instance",{"type":16,"value":402},{"type":10,"tag":18,"props":4930,"children":4931},{},[4932,4934,4940,4942,4948,4950,4953],{"type":16,"value":4933},"Whilst the ",{"type":10,"tag":125,"props":4935,"children":4937},{"className":4936},[],[4938],{"type":16,"value":4939},"CrossDevice",{"type":16,"value":4941}," scope is defined in SPIR-V, it is disallowed in\nVulkan.\nAPI ",{"type":10,"tag":28,"props":4943,"children":4945},{"href":4944},"/chapters/synchronization#synchronization",[4946],{"type":16,"value":4947},"synchronization",{"type":16,"value":4949}," commands ",{"type":10,"tag":71,"props":4951,"children":4952},{"type":73},[],{"type":16,"value":4954}," be used to\ncommunicate between devices.",{"type":10,"tag":176,"props":4956,"children":4958},{"id":4957},"shaders-scope-device",[4959],{"type":16,"value":4960},"Device",{"type":10,"tag":18,"props":4962,"children":4963},{},[4964,4966,4971],{"type":16,"value":4965},"All invocations executed on a single device form a ",{"type":10,"tag":88,"props":4967,"children":4968},{},[4969],{"type":16,"value":4970},"device scope instance",{"type":16,"value":402},{"type":10,"tag":18,"props":4973,"children":4974},{},[4975,4976,4986,4987,4997,4999,5004,5005,5010,5012,5015,5017,5023,5024,5029],{"type":16,"value":1319},{"type":10,"tag":28,"props":4977,"children":4979},{"href":4978},"/man/VkPhysicalDeviceVulkanMemoryModelFeatures#features-vulkanMemoryModel",[4980],{"type":10,"tag":125,"props":4981,"children":4983},{"className":4982},[],[4984],{"type":16,"value":4985},"vulkanMemoryModel",{"type":16,"value":3363},{"type":10,"tag":28,"props":4988,"children":4990},{"href":4989},"/man/VkPhysicalDeviceVulkanMemoryModelFeatures#features-vulkanMemoryModelDeviceScope",[4991],{"type":10,"tag":125,"props":4992,"children":4994},{"className":4993},[],[4995],{"type":16,"value":4996},"vulkanMemoryModelDeviceScope",{"type":16,"value":4998}," features are enabled, this scope is\nrepresented in SPIR-V by the ",{"type":10,"tag":125,"props":5000,"children":5002},{"className":5001},[],[5003],{"type":16,"value":4960},{"type":16,"value":324},{"type":10,"tag":125,"props":5006,"children":5008},{"className":5007},[],[5009],{"type":16,"value":4887},{"type":16,"value":5011},", which ",{"type":10,"tag":71,"props":5013,"children":5014},{"type":73},[],{"type":16,"value":5016}," be used as a\n",{"type":10,"tag":125,"props":5018,"children":5020},{"className":5019},[],[5021],{"type":16,"value":5022},"Memory",{"type":16,"value":324},{"type":10,"tag":125,"props":5025,"children":5027},{"className":5026},[],[5028],{"type":16,"value":4887},{"type":16,"value":5030}," for barrier and atomic operations.",{"type":10,"tag":18,"props":5032,"children":5033},{},[5034,5036,5046,5047,5055,5057,5062,5063,5068,5070,5076],{"type":16,"value":5035},"If both the ",{"type":10,"tag":28,"props":5037,"children":5039},{"href":5038},"/man/VkPhysicalDeviceShaderClockFeaturesKHR#features-shaderDeviceClock",[5040],{"type":10,"tag":125,"props":5041,"children":5043},{"className":5042},[],[5044],{"type":16,"value":5045},"shaderDeviceClock",{"type":16,"value":3363},{"type":10,"tag":28,"props":5048,"children":5049},{"href":4989},[5050],{"type":10,"tag":125,"props":5051,"children":5053},{"className":5052},[],[5054],{"type":16,"value":4996},{"type":16,"value":5056}," features are enabled, using the\n",{"type":10,"tag":125,"props":5058,"children":5060},{"className":5059},[],[5061],{"type":16,"value":4960},{"type":16,"value":324},{"type":10,"tag":125,"props":5064,"children":5066},{"className":5065},[],[5067],{"type":16,"value":4887},{"type":16,"value":5069}," with the ",{"type":10,"tag":125,"props":5071,"children":5073},{"className":5072},[],[5074],{"type":16,"value":5075},"OpReadClockKHR",{"type":16,"value":5077}," instruction will read\nfrom a clock that is consistent across invocations in the same device scope\ninstance.",{"type":10,"tag":18,"props":5079,"children":5080},{},[5081,5083,5086],{"type":16,"value":5082},"There is no method to synchronize the execution of these invocations within\nSPIR-V, and this ",{"type":10,"tag":71,"props":5084,"children":5085},{"type":73},[],{"type":16,"value":5087}," only be done with API synchronization primitives.",{"type":10,"tag":18,"props":5089,"children":5090},{},[5091],{"type":16,"value":5092},"Invocations executing on different devices in a device group operate in\nseparate device scope instances.",{"type":10,"tag":176,"props":5094,"children":5096},{"id":5095},"shaders-scope-queue-family",[5097],{"type":16,"value":5098},"Queue Family",{"type":10,"tag":18,"props":5100,"children":5101},{},[5102,5104,5109],{"type":16,"value":5103},"Invocations executed by queues in a given queue family form a ",{"type":10,"tag":88,"props":5105,"children":5106},{},[5107],{"type":16,"value":5108},"queue family\nscope instance",{"type":16,"value":402},{"type":10,"tag":18,"props":5111,"children":5112},{},[5113,5115,5121,5122,5127,5129,5137,5139,5144,5145,5150,5151,5154,5156,5161,5162,5167],{"type":16,"value":5114},"This scope is identified in SPIR-V as the\n",{"type":10,"tag":125,"props":5116,"children":5118},{"className":5117},[],[5119],{"type":16,"value":5120},"QueueFamily",{"type":16,"value":324},{"type":10,"tag":125,"props":5123,"children":5125},{"className":5124},[],[5126],{"type":16,"value":4887},{"type":16,"value":5128}," if the ",{"type":10,"tag":28,"props":5130,"children":5131},{"href":4978},[5132],{"type":10,"tag":125,"props":5133,"children":5135},{"className":5134},[],[5136],{"type":16,"value":4985},{"type":16,"value":5138}," feature is enabled, or if not, the\n",{"type":10,"tag":125,"props":5140,"children":5142},{"className":5141},[],[5143],{"type":16,"value":4960},{"type":16,"value":324},{"type":10,"tag":125,"props":5146,"children":5148},{"className":5147},[],[5149],{"type":16,"value":4887},{"type":16,"value":5011},{"type":10,"tag":71,"props":5152,"children":5153},{"type":73},[],{"type":16,"value":5155}," be used as a ",{"type":10,"tag":125,"props":5157,"children":5159},{"className":5158},[],[5160],{"type":16,"value":5022},{"type":16,"value":324},{"type":10,"tag":125,"props":5163,"children":5165},{"className":5164},[],[5166],{"type":16,"value":4887},{"type":16,"value":5168}," for\nbarrier and atomic operations.",{"type":10,"tag":18,"props":5170,"children":5171},{},[5172,5173,5181,5183,5191,5193,5198,5199,5204,5205,5210],{"type":16,"value":1319},{"type":10,"tag":28,"props":5174,"children":5175},{"href":5038},[5176],{"type":10,"tag":125,"props":5177,"children":5179},{"className":5178},[],[5180],{"type":16,"value":5045},{"type":16,"value":5182}," feature is\nenabled,\nbut the ",{"type":10,"tag":28,"props":5184,"children":5185},{"href":4989},[5186],{"type":10,"tag":125,"props":5187,"children":5189},{"className":5188},[],[5190],{"type":16,"value":4996},{"type":16,"value":5192}," feature is not enabled,\nusing the ",{"type":10,"tag":125,"props":5194,"children":5196},{"className":5195},[],[5197],{"type":16,"value":4960},{"type":16,"value":324},{"type":10,"tag":125,"props":5200,"children":5202},{"className":5201},[],[5203],{"type":16,"value":4887},{"type":16,"value":5069},{"type":10,"tag":125,"props":5206,"children":5208},{"className":5207},[],[5209],{"type":16,"value":5075},{"type":16,"value":5211}," instruction\nwill read from a clock that is consistent across invocations in the same\nqueue family scope instance.",{"type":10,"tag":18,"props":5213,"children":5214},{},[5215,5216,5219],{"type":16,"value":5082},{"type":10,"tag":71,"props":5217,"children":5218},{"type":73},[],{"type":16,"value":5087},{"type":10,"tag":18,"props":5221,"children":5222},{},[5223,5225,5228,5230,5235],{"type":16,"value":5224},"Each invocation in a queue family scope instance ",{"type":10,"tag":71,"props":5226,"children":5227},{"type":524},[],{"type":16,"value":5229}," be in the same\n",{"type":10,"tag":28,"props":5231,"children":5233},{"href":5232},"/chapters/shaders#shaders-scope-device",[5234],{"type":16,"value":4970},{"type":16,"value":402},{"type":10,"tag":176,"props":5237,"children":5239},{"id":5238},"shaders-scope-command",[5240],{"type":16,"value":5241},"Command",{"type":10,"tag":18,"props":5243,"children":5244},{},[5245,5247,5251,5252,5258,5260,5265,5267,5273],{"type":16,"value":5246},"Any shader invocations executed as the result of a single command such as\n",{"type":10,"tag":28,"props":5248,"children":5249},{"href":4242},[5250],{"type":16,"value":4245},{"type":16,"value":982},{"type":10,"tag":28,"props":5253,"children":5255},{"href":5254},"/man/vkCmdDraw",[5256],{"type":16,"value":5257},"vkCmdDraw",{"type":16,"value":5259}," form a ",{"type":10,"tag":88,"props":5261,"children":5262},{},[5263],{"type":16,"value":5264},"command scope instance",{"type":16,"value":5266},".\nFor indirect drawing commands with ",{"type":10,"tag":125,"props":5268,"children":5270},{"className":5269},[],[5271],{"type":16,"value":5272},"drawCount",{"type":16,"value":5274}," greater than one,\ninvocations from separate draws are in separate command scope instances.\nFor ray tracing shaders, an invocation group is an implementation-dependent\nsubset of the set of shader invocations of a given shader stage which are\nproduced by a single trace rays command.",{"type":10,"tag":18,"props":5276,"children":5277},{},[5278,5280,5285,5287,5290],{"type":16,"value":5279},"There is no specific ",{"type":10,"tag":125,"props":5281,"children":5283},{"className":5282},[],[5284],{"type":16,"value":4887},{"type":16,"value":5286}," for communication across invocations in a\ncommand scope instance.\nAs this has a clear boundary at the API level, coordination here ",{"type":10,"tag":71,"props":5288,"children":5289},{"type":73},[],{"type":16,"value":5291}," be\nperformed in the API, rather than in SPIR-V.",{"type":10,"tag":18,"props":5293,"children":5294},{},[5295,5297,5300,5301,5307],{"type":16,"value":5296},"Each invocation in a command scope instance ",{"type":10,"tag":71,"props":5298,"children":5299},{"type":524},[],{"type":16,"value":5229},{"type":10,"tag":28,"props":5302,"children":5304},{"href":5303},"/chapters/shaders#shaders-scope-queue-family",[5305],{"type":16,"value":5306},"queue-family scope instance",{"type":16,"value":402},{"type":10,"tag":18,"props":5309,"children":5310},{},[5311,5313,5319,5321,5326,5328,5334],{"type":16,"value":5312},"For shaders without defined ",{"type":10,"tag":28,"props":5314,"children":5316},{"href":5315},"/chapters/shaders#shaders-scope-workgroup",[5317],{"type":16,"value":5318},"workgroups",{"type":16,"value":5320},", this\nset of invocations forms an ",{"type":10,"tag":88,"props":5322,"children":5323},{},[5324],{"type":16,"value":5325},"invocation group",{"type":16,"value":5327}," as defined in the\n",{"type":10,"tag":28,"props":5329,"children":5331},{"href":5330},"/chapters/introduction#spirv-spec",[5332],{"type":16,"value":5333},"SPIR-V specification",{"type":16,"value":402},{"type":10,"tag":176,"props":5336,"children":5338},{"id":5337},"shaders-scope-primitive",[5339],{"type":16,"value":5340},"Primitive",{"type":10,"tag":18,"props":5342,"children":5343},{},[5344,5346,5351],{"type":16,"value":5345},"Any fragment shader invocations executed as the result of rasterization of a\nsingle primitive form a ",{"type":10,"tag":88,"props":5347,"children":5348},{},[5349],{"type":16,"value":5350},"primitive scope instance",{"type":16,"value":402},{"type":10,"tag":18,"props":5353,"children":5354},{},[5355,5356,5361],{"type":16,"value":5279},{"type":10,"tag":125,"props":5357,"children":5359},{"className":5358},[],[5360],{"type":16,"value":4887},{"type":16,"value":5362}," for communication across invocations in a\nprimitive scope instance.",{"type":10,"tag":18,"props":5364,"children":5365},{},[5366,5368,5372],{"type":16,"value":5367},"Any generated ",{"type":10,"tag":28,"props":5369,"children":5370},{"href":3242},[5371],{"type":16,"value":3275},{"type":16,"value":5373}," are\nincluded in this scope instance.",{"type":10,"tag":18,"props":5375,"children":5376},{},[5377,5379,5382,5383,5388],{"type":16,"value":5378},"Each invocation in a primitive scope instance ",{"type":10,"tag":71,"props":5380,"children":5381},{"type":524},[],{"type":16,"value":5229},{"type":10,"tag":28,"props":5384,"children":5386},{"href":5385},"/chapters/shaders#shaders-scope-command",[5387],{"type":16,"value":5264},{"type":16,"value":402},{"type":10,"tag":18,"props":5390,"children":5391},{},[5392,5394,5399],{"type":16,"value":5393},"Any input variables decorated with ",{"type":10,"tag":125,"props":5395,"children":5397},{"className":5396},[],[5398],{"type":16,"value":4686},{"type":16,"value":5400}," are uniform within a primitive\nscope instance.",{"type":10,"tag":176,"props":5402,"children":5404},{"id":5403},"shaders-scope-shadercall",[5405],{"type":16,"value":5406},"Shader Call",{"type":10,"tag":18,"props":5408,"children":5409},{},[5410,5412,5418,5420,5425],{"type":16,"value":5411},"Any ",{"type":10,"tag":28,"props":5413,"children":5415},{"href":5414},"/chapters/memory-model#shader-call-related",[5416],{"type":16,"value":5417},"shader-call-related",{"type":16,"value":5419}," invocations that are\nexecuted in one or more ray tracing execution models form a ",{"type":10,"tag":88,"props":5421,"children":5422},{},[5423],{"type":16,"value":5424},"shader call\nscope instance",{"type":16,"value":402},{"type":10,"tag":18,"props":5427,"children":5428},{},[5429,5430,5436,5437,5442,5444,5449,5450,5455],{"type":16,"value":3411},{"type":10,"tag":125,"props":5431,"children":5433},{"className":5432},[],[5434],{"type":16,"value":5435},"ShaderCallKHR",{"type":16,"value":324},{"type":10,"tag":125,"props":5438,"children":5440},{"className":5439},[],[5441],{"type":16,"value":4887},{"type":16,"value":5443}," can be used as ",{"type":10,"tag":125,"props":5445,"children":5447},{"className":5446},[],[5448],{"type":16,"value":5022},{"type":16,"value":324},{"type":10,"tag":125,"props":5451,"children":5453},{"className":5452},[],[5454],{"type":16,"value":4887},{"type":16,"value":5168},{"type":10,"tag":18,"props":5457,"children":5458},{},[5459,5461,5464,5465,5470],{"type":16,"value":5460},"Each invocation in a shader call scope instance ",{"type":10,"tag":71,"props":5462,"children":5463},{"type":524},[],{"type":16,"value":5229},{"type":10,"tag":28,"props":5466,"children":5467},{"href":5303},[5468],{"type":16,"value":5469},"queue family scope instance",{"type":16,"value":402},{"type":10,"tag":176,"props":5472,"children":5474},{"id":5473},"shaders-scope-workgroup",[5475],{"type":16,"value":5476},"Workgroup",{"type":10,"tag":18,"props":5478,"children":5479},{},[5480,5481,5486,5488,5493],{"type":16,"value":4892},{"type":10,"tag":88,"props":5482,"children":5483},{},[5484],{"type":16,"value":5485},"local workgroup",{"type":16,"value":5487}," is a set of invocations that can synchronize and share\ndata with each other using memory in the ",{"type":10,"tag":125,"props":5489,"children":5491},{"className":5490},[],[5492],{"type":16,"value":5476},{"type":16,"value":5494}," storage class.",{"type":10,"tag":18,"props":5496,"children":5497},{},[5498,5499,5504,5505,5510,5512],{"type":16,"value":3411},{"type":10,"tag":125,"props":5500,"children":5502},{"className":5501},[],[5503],{"type":16,"value":5476},{"type":16,"value":324},{"type":10,"tag":125,"props":5506,"children":5508},{"className":5507},[],[5509],{"type":16,"value":4887},{"type":16,"value":5511}," can be used as both an ",{"type":10,"tag":125,"props":5513,"children":5515},{"className":5514},[],[5516],{"type":16,"value":3592},{"type":10,"tag":18,"props":5518,"children":5519},{},[5520,5525,5526,5531,5532,5537],{"type":10,"tag":125,"props":5521,"children":5523},{"className":5522},[],[5524],{"type":16,"value":4887},{"type":16,"value":365},{"type":10,"tag":125,"props":5527,"children":5529},{"className":5528},[],[5530],{"type":16,"value":5022},{"type":16,"value":324},{"type":10,"tag":125,"props":5533,"children":5535},{"className":5534},[],[5536],{"type":16,"value":4887},{"type":16,"value":5030},{"type":10,"tag":18,"props":5539,"children":5540},{},[5541,5543,5546,5547,5551],{"type":16,"value":5542},"Each invocation in a local workgroup ",{"type":10,"tag":71,"props":5544,"children":5545},{"type":524},[],{"type":16,"value":5229},{"type":10,"tag":28,"props":5548,"children":5549},{"href":5385},[5550],{"type":16,"value":5264},{"type":16,"value":402},{"type":10,"tag":18,"props":5553,"children":5554},{},[5555,5557,5560,5562,5566,5568,5572],{"type":16,"value":5556},"Only\ntask, mesh, and\ncompute shaders have defined workgroups - other shader types ",{"type":10,"tag":71,"props":5558,"children":5559},{"type":4417},[],{"type":16,"value":5561}," use\nworkgroup functionality.\nFor shaders that have defined workgroups, this set of invocations forms an\n",{"type":10,"tag":88,"props":5563,"children":5564},{},[5565],{"type":16,"value":5325},{"type":16,"value":5567}," as defined in the ",{"type":10,"tag":28,"props":5569,"children":5570},{"href":5330},[5571],{"type":16,"value":5333},{"type":16,"value":402},{"type":10,"tag":4781,"props":5574,"children":5576},{"id":5575},"workgroup-padding",[],{"type":10,"tag":18,"props":5578,"children":5579},{},[5580,5582,5587,5589,5595,5597,5602,5604,5609,5611,5617,5619,5625],{"type":16,"value":5581},"When variables declared with the ",{"type":10,"tag":125,"props":5583,"children":5585},{"className":5584},[],[5586],{"type":16,"value":5476},{"type":16,"value":5588}," storage class are explicitly\nlaid out (hence they are also decorated with ",{"type":10,"tag":125,"props":5590,"children":5592},{"className":5591},[],[5593],{"type":16,"value":5594},"Block",{"type":16,"value":5596},"), the amount of\nstorage consumed is the size of the largest Block variable, not counting any\npadding at the end.\nThe amount of storage consumed by the\nnon-Block\nvariables declared with the ",{"type":10,"tag":125,"props":5598,"children":5600},{"className":5599},[],[5601],{"type":16,"value":5476},{"type":16,"value":5603}," storage class is\nimplementation-dependent.\nHowever, the amount of storage consumed may not exceed the largest block\nsize that would be obtained if all active\nnon-Block\nvariables declared with ",{"type":10,"tag":125,"props":5605,"children":5607},{"className":5606},[],[5608],{"type":16,"value":5476},{"type":16,"value":5610}," storage class were assigned offsets\nin an arbitrary order by successively taking the smallest valid offset\naccording to the ",{"type":10,"tag":28,"props":5612,"children":5614},{"href":5613},"/chapters/interfaces#interfaces-resources-standard-layout",[5615],{"type":16,"value":5616},"Standard Storage\nBuffer Layout",{"type":16,"value":5618}," rules, and with ",{"type":10,"tag":125,"props":5620,"children":5622},{"className":5621},[],[5623],{"type":16,"value":5624},"Boolean",{"type":16,"value":5626}," values considered as 32-bit\ninteger values for the purpose of this calculation.\n(This is equivalent to using the GLSL std430 layout rules.)",{"type":10,"tag":176,"props":5628,"children":5630},{"id":5629},"shaders-scope-quad",[5631],{"type":16,"value":5632},"Quad",{"type":10,"tag":18,"props":5634,"children":5635},{},[5636,5637,5642],{"type":16,"value":4892},{"type":10,"tag":88,"props":5638,"children":5639},{},[5640],{"type":16,"value":5641},"quad scope instance",{"type":16,"value":5643}," is formed of four shader invocations.",{"type":10,"tag":18,"props":5645,"children":5646},{},[5647,5649,5654,5656,5660],{"type":16,"value":5648},"In a fragment shader, each invocation in a quad scope instance is formed of\ninvocations in neighboring framebuffer locations (x",{"type":10,"tag":4449,"props":5650,"children":5651},{},[5652],{"type":16,"value":5653},"i",{"type":16,"value":5655},", y",{"type":10,"tag":4449,"props":5657,"children":5658},{},[5659],{"type":16,"value":5653},{"type":16,"value":5661},"), where:",{"type":10,"tag":594,"props":5663,"children":5664},{},[5665,5670,5675,5680,5712,5740],{"type":10,"tag":598,"props":5666,"children":5667},{},[5668],{"type":16,"value":5669},"i is the index of the invocation within the scope instance.",{"type":10,"tag":598,"props":5671,"children":5672},{},[5673],{"type":16,"value":5674},"w and h are the number of pixels the fragment covers in the\nx and y axes.",{"type":10,"tag":598,"props":5676,"children":5677},{},[5678],{"type":16,"value":5679},"w and h are identical for all participating invocations.",{"type":10,"tag":598,"props":5681,"children":5682},{},[5683,5685,5690,5692,5697,5699,5704,5705,5710],{"type":16,"value":5684},"(x",{"type":10,"tag":4449,"props":5686,"children":5687},{},[5688],{"type":16,"value":5689},"0",{"type":16,"value":5691},") = (x",{"type":10,"tag":4449,"props":5693,"children":5694},{},[5695],{"type":16,"value":5696},"1",{"type":16,"value":5698}," - w) = (x",{"type":10,"tag":4449,"props":5700,"children":5701},{},[5702],{"type":16,"value":5703},"2",{"type":16,"value":5691},{"type":10,"tag":4449,"props":5706,"children":5707},{},[5708],{"type":16,"value":5709},"3",{"type":16,"value":5711}," - w)",{"type":10,"tag":598,"props":5713,"children":5714},{},[5715,5717,5721,5723,5727,5728,5732,5734,5738],{"type":16,"value":5716},"(y",{"type":10,"tag":4449,"props":5718,"children":5719},{},[5720],{"type":16,"value":5689},{"type":16,"value":5722},") = (y",{"type":10,"tag":4449,"props":5724,"children":5725},{},[5726],{"type":16,"value":5696},{"type":16,"value":5722},{"type":10,"tag":4449,"props":5729,"children":5730},{},[5731],{"type":16,"value":5703},{"type":16,"value":5733}," - h) = (y",{"type":10,"tag":4449,"props":5735,"children":5736},{},[5737],{"type":16,"value":5709},{"type":16,"value":5739}," - h)",{"type":10,"tag":598,"props":5741,"children":5742},{},[5743],{"type":16,"value":5744},"Each invocation has the same layer and sample indices.",{"type":10,"tag":18,"props":5746,"children":5747},{},[5748,5750,5756,5758,5762,5763,5767],{"type":16,"value":5749},"In a\nmesh, task, or\ncompute shader, if the ",{"type":10,"tag":125,"props":5751,"children":5753},{"className":5752},[],[5754],{"type":16,"value":5755},"DerivativeGroupQuadsKHR",{"type":16,"value":5757}," execution mode is\nspecified, each invocation in a quad scope instance is formed of invocations\nwith adjacent local invocation IDs (x",{"type":10,"tag":4449,"props":5759,"children":5760},{},[5761],{"type":16,"value":5653},{"type":16,"value":5655},{"type":10,"tag":4449,"props":5764,"children":5765},{},[5766],{"type":16,"value":5653},{"type":16,"value":5661},{"type":10,"tag":594,"props":5769,"children":5770},{},[5771,5776,5802,5827,5843],{"type":10,"tag":598,"props":5772,"children":5773},{},[5774],{"type":16,"value":5775},"i is the index of the invocation within the quad scope instance.",{"type":10,"tag":598,"props":5777,"children":5778},{},[5779,5780,5784,5785,5789,5791,5795,5796,5800],{"type":16,"value":5684},{"type":10,"tag":4449,"props":5781,"children":5782},{},[5783],{"type":16,"value":5689},{"type":16,"value":5691},{"type":10,"tag":4449,"props":5786,"children":5787},{},[5788],{"type":16,"value":5696},{"type":16,"value":5790}," - 1) = (x",{"type":10,"tag":4449,"props":5792,"children":5793},{},[5794],{"type":16,"value":5703},{"type":16,"value":5691},{"type":10,"tag":4449,"props":5797,"children":5798},{},[5799],{"type":16,"value":5709},{"type":16,"value":5801}," - 1)",{"type":10,"tag":598,"props":5803,"children":5804},{},[5805,5806,5810,5811,5815,5816,5820,5822,5826],{"type":16,"value":5716},{"type":10,"tag":4449,"props":5807,"children":5808},{},[5809],{"type":16,"value":5689},{"type":16,"value":5722},{"type":10,"tag":4449,"props":5812,"children":5813},{},[5814],{"type":16,"value":5696},{"type":16,"value":5722},{"type":10,"tag":4449,"props":5817,"children":5818},{},[5819],{"type":16,"value":5703},{"type":16,"value":5821}," - 1) = (y",{"type":10,"tag":4449,"props":5823,"children":5824},{},[5825],{"type":16,"value":5709},{"type":16,"value":5801},{"type":10,"tag":598,"props":5828,"children":5829},{},[5830,5831,5835,5837,5841],{"type":16,"value":4850},{"type":10,"tag":4449,"props":5832,"children":5833},{},[5834],{"type":16,"value":5689},{"type":16,"value":5836}," and y",{"type":10,"tag":4449,"props":5838,"children":5839},{},[5840],{"type":16,"value":5689},{"type":16,"value":5842}," are integer multiples of 2.",{"type":10,"tag":598,"props":5844,"children":5845},{},[5846],{"type":16,"value":5847},"Each invocation has the same z coordinate.",{"type":10,"tag":18,"props":5849,"children":5850},{},[5851,5852,5858,5860,5864],{"type":16,"value":5749},{"type":10,"tag":125,"props":5853,"children":5855},{"className":5854},[],[5856],{"type":16,"value":5857},"DerivativeGroupLinearKHR",{"type":16,"value":5859}," execution mode is\nspecified, each invocation in a quad scope instance is formed of invocations\nwith adjacent local invocation indices (l",{"type":10,"tag":4449,"props":5861,"children":5862},{},[5863],{"type":16,"value":5653},{"type":16,"value":5661},{"type":10,"tag":594,"props":5866,"children":5867},{},[5868,5872,5901],{"type":10,"tag":598,"props":5869,"children":5870},{},[5871],{"type":16,"value":5775},{"type":10,"tag":598,"props":5873,"children":5874},{},[5875,5877,5881,5883,5887,5889,5893,5895,5899],{"type":16,"value":5876},"(l",{"type":10,"tag":4449,"props":5878,"children":5879},{},[5880],{"type":16,"value":5689},{"type":16,"value":5882},") = (l",{"type":10,"tag":4449,"props":5884,"children":5885},{},[5886],{"type":16,"value":5696},{"type":16,"value":5888}," - 1) = (l",{"type":10,"tag":4449,"props":5890,"children":5891},{},[5892],{"type":16,"value":5703},{"type":16,"value":5894}," - 2) = (l",{"type":10,"tag":4449,"props":5896,"children":5897},{},[5898],{"type":16,"value":5709},{"type":16,"value":5900}," - 3)",{"type":10,"tag":598,"props":5902,"children":5903},{},[5904,5906,5910],{"type":16,"value":5905},"l",{"type":10,"tag":4449,"props":5907,"children":5908},{},[5909],{"type":16,"value":5689},{"type":16,"value":5911}," is an integer multiple of 4.",{"type":10,"tag":18,"props":5913,"children":5914},{},[5915],{"type":16,"value":5916},"The specific set of invocations that make up a quad scope instance in other\nshader stages is undefined:.",{"type":10,"tag":18,"props":5918,"children":5919},{},[5920,5922,5925,5927,5932],{"type":16,"value":5921},"In a fragment shader, each invocation in a quad scope instance ",{"type":10,"tag":71,"props":5923,"children":5924},{"type":524},[],{"type":16,"value":5926}," be in\nthe same ",{"type":10,"tag":28,"props":5928,"children":5930},{"href":5929},"/chapters/shaders#shaders-scope-primitive",[5931],{"type":16,"value":5350},{"type":16,"value":402},{"type":10,"tag":18,"props":5934,"children":5935},{},[5936,5938,5943,5945,5948,5949,5953],{"type":16,"value":5937},"For ",{"type":10,"tag":28,"props":5939,"children":5940},{"href":5315},[5941],{"type":16,"value":5942},"shaders that have defined workgroups",{"type":16,"value":5944},", each\ninvocation in a quad scope instance ",{"type":10,"tag":71,"props":5946,"children":5947},{"type":524},[],{"type":16,"value":5229},{"type":10,"tag":28,"props":5950,"children":5951},{"href":5315},[5952],{"type":16,"value":5485},{"type":16,"value":402},{"type":10,"tag":18,"props":5955,"children":5956},{},[5957,5959,5962,5963,5967],{"type":16,"value":5958},"In other shader stages, each invocation in a quad scope instance ",{"type":10,"tag":71,"props":5960,"children":5961},{"type":524},[],{"type":16,"value":5926},{"type":10,"tag":28,"props":5964,"children":5965},{"href":5232},[5966],{"type":16,"value":4970},{"type":16,"value":402},{"type":10,"tag":18,"props":5969,"children":5970},{},[5971],{"type":16,"value":5972},"Fragment\n, mesh, task,\nand compute\nshaders have defined quad scope instances.",{"type":10,"tag":176,"props":5974,"children":5976},{"id":5975},"shaders-scope-fragment-interlock",[5977],{"type":16,"value":5978},"Fragment Interlock",{"type":10,"tag":18,"props":5980,"children":5981},{},[5982,5983,5988,5990,5996],{"type":16,"value":4892},{"type":10,"tag":88,"props":5984,"children":5985},{},[5986],{"type":16,"value":5987},"fragment interlock scope instance",{"type":16,"value":5989}," is formed of fragment shader\ninvocations based on their framebuffer locations (x,y,layer,sample),\nexecuted by commands inside a single ",{"type":10,"tag":28,"props":5991,"children":5993},{"href":5992},"/chapters/renderpass#renderpass",[5994],{"type":16,"value":5995},"subpass",{"type":16,"value":402},{"type":10,"tag":18,"props":5998,"children":5999},{},[6000],{"type":16,"value":6001},"The specific set of invocations included varies based on the execution mode\nas follows:",{"type":10,"tag":594,"props":6003,"children":6004},{},[6005,6024,6043],{"type":10,"tag":598,"props":6006,"children":6007},{},[6008,6009,6015,6016,6022],{"type":16,"value":1319},{"type":10,"tag":125,"props":6010,"children":6012},{"className":6011},[],[6013],{"type":16,"value":6014},"SampleInterlockOrderedEXT",{"type":16,"value":856},{"type":10,"tag":125,"props":6017,"children":6019},{"className":6018},[],[6020],{"type":16,"value":6021},"SampleInterlockUnorderedEXT",{"type":16,"value":6023}," execution modes are used, only\ninvocations with identical framebuffer locations\n(x,y,layer,sample) are included.",{"type":10,"tag":598,"props":6025,"children":6026},{},[6027,6028,6034,6035,6041],{"type":16,"value":1319},{"type":10,"tag":125,"props":6029,"children":6031},{"className":6030},[],[6032],{"type":16,"value":6033},"PixelInterlockOrderedEXT",{"type":16,"value":982},{"type":10,"tag":125,"props":6036,"children":6038},{"className":6037},[],[6039],{"type":16,"value":6040},"PixelInterlockUnorderedEXT",{"type":16,"value":6042},"\nexecution modes are used, fragments with different sample ids are also\nincluded.",{"type":10,"tag":598,"props":6044,"children":6045},{},[6046,6047,6053,6054,6060,6062,6068,6070,6076],{"type":16,"value":1319},{"type":10,"tag":125,"props":6048,"children":6050},{"className":6049},[],[6051],{"type":16,"value":6052},"ShadingRateInterlockOrderedEXT",{"type":16,"value":856},{"type":10,"tag":125,"props":6055,"children":6057},{"className":6056},[],[6058],{"type":16,"value":6059},"ShadingRateInterlockUnorderedEXT",{"type":16,"value":6061}," execution modes are used,\nfragments from neighboring framebuffer locations are also included.\nThe\n",{"type":10,"tag":28,"props":6063,"children":6065},{"href":6064},"/chapters/primsrast#primsrast-shading-rate-image",[6066],{"type":16,"value":6067},"shading rate image",{"type":16,"value":6069},"\nor\n",{"type":10,"tag":28,"props":6071,"children":6073},{"href":6072},"/chapters/primsrast#primsrast-fragment-shading-rate",[6074],{"type":16,"value":6075},"fragment shading rate",{"type":16,"value":6077},"\ndetermines these fragments.",{"type":10,"tag":18,"props":6079,"children":6080},{},[6081],{"type":16,"value":6082},"Only fragment shaders with one of the above execution modes have defined\nfragment interlock scope instances.",{"type":10,"tag":18,"props":6084,"children":6085},{},[6086,6087,6092,6094,6100,6101,6107],{"type":16,"value":5279},{"type":10,"tag":125,"props":6088,"children":6090},{"className":6089},[],[6091],{"type":16,"value":4887},{"type":16,"value":6093}," value for communication across invocations\nin a fragment interlock scope instance.\nHowever, this is implicitly used as a memory scope by\n",{"type":10,"tag":125,"props":6095,"children":6097},{"className":6096},[],[6098],{"type":16,"value":6099},"OpBeginInvocationInterlockEXT",{"type":16,"value":365},{"type":10,"tag":125,"props":6102,"children":6104},{"className":6103},[],[6105],{"type":16,"value":6106},"OpEndInvocationInterlockEXT",{"type":16,"value":402},{"type":10,"tag":18,"props":6109,"children":6110},{},[6111,6113,6116,6117,6121],{"type":16,"value":6112},"Each invocation in a fragment interlock scope instance ",{"type":10,"tag":71,"props":6114,"children":6115},{"type":524},[],{"type":16,"value":5229},{"type":10,"tag":28,"props":6118,"children":6119},{"href":5303},[6120],{"type":16,"value":5469},{"type":16,"value":402},{"type":10,"tag":176,"props":6123,"children":6125},{"id":6124},"shaders-scope-invocation",[6126],{"type":16,"value":6127},"Invocation",{"type":10,"tag":18,"props":6129,"children":6130},{},[6131,6133,6137,6139,6144,6145,6150],{"type":16,"value":6132},"The smallest ",{"type":10,"tag":88,"props":6134,"children":6135},{},[6136],{"type":16,"value":4897},{"type":16,"value":6138}," is a single invocation; this is represented by the\n",{"type":10,"tag":125,"props":6140,"children":6142},{"className":6141},[],[6143],{"type":16,"value":6127},{"type":16,"value":324},{"type":10,"tag":125,"props":6146,"children":6148},{"className":6147},[],[6149],{"type":16,"value":4887},{"type":16,"value":6151}," in SPIR-V.",{"type":10,"tag":18,"props":6153,"children":6154},{},[6155,6157,6160,6162,6166],{"type":16,"value":6156},"Fragment shader invocations ",{"type":10,"tag":71,"props":6158,"children":6159},{"type":524},[],{"type":16,"value":6161}," be in a ",{"type":10,"tag":28,"props":6163,"children":6164},{"href":5929},[6165],{"type":16,"value":5350},{"type":16,"value":402},{"type":10,"tag":18,"props":6168,"children":6169},{},[6170,6172,6178,6179,6182,6184,6188],{"type":16,"value":6171},"Invocations in ",{"type":10,"tag":28,"props":6173,"children":6175},{"href":6174},"/chapters/shaders#shaders-scope-fragment-interlock",[6176],{"type":16,"value":6177},"fragment shaders that\nhave a defined fragment interlock scope",{"type":16,"value":324},{"type":10,"tag":71,"props":6180,"children":6181},{"type":524},[],{"type":16,"value":6183}," be in a\n",{"type":10,"tag":28,"props":6185,"children":6186},{"href":6174},[6187],{"type":16,"value":5987},{"type":16,"value":402},{"type":10,"tag":18,"props":6190,"children":6191},{},[6192,6193,6198,6199,6202,6203,6207],{"type":16,"value":6171},{"type":10,"tag":28,"props":6194,"children":6195},{"href":5315},[6196],{"type":16,"value":6197},"shaders that have defined\nworkgroups",{"type":16,"value":324},{"type":10,"tag":71,"props":6200,"children":6201},{"type":524},[],{"type":16,"value":6161},{"type":10,"tag":28,"props":6204,"children":6205},{"href":5315},[6206],{"type":16,"value":5485},{"type":16,"value":402},{"type":10,"tag":18,"props":6209,"children":6210},{},[6211,6212,6218,6219,6222,6223,6227],{"type":16,"value":6171},{"type":10,"tag":28,"props":6213,"children":6215},{"href":6214},"/chapters/shaders#shaders-scope-quad",[6216],{"type":16,"value":6217},"shaders that have a defined quad\nscope",{"type":16,"value":324},{"type":10,"tag":71,"props":6220,"children":6221},{"type":524},[],{"type":16,"value":6161},{"type":10,"tag":28,"props":6224,"children":6225},{"href":6214},[6226],{"type":16,"value":5641},{"type":16,"value":402},{"type":10,"tag":18,"props":6229,"children":6230},{},[6231,6233,6236,6237,6242],{"type":16,"value":6232},"All invocations in all stages ",{"type":10,"tag":71,"props":6234,"children":6235},{"type":524},[],{"type":16,"value":6161},{"type":10,"tag":28,"props":6238,"children":6239},{"href":5385},[6240],{"type":16,"value":6241},"command\nscope instance",{"type":16,"value":402},{"type":10,"tag":96,"props":6244,"children":6246},{"id":6245},"shaders-derivative-operations",[6247],{"type":16,"value":6248},"Derivative Operations",{"type":10,"tag":18,"props":6250,"children":6251},{},[6252],{"type":16,"value":6253},"Derivative operations calculate the partial derivative for an expression\nP as a function of an invocation’s x and y coordinates.",{"type":10,"tag":18,"props":6255,"children":6256},{},[6257,6259,6264,6265,6269],{"type":16,"value":6258},"Derivative operations operate on a set of invocations known as a ",{"type":10,"tag":88,"props":6260,"children":6261},{},[6262],{"type":16,"value":6263},"derivative\ngroup",{"type":16,"value":5567},{"type":10,"tag":28,"props":6266,"children":6267},{"href":5330},[6268],{"type":16,"value":5333},{"type":16,"value":402},{"type":10,"tag":18,"props":6271,"children":6272},{},[6273,6275,6279,6280,6286,6288,6292,6294,6299],{"type":16,"value":6274},"A derivative group in a fragment shader is equivalent to the\n",{"type":10,"tag":28,"props":6276,"children":6277},{"href":6214},[6278],{"type":16,"value":5641},{"type":16,"value":5128},{"type":10,"tag":125,"props":6281,"children":6283},{"className":6282},[],[6284],{"type":16,"value":6285},"QuadDerivativesKHR",{"type":16,"value":6287},"\nexecution mode is specified, otherwise it is equivalent to the\n",{"type":10,"tag":28,"props":6289,"children":6290},{"href":5929},[6291],{"type":16,"value":5350},{"type":16,"value":6293},".\nA derivative group in a\nmesh, task, or\ncompute shader is equivalent to the ",{"type":10,"tag":28,"props":6295,"children":6296},{"href":6214},[6297],{"type":16,"value":6298},"quad scope\ninstance",{"type":16,"value":402},{"type":10,"tag":18,"props":6301,"children":6302},{},[6303],{"type":16,"value":6304},"Derivatives are calculated assuming that P is piecewise linear and\ncontinuous within the derivative group.",{"type":10,"tag":18,"props":6306,"children":6307},{},[6308],{"type":16,"value":6309},"The following control-flow restrictions apply to derivative operations:",{"type":10,"tag":594,"props":6311,"children":6312},{},[6313,6334],{"type":10,"tag":598,"props":6314,"children":6315},{},[6316,6317,6322,6324,6327,6329,6333],{"type":16,"value":1319},{"type":10,"tag":125,"props":6318,"children":6320},{"className":6319},[],[6321],{"type":16,"value":6285},{"type":16,"value":6323}," execution mode is specified, dynamic\ninstances of any derivative operations ",{"type":10,"tag":71,"props":6325,"children":6326},{"type":524},[],{"type":16,"value":6328}," be executed in control flow\nthat is uniform within the current ",{"type":10,"tag":28,"props":6330,"children":6331},{"href":6214},[6332],{"type":16,"value":6298},{"type":16,"value":402},{"type":10,"tag":598,"props":6335,"children":6336},{},[6337,6338,6343,6345],{"type":16,"value":1319},{"type":10,"tag":125,"props":6339,"children":6341},{"className":6340},[],[6342],{"type":16,"value":6285},{"type":16,"value":6344}," execution mode is not specified:",{"type":10,"tag":594,"props":6346,"children":6347},{},[6348,6381],{"type":10,"tag":598,"props":6349,"children":6350},{},[6351,6353,6359,6360,6366,6368,6374,6376,6379],{"type":16,"value":6352},"dynamic instances of explicit derivative instructions (",{"type":10,"tag":125,"props":6354,"children":6356},{"className":6355},[],[6357],{"type":16,"value":6358},"OpDPdx*",{"type":16,"value":1293},{"type":10,"tag":125,"props":6361,"children":6363},{"className":6362},[],[6364],{"type":16,"value":6365},"OpDPdy*",{"type":16,"value":6367},", and ",{"type":10,"tag":125,"props":6369,"children":6371},{"className":6370},[],[6372],{"type":16,"value":6373},"OpFwidth*",{"type":16,"value":6375},") ",{"type":10,"tag":71,"props":6377,"children":6378},{"type":524},[],{"type":16,"value":6380}," be executed in control flow\nthat is uniform within a derivative group.",{"type":10,"tag":598,"props":6382,"children":6383},{},[6384,6386,6389],{"type":16,"value":6385},"dynamic instances of implicit derivative operations ",{"type":10,"tag":71,"props":6387,"children":6388},{"type":73},[],{"type":16,"value":6390}," be executed in\ncontrol flow that is not uniform within the derivative group, but\nresults are undefined:.",{"type":10,"tag":18,"props":6392,"children":6393},{},[6394,6396,6399,6401,6405],{"type":16,"value":6395},"Fragment shaders that statically execute derivative operations ",{"type":10,"tag":71,"props":6397,"children":6398},{"type":524},[],{"type":16,"value":6400}," launch\nsufficient invocations to ensure their correct operation; additional\n",{"type":10,"tag":28,"props":6402,"children":6403},{"href":3242},[6404],{"type":16,"value":3275},{"type":16,"value":6406}," are launched for\nframebuffer locations not covered by rasterized fragments if necessary.",{"type":10,"tag":233,"props":6408,"children":6409},{},[6410],{"type":10,"tag":18,"props":6411,"children":6412},{},[6413],{"type":16,"value":6414},"In a\nmesh, task, or\ncompute shader, it is the application’s responsibility to ensure that\nsufficient invocations are launched.",{"type":10,"tag":18,"props":6416,"children":6417},{},[6418,6420,6426,6427,6433,6435,6439],{"type":16,"value":6419},"Derivative operations calculate their results as the difference between the\nresult of P across invocations in the quad.\nFor fine derivative operations (",{"type":10,"tag":125,"props":6421,"children":6423},{"className":6422},[],[6424],{"type":16,"value":6425},"OpDPdxFine",{"type":16,"value":365},{"type":10,"tag":125,"props":6428,"children":6430},{"className":6429},[],[6431],{"type":16,"value":6432},"OpDPdyFine",{"type":16,"value":6434},"), the\nvalues of DPdx(P",{"type":10,"tag":4449,"props":6436,"children":6437},{},[6438],{"type":16,"value":5653},{"type":16,"value":6440},") are calculated as",{"type":10,"tag":594,"props":6442,"children":6443},{},[6444,6471],{"type":10,"tag":598,"props":6445,"children":6446},{},[6447,6449,6453,6455,6459,6461,6465,6467],{"type":16,"value":6448},"DPdx(P",{"type":10,"tag":4449,"props":6450,"children":6451},{},[6452],{"type":16,"value":5689},{"type":16,"value":6454},") = DPdx(P",{"type":10,"tag":4449,"props":6456,"children":6457},{},[6458],{"type":16,"value":5696},{"type":16,"value":6460},") = P",{"type":10,"tag":4449,"props":6462,"children":6463},{},[6464],{"type":16,"value":5696},{"type":16,"value":6466}," - P",{"type":10,"tag":4449,"props":6468,"children":6469},{},[6470],{"type":16,"value":5689},{"type":10,"tag":598,"props":6472,"children":6473},{},[6474,6475,6479,6480,6484,6485,6489,6490],{"type":16,"value":6448},{"type":10,"tag":4449,"props":6476,"children":6477},{},[6478],{"type":16,"value":5703},{"type":16,"value":6454},{"type":10,"tag":4449,"props":6481,"children":6482},{},[6483],{"type":16,"value":5709},{"type":16,"value":6460},{"type":10,"tag":4449,"props":6486,"children":6487},{},[6488],{"type":16,"value":5709},{"type":16,"value":6466},{"type":10,"tag":4449,"props":6491,"children":6492},{},[6493],{"type":16,"value":5703},{"type":10,"tag":18,"props":6495,"children":6496},{},[6497,6499,6503],{"type":16,"value":6498},"and the values of DPdy(P",{"type":10,"tag":4449,"props":6500,"children":6501},{},[6502],{"type":16,"value":5653},{"type":16,"value":6440},{"type":10,"tag":594,"props":6505,"children":6506},{},[6507,6532],{"type":10,"tag":598,"props":6508,"children":6509},{},[6510,6512,6516,6518,6522,6523,6527,6528],{"type":16,"value":6511},"DPdy(P",{"type":10,"tag":4449,"props":6513,"children":6514},{},[6515],{"type":16,"value":5689},{"type":16,"value":6517},") = DPdy(P",{"type":10,"tag":4449,"props":6519,"children":6520},{},[6521],{"type":16,"value":5703},{"type":16,"value":6460},{"type":10,"tag":4449,"props":6524,"children":6525},{},[6526],{"type":16,"value":5703},{"type":16,"value":6466},{"type":10,"tag":4449,"props":6529,"children":6530},{},[6531],{"type":16,"value":5689},{"type":10,"tag":598,"props":6533,"children":6534},{},[6535,6536,6540,6541,6545,6546,6550,6551],{"type":16,"value":6511},{"type":10,"tag":4449,"props":6537,"children":6538},{},[6539],{"type":16,"value":5696},{"type":16,"value":6517},{"type":10,"tag":4449,"props":6542,"children":6543},{},[6544],{"type":16,"value":5709},{"type":16,"value":6460},{"type":10,"tag":4449,"props":6547,"children":6548},{},[6549],{"type":16,"value":5709},{"type":16,"value":6466},{"type":10,"tag":4449,"props":6552,"children":6553},{},[6554],{"type":16,"value":5696},{"type":10,"tag":18,"props":6556,"children":6557},{},[6558,6560,6564],{"type":16,"value":6559},"where i is the index of each invocation as described in\n",{"type":10,"tag":28,"props":6561,"children":6562},{"href":6214},[6563],{"type":16,"value":5632},{"type":16,"value":402},{"type":10,"tag":18,"props":6566,"children":6567},{},[6568,6570,6576,6577,6583,6585,6588,6590,6593,6595,6599],{"type":16,"value":6569},"Coarse derivative operations (",{"type":10,"tag":125,"props":6571,"children":6573},{"className":6572},[],[6574],{"type":16,"value":6575},"OpDPdxCoarse",{"type":16,"value":365},{"type":10,"tag":125,"props":6578,"children":6580},{"className":6579},[],[6581],{"type":16,"value":6582},"OpDPdyCoarse",{"type":16,"value":6584},"),\ncalculate their results in roughly the same manner, but ",{"type":10,"tag":71,"props":6586,"children":6587},{"type":108},[],{"type":16,"value":6589}," only calculate\ntwo values instead of four (one for each of DPdx and DPdy),\nreusing the same result no matter the originating invocation.\nIf an implementation does this, it ",{"type":10,"tag":71,"props":6591,"children":6592},{"type":279},[],{"type":16,"value":6594}," use the fine derivative\ncalculations described for P",{"type":10,"tag":4449,"props":6596,"children":6597},{},[6598],{"type":16,"value":5689},{"type":16,"value":402},{"type":10,"tag":233,"props":6601,"children":6602},{},[6603,6608,6613,6649],{"type":10,"tag":18,"props":6604,"children":6605},{},[6606],{"type":16,"value":6607},"Derivative values are calculated between fragments rather than pixels.\nIf the fragment shader invocations involved in the calculation cover\nmultiple pixels, these operations cover a wider area, resulting in larger\nderivative values.\nThis in turn will result in a coarser LOD being selected for image sampling\noperations using derivatives.",{"type":10,"tag":18,"props":6609,"children":6610},{},[6611],{"type":16,"value":6612},"Applications may want to account for this when using multi-pixel fragments;\nif pixel derivatives are desired, applications should use explicit\nderivative operations and divide the results by the size of the fragment in\neach dimension as follows:",{"type":10,"tag":594,"props":6614,"children":6615},{},[6616,6633],{"type":10,"tag":598,"props":6617,"children":6618},{},[6619,6620,6625,6627,6631],{"type":16,"value":6448},{"type":10,"tag":4449,"props":6621,"children":6622},{},[6623],{"type":16,"value":6624},"n",{"type":16,"value":6626},")' = DPdx(P",{"type":10,"tag":4449,"props":6628,"children":6629},{},[6630],{"type":16,"value":6624},{"type":16,"value":6632},") / w",{"type":10,"tag":598,"props":6634,"children":6635},{},[6636,6637,6641,6643,6647],{"type":16,"value":6511},{"type":10,"tag":4449,"props":6638,"children":6639},{},[6640],{"type":16,"value":6624},{"type":16,"value":6642},")' = DPdy(P",{"type":10,"tag":4449,"props":6644,"children":6645},{},[6646],{"type":16,"value":6624},{"type":16,"value":6648},") / h",{"type":10,"tag":18,"props":6650,"children":6651},{},[6652,6654,6658,6660,6664],{"type":16,"value":6653},"where w and h are the size of the fragments in the quad, and\nDPdx(P",{"type":10,"tag":4449,"props":6655,"children":6656},{},[6657],{"type":16,"value":6624},{"type":16,"value":6659},")' and DPdy(P",{"type":10,"tag":4449,"props":6661,"children":6662},{},[6663],{"type":16,"value":6624},{"type":16,"value":6665},")' are the pixel derivatives.",{"type":10,"tag":18,"props":6667,"children":6668},{},[6669,6671,6677,6678,6684,6685,6688,6690,6693],{"type":16,"value":6670},"The results for ",{"type":10,"tag":125,"props":6672,"children":6674},{"className":6673},[],[6675],{"type":16,"value":6676},"OpDPdx",{"type":16,"value":365},{"type":10,"tag":125,"props":6679,"children":6681},{"className":6680},[],[6682],{"type":16,"value":6683},"OpDPdy",{"type":16,"value":324},{"type":10,"tag":71,"props":6686,"children":6687},{"type":108},[],{"type":16,"value":6689}," be calculated as either\nfine or coarse derivatives, with implementations favoring the most efficient\napproach.\nImplementations ",{"type":10,"tag":71,"props":6691,"children":6692},{"type":524},[],{"type":16,"value":6694}," choose coarse or fine consistently between the two.",{"type":10,"tag":18,"props":6696,"children":6697},{},[6698,6699,6705,6706,6712,6714,6720,6722,6727,6728,6733],{"type":16,"value":3210},{"type":10,"tag":125,"props":6700,"children":6702},{"className":6701},[],[6703],{"type":16,"value":6704},"OpFwidthFine",{"type":16,"value":3456},{"type":10,"tag":125,"props":6707,"children":6709},{"className":6708},[],[6710],{"type":16,"value":6711},"OpFwidthCoarse",{"type":16,"value":6713},", or ",{"type":10,"tag":125,"props":6715,"children":6717},{"className":6716},[],[6718],{"type":16,"value":6719},"OpFwidth",{"type":16,"value":6721}," is\nequivalent to executing the corresponding ",{"type":10,"tag":125,"props":6723,"children":6725},{"className":6724},[],[6726],{"type":16,"value":6358},{"type":16,"value":365},{"type":10,"tag":125,"props":6729,"children":6731},{"className":6730},[],[6732],{"type":16,"value":6365},{"type":16,"value":6734},"\ninstructions, taking the absolute value of the results, and summing them.",{"type":10,"tag":18,"props":6736,"children":6737},{},[6738,6740,6746,6748,6753,6755,6761,6763,6768,6769,6774,6776,6782,6784,6790,6791,6797],{"type":16,"value":6739},"Executing an ",{"type":10,"tag":125,"props":6741,"children":6743},{"className":6742},[],[6744],{"type":16,"value":6745},"OpImage*Sample*ImplicitLod",{"type":16,"value":6747}," instruction is equivalent to\nexecuting ",{"type":10,"tag":125,"props":6749,"children":6751},{"className":6750},[],[6752],{"type":16,"value":6676},{"type":16,"value":6754},"(",{"type":10,"tag":125,"props":6756,"children":6758},{"className":6757},[],[6759],{"type":16,"value":6760},"Coordinate",{"type":16,"value":6762},") and ",{"type":10,"tag":125,"props":6764,"children":6766},{"className":6765},[],[6767],{"type":16,"value":6683},{"type":16,"value":6754},{"type":10,"tag":125,"props":6770,"children":6772},{"className":6771},[],[6773],{"type":16,"value":6760},{"type":16,"value":6775},"), and\npassing the results as the ",{"type":10,"tag":125,"props":6777,"children":6779},{"className":6778},[],[6780],{"type":16,"value":6781},"Grad",{"type":16,"value":6783}," operands ",{"type":10,"tag":125,"props":6785,"children":6787},{"className":6786},[],[6788],{"type":16,"value":6789},"dx",{"type":16,"value":365},{"type":10,"tag":125,"props":6792,"children":6794},{"className":6793},[],[6795],{"type":16,"value":6796},"dy",{"type":16,"value":402},{"type":10,"tag":233,"props":6799,"children":6800},{},[6801],{"type":10,"tag":18,"props":6802,"children":6803},{},[6804,6806,6812,6814,6820],{"type":16,"value":6805},"It is expected that using the ",{"type":10,"tag":125,"props":6807,"children":6809},{"className":6808},[],[6810],{"type":16,"value":6811},"ImplicitLod",{"type":16,"value":6813}," variants of sampling\nfunctions will be substantially more efficient than using the\n",{"type":10,"tag":125,"props":6815,"children":6817},{"className":6816},[],[6818],{"type":16,"value":6819},"ExplicitLod",{"type":16,"value":6821}," variants with explicitly generated derivatives.",{"type":10,"tag":96,"props":6823,"children":6825},{"id":6824},"shaders-helper-invocations",[6826],{"type":16,"value":6827},"Helper Invocations",{"type":10,"tag":18,"props":6829,"children":6830},{},[6831,6833,6838,6840,6843,6845,6849,6850,6853,6855,6861,6863,6866,6868,6874,6875,6881,6882,6888],{"type":16,"value":6832},"When performing ",{"type":10,"tag":28,"props":6834,"children":6835},{"href":3265},[6836],{"type":16,"value":6837},"derivative",{"type":16,"value":6839},"\noperations in a fragment shader, additional invocations ",{"type":10,"tag":71,"props":6841,"children":6842},{"type":108},[],{"type":16,"value":6844}," be spawned in\norder to ensure correct results.\nThese additional invocations are known as ",{"type":10,"tag":88,"props":6846,"children":6847},{},[6848],{"type":16,"value":3275},{"type":16,"value":365},{"type":10,"tag":71,"props":6851,"children":6852},{"type":73},[],{"type":16,"value":6854}," be\nidentified by a non-zero value in the ",{"type":10,"tag":125,"props":6856,"children":6858},{"className":6857},[],[6859],{"type":16,"value":6860},"HelperInvocation",{"type":16,"value":6862}," built-in.\nStores and atomics performed by helper invocations ",{"type":10,"tag":71,"props":6864,"children":6865},{"type":524},[],{"type":16,"value":6867}," not have any effect\non memory except for the ",{"type":10,"tag":125,"props":6869,"children":6871},{"className":6870},[],[6872],{"type":16,"value":6873},"Function",{"type":16,"value":3456},{"type":10,"tag":125,"props":6876,"children":6878},{"className":6877},[],[6879],{"type":16,"value":6880},"Private",{"type":16,"value":365},{"type":10,"tag":125,"props":6883,"children":6885},{"className":6884},[],[6886],{"type":16,"value":6887},"Output",{"type":16,"value":6889}," storage\nclasses, and values returned by atomic instructions in helper invocations\nare undefined:.",{"type":10,"tag":233,"props":6891,"children":6892},{},[6893],{"type":10,"tag":18,"props":6894,"children":6895},{},[6896,6898,6903,6905,6910,6912,6917],{"type":16,"value":6897},"While storage to ",{"type":10,"tag":125,"props":6899,"children":6901},{"className":6900},[],[6902],{"type":16,"value":6887},{"type":16,"value":6904}," storage class has an effect even in helper\ninvocations, it does not mean that helper invocations have an effect on the\nframebuffer.\n",{"type":10,"tag":125,"props":6906,"children":6908},{"className":6907},[],[6909],{"type":16,"value":6887},{"type":16,"value":6911}," variables in fragment shaders can be read from as well, and they\nbehave more like ",{"type":10,"tag":125,"props":6913,"children":6915},{"className":6914},[],[6916],{"type":16,"value":6880},{"type":16,"value":6918}," variables for the duration of the shader\ninvocation.",{"type":10,"tag":96,"props":6920,"children":6922},{"id":6921},"_cooperative_matrices",[6923],{"type":16,"value":6924},"Cooperative Matrices",{"type":10,"tag":18,"props":6926,"children":6927},{},[6928,6929,6934],{"type":16,"value":4892},{"type":10,"tag":88,"props":6930,"children":6931},{},[6932],{"type":16,"value":6933},"cooperative matrix",{"type":16,"value":6935}," type is a SPIR-V type where the storage for and\ncomputations performed on the matrix are spread across the invocations in a\nscope instance.\nThese types give the implementation freedom in how to optimize matrix\nmultiplies.",{"type":10,"tag":18,"props":6937,"children":6938},{},[6939,6941,6944],{"type":16,"value":6940},"SPIR-V defines the types and instructions, but does not specify rules about\nwhat sizes/combinations are valid, and it is expected that different\nimplementations ",{"type":10,"tag":71,"props":6942,"children":6943},{"type":108},[],{"type":16,"value":6945}," support different sizes.",{"type":10,"tag":165,"props":6947,"children":6949},{"name":6948,"type":195},"vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR",[6950],{"type":10,"tag":18,"props":6951,"children":6952},{},[6953],{"type":16,"value":6954},"Returns properties describing what cooperative matrix types are supported",{"type":10,"tag":165,"props":6956,"children":6958},{"name":6957,"type":195},"vkGetPhysicalDeviceCooperativeMatrixPropertiesNV",[6959],{"type":10,"tag":18,"props":6960,"children":6961},{},[6962],{"type":16,"value":6954},{"type":10,"tag":18,"props":6964,"children":6965},{},[6966,6968,6974,6975,6981,6983,6989,6990,6996,6998,7001],{"type":16,"value":6967},"Each\n",{"type":10,"tag":28,"props":6969,"children":6971},{"href":6970},"/man/VkCooperativeMatrixPropertiesKHR",[6972],{"type":16,"value":6973},"VkCooperativeMatrixPropertiesKHR",{"type":16,"value":6069},{"type":10,"tag":28,"props":6976,"children":6978},{"href":6977},"/man/VkCooperativeMatrixPropertiesNV",[6979],{"type":16,"value":6980},"VkCooperativeMatrixPropertiesNV",{"type":16,"value":6982},"\nstructure describes a single supported combination of types for a matrix\nmultiply/add operation (\n",{"type":10,"tag":125,"props":6984,"children":6986},{"className":6985},[],[6987],{"type":16,"value":6988},"OpCooperativeMatrixMulAddKHR",{"type":16,"value":6069},{"type":10,"tag":125,"props":6991,"children":6993},{"className":6992},[],[6994],{"type":16,"value":6995},"OpCooperativeMatrixMulAddNV",{"type":16,"value":6997},"\n).\nThe multiply ",{"type":10,"tag":71,"props":6999,"children":7000},{"type":73},[],{"type":16,"value":7002}," be described in terms of the following variables and types\n(in SPIR-V pseudocode):",{"type":10,"tag":7004,"props":7005,"children":7010},"pre",{"className":7006,"code":7007,"language":7008,"meta":7009,"style":7009},"language-c shiki shiki-themes github-light-default github-dark-default"," %A is of type OpTypeCooperativeMatrixKHR %AType %scope %MSize %KSize %MatrixAKHR\n %B is of type OpTypeCooperativeMatrixKHR %BType %scope %KSize %NSize %MatrixBKHR\n %C is of type OpTypeCooperativeMatrixKHR %CType %scope %MSize %NSize %MatrixAccumulatorKHR\n %Result is of type OpTypeCooperativeMatrixKHR %ResultType %scope %MSize %NSize %MatrixAccumulatorKHR\n\n %Result = %A * %B + %C // using OpCooperativeMatrixMulAddKHR\n","c","",[7011],{"type":10,"tag":125,"props":7012,"children":7013},{"__ignoreMap":7009},[7014,7078,7134,7189,7243,7253],{"type":10,"tag":7015,"props":7016,"children":7019},"span",{"class":7017,"line":7018},"line",1,[7020,7026,7032,7037,7042,7046,7051,7055,7060,7064,7069,7073],{"type":10,"tag":7015,"props":7021,"children":7023},{"style":7022},"--shiki-default:#CF222E;--shiki-dark:#FF7B72",[7024],{"type":16,"value":7025}," %",{"type":10,"tag":7015,"props":7027,"children":7029},{"style":7028},"--shiki-default:#1F2328;--shiki-dark:#E6EDF3",[7030],{"type":16,"value":7031},"A is of type OpTypeCooperativeMatrixKHR ",{"type":10,"tag":7015,"props":7033,"children":7034},{"style":7022},[7035],{"type":16,"value":7036},"%",{"type":10,"tag":7015,"props":7038,"children":7039},{"style":7028},[7040],{"type":16,"value":7041},"AType ",{"type":10,"tag":7015,"props":7043,"children":7044},{"style":7022},[7045],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7047,"children":7048},{"style":7028},[7049],{"type":16,"value":7050},"scope ",{"type":10,"tag":7015,"props":7052,"children":7053},{"style":7022},[7054],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7056,"children":7057},{"style":7028},[7058],{"type":16,"value":7059},"MSize ",{"type":10,"tag":7015,"props":7061,"children":7062},{"style":7022},[7063],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7065,"children":7066},{"style":7028},[7067],{"type":16,"value":7068},"KSize ",{"type":10,"tag":7015,"props":7070,"children":7071},{"style":7022},[7072],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7074,"children":7075},{"style":7028},[7076],{"type":16,"value":7077},"MatrixAKHR\n",{"type":10,"tag":7015,"props":7079,"children":7081},{"class":7017,"line":7080},2,[7082,7086,7091,7095,7100,7104,7108,7112,7116,7120,7125,7129],{"type":10,"tag":7015,"props":7083,"children":7084},{"style":7022},[7085],{"type":16,"value":7025},{"type":10,"tag":7015,"props":7087,"children":7088},{"style":7028},[7089],{"type":16,"value":7090},"B is of type OpTypeCooperativeMatrixKHR ",{"type":10,"tag":7015,"props":7092,"children":7093},{"style":7022},[7094],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7096,"children":7097},{"style":7028},[7098],{"type":16,"value":7099},"BType ",{"type":10,"tag":7015,"props":7101,"children":7102},{"style":7022},[7103],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7105,"children":7106},{"style":7028},[7107],{"type":16,"value":7050},{"type":10,"tag":7015,"props":7109,"children":7110},{"style":7022},[7111],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7113,"children":7114},{"style":7028},[7115],{"type":16,"value":7068},{"type":10,"tag":7015,"props":7117,"children":7118},{"style":7022},[7119],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7121,"children":7122},{"style":7028},[7123],{"type":16,"value":7124},"NSize ",{"type":10,"tag":7015,"props":7126,"children":7127},{"style":7022},[7128],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7130,"children":7131},{"style":7028},[7132],{"type":16,"value":7133},"MatrixBKHR\n",{"type":10,"tag":7015,"props":7135,"children":7137},{"class":7017,"line":7136},3,[7138,7142,7147,7151,7156,7160,7164,7168,7172,7176,7180,7184],{"type":10,"tag":7015,"props":7139,"children":7140},{"style":7022},[7141],{"type":16,"value":7025},{"type":10,"tag":7015,"props":7143,"children":7144},{"style":7028},[7145],{"type":16,"value":7146},"C is of type OpTypeCooperativeMatrixKHR ",{"type":10,"tag":7015,"props":7148,"children":7149},{"style":7022},[7150],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7152,"children":7153},{"style":7028},[7154],{"type":16,"value":7155},"CType ",{"type":10,"tag":7015,"props":7157,"children":7158},{"style":7022},[7159],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7161,"children":7162},{"style":7028},[7163],{"type":16,"value":7050},{"type":10,"tag":7015,"props":7165,"children":7166},{"style":7022},[7167],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7169,"children":7170},{"style":7028},[7171],{"type":16,"value":7059},{"type":10,"tag":7015,"props":7173,"children":7174},{"style":7022},[7175],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7177,"children":7178},{"style":7028},[7179],{"type":16,"value":7124},{"type":10,"tag":7015,"props":7181,"children":7182},{"style":7022},[7183],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7185,"children":7186},{"style":7028},[7187],{"type":16,"value":7188},"MatrixAccumulatorKHR\n",{"type":10,"tag":7015,"props":7190,"children":7192},{"class":7017,"line":7191},4,[7193,7197,7202,7206,7211,7215,7219,7223,7227,7231,7235,7239],{"type":10,"tag":7015,"props":7194,"children":7195},{"style":7022},[7196],{"type":16,"value":7025},{"type":10,"tag":7015,"props":7198,"children":7199},{"style":7028},[7200],{"type":16,"value":7201},"Result is of type OpTypeCooperativeMatrixKHR ",{"type":10,"tag":7015,"props":7203,"children":7204},{"style":7022},[7205],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7207,"children":7208},{"style":7028},[7209],{"type":16,"value":7210},"ResultType ",{"type":10,"tag":7015,"props":7212,"children":7213},{"style":7022},[7214],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7216,"children":7217},{"style":7028},[7218],{"type":16,"value":7050},{"type":10,"tag":7015,"props":7220,"children":7221},{"style":7022},[7222],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7224,"children":7225},{"style":7028},[7226],{"type":16,"value":7059},{"type":10,"tag":7015,"props":7228,"children":7229},{"style":7022},[7230],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7232,"children":7233},{"style":7028},[7234],{"type":16,"value":7124},{"type":10,"tag":7015,"props":7236,"children":7237},{"style":7022},[7238],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7240,"children":7241},{"style":7028},[7242],{"type":16,"value":7188},{"type":10,"tag":7015,"props":7244,"children":7246},{"class":7017,"line":7245},5,[7247],{"type":10,"tag":7015,"props":7248,"children":7250},{"emptyLinePlaceholder":7249},true,[7251],{"type":16,"value":7252},"\n",{"type":10,"tag":7015,"props":7254,"children":7256},{"class":7017,"line":7255},6,[7257,7261,7266,7271,7276,7280,7285,7289,7294,7299,7303,7308],{"type":10,"tag":7015,"props":7258,"children":7259},{"style":7022},[7260],{"type":16,"value":7025},{"type":10,"tag":7015,"props":7262,"children":7263},{"style":7028},[7264],{"type":16,"value":7265},"Result ",{"type":10,"tag":7015,"props":7267,"children":7268},{"style":7022},[7269],{"type":16,"value":7270},"=",{"type":10,"tag":7015,"props":7272,"children":7273},{"style":7022},[7274],{"type":16,"value":7275}," %",{"type":10,"tag":7015,"props":7277,"children":7278},{"style":7028},[7279],{"type":16,"value":4892},{"type":10,"tag":7015,"props":7281,"children":7282},{"style":7022},[7283],{"type":16,"value":7284},"*",{"type":10,"tag":7015,"props":7286,"children":7287},{"style":7022},[7288],{"type":16,"value":7275},{"type":10,"tag":7015,"props":7290,"children":7291},{"style":7028},[7292],{"type":16,"value":7293},"B ",{"type":10,"tag":7015,"props":7295,"children":7296},{"style":7022},[7297],{"type":16,"value":7298},"+",{"type":10,"tag":7015,"props":7300,"children":7301},{"style":7022},[7302],{"type":16,"value":7275},{"type":10,"tag":7015,"props":7304,"children":7305},{"style":7028},[7306],{"type":16,"value":7307},"C",{"type":10,"tag":7015,"props":7309,"children":7311},{"style":7310},"--shiki-default:#6E7781;--shiki-dark:#8B949E",[7312],{"type":16,"value":7313}," // using OpCooperativeMatrixMulAddKHR\n",{"type":10,"tag":7004,"props":7315,"children":7317},{"className":7006,"code":7316,"language":7008,"meta":7009,"style":7009}," %A is of type OpTypeCooperativeMatrixNV %AType %scope %MSize %KSize\n %B is of type OpTypeCooperativeMatrixNV %BType %scope %KSize %NSize\n %C is of type OpTypeCooperativeMatrixNV %CType %scope %MSize %NSize\n %D is of type OpTypeCooperativeMatrixNV %DType %scope %MSize %NSize\n\n %D = %A * %B + %C // using OpCooperativeMatrixMulAddNV\n",[7318],{"type":10,"tag":125,"props":7319,"children":7320},{"__ignoreMap":7009},[7321,7366,7411,7455,7500,7507],{"type":10,"tag":7015,"props":7322,"children":7323},{"class":7017,"line":7018},[7324,7328,7333,7337,7341,7345,7349,7353,7357,7361],{"type":10,"tag":7015,"props":7325,"children":7326},{"style":7022},[7327],{"type":16,"value":7025},{"type":10,"tag":7015,"props":7329,"children":7330},{"style":7028},[7331],{"type":16,"value":7332},"A is of type OpTypeCooperativeMatrixNV ",{"type":10,"tag":7015,"props":7334,"children":7335},{"style":7022},[7336],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7338,"children":7339},{"style":7028},[7340],{"type":16,"value":7041},{"type":10,"tag":7015,"props":7342,"children":7343},{"style":7022},[7344],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7346,"children":7347},{"style":7028},[7348],{"type":16,"value":7050},{"type":10,"tag":7015,"props":7350,"children":7351},{"style":7022},[7352],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7354,"children":7355},{"style":7028},[7356],{"type":16,"value":7059},{"type":10,"tag":7015,"props":7358,"children":7359},{"style":7022},[7360],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7362,"children":7363},{"style":7028},[7364],{"type":16,"value":7365},"KSize\n",{"type":10,"tag":7015,"props":7367,"children":7368},{"class":7017,"line":7080},[7369,7373,7378,7382,7386,7390,7394,7398,7402,7406],{"type":10,"tag":7015,"props":7370,"children":7371},{"style":7022},[7372],{"type":16,"value":7025},{"type":10,"tag":7015,"props":7374,"children":7375},{"style":7028},[7376],{"type":16,"value":7377},"B is of type OpTypeCooperativeMatrixNV ",{"type":10,"tag":7015,"props":7379,"children":7380},{"style":7022},[7381],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7383,"children":7384},{"style":7028},[7385],{"type":16,"value":7099},{"type":10,"tag":7015,"props":7387,"children":7388},{"style":7022},[7389],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7391,"children":7392},{"style":7028},[7393],{"type":16,"value":7050},{"type":10,"tag":7015,"props":7395,"children":7396},{"style":7022},[7397],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7399,"children":7400},{"style":7028},[7401],{"type":16,"value":7068},{"type":10,"tag":7015,"props":7403,"children":7404},{"style":7022},[7405],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7407,"children":7408},{"style":7028},[7409],{"type":16,"value":7410},"NSize\n",{"type":10,"tag":7015,"props":7412,"children":7413},{"class":7017,"line":7136},[7414,7418,7423,7427,7431,7435,7439,7443,7447,7451],{"type":10,"tag":7015,"props":7415,"children":7416},{"style":7022},[7417],{"type":16,"value":7025},{"type":10,"tag":7015,"props":7419,"children":7420},{"style":7028},[7421],{"type":16,"value":7422},"C is of type OpTypeCooperativeMatrixNV ",{"type":10,"tag":7015,"props":7424,"children":7425},{"style":7022},[7426],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7428,"children":7429},{"style":7028},[7430],{"type":16,"value":7155},{"type":10,"tag":7015,"props":7432,"children":7433},{"style":7022},[7434],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7436,"children":7437},{"style":7028},[7438],{"type":16,"value":7050},{"type":10,"tag":7015,"props":7440,"children":7441},{"style":7022},[7442],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7444,"children":7445},{"style":7028},[7446],{"type":16,"value":7059},{"type":10,"tag":7015,"props":7448,"children":7449},{"style":7022},[7450],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7452,"children":7453},{"style":7028},[7454],{"type":16,"value":7410},{"type":10,"tag":7015,"props":7456,"children":7457},{"class":7017,"line":7191},[7458,7462,7467,7471,7476,7480,7484,7488,7492,7496],{"type":10,"tag":7015,"props":7459,"children":7460},{"style":7022},[7461],{"type":16,"value":7025},{"type":10,"tag":7015,"props":7463,"children":7464},{"style":7028},[7465],{"type":16,"value":7466},"D is of type OpTypeCooperativeMatrixNV ",{"type":10,"tag":7015,"props":7468,"children":7469},{"style":7022},[7470],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7472,"children":7473},{"style":7028},[7474],{"type":16,"value":7475},"DType ",{"type":10,"tag":7015,"props":7477,"children":7478},{"style":7022},[7479],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7481,"children":7482},{"style":7028},[7483],{"type":16,"value":7050},{"type":10,"tag":7015,"props":7485,"children":7486},{"style":7022},[7487],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7489,"children":7490},{"style":7028},[7491],{"type":16,"value":7059},{"type":10,"tag":7015,"props":7493,"children":7494},{"style":7022},[7495],{"type":16,"value":7036},{"type":10,"tag":7015,"props":7497,"children":7498},{"style":7028},[7499],{"type":16,"value":7410},{"type":10,"tag":7015,"props":7501,"children":7502},{"class":7017,"line":7245},[7503],{"type":10,"tag":7015,"props":7504,"children":7505},{"emptyLinePlaceholder":7249},[7506],{"type":16,"value":7252},{"type":10,"tag":7015,"props":7508,"children":7509},{"class":7017,"line":7255},[7510,7514,7519,7523,7527,7531,7535,7539,7543,7547,7551,7555],{"type":10,"tag":7015,"props":7511,"children":7512},{"style":7022},[7513],{"type":16,"value":7025},{"type":10,"tag":7015,"props":7515,"children":7516},{"style":7028},[7517],{"type":16,"value":7518},"D ",{"type":10,"tag":7015,"props":7520,"children":7521},{"style":7022},[7522],{"type":16,"value":7270},{"type":10,"tag":7015,"props":7524,"children":7525},{"style":7022},[7526],{"type":16,"value":7275},{"type":10,"tag":7015,"props":7528,"children":7529},{"style":7028},[7530],{"type":16,"value":4892},{"type":10,"tag":7015,"props":7532,"children":7533},{"style":7022},[7534],{"type":16,"value":7284},{"type":10,"tag":7015,"props":7536,"children":7537},{"style":7022},[7538],{"type":16,"value":7275},{"type":10,"tag":7015,"props":7540,"children":7541},{"style":7028},[7542],{"type":16,"value":7293},{"type":10,"tag":7015,"props":7544,"children":7545},{"style":7022},[7546],{"type":16,"value":7298},{"type":10,"tag":7015,"props":7548,"children":7549},{"style":7022},[7550],{"type":16,"value":7275},{"type":10,"tag":7015,"props":7552,"children":7553},{"style":7028},[7554],{"type":16,"value":7307},{"type":10,"tag":7015,"props":7556,"children":7557},{"style":7310},[7558],{"type":16,"value":7559}," // using OpCooperativeMatrixMulAddNV\n",{"type":10,"tag":18,"props":7561,"children":7562},{},[7563,7565,7570],{"type":16,"value":7564},"A matrix multiply with these dimensions is known as an ",{"type":10,"tag":88,"props":7566,"children":7567},{},[7568],{"type":16,"value":7569},"MxNxK",{"type":16,"value":7571}," matrix\nmultiply.",{"type":10,"tag":165,"props":7573,"children":7574},{"name":6973,"type":205},[7575],{"type":10,"tag":18,"props":7576,"children":7577},{},[7578],{"type":16,"value":7579},"Structure specifying cooperative matrix properties",{"type":10,"tag":165,"props":7581,"children":7582},{"name":6980,"type":205},[7583],{"type":10,"tag":18,"props":7584,"children":7585},{},[7586],{"type":16,"value":7579},{"type":10,"tag":165,"props":7588,"children":7590},{"name":7589,"type":225},"VkScopeKHR",[7591],{"type":10,"tag":18,"props":7592,"children":7593},{},[7594],{"type":16,"value":7595},"Specify SPIR-V scope",{"type":10,"tag":165,"props":7597,"children":7599},{"name":7598,"type":225},"VkComponentTypeKHR",[7600],{"type":10,"tag":18,"props":7601,"children":7602},{},[7603],{"type":16,"value":7604},"Specify SPIR-V cooperative matrix component type",{"type":10,"tag":96,"props":7606,"children":7608},{"id":7607},"shaders-validation-cache",[7609],{"type":16,"value":7610},"Validation Cache",{"type":10,"tag":165,"props":7612,"children":7614},{"name":7613,"type":168},"VkValidationCacheEXT",[7615],{"type":10,"tag":18,"props":7616,"children":7617},{},[7618],{"type":16,"value":7619},"Opaque handle to a validation cache object",{"type":10,"tag":165,"props":7621,"children":7623},{"name":7622,"type":195},"vkCreateValidationCacheEXT",[7624],{"type":10,"tag":18,"props":7625,"children":7626},{},[7627],{"type":16,"value":7628},"Creates a new validation cache",{"type":10,"tag":165,"props":7630,"children":7632},{"name":7631,"type":205},"VkValidationCacheCreateInfoEXT",[7633],{"type":10,"tag":18,"props":7634,"children":7635},{},[7636],{"type":16,"value":7637},"Structure specifying parameters of a newly created validation cache",{"type":10,"tag":165,"props":7639,"children":7641},{"name":7640,"type":215},"VkValidationCacheCreateFlagsEXT",[7642],{"type":10,"tag":18,"props":7643,"children":7644},{},[7645],{"type":16,"value":2576},{"type":10,"tag":165,"props":7647,"children":7649},{"name":7648,"type":195},"vkMergeValidationCachesEXT",[7650],{"type":10,"tag":18,"props":7651,"children":7652},{},[7653],{"type":16,"value":7654},"Combine the data stores of validation caches",{"type":10,"tag":165,"props":7656,"children":7658},{"name":7657,"type":195},"vkGetValidationCacheDataEXT",[7659],{"type":10,"tag":18,"props":7660,"children":7661},{},[7662],{"type":16,"value":7663},"Get the data store from a validation cache",{"type":10,"tag":165,"props":7665,"children":7667},{"name":7666,"type":225},"VkValidationCacheHeaderVersionEXT",[7668],{"type":10,"tag":18,"props":7669,"children":7670},{},[7671],{"type":16,"value":7672},"Encode validation cache version",{"type":10,"tag":165,"props":7674,"children":7676},{"name":7675,"type":195},"vkDestroyValidationCacheEXT",[7677],{"type":10,"tag":18,"props":7678,"children":7679},{},[7680],{"type":16,"value":7681},"Destroy a validation cache object",{"type":10,"tag":96,"props":7683,"children":7685},{"id":7684},"cuda-modules",[7686],{"type":16,"value":7687},"CUDA Modules",{"type":10,"tag":176,"props":7689,"children":7691},{"id":7690},"cuda-modules-creation",[7692],{"type":16,"value":7693},"Creating a CUDA Module",{"type":10,"tag":165,"props":7695,"children":7697},{"name":7696,"type":168},"VkCudaModuleNV",[7698],{"type":10,"tag":18,"props":7699,"children":7700},{},[7701],{"type":16,"value":7702},"Opaque handle to a CUDA module object",{"type":10,"tag":165,"props":7704,"children":7706},{"name":7705,"type":195},"vkCreateCudaModuleNV",[7707],{"type":10,"tag":18,"props":7708,"children":7709},{},[7710],{"type":16,"value":7711},"Creates a new CUDA module object",{"type":10,"tag":165,"props":7713,"children":7715},{"name":7714,"type":205},"VkCudaModuleCreateInfoNV",[7716],{"type":10,"tag":18,"props":7717,"children":7718},{},[7719],{"type":16,"value":7720},"Structure specifying the parameters to create a CUDA Module",{"type":10,"tag":176,"props":7722,"children":7724},{"id":7723},"cuda-function-creation",[7725],{"type":16,"value":7726},"Creating a CUDA Function Handle",{"type":10,"tag":165,"props":7728,"children":7730},{"name":7729,"type":168},"VkCudaFunctionNV",[7731],{"type":10,"tag":18,"props":7732,"children":7733},{},[7734],{"type":16,"value":7735},"Opaque handle to a CUDA function object",{"type":10,"tag":165,"props":7737,"children":7739},{"name":7738,"type":195},"vkCreateCudaFunctionNV",[7740],{"type":10,"tag":18,"props":7741,"children":7742},{},[7743],{"type":16,"value":7744},"Creates a new CUDA function object",{"type":10,"tag":165,"props":7746,"children":7748},{"name":7747,"type":205},"VkCudaFunctionCreateInfoNV",[7749],{"type":10,"tag":18,"props":7750,"children":7751},{},[7752],{"type":16,"value":7753},"Structure specifying the parameters to create a CUDA Function",{"type":10,"tag":176,"props":7755,"children":7757},{"id":7756},"cuda-function-destruction",[7758],{"type":16,"value":7759},"Destroying a CUDA Function",{"type":10,"tag":165,"props":7761,"children":7763},{"name":7762,"type":195},"vkDestroyCudaFunctionNV",[7764],{"type":10,"tag":18,"props":7765,"children":7766},{},[7767],{"type":16,"value":7768},"Destroy a CUDA function",{"type":10,"tag":176,"props":7770,"children":7772},{"id":7771},"cuda-modules-destruction",[7773],{"type":16,"value":7774},"Destroying a CUDA Module",{"type":10,"tag":165,"props":7776,"children":7778},{"name":7777,"type":195},"vkDestroyCudaModuleNV",[7779],{"type":10,"tag":18,"props":7780,"children":7781},{},[7782],{"type":16,"value":7783},"Destroy a CUDA module",{"type":10,"tag":176,"props":7785,"children":7787},{"id":7786},"cuda-modules-getcache",[7788],{"type":16,"value":7789},"Reading back CUDA Module Cache",{"type":10,"tag":18,"props":7791,"children":7792},{},[7793],{"type":16,"value":7794},"After uploading the PTX kernel code, the module compiles the code to\ngenerate a binary cache with all the necessary information for the device to\nexecute it.\nIt is possible to read back this cache for later use, such as accelerating\nthe initialization of further executions.",{"type":10,"tag":165,"props":7796,"children":7798},{"name":7797,"type":195},"vkGetCudaModuleCacheNV",[7799],{"type":10,"tag":18,"props":7800,"children":7801},{},[7802],{"type":16,"value":7803},"Get CUDA module cache",{"type":10,"tag":176,"props":7805,"children":7807},{"id":7806},"cuda-modules-limitations",[7808],{"type":16,"value":7809},"Limitations",{"type":10,"tag":18,"props":7811,"children":7812},{},[7813,7815,7818],{"type":16,"value":7814},"CUDA and Vulkan do not use the device in the same configuration.\nThe following limitations ",{"type":10,"tag":71,"props":7816,"children":7817},{"type":524},[],{"type":16,"value":7819}," be taken into account:",{"type":10,"tag":594,"props":7821,"children":7822},{},[7823,7836,7841,7846,7851,7856,7861,7866],{"type":10,"tag":598,"props":7824,"children":7825},{},[7826,7828,7834],{"type":16,"value":7827},"It is not possible to read or write global parameters from Vulkan.\nThe only way to share resources or send values to the PTX kernel is to\npass them as arguments of the function.\nSee ",{"type":10,"tag":28,"props":7829,"children":7831},{"href":7830},"/chapters/dispatch#cudadispatch_sharing_resources",[7832],{"type":16,"value":7833},"Resources sharing between CUDA\nKernel and Vulkan",{"type":16,"value":7835}," for more details.",{"type":10,"tag":598,"props":7837,"children":7838},{},[7839],{"type":16,"value":7840},"No calls to functions external to the module PTX are supported.",{"type":10,"tag":598,"props":7842,"children":7843},{},[7844],{"type":16,"value":7845},"Vulkan disables some shader/kernel exceptions, which could break CUDA\nkernels relying on exceptions.",{"type":10,"tag":598,"props":7847,"children":7848},{},[7849],{"type":16,"value":7850},"CUDA kernels submitted to Vulkan are limited to the amount of shared\nmemory, which can be queried from the physical capabilities.\nIt may be less than what CUDA can offer.",{"type":10,"tag":598,"props":7852,"children":7853},{},[7854],{"type":16,"value":7855},"CUDA instruction-level preemption (CILP) does not work.",{"type":10,"tag":598,"props":7857,"children":7858},{},[7859],{"type":16,"value":7860},"CUDA Unified Memory will not work in this extension.",{"type":10,"tag":598,"props":7862,"children":7863},{},[7864],{"type":16,"value":7865},"CUDA Dynamic parallelism is not supported.",{"type":10,"tag":598,"props":7867,"children":7868},{},[7869,7875],{"type":10,"tag":125,"props":7870,"children":7872},{"className":7871},[],[7873],{"type":16,"value":7874},"vk*DispatchIndirect",{"type":16,"value":7876}," is not available.",{"type":10,"tag":7878,"props":7879,"children":7880},"style",{},[7881],{"type":16,"value":7882},"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":7009,"searchDepth":7080,"depth":7080,"links":7884},[7885,7894,7895,7896,7897,7900,7901,7902,7905,7908,7911,7914,7917,7920,7923,7924,7925,7928,7931,7934,7937,7940,7943,7944,7945,7957,7958,7959,7960,7961],{"id":98,"depth":7080,"text":101,"children":7886},[7887,7888,7889,7890,7891,7892,7893],{"id":178,"depth":7136,"text":181},{"id":294,"depth":7136,"text":297},{"id":309,"depth":7136,"text":312},{"id":556,"depth":7136,"text":559},{"id":571,"depth":7136,"text":574},{"id":2429,"depth":7136,"text":2432},{"id":2522,"depth":7136,"text":2525},{"id":2537,"depth":7080,"text":2540},{"id":2597,"depth":7080,"text":2600},{"id":2640,"depth":7080,"text":2643},{"id":3152,"depth":7080,"text":3155,"children":7898},[7899],{"id":3190,"depth":7136,"text":3193},{"id":3331,"depth":7080,"text":3334},{"id":3497,"depth":7080,"text":3500},{"id":3553,"depth":7080,"text":3556,"children":7903},[7904],{"id":3645,"depth":7136,"text":3648},{"id":3727,"depth":7080,"text":3730,"children":7906},[7907],{"id":3758,"depth":7136,"text":3761},{"id":3839,"depth":7080,"text":3842,"children":7909},[7910],{"id":3873,"depth":7136,"text":3876},{"id":3922,"depth":7080,"text":3925,"children":7912},[7913],{"id":3946,"depth":7136,"text":3949},{"id":3997,"depth":7080,"text":4000,"children":7915},[7916],{"id":4101,"depth":7136,"text":4104},{"id":4147,"depth":7080,"text":4150,"children":7918},[7919],{"id":4158,"depth":7136,"text":4161},{"id":4173,"depth":7080,"text":4176,"children":7921},[7922],{"id":4184,"depth":7136,"text":4187},{"id":4213,"depth":7080,"text":4216},{"id":4231,"depth":7080,"text":4234},{"id":4300,"depth":7080,"text":4303,"children":7926},[7927],{"id":4327,"depth":7136,"text":4330},{"id":4383,"depth":7080,"text":4386,"children":7929},[7930],{"id":4423,"depth":7136,"text":4426},{"id":4439,"depth":7080,"text":4442,"children":7932},[7933],{"id":4477,"depth":7136,"text":4480},{"id":4493,"depth":7080,"text":4496,"children":7935},[7936],{"id":4521,"depth":7136,"text":4524},{"id":4532,"depth":7080,"text":4535,"children":7938},[7939],{"id":4564,"depth":7136,"text":4567},{"id":4575,"depth":7080,"text":4578,"children":7941},[7942],{"id":4591,"depth":7136,"text":4594},{"id":4610,"depth":7080,"text":4613},{"id":4828,"depth":7080,"text":4831},{"id":4884,"depth":7080,"text":4887,"children":7946},[7947,7948,7949,7950,7951,7952,7953,7954,7955,7956],{"id":4914,"depth":7136,"text":4917},{"id":4957,"depth":7136,"text":4960},{"id":5095,"depth":7136,"text":5098},{"id":5238,"depth":7136,"text":5241},{"id":5337,"depth":7136,"text":5340},{"id":5403,"depth":7136,"text":5406},{"id":5473,"depth":7136,"text":5476},{"id":5629,"depth":7136,"text":5632},{"id":5975,"depth":7136,"text":5978},{"id":6124,"depth":7136,"text":6127},{"id":6245,"depth":7080,"text":6248},{"id":6824,"depth":7080,"text":6827},{"id":6921,"depth":7080,"text":6924},{"id":7607,"depth":7080,"text":7610},{"id":7684,"depth":7080,"text":7687,"children":7962},[7963,7964,7965,7966,7967,7968],{"id":7690,"depth":7136,"text":7693},{"id":7723,"depth":7136,"text":7726},{"id":7756,"depth":7136,"text":7759},{"id":7771,"depth":7136,"text":7774},{"id":7786,"depth":7136,"text":7789},{"id":7806,"depth":7136,"text":7809},"markdown","chapters-shaders",[7972,7977,7980,7983,7986,7989,7992,7994,7998,8000,8002,8006,8010,8014,8018,8022,8026,8030,8034,8038,8042,8045,8049,8053,8057,8061,8065,8069,8072,8076,8080,8083,8087,8091,8095,8099,8103,8107,8111,8115,8119,8123,8127,8131,8134,8138,8142,8146,8150,8154,8158,8161,8163,8166,8169,8172,8175,8178,8181],{"index":7973,"title":7974,"id":7975,"appendix":7976},0,"Preamble","preamble",false,{"index":7018,"title":7978,"id":7979,"appendix":7976},"Introduction","introduction",{"index":7080,"title":7981,"id":7982,"appendix":7976},"Fundamentals","fundamentals",{"index":7136,"title":7984,"id":7985,"appendix":7976},"Initialization","initialization",{"index":7191,"title":7987,"id":7988,"appendix":7976},"Devices and Queues","devsandqueues",{"index":7245,"title":7990,"id":7991,"appendix":7976},"Command Buffers","commandbuffers",{"index":7255,"title":7993,"id":4947,"appendix":7976},"Synchronization and Cache Control",{"index":7995,"title":7996,"id":7997,"appendix":7976},7,"Render Pass","renderpass",{"index":7999,"title":4,"id":13,"appendix":7976},8,{"index":8001,"title":117,"id":2465,"appendix":7976},9,{"index":8003,"title":8004,"id":8005,"appendix":7976},10,"Memory Allocation","memory",{"index":8007,"title":8008,"id":8009,"appendix":7976},11,"Resource Creation","resources",{"index":8011,"title":8012,"id":8013,"appendix":7976},12,"Samplers","samplers",{"index":8015,"title":8016,"id":8017,"appendix":7976},13,"Resource Descriptors","descriptorsets",{"index":8019,"title":8020,"id":8021,"appendix":7976},14,"Shader Interfaces","interfaces",{"index":8023,"title":8024,"id":8025,"appendix":7976},15,"Image Operations","textures",{"index":8027,"title":8028,"id":8029,"appendix":7976},16,"Fragment Density Map Operations","fragmentdensitymapops",{"index":8031,"title":8032,"id":8033,"appendix":7976},17,"Queries","queries",{"index":8035,"title":8036,"id":8037,"appendix":7976},18,"Clear Commands","clears",{"index":8039,"title":8040,"id":8041,"appendix":7976},19,"Copy Commands","copies",{"index":8043,"title":8044,"id":2865,"appendix":7976},20,"Drawing Commands",{"index":8046,"title":8047,"id":8048,"appendix":7976},21,"Fixed-Function Vertex Processing","fxvertex",{"index":8050,"title":8051,"id":8052,"appendix":7976},22,"Tessellation","tessellation",{"index":8054,"title":8055,"id":8056,"appendix":7976},23,"Geometry Shading","geometry",{"index":8058,"title":8059,"id":8060,"appendix":7976},24,"Mesh Shading","mesh",{"index":8062,"title":8063,"id":8064,"appendix":7976},25,"Cluster Culling Shading","cluster-culling",{"index":8066,"title":8067,"id":8068,"appendix":7976},26,"Fixed-Function Vertex Post-Processing","vertexpostproc",{"index":8070,"title":49,"id":8071,"appendix":7976},27,"primsrast",{"index":8073,"title":8074,"id":8075,"appendix":7976},28,"Fragment Operations","fragops",{"index":8077,"title":8078,"id":8079,"appendix":7976},29,"The Framebuffer","framebuffer",{"index":8081,"title":8082,"id":2918,"appendix":7976},30,"Dispatching Commands",{"index":8084,"title":8085,"id":8086,"appendix":7976},31,"Device-Generated Commands","device-generated-commands",{"index":8088,"title":8089,"id":8090,"appendix":7976},32,"Sparse Resources","sparsememory",{"index":8092,"title":8093,"id":8094,"appendix":7976},33,"Window System Integration (WSI)","wsi",{"index":8096,"title":8097,"id":8098,"appendix":7976},34,"Deferred Host Operations","deferred-host-operations",{"index":8100,"title":8101,"id":8102,"appendix":7976},35,"Private Data","private-data",{"index":8104,"title":8105,"id":8106,"appendix":7976},36,"Acceleration Structures","acceleration-structure",{"index":8108,"title":8109,"id":8110,"appendix":7976},37,"Micromap","micromap",{"index":8112,"title":8113,"id":8114,"appendix":7976},38,"Ray Traversal","ray-traversal",{"index":8116,"title":8117,"id":8118,"appendix":7976},39,"Ray Tracing","ray-tracing",{"index":8120,"title":8121,"id":8122,"appendix":7976},40,"Memory Decompression","memory-decompression",{"index":8124,"title":8125,"id":8126,"appendix":7976},41,"Video Coding","video-coding",{"index":8128,"title":8129,"id":8130,"appendix":7976},42,"Optical Flow","opticalflow",{"index":8132,"title":8133,"id":3146,"appendix":7976},43,"Execution Graphs",{"index":8135,"title":8136,"id":8137,"appendix":7976},44,"Extending Vulkan","extendingvulkan",{"index":8139,"title":8140,"id":8141,"appendix":7976},45,"Features","features",{"index":8143,"title":8144,"id":8145,"appendix":7976},46,"Limits","limits",{"index":8147,"title":8148,"id":8149,"appendix":7976},47,"Formats","formats",{"index":8151,"title":8152,"id":8153,"appendix":7976},48,"Additional Capabilities","capabilities",{"index":8155,"title":8156,"id":8157,"appendix":7976},49,"Debugging","debugging",{"index":7973,"title":8159,"id":8160,"appendix":7249},"Vulkan Environment for SPIR-V","spirvenv",{"index":7018,"title":3417,"id":8162,"appendix":7249},"memory-model",{"index":7080,"title":8164,"id":8165,"appendix":7249},"Compressed Image Formats","compressed_image_formats",{"index":7136,"title":8167,"id":8168,"appendix":7249},"Core Revisions (Informative)","versions",{"index":7191,"title":8170,"id":8171,"appendix":7249},"Layers & Extensions (Informative)","extensions",{"index":7245,"title":8173,"id":8174,"appendix":7249},"API Boilerplate","boilerplate",{"index":7255,"title":8176,"id":8177,"appendix":7249},"Invariance","invariance",{"index":7995,"title":8179,"id":8180,"appendix":7249},"Lexicon","lexicon",{"index":7999,"title":8182,"id":8183,"appendix":7249},"Credits (Informative)","credits",[8185,8193,8197,8202,8206,8211,8214,8217,8220,8224,8228,8231,8234,8237,8239,8241,8244,8247,8251,8253,8257,8259,8262,8264,8267,8275,8279,8285,8289,8294,8296,8300,8306,8312,8318,8320,8323,8329,8332,8336,8342,8346,8350,8355,8359,8361,8364,8370,8373,8376,8380,8384,8388,8391,8393,8397,8402,8408,8411,8415,8418,8424,8426,8430,8433,8437,8440,8444,8447,8452,8456,8459,8464,8467,8470,8473,8477,8482,8487,8491,8495,8499,8503,8507,8511,8515,8518,8521,8525,8528,8531,8534,8538,8543,8547,8550,8554,8557,8561,8566,8569,8572,8577,8582,8586,8589,8593,8598,8601,8606,8611,8614,8617,8621,8625,8629,8634,8638,8641,8646,8650,8653,8657,8661,8664,8667,8669,8673,8676,8678,8681,8684,8687,8690,8693,8696,8699,8703,8707,8710,8713,8716,8719,8722,8725,8729,8733,8737,8740,8744,8747,8750,8753,8755,8759,8764,8768,8772,8774,8778,8781,8788,8792,8796,8800,8806,8809,8813,8817,8820,8823,8827,8832,8838,8842,8844,8849,8852,8857,8861,8866,8870,8874,8876,8879,8882,8884,8889,8892,8895,8900,8904,8908,8913,8917,8921,8923,8925,8928,8930,8933,8936,8940,8944,8946,8950,8953,8957,8960,8962,8965,8969,8971,8975,8978,8981,8984,8988,8991,8994,8996,8999,9001,9004,9008,9011,9013,9015,9017,9019,9023,9025,9028,9033,9037,9040,9042,9045,9047,9051,9054,9057,9060,9064,9067,9072,9076,9079,9083,9086,9089,9093,9097,9099,9104,9107,9111,9114,9117,9120,9122,9125,9129,9132,9136,9139,9143,9147,9150,9153,9156,9159,9163,9165,9168,9170,9175,9176,9180,9183,9186,9189,9192,9194,9198,9201,9204,9207,9211,9213,9215,9219,9221,9224,9228,9232,9234,9238,9241,9244,9247,9250,9254,9259,9264,9268,9274,9278,9281,9285,9289,9291,9295,9299,9302,9306,9309,9314,9318,9320,9326,9329,9332,9335,9339,9342,9346,9350,9354,9356,9359,9361,9364,9366,9368,9371,9373,9376,9379,9381,9384,9386,9390,9394,9398,9402,9405,9408,9412,9415,9419,9421,9425,9429,9432,9435,9438,9441,9444,9447,9450,9453,9456,9459,9462,9465,9467,9470,9474,9477,9481,9485,9488,9491,9494,9497,9500,9503,9507,9510,9513,9519,9523,9527,9531],{"number":8186,"type":8187,"author":8188,"provisional":7249,"depends":8189,"platform":8190,"contact":8191,"extension":8192,"proposal":7249},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":8194,"type":8187,"author":8188,"provisional":7976,"contact":8195,"extension":8196,"proposal":7249},477,"Stu Smith","VK_AMD_anti_lag",{"number":8198,"type":8187,"author":8188,"provisional":7976,"specialuse":8199,"contact":8200,"extension":8201,"proposal":7976},180,"devtools","Daniel Rakos @drakos-amd","VK_AMD_buffer_marker",{"number":8203,"type":8187,"author":8188,"provisional":7976,"depends":8204,"contact":8191,"extension":8205,"proposal":7976},230,"VK_KHR_get_physical_device_properties2,VK_VERSION_1_1","VK_AMD_device_coherent_memory",{"number":8207,"type":8187,"author":8188,"provisional":7976,"depends":8208,"contact":8209,"extension":8210,"proposal":7976},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":8096,"type":8187,"author":8188,"promotedto":8212,"provisional":7976,"contact":8200,"extension":8213,"proposal":7976},"VK_KHR_draw_indirect_count","VK_AMD_draw_indirect_count",{"number":8066,"type":8187,"author":8188,"provisional":7976,"contact":8215,"extension":8216,"proposal":7976},"Dominik Witczak @dominikwitczakamd","VK_AMD_gcn_shader",{"number":8108,"type":8187,"author":8188,"deprecatedby":8218,"provisional":7976,"contact":8215,"extension":8219,"proposal":7976},"VK_KHR_shader_float16_int8","VK_AMD_gpu_shader_half_float",{"number":8221,"type":8187,"author":8188,"deprecatedby":8218,"provisional":7976,"contact":8222,"extension":8223,"proposal":7976},133,"Qun Lin @linqun","VK_AMD_gpu_shader_int16",{"number":8225,"type":8187,"author":8188,"provisional":7976,"contact":8226,"extension":8227,"proposal":7976},190,"Martin Dinkov @mdinkov","VK_AMD_memory_overallocation_behavior",{"number":8229,"type":8187,"author":8188,"provisional":7976,"contact":8209,"extension":8230,"proposal":7976},137,"VK_AMD_mixed_attachment_samples",{"number":8104,"type":8187,"author":8188,"obsoletedby":8232,"provisional":7976,"contact":8209,"extension":8233,"proposal":7976},"VK_KHR_maintenance1","VK_AMD_negative_viewport_height",{"number":8235,"type":8187,"author":8188,"provisional":7976,"contact":8209,"extension":8236,"proposal":7976},184,"VK_AMD_pipeline_compiler_control",{"number":8039,"type":8187,"author":8188,"provisional":7976,"contact":8200,"extension":8238,"proposal":7976},"VK_AMD_rasterization_order",{"number":8112,"type":8187,"author":8188,"provisional":7976,"contact":8215,"extension":8240,"proposal":7976},"VK_AMD_shader_ballot",{"number":8242,"type":8187,"author":8188,"provisional":7976,"depends":8204,"contact":8226,"extension":8243,"proposal":7976},186,"VK_AMD_shader_core_properties",{"number":8245,"type":8187,"author":8188,"provisional":7976,"depends":8243,"contact":8209,"extension":8246,"proposal":7976},228,"VK_AMD_shader_core_properties2",{"number":8248,"type":8187,"author":8249,"provisional":7976,"depends":8204,"contact":8191,"extension":8250,"proposal":7249},322,"EXT","VK_AMD_shader_early_and_late_fragment_tests",{"number":8050,"type":8187,"author":8188,"provisional":7976,"contact":8222,"extension":8252,"proposal":7976},"VK_AMD_shader_explicit_vertex_parameter",{"number":8254,"type":8187,"author":8188,"provisional":7976,"contact":8255,"extension":8256,"proposal":7976},138,"Aaron Hagan @AaronHaganAMD","VK_AMD_shader_fragment_mask",{"number":8147,"type":8187,"author":8188,"provisional":7976,"contact":8215,"extension":8258,"proposal":7976},"VK_AMD_shader_image_load_store_lod",{"number":8132,"type":8187,"author":8188,"provisional":7976,"specialuse":8199,"contact":8260,"extension":8261,"proposal":7976},"Jaakko Konttinen @jaakkoamd","VK_AMD_shader_info",{"number":8046,"type":8187,"author":8188,"provisional":7976,"contact":8222,"extension":8263,"proposal":7976},"VK_AMD_shader_trinary_minmax",{"number":8128,"type":8187,"author":8188,"provisional":7976,"depends":8204,"contact":8265,"extension":8266,"proposal":7976},"Rex Xu @amdrexu","VK_AMD_texture_gather_bias_lod",{"number":8268,"type":8187,"author":8269,"provisional":7976,"depends":8270,"platform":8271,"specialuse":8272,"contact":8273,"extension":8274,"proposal":7249},469,"ANDROID","VK_ANDROID_external_memory_android_hardware_buffer","android","glemulation","Chris Forbes @chrisforbes","VK_ANDROID_external_format_resolve",{"number":8276,"type":8187,"author":8269,"provisional":7976,"depends":8277,"platform":8271,"contact":8278,"extension":8270,"proposal":7976},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":8280,"type":8187,"author":8281,"promotedto":8282,"provisional":7976,"depends":8204,"contact":8283,"extension":8284,"proposal":7976},343,"ARM","VK_EXT_rasterization_order_attachment_access","Jan-Harald Fredriksen @janharaldfredriksen-arm","VK_ARM_rasterization_order_attachment_access",{"number":8286,"type":8187,"author":8281,"provisional":7976,"depends":8287,"contact":8283,"extension":8288,"proposal":7249},425,"((VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_synchronization2),VK_VERSION_1_3","VK_ARM_render_pass_striped",{"number":8290,"type":8187,"author":8281,"provisional":7976,"depends":8291,"contact":8292,"extension":8293,"proposal":7976},418,"VK_ARM_shader_core_builtins","Kevin Petit @kpet","VK_ARM_scheduling_controls",{"number":8295,"type":8187,"author":8281,"provisional":7976,"depends":8204,"contact":8292,"extension":8291,"proposal":7976},498,{"number":8297,"type":8187,"author":8281,"provisional":7976,"depends":8298,"contact":8283,"extension":8299,"proposal":7976},416,"VK_VERSION_1_1","VK_ARM_shader_core_properties",{"number":8301,"type":8187,"author":8249,"promotedto":8302,"provisional":7976,"depends":8204,"ratified":8303,"contact":8304,"extension":8305,"proposal":7976},341,"VK_VERSION_1_3","vulkansc","Joshua Ashton @Joshua-Ashton","VK_EXT_4444_formats",{"number":8307,"type":8308,"author":8249,"provisional":7976,"depends":8309,"contact":8310,"extension":8311,"proposal":7976},286,"instance","VK_EXT_direct_mode_display","Drew DeVault sir@cmpwn.com","VK_EXT_acquire_drm_display",{"number":8313,"type":8308,"author":8314,"provisional":7976,"depends":8309,"platform":8315,"contact":8316,"extension":8317,"proposal":7976},90,"NV","xlib_xrandr","James Jones @cubanismo","VK_EXT_acquire_xlib_display",{"extension":8319,"proposal":7976},"VK_EXT_application_parameters",{"number":8321,"type":8187,"author":8281,"provisional":7976,"depends":8204,"contact":8283,"extension":8322,"proposal":7976},68,"VK_EXT_astc_decode_mode",{"number":8324,"type":8187,"author":8249,"provisional":7976,"depends":8325,"ratified":8326,"contact":8327,"extension":8328,"proposal":7249},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":8330,"type":8187,"author":8249,"provisional":7976,"depends":8204,"ratified":8326,"contact":8304,"extension":8331,"proposal":7249},340,"VK_EXT_attachment_feedback_loop_layout",{"number":8333,"type":8187,"author":8314,"provisional":7976,"depends":8204,"ratified":8326,"contact":8334,"extension":8335,"proposal":7976},149,"Jeff Bolz @jeffbolznv","VK_EXT_blend_operation_advanced",{"number":8337,"type":8187,"author":8249,"provisional":7976,"depends":8338,"specialuse":8339,"contact":8340,"extension":8341,"proposal":7976},412,"VK_EXT_custom_border_color","glemulation,d3demulation","Piers Daniell @pdaniell-nv","VK_EXT_border_color_swizzle",{"number":8343,"type":8187,"author":8314,"deprecatedby":8344,"provisional":7976,"depends":8204,"contact":8334,"extension":8345,"proposal":7976},245,"VK_KHR_buffer_device_address","VK_EXT_buffer_device_address",{"number":8347,"type":8187,"author":8249,"promotedto":8348,"provisional":7976,"depends":8204,"contact":8200,"extension":8349,"proposal":7249},185,"VK_KHR_calibrated_timestamps","VK_EXT_calibrated_timestamps",{"number":8351,"type":8187,"author":8249,"provisional":7976,"depends":8204,"ratified":8352,"contact":8353,"extension":8354,"proposal":7976},382,"vulkan,vulkansc","Sharif Elcott @selcott","VK_EXT_color_write_enable",{"number":8356,"type":8187,"author":8314,"provisional":7976,"depends":8204,"contact":8357,"extension":8358,"proposal":7976},82,"Vikram Kushwaha @vkushwaha","VK_EXT_conditional_rendering",{"number":8360,"type":8187,"author":8314,"provisional":7976,"depends":8204,"ratified":8326,"contact":8340,"extension":1501,"proposal":7976},102,{"number":8362,"type":8187,"author":8249,"provisional":7976,"depends":8204,"ratified":8352,"specialuse":8339,"contact":8363,"extension":8338,"proposal":7976},288,"Liam Middlebrook @liam-middlebrook",{"number":8054,"type":8187,"author":8365,"promotedto":8366,"provisional":7976,"depends":8367,"specialuse":8157,"contact":8368,"extension":8369,"proposal":7976},"Baldur Karlsson","VK_EXT_debug_utils","VK_EXT_debug_report","Baldur Karlsson @baldurk","VK_EXT_debug_marker",{"number":8011,"type":8308,"author":8371,"deprecatedby":8366,"provisional":7976,"specialuse":8157,"contact":8372,"extension":8367,"proposal":7976},"GOOGLE","Courtney Goeltzenleuchter @courtney-g",{"number":8374,"type":8308,"author":8249,"provisional":7976,"specialuse":8157,"contact":8375,"extension":8366,"proposal":7976},129,"Mark Young @marky-lunarg",{"number":8377,"type":8187,"author":8249,"provisional":7976,"depends":8204,"ratified":8326,"specialuse":8378,"contact":8304,"extension":8379,"proposal":7249},284,"d3demulation","VK_EXT_depth_bias_control",{"number":8381,"type":8187,"author":8249,"provisional":7976,"depends":8204,"contact":8382,"extension":8383,"proposal":7976},422,"Graeme Leese @gnl21","VK_EXT_depth_clamp_zero_one",{"number":8385,"type":8187,"author":8249,"provisional":7976,"depends":8204,"ratified":8326,"specialuse":8272,"contact":8386,"extension":8387,"proposal":7976},356,"Shahbaz Youssefi @syoussefi","VK_EXT_depth_clip_control",{"number":8389,"type":8187,"author":8249,"provisional":7976,"depends":8204,"ratified":8352,"specialuse":8378,"contact":8340,"extension":8390,"proposal":7976},103,"VK_EXT_depth_clip_enable",{"number":8019,"type":8187,"author":8314,"provisional":7976,"ratified":8352,"contact":8340,"extension":8392,"proposal":7976},"VK_EXT_depth_range_unrestricted",{"number":8394,"type":8187,"author":8249,"provisional":7976,"depends":8395,"contact":8191,"extension":8396,"proposal":7249},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":8398,"type":8187,"author":8314,"promotedto":8399,"provisional":7976,"depends":8400,"contact":8334,"extension":8401,"proposal":7976},162,"VK_VERSION_1_2","(VK_KHR_get_physical_device_properties2+VK_KHR_maintenance3),VK_VERSION_1_1","VK_EXT_descriptor_indexing",{"number":8403,"type":8187,"author":8249,"provisional":7976,"depends":8404,"specialuse":8405,"contact":8406,"extension":8407,"proposal":7976},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":8409,"type":8187,"author":8249,"provisional":7976,"depends":8204,"contact":8406,"extension":8410,"proposal":7249},342,"VK_EXT_device_fault",{"number":8412,"type":8187,"author":8249,"provisional":7976,"depends":8204,"ratified":8326,"specialuse":8199,"contact":8413,"extension":8414,"proposal":7976},285,"Yiwei Zhang @zhangyiwei","VK_EXT_device_memory_report",{"number":8416,"type":8308,"author":8314,"provisional":7976,"depends":8417,"contact":8316,"extension":8309,"proposal":7976},89,"VK_KHR_display",{"number":8419,"type":8308,"author":8249,"provisional":7976,"depends":8420,"platform":8421,"contact":8422,"extension":8423,"proposal":7976},347,"VK_KHR_surface","directfb","Nicolas Caramelli @caramelli","VK_EXT_directfb_surface",{"number":8425,"type":8187,"author":8314,"provisional":7976,"depends":8204,"ratified":8352,"contact":8340,"extension":1417,"proposal":7976},100,{"number":8427,"type":8187,"author":8314,"provisional":7976,"depends":8428,"ratified":8326,"contact":8316,"extension":8429,"proposal":7976},92,"VK_EXT_display_surface_counter+VK_KHR_swapchain","VK_EXT_display_control",{"number":8431,"type":8308,"author":8314,"provisional":7976,"depends":8417,"ratified":8326,"contact":8316,"extension":8432,"proposal":7976},91,"VK_EXT_display_surface_counter",{"number":8434,"type":8187,"author":8249,"provisional":7976,"depends":8435,"ratified":8326,"contact":8340,"extension":8436,"proposal":7249},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":8438,"type":8187,"author":8249,"promotedto":8302,"provisional":7976,"depends":8204,"ratified":8303,"contact":8340,"extension":8439,"proposal":7976},268,"VK_EXT_extended_dynamic_state",{"number":8441,"type":8187,"author":8249,"promotedto":8302,"provisional":7976,"depends":8204,"ratified":8303,"contact":8442,"extension":8443,"proposal":7976},378,"Vikram Kushwaha @vkushwaha-nv","VK_EXT_extended_dynamic_state2",{"number":8445,"type":8187,"author":8314,"provisional":7976,"depends":8204,"ratified":8326,"contact":8340,"extension":8446,"proposal":7249},456,"VK_EXT_extended_dynamic_state3",{"number":8448,"type":8187,"author":8249,"provisional":7976,"depends":8449,"ratified":8326,"contact":8450,"extension":8451,"proposal":7249},454,"VK_KHR_external_memory,VK_VERSION_1_1","Lina Versace @versalinyaa","VK_EXT_external_memory_acquire_unmodified",{"number":8453,"type":8187,"author":8249,"provisional":7976,"depends":8454,"ratified":8352,"contact":8450,"extension":8455,"proposal":7976},126,"VK_KHR_external_memory_fd","VK_EXT_external_memory_dma_buf",{"number":8457,"type":8187,"author":8249,"provisional":7976,"depends":8449,"ratified":8352,"contact":8200,"extension":8458,"proposal":7976},179,"VK_EXT_external_memory_host",{"number":8460,"type":8187,"author":8461,"provisional":7976,"ratified":8326,"contact":8462,"extension":8463,"proposal":7976},171,"QCOM","Matthew Netsch @mnetsch","VK_EXT_filter_cubic",{"number":8465,"type":8187,"author":8249,"provisional":7976,"depends":8204,"contact":8462,"extension":8466,"proposal":7976},219,"VK_EXT_fragment_density_map",{"number":8468,"type":8187,"author":8249,"provisional":7976,"depends":8466,"contact":8462,"extension":8469,"proposal":7976},333,"VK_EXT_fragment_density_map2",{"number":8471,"type":8187,"author":8249,"provisional":7976,"depends":8204,"contact":8340,"extension":8472,"proposal":7976},252,"VK_EXT_fragment_shader_interlock",{"number":8474,"type":8187,"author":8249,"provisional":7976,"ratified":8326,"contact":8475,"extension":8476,"proposal":7249},376,"James Fitzpatrick @jamesfitzpatrick","VK_EXT_frame_boundary",{"number":8478,"type":8187,"author":8249,"provisional":7976,"depends":8479,"platform":8480,"ratified":8326,"contact":8316,"extension":8481,"proposal":7976},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":8483,"type":8187,"author":8249,"promotedto":8484,"provisional":7976,"contact":8485,"extension":8486,"proposal":7976},175,"VK_KHR_global_priority","Andres Rodriguez @lostgoat","VK_EXT_global_priority",{"number":8488,"type":8187,"author":8249,"promotedto":8484,"provisional":7976,"depends":8489,"contact":8413,"extension":8490,"proposal":7976},389,"VK_EXT_global_priority+(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)","VK_EXT_global_priority_query",{"number":8492,"type":8187,"author":8188,"provisional":7976,"depends":8493,"contact":8191,"extension":8494,"proposal":7249},321,"(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_pipeline_library","VK_EXT_graphics_pipeline_library",{"number":8496,"type":8187,"author":8371,"provisional":7976,"depends":8497,"ratified":8352,"contact":8372,"extension":8498,"proposal":7976},106,"VK_KHR_swapchain","VK_EXT_hdr_metadata",{"number":8500,"type":8308,"author":8249,"provisional":7976,"depends":8420,"contact":8501,"extension":8502,"proposal":7976},257,"Lisa Wu @chengtianww","VK_EXT_headless_surface",{"number":8504,"type":8187,"author":8249,"provisional":7976,"depends":8505,"ratified":8326,"contact":8386,"extension":8506,"proposal":7249},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":8508,"type":8187,"author":8249,"promotedto":8399,"provisional":7976,"depends":8204,"contact":8509,"extension":8510,"proposal":7976},262,"Bas Nieuwenhuizen @BNieuwenhuizen","VK_EXT_host_query_reset",{"number":8512,"type":8187,"author":8249,"provisional":7976,"depends":8513,"specialuse":8272,"contact":8327,"extension":8514,"proposal":7976},394,"(VK_KHR_maintenance1+VK_KHR_get_physical_device_properties2),VK_VERSION_1_1","VK_EXT_image_2d_view_of_3d",{"number":8516,"type":8187,"author":8249,"provisional":7976,"depends":8204,"contact":8283,"extension":8517,"proposal":7249},339,"VK_EXT_image_compression_control",{"number":8519,"type":8187,"author":8249,"provisional":7976,"depends":8517,"contact":8283,"extension":8520,"proposal":7976},438,"VK_EXT_image_compression_control_swapchain",{"number":8522,"type":8187,"author":8249,"provisional":7976,"depends":8523,"ratified":8326,"contact":8450,"extension":8524,"proposal":7976},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":8526,"type":8187,"author":8249,"promotedto":8302,"provisional":7976,"depends":8204,"ratified":8303,"contact":8382,"extension":8527,"proposal":7976},336,"VK_EXT_image_robustness",{"number":8529,"type":8187,"author":8249,"provisional":7976,"depends":8513,"specialuse":8378,"contact":8327,"extension":8530,"proposal":7249},419,"VK_EXT_image_sliced_view_of_3d",{"number":8532,"type":8187,"author":8249,"provisional":7976,"depends":8204,"contact":8304,"extension":8533,"proposal":7976},392,"VK_EXT_image_view_min_lod",{"number":8535,"type":8187,"author":8249,"promotedto":8536,"provisional":7976,"depends":8204,"contact":8340,"extension":8537,"proposal":7976},266,"VK_KHR_index_type_uint8","VK_EXT_index_type_uint8",{"number":8539,"type":8187,"author":8249,"promotedto":8302,"provisional":7976,"depends":8540,"contact":8541,"extension":8542,"proposal":7976},139,"(VK_KHR_get_physical_device_properties2+VK_KHR_maintenance1),VK_VERSION_1_1","Daniel Rakos @aqnuep","VK_EXT_inline_uniform_block",{"number":8544,"type":8308,"author":8249,"provisional":7976,"ratified":8326,"contact":8545,"extension":8546,"proposal":7249},497,"Christophe Riccio @christophe","VK_EXT_layer_settings",{"number":8548,"type":8187,"author":8249,"provisional":7976,"depends":8204,"specialuse":8272,"contact":8386,"extension":8549,"proposal":7249},466,"VK_EXT_legacy_dithering",{"number":8551,"type":8187,"author":8249,"provisional":7976,"depends":8552,"ratified":8326,"specialuse":8272,"contact":8327,"extension":8553,"proposal":7249},496,"VK_EXT_vertex_input_dynamic_state","VK_EXT_legacy_vertex_attributes",{"number":8555,"type":8187,"author":8249,"promotedto":1705,"provisional":7976,"depends":8204,"specialuse":8556,"contact":8334,"extension":1712,"proposal":7976},260,"cadsupport",{"number":8558,"type":8187,"author":8249,"promotedto":8559,"provisional":7976,"ratified":8326,"contact":8386,"extension":8560,"proposal":7976},401,"VK_KHR_load_store_op_none","VK_EXT_load_store_op_none",{"number":8562,"type":8187,"author":8249,"provisional":7976,"depends":8563,"ratified":8326,"contact":8564,"extension":8565,"proposal":7249},273,"VK_KHR_map_memory2","Faith Ekstrand @gfxstrand","VK_EXT_map_memory_placed",{"number":8567,"type":8187,"author":8249,"provisional":7976,"depends":8204,"ratified":8326,"contact":8334,"extension":8568,"proposal":7976},238,"VK_EXT_memory_budget",{"number":8570,"type":8187,"author":8249,"provisional":7976,"depends":8204,"ratified":8326,"contact":8334,"extension":8571,"proposal":7976},239,"VK_EXT_memory_priority",{"number":8573,"type":8187,"author":8249,"provisional":7976,"depends":8574,"contact":8575,"extension":8576,"proposal":7249},329,"VK_KHR_spirv_1_4","Christoph Kubisch @pixeljetstream","VK_EXT_mesh_shader",{"number":8578,"type":8187,"author":8249,"provisional":7976,"platform":8579,"contact":8580,"extension":8581,"proposal":7249},312,"metal","Bill Hollings @billhollings","VK_EXT_metal_objects",{"number":8583,"type":8308,"author":8249,"provisional":7976,"depends":8420,"platform":8579,"contact":8584,"extension":8585,"proposal":7976},218,"Dzmitry Malyshau @kvark","VK_EXT_metal_surface",{"number":8587,"type":8187,"author":8249,"provisional":7976,"depends":8204,"contact":8327,"extension":8588,"proposal":7976},393,"VK_EXT_multi_draw",{"number":8590,"type":8187,"author":8249,"provisional":7976,"depends":8591,"contact":8386,"extension":8592,"proposal":7249},377,"(VK_KHR_create_renderpass2+VK_KHR_depth_stencil_resolve),VK_VERSION_1_2","VK_EXT_multisampled_render_to_single_sampled",{"number":8594,"type":8187,"author":8249,"provisional":7976,"depends":8595,"specialuse":8378,"contact":8596,"extension":8597,"proposal":7249},495,"VK_KHR_maintenance3","Joshua Ashton @Joshua-Ashton,Hans-Kristian Arntzen @HansKristian-Work","VK_EXT_mutable_descriptor_type",{"number":8599,"type":8187,"author":8249,"provisional":7976,"depends":8204,"ratified":8326,"contact":8340,"extension":8600,"proposal":7976},452,"VK_EXT_nested_command_buffer",{"number":8602,"type":8187,"author":8249,"provisional":7976,"depends":8204,"specialuse":8603,"contact":8604,"extension":8605,"proposal":7249},423,"d3demulation,glemulation","Georg Lehmann @DadSchoorse","VK_EXT_non_seamless_cube_map",{"number":8607,"type":8187,"author":8249,"provisional":7976,"depends":8608,"ratified":8326,"contact":8609,"extension":8610,"proposal":7249},397,"VK_KHR_acceleration_structure+(VK_KHR_synchronization2,VK_VERSION_1_3)","Christoph Kubisch @pixeljetstream, Eric Werness","VK_EXT_opacity_micromap",{"number":8612,"type":8187,"author":8249,"provisional":7976,"depends":8571,"contact":8340,"extension":8613,"proposal":7976},413,"VK_EXT_pageable_device_local_memory",{"number":8615,"type":8187,"author":8249,"provisional":7976,"depends":8204,"ratified":8352,"contact":8209,"extension":8616,"proposal":7976},213,"VK_EXT_pci_bus_info",{"number":8618,"type":8187,"author":8249,"provisional":7976,"depends":8204,"contact":8619,"extension":8620,"proposal":7976},354,"Simon Ser @emersion","VK_EXT_physical_device_drm",{"number":8622,"type":8187,"author":8188,"promotedto":8302,"provisional":7976,"depends":8204,"contact":8623,"extension":8624,"proposal":7976},298,"Gregory Grebe @grgrebe_amd","VK_EXT_pipeline_creation_cache_control",{"number":8626,"type":8187,"author":8371,"promotedto":8302,"provisional":7976,"specialuse":8199,"contact":8627,"extension":8628,"proposal":7976},193,"Jean-Francois Roy @jfroy","VK_EXT_pipeline_creation_feedback",{"number":8630,"type":8187,"author":8249,"provisional":7976,"depends":8631,"contact":8632,"extension":8633,"proposal":7249},499,"VK_KHR_ray_tracing_pipeline+VK_KHR_pipeline_library","Hans-Kristian Arntzen @HansKristian-Work","VK_EXT_pipeline_library_group_handles",{"number":8635,"type":8187,"author":8249,"provisional":7976,"depends":8204,"contact":8636,"extension":8637,"proposal":7976},373,"Mukund Keshava @mkeshavanv","VK_EXT_pipeline_properties",{"number":8639,"type":8187,"author":8249,"provisional":7976,"depends":8204,"contact":8386,"extension":8640,"proposal":7249},467,"VK_EXT_pipeline_protected_access",{"number":8642,"type":8187,"author":8643,"provisional":7976,"depends":8204,"contact":8644,"extension":8645,"proposal":7976},69,"IMG","Jarred Davies","VK_EXT_pipeline_robustness",{"number":8647,"type":8187,"author":8314,"provisional":7976,"ratified":8326,"contact":8648,"extension":8649,"proposal":7976},156,"Daniel Koch @dgkoch","VK_EXT_post_depth_coverage",{"number":8651,"type":8187,"author":8249,"provisional":7976,"depends":8204,"ratified":8326,"specialuse":8272,"contact":8386,"extension":8652,"proposal":7976},357,"VK_EXT_primitive_topology_list_restart",{"number":8654,"type":8187,"author":8249,"provisional":7976,"depends":8655,"specialuse":8272,"contact":8386,"extension":8656,"proposal":7249},383,"VK_EXT_transform_feedback","VK_EXT_primitives_generated_query",{"number":8658,"type":8187,"author":8314,"promotedto":8302,"provisional":7976,"depends":8204,"contact":8659,"extension":8660,"proposal":7976},296,"Matthew Rusch @mattruschnv","VK_EXT_private_data",{"number":8662,"type":8187,"author":8249,"provisional":7976,"depends":8204,"ratified":8326,"specialuse":8272,"contact":8663,"extension":1659,"proposal":7976},255,"Jesse Hall @jessehall",{"number":8665,"type":8187,"author":8249,"provisional":7976,"depends":8449,"ratified":8352,"contact":8450,"extension":8666,"proposal":7976},127,"VK_EXT_queue_family_foreign",{"number":8668,"type":8187,"author":8281,"provisional":7976,"depends":8204,"contact":8283,"extension":8282,"proposal":7249},464,{"number":8670,"type":8187,"author":8249,"provisional":7976,"depends":8671,"contact":8283,"extension":8672,"proposal":7976},345,"VK_KHR_sampler_ycbcr_conversion,VK_VERSION_1_1","VK_EXT_rgba10x6_formats",{"number":8674,"type":8187,"author":8249,"provisional":7976,"depends":8204,"ratified":8352,"contact":8363,"extension":8675,"proposal":7976},287,"VK_EXT_robustness2",{"number":8677,"type":8187,"author":8188,"provisional":7976,"depends":8204,"ratified":8352,"contact":8200,"extension":1597,"proposal":7976},144,{"number":8679,"type":8187,"author":8314,"promotedto":8399,"provisional":7976,"depends":8204,"contact":8334,"extension":8680,"proposal":7976},131,"VK_EXT_sampler_filter_minmax",{"number":8682,"type":8187,"author":8249,"promotedto":8399,"provisional":7976,"depends":8204,"contact":8191,"extension":8683,"proposal":7976},222,"VK_EXT_scalar_block_layout",{"number":8685,"type":8187,"author":8249,"promotedto":8399,"provisional":7976,"contact":8200,"extension":8686,"proposal":7976},247,"VK_EXT_separate_stencil_usage",{"number":8688,"type":8187,"author":8314,"provisional":7976,"depends":8204,"ratified":8352,"contact":8442,"extension":8689,"proposal":7976},261,"VK_EXT_shader_atomic_float",{"number":8691,"type":8187,"author":8249,"provisional":7976,"depends":8689,"ratified":8326,"contact":8564,"extension":8692,"proposal":7976},274,"VK_EXT_shader_atomic_float2",{"number":8694,"type":8187,"author":8249,"promotedto":8302,"provisional":7976,"depends":8204,"ratified":8303,"contact":8334,"extension":8695,"proposal":7976},277,"VK_EXT_shader_demote_to_helper_invocation",{"number":8697,"type":8187,"author":8249,"provisional":7976,"depends":8204,"ratified":8326,"contact":8191,"extension":8698,"proposal":7976},235,"VK_EXT_shader_image_atomic_int64",{"number":8700,"type":8187,"author":8249,"provisional":7976,"depends":8701,"contact":8632,"extension":8702,"proposal":7249},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":8704,"type":8187,"author":8249,"provisional":7976,"depends":8435,"ratified":8326,"contact":8705,"extension":8706,"proposal":7249},483,"Daniel Story @daniel-story","VK_EXT_shader_object",{"number":8708,"type":8187,"author":8249,"provisional":7976,"ratified":8326,"contact":8292,"extension":8709,"proposal":7249},565,"VK_EXT_shader_replicated_composites",{"number":8711,"type":8187,"author":8249,"provisional":7976,"ratified":8352,"contact":8215,"extension":8712,"proposal":7976},141,"VK_EXT_shader_stencil_export",{"number":8714,"type":8187,"author":8314,"deprecatedby":8399,"provisional":7976,"contact":8648,"extension":8715,"proposal":7976},65,"VK_EXT_shader_subgroup_ballot",{"number":8717,"type":8187,"author":8314,"deprecatedby":8298,"provisional":7976,"contact":8648,"extension":8718,"proposal":7976},66,"VK_EXT_shader_subgroup_vote",{"number":8720,"type":8187,"author":8249,"provisional":7976,"depends":8302,"ratified":8326,"contact":8283,"extension":8721,"proposal":7249},396,"VK_EXT_shader_tile_image",{"number":8723,"type":8187,"author":8314,"promotedto":8399,"provisional":7976,"contact":8648,"extension":8724,"proposal":7976},163,"VK_EXT_shader_viewport_index_layer",{"number":8726,"type":8187,"author":8249,"promotedto":8302,"provisional":7976,"depends":8298,"ratified":8303,"contact":8727,"extension":8728,"proposal":7976},226,"Neil Henning @sheredom","VK_EXT_subgroup_size_control",{"number":8730,"type":8187,"author":8249,"provisional":7976,"depends":8204,"contact":8731,"extension":8732,"proposal":7249},459,"Ting Wei @catweiting","VK_EXT_subpass_merge_feedback",{"number":8734,"type":8308,"author":8249,"provisional":7976,"depends":8735,"contact":8386,"extension":8736,"proposal":7249},275,"VK_KHR_surface+VK_KHR_get_surface_capabilities2","VK_EXT_surface_maintenance1",{"number":8738,"type":8308,"author":8371,"provisional":7976,"depends":8420,"contact":8372,"extension":8739,"proposal":7976},105,"VK_EXT_swapchain_colorspace",{"number":8741,"type":8187,"author":8249,"provisional":7976,"depends":8742,"contact":8386,"extension":8743,"proposal":7249},276,"VK_KHR_swapchain+VK_EXT_surface_maintenance1+(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)","VK_EXT_swapchain_maintenance1",{"number":8745,"type":8187,"author":8249,"promotedto":8302,"provisional":7976,"depends":8204,"ratified":8303,"contact":8334,"extension":8746,"proposal":7976},282,"VK_EXT_texel_buffer_alignment",{"number":8748,"type":8187,"author":8281,"promotedto":8302,"provisional":7976,"depends":8204,"ratified":8303,"contact":8283,"extension":8749,"proposal":7976},67,"VK_EXT_texture_compression_astc_hdr",{"number":8751,"type":8187,"author":8249,"promotedto":8302,"provisional":7976,"contact":8191,"extension":8752,"proposal":7976},246,"VK_EXT_tooling_info",{"number":8077,"type":8187,"author":8314,"provisional":7976,"depends":8204,"ratified":8326,"specialuse":8754,"contact":8340,"extension":8655,"proposal":7976},"glemulation,d3demulation,devtools",{"number":8756,"type":8187,"author":8371,"provisional":7976,"contact":8757,"extension":8758,"proposal":7976},161,"Cort Stratton @cdwfs","VK_EXT_validation_cache",{"number":8760,"type":8308,"author":8761,"deprecatedby":8546,"provisional":7976,"specialuse":8157,"contact":8762,"extension":8763,"proposal":7976},248,"LUNARG","Karl Schultz @karl-lunarg","VK_EXT_validation_features",{"number":8765,"type":8308,"author":8371,"deprecatedby":8546,"provisional":7976,"specialuse":8157,"contact":8766,"extension":8767,"proposal":7976},62,"Tobin Ehlis @tobine","VK_EXT_validation_flags",{"number":8769,"type":8187,"author":8314,"promotedto":8770,"provisional":7976,"depends":8204,"contact":8357,"extension":8771,"proposal":7976},191,"VK_KHR_vertex_attribute_divisor","VK_EXT_vertex_attribute_divisor",{"number":8773,"type":8187,"author":8249,"provisional":7976,"depends":8204,"ratified":8326,"contact":8340,"extension":8552,"proposal":7976},353,{"number":8775,"type":8187,"author":8249,"promotedto":8302,"provisional":7976,"depends":8671,"ratified":8303,"contact":8776,"extension":8777,"proposal":7976},331,"Tony Zlatinski @tzlatinski","VK_EXT_ycbcr_2plane_444_formats",{"number":8779,"type":8187,"author":8249,"provisional":7976,"depends":8671,"ratified":8352,"contact":8340,"extension":8780,"proposal":7976},253,"VK_EXT_ycbcr_image_arrays",{"number":8782,"type":8187,"author":8783,"provisional":7976,"depends":8784,"platform":8785,"contact":8786,"extension":8787,"proposal":7976},367,"FUCHSIA","VK_FUCHSIA_external_memory+(VK_KHR_sampler_ycbcr_conversion,VK_VERSION_1_1)","fuchsia","John Rosasco @rosasco","VK_FUCHSIA_buffer_collection",{"number":8789,"type":8187,"author":8783,"provisional":7976,"depends":8790,"platform":8785,"contact":8786,"extension":8791,"proposal":7976},365,"(VK_KHR_external_memory_capabilities+VK_KHR_external_memory),VK_VERSION_1_1","VK_FUCHSIA_external_memory",{"number":8793,"type":8187,"author":8783,"provisional":7976,"depends":8794,"platform":8785,"contact":8786,"extension":8795,"proposal":7976},366,"VK_KHR_external_semaphore_capabilities+VK_KHR_external_semaphore","VK_FUCHSIA_external_semaphore",{"number":8797,"type":8308,"author":8783,"provisional":7976,"depends":8420,"platform":8785,"contact":8798,"extension":8799,"proposal":7976},215,"Craig Stout @cdotstout","VK_FUCHSIA_imagepipe_surface",{"number":8801,"type":8187,"author":8802,"provisional":7976,"depends":8803,"platform":8804,"contact":8627,"extension":8805,"proposal":7976},192,"GGP","VK_KHR_swapchain+VK_GGP_stream_descriptor_surface","ggp","VK_GGP_frame_token",{"number":8807,"type":8308,"author":8802,"provisional":7976,"depends":8420,"platform":8804,"contact":8627,"extension":8808,"proposal":7976},50,"VK_GGP_stream_descriptor_surface",{"number":8810,"type":8187,"author":8371,"provisional":7976,"contact":8811,"extension":8812,"proposal":7976},225,"Hai Nguyen @chaoticbob","VK_GOOGLE_decorate_string",{"number":8814,"type":8187,"author":8371,"provisional":7976,"depends":8497,"contact":8815,"extension":8816,"proposal":7976},93,"Ian Elliott @ianelliottus","VK_GOOGLE_display_timing",{"number":8818,"type":8187,"author":8371,"provisional":7976,"contact":8811,"extension":8819,"proposal":7976},224,"VK_GOOGLE_hlsl_functionality1",{"number":8821,"type":8308,"author":8371,"provisional":7976,"depends":8420,"specialuse":8272,"contact":8386,"extension":8822,"proposal":7249},434,"VK_GOOGLE_surfaceless_query",{"number":8824,"type":8187,"author":8371,"provisional":7976,"contact":8825,"extension":8826,"proposal":7976},290,"Kaye Mason @chaleur","VK_GOOGLE_user_type",{"number":8828,"type":8187,"author":8829,"provisional":7976,"depends":8204,"contact":8830,"extension":8831,"proposal":7249},405,"HUAWEI","Yuchang Wang @richard_Wang2","VK_HUAWEI_cluster_culling_shader",{"number":8833,"type":8187,"author":8834,"provisional":7976,"depends":8835,"contact":8836,"extension":8837,"proposal":7249},371,"Huawei","VK_KHR_ray_tracing_pipeline+(VK_KHR_synchronization2,VK_VERSION_1_3)","Pan Gao @PanGao-h","VK_HUAWEI_invocation_mask",{"number":8839,"type":8187,"author":8829,"provisional":7976,"depends":8840,"contact":8836,"extension":8841,"proposal":7976},370,"((VK_KHR_create_renderpass2,VK_VERSION_1_2)+VK_KHR_synchronization2),VK_VERSION_1_3","VK_HUAWEI_subpass_shading",{"number":8027,"type":8187,"author":8643,"provisional":7976,"contact":8191,"extension":8843,"proposal":7976},"VK_IMG_filter_cubic",{"number":8845,"type":8187,"author":8643,"deprecatedby":8846,"provisional":7976,"contact":8847,"extension":8848,"proposal":7976},55,null,"Stuart Smith","VK_IMG_format_pvrtc",{"number":8850,"type":8187,"author":8643,"provisional":7976,"depends":8204,"specialuse":8272,"contact":8475,"extension":8851,"proposal":7976},111,"VK_IMG_relaxed_line_rasterization",{"number":8853,"type":8187,"author":8854,"provisional":7976,"specialuse":8199,"contact":8855,"extension":8856,"proposal":7976},211,"INTEL","Lionel Landwerlin @llandwerlin","VK_INTEL_performance_query",{"number":8858,"type":8187,"author":8854,"provisional":7976,"depends":8204,"contact":8859,"extension":8860,"proposal":7976},210,"Ian Romanick @ianromanick","VK_INTEL_shader_integer_functions2",{"number":8862,"type":8187,"author":8863,"promotedto":8298,"provisional":7976,"depends":8864,"ratified":8326,"contact":8283,"extension":8865,"proposal":7976},84,"KHR","(VK_KHR_get_physical_device_properties2+VK_KHR_storage_buffer_storage_class),VK_VERSION_1_1","VK_KHR_16bit_storage",{"number":8867,"type":8187,"author":8863,"promotedto":8399,"provisional":7976,"depends":8864,"ratified":8326,"contact":8868,"extension":8869,"proposal":7976},178,"Alexander Galazin @alegal-arm","VK_KHR_8bit_storage",{"number":8871,"type":8187,"author":8863,"provisional":7976,"depends":8872,"ratified":8326,"contact":8648,"extension":8873,"proposal":7976},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":8001,"type":8308,"author":8863,"provisional":7976,"depends":8420,"platform":8271,"ratified":8326,"contact":8278,"extension":8875,"proposal":7976},"VK_KHR_android_surface",{"number":8877,"type":8187,"author":8863,"promotedto":8298,"provisional":7976,"ratified":8326,"contact":8191,"extension":8878,"proposal":7976},158,"VK_KHR_bind_memory2",{"number":8880,"type":8187,"author":8863,"promotedto":8399,"provisional":7976,"depends":8881,"ratified":8326,"contact":8334,"extension":8344,"proposal":7976},258,"(VK_KHR_get_physical_device_properties2+VK_KHR_device_group),VK_VERSION_1_1",{"number":8883,"type":8187,"author":8863,"provisional":7976,"depends":8204,"ratified":8352,"contact":8541,"extension":8348,"proposal":7976},544,{"number":8885,"type":8187,"author":8863,"provisional":7976,"depends":8886,"ratified":8326,"contact":8887,"extension":8888,"proposal":7249},512,"VK_KHR_get_physical_device_properties2","Jean-Noe Morissette @MagicPoncho","VK_KHR_compute_shader_derivatives",{"number":8890,"type":8187,"author":8863,"provisional":7976,"depends":8204,"ratified":8326,"contact":8292,"extension":8891,"proposal":7249},507,"VK_KHR_cooperative_matrix",{"number":8893,"type":8187,"author":8863,"promotedto":8302,"provisional":7976,"depends":8204,"ratified":8352,"contact":8462,"extension":8894,"proposal":7976},338,"VK_KHR_copy_commands2",{"number":8896,"type":8187,"author":8863,"promotedto":8399,"provisional":7976,"depends":8897,"ratified":8326,"contact":8898,"extension":8899,"proposal":7976},110,"(VK_KHR_multiview+VK_KHR_maintenance2),VK_VERSION_1_1","Tobias Hector @tobias","VK_KHR_create_renderpass2",{"number":8901,"type":8187,"author":8863,"promotedto":8298,"provisional":7976,"depends":8902,"ratified":8326,"contact":8316,"extension":8903,"proposal":7976},128,"VK_KHR_get_memory_requirements2,VK_VERSION_1_1","VK_KHR_dedicated_allocation",{"number":8905,"type":8187,"author":8863,"provisional":7976,"ratified":8326,"contact":8906,"extension":8907,"proposal":7976},269,"Josh Barczak @jbarczak","VK_KHR_deferred_host_operations",{"number":8909,"type":8187,"author":8863,"promotedto":8399,"provisional":7976,"depends":8910,"ratified":8326,"contact":8911,"extension":8912,"proposal":7976},200,"VK_KHR_create_renderpass2,VK_VERSION_1_2","Jan-Harald Fredriksen @janharald","VK_KHR_depth_stencil_resolve",{"number":8914,"type":8187,"author":8863,"promotedto":8298,"provisional":7976,"ratified":8326,"contact":8915,"extension":8916,"proposal":7976},86,"Markus Tavenrath @mtavenrath","VK_KHR_descriptor_update_template",{"number":8918,"type":8187,"author":8863,"promotedto":8298,"provisional":7976,"depends":8919,"ratified":8326,"contact":8334,"extension":8920,"proposal":7976},61,"VK_KHR_device_group_creation","VK_KHR_device_group",{"number":8922,"type":8308,"author":8863,"promotedto":8298,"provisional":7976,"ratified":8326,"contact":8334,"extension":8919,"proposal":7976},71,{"number":7136,"type":8308,"author":8863,"provisional":7976,"depends":8420,"ratified":8352,"contact":8924,"extension":8417,"proposal":7976},"James Jones @cubanismo,Norbert Nopper @FslNopper",{"number":7191,"type":8187,"author":8863,"provisional":7976,"depends":8926,"ratified":8352,"contact":8316,"extension":8927,"proposal":7976},"VK_KHR_swapchain+VK_KHR_display","VK_KHR_display_swapchain",{"number":8929,"type":8187,"author":8863,"promotedto":8399,"provisional":7976,"ratified":8326,"contact":8340,"extension":8212,"proposal":7976},170,{"number":8931,"type":8187,"author":8863,"promotedto":8399,"provisional":7976,"depends":8204,"ratified":8326,"contact":8200,"extension":8932,"proposal":7976},197,"VK_KHR_driver_properties",{"number":8139,"type":8187,"author":8863,"promotedto":8302,"provisional":7976,"depends":8934,"ratified":8326,"contact":8191,"extension":8935,"proposal":7249},"((VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_depth_stencil_resolve),VK_VERSION_1_2","VK_KHR_dynamic_rendering",{"number":8937,"type":8187,"author":8188,"provisional":7976,"depends":8938,"ratified":8326,"contact":8191,"extension":8939,"proposal":7249},233,"VK_KHR_dynamic_rendering,VK_VERSION_1_3","VK_KHR_dynamic_rendering_local_read",{"number":8941,"type":8187,"author":8863,"promotedto":8298,"provisional":7976,"depends":8942,"ratified":8326,"contact":8278,"extension":8943,"proposal":7976},114,"VK_KHR_external_fence_capabilities","VK_KHR_external_fence",{"number":8945,"type":8308,"author":8863,"promotedto":8298,"provisional":7976,"depends":8204,"ratified":8326,"contact":8278,"extension":8942,"proposal":7976},113,{"number":8947,"type":8187,"author":8863,"provisional":7976,"depends":8948,"ratified":8352,"contact":8278,"extension":8949,"proposal":7976},116,"VK_KHR_external_fence,VK_VERSION_1_1","VK_KHR_external_fence_fd",{"number":8951,"type":8187,"author":8863,"provisional":7976,"depends":8943,"platform":8480,"ratified":8326,"contact":8278,"extension":8952,"proposal":7976},115,"VK_KHR_external_fence_win32",{"number":8954,"type":8187,"author":8863,"promotedto":8298,"provisional":7976,"depends":8955,"ratified":8326,"contact":8316,"extension":8956,"proposal":7976},73,"VK_KHR_external_memory_capabilities,VK_VERSION_1_1","VK_KHR_external_memory",{"number":8958,"type":8308,"author":8863,"promotedto":8298,"provisional":7976,"depends":8204,"ratified":8326,"contact":8316,"extension":8959,"proposal":7976},72,"VK_KHR_external_memory_capabilities",{"number":8961,"type":8187,"author":8863,"provisional":7976,"depends":8449,"ratified":8352,"contact":8316,"extension":8454,"proposal":7976},75,{"number":8963,"type":8187,"author":8863,"provisional":7976,"depends":8449,"platform":8480,"ratified":8326,"contact":8316,"extension":8964,"proposal":7976},74,"VK_KHR_external_memory_win32",{"number":8966,"type":8187,"author":8863,"promotedto":8298,"provisional":7976,"depends":8967,"ratified":8326,"contact":8316,"extension":8968,"proposal":7976},78,"VK_KHR_external_semaphore_capabilities","VK_KHR_external_semaphore",{"number":8970,"type":8308,"author":8863,"promotedto":8298,"provisional":7976,"depends":8204,"ratified":8326,"contact":8316,"extension":8967,"proposal":7976},77,{"number":8972,"type":8187,"author":8863,"provisional":7976,"depends":8973,"ratified":8352,"contact":8316,"extension":8974,"proposal":7976},80,"VK_KHR_external_semaphore,VK_VERSION_1_1","VK_KHR_external_semaphore_fd",{"number":8976,"type":8187,"author":8863,"provisional":7976,"depends":8968,"platform":8480,"ratified":8326,"contact":8316,"extension":8977,"proposal":7976},79,"VK_KHR_external_semaphore_win32",{"number":8979,"type":8187,"author":8863,"promotedto":8302,"provisional":7976,"depends":8204,"ratified":8326,"contact":8855,"extension":8980,"proposal":7976},361,"VK_KHR_format_feature_flags2",{"number":8982,"type":8187,"author":8863,"provisional":7976,"depends":8204,"ratified":8326,"contact":8195,"extension":8983,"proposal":7249},323,"VK_KHR_fragment_shader_barycentric",{"number":8985,"type":8187,"author":8863,"provisional":7976,"depends":8986,"ratified":8352,"contact":8191,"extension":8987,"proposal":7249},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":8989,"type":8308,"author":8863,"provisional":7976,"depends":8417,"ratified":8352,"contact":8316,"extension":8990,"proposal":7976},122,"VK_KHR_get_display_properties2",{"number":8992,"type":8187,"author":8863,"promotedto":8298,"provisional":7976,"ratified":8326,"contact":8564,"extension":8993,"proposal":7976},147,"VK_KHR_get_memory_requirements2",{"number":8995,"type":8308,"author":8863,"promotedto":8298,"provisional":7976,"ratified":8326,"contact":8334,"extension":8886,"proposal":7976},60,{"number":8997,"type":8308,"author":8863,"provisional":7976,"depends":8420,"ratified":8352,"contact":8316,"extension":8998,"proposal":7976},120,"VK_KHR_get_surface_capabilities2",{"number":9000,"type":8187,"author":8863,"provisional":7976,"depends":8204,"ratified":8352,"contact":8191,"extension":8484,"proposal":7976},189,{"number":9002,"type":8187,"author":8863,"promotedto":8399,"provisional":7976,"ratified":8326,"contact":8564,"extension":9003,"proposal":7976},148,"VK_KHR_image_format_list",{"number":9005,"type":8187,"author":8863,"promotedto":8399,"provisional":7976,"depends":9006,"ratified":8326,"contact":8898,"extension":9007,"proposal":7976},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":9009,"type":8187,"author":8863,"provisional":7976,"depends":8497,"ratified":8352,"contact":8815,"extension":9010,"proposal":7976},85,"VK_KHR_incremental_present",{"number":9012,"type":8187,"author":8863,"provisional":7976,"depends":8204,"ratified":8352,"contact":8340,"extension":8536,"proposal":7976},534,{"number":9014,"type":8187,"author":8863,"provisional":7976,"depends":8204,"ratified":8352,"contact":8340,"extension":1705,"proposal":7976},535,{"number":9016,"type":8187,"author":8863,"provisional":7976,"ratified":8326,"contact":8386,"extension":8559,"proposal":7249},527,{"number":9018,"type":8187,"author":8863,"promotedto":8298,"provisional":7976,"ratified":8326,"contact":8340,"extension":8232,"proposal":7976},70,{"number":9020,"type":8187,"author":8863,"promotedto":8298,"provisional":7976,"ratified":8326,"contact":9021,"extension":9022,"proposal":7976},118,"Michael Worcester @michaelworcester","VK_KHR_maintenance2",{"number":9024,"type":8187,"author":8863,"promotedto":8298,"provisional":7976,"depends":8204,"ratified":8326,"contact":8334,"extension":8595,"proposal":7976},169,{"number":9026,"type":8187,"author":8863,"promotedto":8302,"provisional":7976,"depends":8298,"ratified":8326,"contact":8340,"extension":9027,"proposal":7976},414,"VK_KHR_maintenance4",{"number":9029,"type":8187,"author":8863,"provisional":7976,"depends":9030,"ratified":8326,"contact":9031,"extension":9032,"proposal":7249},471,"(VK_VERSION_1_1+VK_KHR_dynamic_rendering),VK_VERSION_1_3","Stu Smith @stu-s","VK_KHR_maintenance5",{"number":9034,"type":8187,"author":8863,"provisional":7976,"depends":8298,"ratified":8326,"contact":9035,"extension":9036,"proposal":7249},546,"Jon Leech @oddhack","VK_KHR_maintenance6",{"number":9038,"type":8187,"author":8863,"provisional":7976,"depends":8298,"ratified":8326,"contact":8327,"extension":9039,"proposal":7249},563,"VK_KHR_maintenance7",{"number":9041,"type":8187,"author":8863,"provisional":7976,"ratified":8326,"contact":8564,"extension":8563,"proposal":7249},272,{"number":9043,"type":8187,"author":8863,"promotedto":8298,"provisional":7976,"depends":8204,"ratified":8326,"contact":8334,"extension":9044,"proposal":7976},54,"VK_KHR_multiview",{"extension":9046,"proposal":7976},"VK_KHR_object_refresh",{"number":9048,"type":8187,"author":8863,"provisional":7976,"depends":8204,"ratified":8352,"specialuse":8199,"contact":9049,"extension":9050,"proposal":7976},117,"Alon Or-bach @alonorbach","VK_KHR_performance_query",{"number":9052,"type":8187,"author":8863,"provisional":7976,"depends":9032,"ratified":8326,"contact":9031,"extension":9053,"proposal":7249},484,"VK_KHR_pipeline_binary",{"number":9055,"type":8187,"author":8863,"provisional":7976,"depends":8204,"ratified":8326,"specialuse":8199,"contact":8564,"extension":9056,"proposal":7976},270,"VK_KHR_pipeline_executable_properties",{"number":9058,"type":8187,"author":8863,"provisional":7976,"ratified":8326,"contact":8575,"extension":9059,"proposal":7976},291,"VK_KHR_pipeline_library",{"number":9061,"type":8308,"author":8863,"provisional":7976,"ratified":8326,"contact":9062,"extension":9063,"proposal":7976},395,"Charles Giessen @charles-lunarg","VK_KHR_portability_enumeration",{"number":9065,"type":8187,"author":8863,"provisional":7249,"depends":8204,"platform":8190,"ratified":8326,"contact":8580,"extension":9066,"proposal":7976},164,"VK_KHR_portability_subset",{"number":9068,"type":8187,"author":8863,"provisional":7976,"depends":9069,"ratified":8326,"contact":9070,"extension":9071,"proposal":7976},295,"VK_KHR_swapchain+VK_KHR_get_physical_device_properties2,VK_VERSION_1_1","Keith Packard @keithp","VK_KHR_present_id",{"number":9073,"type":8187,"author":8863,"provisional":7976,"depends":9074,"ratified":8326,"contact":9070,"extension":9075,"proposal":7976},249,"VK_KHR_swapchain+VK_KHR_present_id","VK_KHR_present_wait",{"number":9077,"type":8187,"author":8863,"provisional":7976,"depends":8204,"ratified":8326,"contact":8334,"extension":9078,"proposal":7976},81,"VK_KHR_push_descriptor",{"number":9080,"type":8187,"author":8863,"provisional":7976,"depends":9081,"ratified":8326,"contact":8648,"extension":9082,"proposal":7976},349,"VK_KHR_spirv_1_4+VK_KHR_acceleration_structure","VK_KHR_ray_query",{"number":9084,"type":8187,"author":8863,"provisional":7976,"depends":8873,"ratified":8326,"contact":8648,"extension":9085,"proposal":7976},387,"VK_KHR_ray_tracing_maintenance1",{"number":9087,"type":8187,"author":8863,"provisional":7976,"depends":9081,"ratified":8326,"contact":8648,"extension":9088,"proposal":7976},348,"VK_KHR_ray_tracing_pipeline",{"number":9090,"type":8187,"author":8863,"provisional":7976,"depends":8873,"ratified":8326,"contact":9091,"extension":9092,"proposal":7249},482,"Eric Werness","VK_KHR_ray_tracing_position_fetch",{"number":9094,"type":8187,"author":8863,"promotedto":8298,"provisional":7976,"ratified":8326,"contact":9095,"extension":9096,"proposal":7976},145,"John Kessenich @johnkslang","VK_KHR_relaxed_block_layout",{"number":8023,"type":8187,"author":8863,"promotedto":8399,"provisional":7976,"ratified":8326,"contact":8191,"extension":9098,"proposal":7976},"VK_KHR_sampler_mirror_clamp_to_edge",{"number":9100,"type":8187,"author":8863,"promotedto":8298,"provisional":7976,"depends":9101,"ratified":8326,"contact":9102,"extension":9103,"proposal":7976},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":9105,"type":8187,"author":8863,"promotedto":8399,"provisional":7976,"depends":8986,"ratified":8326,"contact":8340,"extension":9106,"proposal":7976},242,"VK_KHR_separate_depth_stencil_layouts",{"number":9108,"type":8187,"author":8863,"promotedto":8399,"provisional":7976,"depends":8204,"ratified":8326,"contact":9109,"extension":9110,"proposal":7976},181,"Aaron Hagan @ahagan","VK_KHR_shader_atomic_int64",{"number":9112,"type":8187,"author":8863,"provisional":7976,"depends":8204,"ratified":8352,"contact":9109,"extension":9113,"proposal":7976},182,"VK_KHR_shader_clock",{"number":9115,"type":8187,"author":8863,"promotedto":8298,"provisional":7976,"ratified":8326,"contact":8648,"extension":9116,"proposal":7976},64,"VK_KHR_shader_draw_parameters",{"number":9118,"type":8187,"author":8863,"provisional":7976,"depends":8204,"ratified":8326,"contact":8292,"extension":9119,"proposal":7249},545,"VK_KHR_shader_expect_assume",{"number":9121,"type":8187,"author":8863,"promotedto":8399,"provisional":7976,"depends":8204,"ratified":8326,"contact":8868,"extension":8218,"proposal":7976},83,{"number":9123,"type":8187,"author":8863,"promotedto":8399,"provisional":7976,"depends":8204,"ratified":8326,"contact":8868,"extension":9124,"proposal":7976},198,"VK_KHR_shader_float_controls",{"number":9126,"type":8187,"author":8863,"provisional":7976,"depends":9127,"ratified":8326,"contact":8382,"extension":9128,"proposal":7249},529,"VK_VERSION_1_1+VK_KHR_shader_float_controls","VK_KHR_shader_float_controls2",{"number":9130,"type":8187,"author":8863,"promotedto":8302,"provisional":7976,"depends":8204,"ratified":8326,"contact":8292,"extension":9131,"proposal":7249},281,"VK_KHR_shader_integer_dot_product",{"number":9133,"type":8187,"author":8863,"provisional":7976,"depends":8298,"ratified":8326,"contact":9134,"extension":9135,"proposal":7249},435,"Alan Baker @alan-baker","VK_KHR_shader_maximal_reconvergence",{"number":9137,"type":8187,"author":8863,"promotedto":8302,"provisional":7976,"ratified":8326,"contact":8368,"extension":9138,"proposal":7976},294,"VK_KHR_shader_non_semantic_info",{"number":9140,"type":8187,"author":8863,"provisional":7976,"depends":9141,"ratified":8326,"contact":8191,"extension":9142,"proposal":7249},236,"VK_VERSION_1_1+VK_KHR_vulkan_memory_model+VK_KHR_shader_maximal_reconvergence","VK_KHR_shader_quad_control",{"number":9144,"type":8187,"author":8863,"provisional":7976,"ratified":8326,"contact":9145,"extension":9146,"proposal":7249},559,"Nathan Gauër @Keenuts","VK_KHR_shader_relaxed_extended_instruction",{"number":9148,"type":8187,"author":8863,"promotedto":8399,"provisional":7976,"depends":8298,"ratified":8326,"contact":8727,"extension":9149,"proposal":7976},176,"VK_KHR_shader_subgroup_extended_types",{"number":9151,"type":8187,"author":8863,"provisional":7976,"ratified":8326,"contact":8292,"extension":9152,"proposal":7249},417,"VK_KHR_shader_subgroup_rotate",{"number":9154,"type":8187,"author":8863,"provisional":7976,"depends":8298,"ratified":8326,"contact":9134,"extension":9155,"proposal":7976},324,"VK_KHR_shader_subgroup_uniform_control_flow",{"number":9157,"type":8187,"author":8863,"promotedto":8302,"provisional":7976,"depends":8204,"ratified":8352,"contact":8278,"extension":9158,"proposal":7976},216,"VK_KHR_shader_terminate_invocation",{"number":9160,"type":8187,"author":8863,"provisional":7976,"depends":9161,"ratified":8352,"contact":9049,"extension":9162,"proposal":7976},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":9164,"type":8187,"author":8863,"promotedto":8399,"provisional":7976,"depends":9127,"ratified":8326,"contact":8278,"extension":8574,"proposal":7976},237,{"number":9166,"type":8187,"author":8863,"promotedto":8298,"provisional":7976,"ratified":8326,"contact":8868,"extension":9167,"proposal":7976},132,"VK_KHR_storage_buffer_storage_class",{"number":7018,"type":8308,"author":8863,"provisional":7976,"ratified":8352,"contact":9169,"extension":8420,"proposal":7976},"James Jones @cubanismo,Ian Elliott @ianelliottus",{"number":9171,"type":8308,"author":8863,"provisional":7976,"depends":9172,"ratified":8326,"contact":9173,"extension":9174,"proposal":7976},240,"VK_VERSION_1_1+VK_KHR_get_surface_capabilities2","Sandeep Shinde @sashinde","VK_KHR_surface_protected_capabilities",{"number":7080,"type":8187,"author":8863,"provisional":7976,"depends":8420,"ratified":8352,"contact":9169,"extension":8497,"proposal":7976},{"number":9177,"type":8187,"author":8863,"provisional":7976,"depends":9178,"ratified":8352,"contact":8200,"extension":9179,"proposal":7976},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":9181,"type":8187,"author":8863,"promotedto":8302,"provisional":7976,"depends":8204,"ratified":8352,"contact":8191,"extension":9182,"proposal":7976},315,"VK_KHR_synchronization2",{"number":9184,"type":8187,"author":8863,"promotedto":8399,"provisional":7976,"depends":8204,"ratified":8326,"contact":8564,"extension":9185,"proposal":7976},208,"VK_KHR_timeline_semaphore",{"number":9187,"type":8187,"author":8863,"promotedto":8399,"provisional":7976,"depends":8204,"ratified":8326,"contact":8382,"extension":9188,"proposal":7976},254,"VK_KHR_uniform_buffer_standard_layout",{"number":9190,"type":8187,"author":8863,"promotedto":8298,"provisional":7976,"depends":8864,"ratified":8326,"contact":8278,"extension":9191,"proposal":7976},121,"VK_KHR_variable_pointers",{"number":9193,"type":8187,"author":8863,"provisional":7976,"depends":8204,"ratified":8352,"contact":8386,"extension":8770,"proposal":7249},526,{"number":9195,"type":8187,"author":8863,"provisional":7976,"depends":9196,"ratified":8326,"contact":8541,"extension":9197,"proposal":7249},513,"VK_KHR_video_decode_queue","VK_KHR_video_decode_av1",{"number":8124,"type":8187,"author":8863,"provisional":7976,"depends":9196,"ratified":8326,"contact":9199,"extension":9200,"proposal":7249},"peter.fang@amd.com","VK_KHR_video_decode_h264",{"number":9202,"type":8187,"author":8863,"provisional":7976,"depends":9196,"ratified":8326,"contact":9199,"extension":9203,"proposal":7249},188,"VK_KHR_video_decode_h265",{"number":8062,"type":8187,"author":8863,"provisional":7976,"depends":9205,"ratified":8326,"contact":9206,"extension":9196,"proposal":7249},"VK_KHR_video_queue+(VK_KHR_synchronization2,VK_VERSION_1_3)","jake.beju@amd.com",{"number":8116,"type":8187,"author":8863,"provisional":7976,"depends":9208,"ratified":8326,"contact":9209,"extension":9210,"proposal":7249},"VK_KHR_video_encode_queue","Ahmed Abdelkhalek @aabdelkh","VK_KHR_video_encode_h264",{"number":8120,"type":8187,"author":8863,"provisional":7976,"depends":9208,"ratified":8326,"contact":9209,"extension":9212,"proposal":7249},"VK_KHR_video_encode_h265",{"number":9214,"type":8187,"author":8863,"provisional":7976,"depends":9205,"ratified":8326,"contact":9209,"extension":9208,"proposal":7249},300,{"number":9216,"type":8187,"author":8863,"provisional":7976,"depends":9217,"ratified":8326,"contact":8541,"extension":9218,"proposal":7249},516,"VK_KHR_video_queue","VK_KHR_video_maintenance1",{"number":8058,"type":8187,"author":8863,"provisional":7976,"depends":9220,"ratified":8326,"contact":8776,"extension":9217,"proposal":7249},"(VK_VERSION_1_1+VK_KHR_synchronization2),VK_VERSION_1_3",{"number":9222,"type":8187,"author":8863,"promotedto":8399,"provisional":7976,"depends":8204,"ratified":8326,"contact":8334,"extension":9223,"proposal":7976},212,"VK_KHR_vulkan_memory_model",{"number":7995,"type":8308,"author":8863,"provisional":7976,"depends":8420,"platform":9225,"ratified":8326,"contact":9226,"extension":9227,"proposal":7976},"wayland","Jesse Hall @critsec,Ian Elliott @ianelliottus","VK_KHR_wayland_surface",{"number":9229,"type":8187,"author":8863,"provisional":7976,"depends":8964,"platform":8480,"ratified":8326,"contact":9230,"extension":9231,"proposal":7976},76,"Carsten Rohde @crohde","VK_KHR_win32_keyed_mutex",{"number":8003,"type":8308,"author":8863,"provisional":7976,"depends":8420,"platform":8480,"ratified":8326,"contact":9226,"extension":9233,"proposal":7976},"VK_KHR_win32_surface",{"number":9235,"type":8187,"author":8863,"provisional":7976,"depends":8204,"ratified":8326,"contact":9236,"extension":9237,"proposal":7976},337,"Caio Marcelo de Oliveira Filho @cmarcelo","VK_KHR_workgroup_memory_explicit_layout",{"number":7255,"type":8308,"author":8863,"provisional":7976,"depends":8420,"platform":9239,"ratified":8326,"contact":9226,"extension":9240,"proposal":7976},"xcb","VK_KHR_xcb_surface",{"number":7245,"type":8308,"author":8863,"provisional":7976,"depends":8420,"platform":9242,"ratified":8326,"contact":9226,"extension":9243,"proposal":7976},"xlib","VK_KHR_xlib_surface",{"number":9245,"type":8187,"author":8863,"promotedto":8302,"provisional":7976,"depends":8204,"ratified":8326,"contact":9134,"extension":9246,"proposal":7976},326,"VK_KHR_zero_initialize_workgroup_memory",{"number":9248,"type":8308,"author":8761,"provisional":7976,"contact":9062,"extension":9249,"proposal":7249},460,"VK_LUNARG_direct_driver_loading",{"number":9251,"type":8187,"author":9252,"provisional":7976,"depends":8204,"specialuse":8378,"contact":8632,"extension":9253,"proposal":7976},576,"MESA","VK_MESA_image_alignment_control",{"number":9255,"type":8187,"author":9256,"provisional":7976,"depends":8204,"contact":9257,"extension":9258,"proposal":7249},531,"MSFT","Jesse Natalie @jenatali","VK_MSFT_layered_driver",{"number":9260,"type":8308,"author":9261,"deprecatedby":8585,"provisional":7976,"depends":8420,"platform":9262,"contact":8580,"extension":9263,"proposal":7976},123,"MVK","ios","VK_MVK_ios_surface",{"number":9265,"type":8308,"author":9261,"deprecatedby":8585,"provisional":7976,"depends":8420,"platform":9266,"contact":8580,"extension":9267,"proposal":7976},124,"macos","VK_MVK_macos_surface",{"number":9269,"type":8308,"author":9270,"provisional":7976,"depends":8420,"platform":9271,"contact":9272,"extension":9273,"proposal":7976},63,"NN","vi","Mathias Heyer gitlab:@mheyer","VK_NN_vi_surface",{"number":8081,"type":8187,"author":9275,"provisional":7976,"contact":9276,"extension":9277,"proposal":7976},"NVX","Eric Werness @ewerness-nv,Liam Middlebrook @liam-middlebrook","VK_NVX_binary_import",{"number":8084,"type":8187,"author":9275,"provisional":7976,"contact":9279,"extension":9280,"proposal":7976},"Eric Werness @ewerness-nv","VK_NVX_image_view_handle",{"number":9282,"type":8187,"author":9275,"provisional":7976,"depends":9283,"contact":8334,"extension":9284,"proposal":7976},98,"VK_KHR_multiview,VK_VERSION_1_1","VK_NVX_multiview_per_view_attributes",{"number":9286,"type":8187,"author":8314,"provisional":7976,"depends":8309,"platform":8480,"contact":9287,"extension":9288,"proposal":7976},346,"Jeff Juliano @jjuliano","VK_NV_acquire_winrt_display",{"number":9290,"type":8187,"author":8314,"provisional":7976,"contact":9279,"extension":1952,"proposal":7976},88,{"number":9292,"type":8187,"author":8314,"provisional":7976,"contact":9293,"extension":9294,"proposal":7976},560,"Lujin Wang @lujinwangnv","VK_NV_command_buffer_inheritance",{"number":9296,"type":8187,"author":8314,"promotedto":8888,"provisional":7976,"depends":8204,"contact":9297,"extension":9298,"proposal":7976},202,"Pat Brown @nvpbrown","VK_NV_compute_shader_derivatives",{"number":9300,"type":8187,"author":8314,"provisional":7976,"depends":8204,"contact":8334,"extension":9301,"proposal":7976},250,"VK_NV_cooperative_matrix",{"number":9303,"type":8187,"author":8314,"provisional":7976,"depends":9304,"contact":8442,"extension":9305,"proposal":7976},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":9307,"type":8187,"author":8314,"provisional":7976,"depends":8204,"contact":8648,"extension":9308,"proposal":7976},51,"VK_NV_corner_sampled_image",{"number":9310,"type":8187,"author":8314,"provisional":7976,"depends":9311,"contact":9312,"extension":9313,"proposal":7976},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":9315,"type":8187,"author":8314,"provisional":7249,"contact":9316,"extension":9317,"proposal":7976},308,"Tristan Lorach @tlorach","VK_NV_cuda_kernel_launch",{"number":8070,"type":8187,"author":8314,"deprecatedby":8903,"provisional":7976,"contact":8334,"extension":9319,"proposal":7976},"VK_NV_dedicated_allocation",{"number":9321,"type":8187,"author":9322,"provisional":7976,"depends":9323,"contact":9324,"extension":9325,"proposal":7976},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":9327,"type":8187,"author":8314,"provisional":7976,"depends":8298,"contact":8340,"extension":9328,"proposal":7976},547,"VK_NV_descriptor_pool_overallocation",{"number":9330,"type":8187,"author":9322,"provisional":7976,"depends":8204,"contact":9324,"extension":9331,"proposal":7976},207,"VK_NV_device_diagnostic_checkpoints",{"number":9333,"type":8187,"author":8314,"provisional":7976,"depends":8204,"contact":9312,"extension":9334,"proposal":7976},301,"VK_NV_device_diagnostics_config",{"number":9336,"type":8187,"author":8314,"provisional":7976,"depends":9337,"contact":8575,"extension":9338,"proposal":7976},278,"(VK_VERSION_1_1+VK_KHR_buffer_device_address),VK_VERSION_1_2","VK_NV_device_generated_commands",{"number":9340,"type":8187,"author":8314,"provisional":7976,"depends":9338,"contact":8442,"extension":9341,"proposal":7976},429,"VK_NV_device_generated_commands_compute",{"number":9343,"type":8187,"author":8314,"provisional":7249,"depends":8610,"platform":8190,"contact":9344,"extension":9345,"proposal":7976},398,"Christoph Kubisch @pixeljetstream, Eric Werness @ewerness-nv","VK_NV_displacement_micromap",{"number":9347,"type":8187,"author":8314,"provisional":7976,"contact":9348,"extension":9349,"proposal":7976},493,"Russell Chou @russellcnv","VK_NV_extended_sparse_address_space",{"number":9351,"type":8187,"author":8314,"deprecatedby":8956,"provisional":7976,"depends":9352,"contact":8316,"extension":9353,"proposal":7976},57,"VK_NV_external_memory_capabilities","VK_NV_external_memory",{"number":9355,"type":8308,"author":8314,"deprecatedby":8959,"provisional":7976,"contact":8316,"extension":9352,"proposal":7976},56,{"number":9357,"type":8187,"author":8314,"provisional":7976,"depends":8449,"contact":9230,"extension":9358,"proposal":7976},372,"VK_NV_external_memory_rdma",{"extension":9360,"proposal":7976},"VK_NV_external_memory_sci_buf",{"number":9362,"type":8187,"author":8314,"deprecatedby":8964,"provisional":7976,"depends":9353,"platform":8480,"contact":8316,"extension":9363,"proposal":7976},58,"VK_NV_external_memory_win32",{"extension":9365,"proposal":7976},"VK_NV_external_sci_sync",{"extension":9367,"proposal":7976},"VK_NV_external_sci_sync2",{"number":9369,"type":8187,"author":8314,"provisional":7976,"contact":8334,"extension":9370,"proposal":7976},154,"VK_NV_fill_rectangle",{"number":9372,"type":8187,"author":8314,"provisional":7976,"contact":8334,"extension":2031,"proposal":7976},150,{"number":9374,"type":8187,"author":8314,"promotedto":8983,"provisional":7976,"depends":8204,"contact":9297,"extension":9375,"proposal":7976},204,"VK_NV_fragment_shader_barycentric",{"number":9377,"type":8187,"author":8314,"provisional":7976,"depends":8987,"contact":9297,"extension":9378,"proposal":7976},327,"VK_NV_fragment_shading_rate_enums",{"number":9380,"type":8187,"author":8314,"provisional":7976,"contact":8334,"extension":2100,"proposal":7976},153,{"number":9382,"type":8187,"author":8314,"provisional":7976,"contact":8648,"extension":9383,"proposal":7976},96,"VK_NV_geometry_shader_passthrough",{"number":8015,"type":8187,"author":8314,"deprecatedby":8846,"provisional":7976,"contact":8340,"extension":9385,"proposal":7976},"VK_NV_glsl_shader",{"number":9387,"type":8187,"author":8314,"provisional":7976,"depends":8204,"contact":9388,"extension":9389,"proposal":7976},279,"David Zhao Akeley @akeley98","VK_NV_inherited_viewport_scissor",{"number":9391,"type":8187,"author":9322,"provisional":7976,"depends":8204,"contact":9392,"extension":9393,"proposal":7976},431,"sourav parmar @souravpNV","VK_NV_linear_color_attachment",{"number":9395,"type":8187,"author":8314,"provisional":7976,"contact":9396,"extension":9397,"proposal":7976},311,"Charles Hansen @cshansen","VK_NV_low_latency",{"number":9399,"type":8187,"author":8314,"provisional":7976,"depends":9400,"contact":9396,"extension":9401,"proposal":7976},506,"VK_VERSION_1_2,VK_KHR_timeline_semaphore","VK_NV_low_latency2",{"number":9403,"type":8187,"author":8314,"provisional":7976,"depends":9304,"contact":8442,"extension":9404,"proposal":7976},428,"VK_NV_memory_decompression",{"number":9406,"type":8187,"author":8314,"provisional":7976,"depends":8204,"contact":8575,"extension":9407,"proposal":7976},203,"VK_NV_mesh_shader",{"number":9409,"type":8187,"author":8314,"provisional":7976,"depends":9410,"contact":9230,"extension":9411,"proposal":7976},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":9413,"type":8187,"author":8314,"provisional":7976,"depends":9036,"contact":8340,"extension":9414,"proposal":7976},517,"VK_NV_per_stage_descriptor_set",{"number":9416,"type":8187,"author":8314,"provisional":7976,"depends":8479,"contact":9417,"extension":9418,"proposal":7976},293,"Liya Li @liyli","VK_NV_present_barrier",{"extension":9420,"proposal":7976},"VK_NV_private_vendor_info",{"number":9422,"type":8187,"author":8314,"provisional":7976,"contact":9423,"extension":9424,"proposal":7976},556,"Rodrigo Locatti @rlocatti","VK_NV_raw_access_chains",{"number":9426,"type":8187,"author":8314,"deprecatedby":9088,"provisional":7976,"depends":9427,"contact":9279,"extension":9428,"proposal":7976},166,"(VK_KHR_get_physical_device_properties2+VK_KHR_get_memory_requirements2),VK_VERSION_1_1","VK_NV_ray_tracing",{"number":9430,"type":8187,"author":8314,"provisional":7976,"depends":9088,"contact":9279,"extension":9431,"proposal":7976},491,"VK_NV_ray_tracing_invocation_reorder",{"number":9433,"type":8187,"author":8314,"provisional":7976,"depends":9088,"contact":9091,"extension":9434,"proposal":7976},328,"VK_NV_ray_tracing_motion_blur",{"number":9436,"type":8187,"author":8314,"provisional":7976,"contact":8442,"extension":9437,"proposal":7249},569,"VK_NV_ray_tracing_validation",{"number":9439,"type":8187,"author":8314,"provisional":7976,"depends":8204,"contact":9312,"extension":9440,"proposal":7976},167,"VK_NV_representative_fragment_test",{"number":9442,"type":8187,"author":8314,"provisional":7976,"contact":8340,"extension":9443,"proposal":7976},95,"VK_NV_sample_mask_override_coverage",{"number":9445,"type":8187,"author":8314,"provisional":7976,"depends":8204,"contact":9297,"extension":9446,"proposal":7976},206,"VK_NV_scissor_exclusive",{"number":9448,"type":8187,"author":8314,"provisional":7976,"contact":8334,"extension":9449,"proposal":7976},564,"VK_NV_shader_atomic_float16_vector",{"number":9451,"type":8187,"author":8314,"provisional":7976,"depends":8204,"contact":9297,"extension":9452,"proposal":7976},205,"VK_NV_shader_image_footprint",{"number":9454,"type":8187,"author":8314,"provisional":7976,"depends":8298,"contact":8648,"extension":9455,"proposal":7976},155,"VK_NV_shader_sm_builtins",{"number":9457,"type":8187,"author":8314,"provisional":7976,"depends":8298,"contact":8334,"extension":9458,"proposal":7976},199,"VK_NV_shader_subgroup_partitioned",{"number":9460,"type":8187,"author":8314,"provisional":7976,"depends":8204,"contact":9297,"extension":9461,"proposal":7976},165,"VK_NV_shading_rate_image",{"number":9463,"type":8187,"author":8314,"provisional":7976,"contact":8648,"extension":9464,"proposal":7976},97,"VK_NV_viewport_array2",{"number":9466,"type":8187,"author":8314,"provisional":7976,"contact":8340,"extension":2003,"proposal":7976},99,{"number":9468,"type":8187,"author":8314,"promotedto":9231,"provisional":7976,"depends":9363,"platform":8480,"contact":9230,"extension":9469,"proposal":7976},59,"VK_NV_win32_keyed_mutex",{"number":9471,"type":8187,"author":8461,"provisional":7976,"depends":9472,"contact":8462,"extension":9473,"proposal":7976},522,"(VK_EXT_filter_cubic)+(VK_VERSION_1_2,VK_EXT_sampler_filter_minmax)","VK_QCOM_filter_cubic_clamp",{"number":9475,"type":8187,"author":8461,"provisional":7976,"depends":8463,"contact":8462,"extension":9476,"proposal":7976},520,"VK_QCOM_filter_cubic_weights",{"number":9478,"type":8187,"author":8461,"provisional":7976,"depends":9479,"contact":8462,"extension":9480,"proposal":7976},426,"(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_EXT_fragment_density_map","VK_QCOM_fragment_density_map_offset",{"number":9482,"type":8187,"author":8461,"provisional":7976,"depends":9483,"contact":8462,"extension":9484,"proposal":7249},441,"VK_KHR_format_feature_flags2,VK_VERSION_1_3","VK_QCOM_image_processing",{"number":9486,"type":8187,"author":8461,"provisional":7976,"depends":9484,"contact":8462,"extension":9487,"proposal":7976},519,"VK_QCOM_image_processing2",{"number":9489,"type":8187,"author":8461,"provisional":7976,"contact":8462,"extension":9490,"proposal":7976},511,"VK_QCOM_multiview_per_view_render_areas",{"number":9492,"type":8187,"author":8461,"provisional":7976,"depends":8204,"contact":8462,"extension":9493,"proposal":7976},489,"VK_QCOM_multiview_per_view_viewports",{"number":9495,"type":8187,"author":8461,"provisional":7976,"contact":8462,"extension":9496,"proposal":7976},172,"VK_QCOM_render_pass_shader_resolve",{"number":9498,"type":8187,"author":8461,"provisional":7976,"contact":8462,"extension":9499,"proposal":7976},302,"VK_QCOM_render_pass_store_ops",{"number":9501,"type":8187,"author":8461,"provisional":7976,"contact":8462,"extension":9502,"proposal":7976},283,"VK_QCOM_render_pass_transform",{"number":9504,"type":8187,"author":8461,"provisional":7976,"depends":9505,"contact":8462,"extension":9506,"proposal":7976},334,"VK_KHR_copy_commands2,VK_VERSION_1_3","VK_QCOM_rotated_copy_commands",{"number":9508,"type":8187,"author":8461,"provisional":7976,"depends":8204,"contact":8462,"extension":9509,"proposal":7249},485,"VK_QCOM_tile_properties",{"number":9511,"type":8187,"author":8461,"provisional":7976,"contact":8462,"extension":9512,"proposal":7976},521,"VK_QCOM_ycbcr_degamma",{"number":9514,"type":8187,"author":9515,"provisional":7976,"depends":8277,"platform":9516,"contact":9517,"extension":9518,"proposal":7976},530,"QNX","screen","Mike Gorchak @mgorchak-blackberry, Aaron Ruby @aruby-blackberry","VK_QNX_external_memory_screen_buffer",{"number":9520,"type":8308,"author":9515,"provisional":7976,"depends":8420,"platform":9516,"contact":9521,"extension":9522,"proposal":7976},379,"Mike Gorchak @mgorchak-blackberry","VK_QNX_screen_surface",{"number":9524,"type":8187,"author":9525,"provisional":7976,"depends":8204,"contact":8406,"extension":9526,"proposal":7976},486,"SEC","VK_SEC_amigo_profiling",{"number":9528,"type":8187,"author":9529,"provisional":7976,"depends":8204,"specialuse":8378,"contact":8632,"extension":9530,"proposal":7976},421,"VALVE","VK_VALVE_descriptor_set_host_mapping",{"number":9532,"type":8187,"author":9529,"promotedto":8597,"provisional":7976,"depends":8595,"specialuse":8378,"contact":8596,"extension":9533,"proposal":7976},352,"VK_VALVE_mutable_descriptor_type",1725732625989]