[{"data":1,"prerenderedAt":6585},["ShallowReactive",2],{"YOFQbf3Pvd":3,"VyF3Mmj32r":4945,"N9m89Rcq0G":5143},{"title":4,"description":5,"body":6,"_type":4944,"_id":4},"VK_QCOM_tile_shading.proposal","This document proposes a new extension that adds \"tile shading\" to Vulkan.",{"type":7,"children":8,"toc":4905},"root",[9,16,23,28,33,38,43,49,54,59,64,69,74,80,85,116,129,134,243,248,255,299,523,541,569,575,595,836,854,865,896,914,920,925,930,936,941,961,980,1024,1029,1049,1054,1065,1070,1080,1099,1214,1219,1267,1273,1320,1325,1369,1374,1380,1390,1401,1517,1541,1601,1612,1637,1642,1655,1767,1793,1823,1843,1897,1902,1915,1920,1991,1996,2127,2133,2138,2379,2384,2389,3140,3145,3530,3536,3541,3574,3594,3664,3677,3732,3746,3752,3757,3920,3925,4232,4237,4323,4389,4395,4401,4406,4419,4424,4430,4435,4440,4452,4457,4463,4475,4560,4566,4571,4581,4593,4599,4604,4610,4615,4627,4633,4645,4651,4656,4661,4667,4679,4684,4690,4695,4701,4712,4717,4723,4728,4741,4746,4752,4757,4767,4773,4791,4797,4802,4817,4828,4833,4839,4844,4849,4863,4874,4899],{"type":10,"tag":11,"props":12,"children":13},"element","p",{},[14],{"type":15,"value":5},"text",{"type":10,"tag":17,"props":18,"children":20},"h2",{"id":19},"_problem_statement",[21],{"type":15,"value":22},"Problem Statement",{"type":10,"tag":11,"props":24,"children":25},{},[26],{"type":15,"value":27},"Rendering pipelines that interleave compute with graphics, have become\nincreasingly common.\nTile-based lighting techniques are commonly used in Forward+ and Tile\nDeferred renderers leverage compute shaders to optimize the subsequent\nlighting pass.\nTile-based level of detail using compute shaders are used\nin some virtualized geometry systems. Tile-based approaches with compute\nare used for screen space ambient occlusion, de-noising, and other\npost-processing algorithms.",{"type":10,"tag":11,"props":29,"children":30},{},[31],{"type":15,"value":32},"Most mobile GPUs utilize Tile-Based Deferred Rendering (TBDR) combined\nwith high-bandwidth \"tile memory\" to optimize for power and performance.\nConversely, most desktop GPUs use Immediate-Mode (IM) rendering without\ntile memory.",{"type":10,"tag":11,"props":34,"children":35},{},[36],{"type":15,"value":37},"A TBDR architecture divides the color and depth buffer attachments into a regular\ngrid of smaller regions called \"tiles\".\nWhen the commands for a renderpass instance are submitted for execution, the GPU\nmay perform a tile visibility pass with the resulting per-tile visibility information\ndeferred for use in a subsequent series of tile rendering passes — one rendering\npass for each tile in the framebuffer. Since the tile rendering passes are\nindependent, some implementations may render multiple tiles in parallel. After\neach tile is rendered, the resulting tile is copied to the framebuffer.\nThe tile rendering passes render into a specialized high-bandwidth\non-die memory called \"tile memory\".\nGPU access to tile memory is dramatically more efficient than the device memory\nthat backs the framebuffer attachments.",{"type":10,"tag":11,"props":39,"children":40},{},[41],{"type":15,"value":42},"The TBDR architecture creates an opportunity to express operations that execute\nper-tile after each tile rendering pass completes, and while the framebuffer\ncontent is still cached in highly efficient tile memory.\nWhile the primary focus is on executing compute workloads that operate on\ntiles, there are also use-cases for executing draw commands after the\ntile rendering pass completes.\nSince these dispatch and/or draw commands execute per-tile, they can only\naccess those pixel locations within the boundaries of the current tile.\nThis proposal describes a Vulkan API extension for the above\ntile-based features, collectively referred to as \"tile shading\".",{"type":10,"tag":17,"props":44,"children":46},{"id":45},"_solution_space",[47],{"type":15,"value":48},"Solution Space",{"type":10,"tag":11,"props":50,"children":51},{},[52],{"type":15,"value":53},"For the common use-cases, the tile shading pass will consume the attachment\npixels that were rendered in a previous pass, or will generate outputs that\nare to be consumed in a subsequent pass.\nFor this reason, tile shading fits naturally as some variant of Vulkan render passes.",{"type":10,"tag":11,"props":55,"children":56},{},[57],{"type":15,"value":58},"The options considered for addressing this issue:\n* Add tile shading functionality as a set of individual API extensions corresponding to individual features\n* Create a single, cohesive extension for the tile shading, that brings Vulkan to parity with other APIs.",{"type":10,"tag":11,"props":60,"children":61},{},[62],{"type":15,"value":63},"Option 1 has an advantage in that each extension is smaller and has reduced API surface area. It also\nincreases the likelihood that some extensions would be supported by multiple GPU vendors.\nThis piecemeal approach is likely to result in fractured support in the ecosystem, and makes it difficult\nfor developers to rely on a single cohesive set of functionality.",{"type":10,"tag":11,"props":65,"children":66},{},[67],{"type":15,"value":68},"Option 2 has the advantage of collecting a set of related features into a single extension, but\nis likely to align with the capabilities of a single TBDR architecture, in this case Adreno ™ GPUs.",{"type":10,"tag":11,"props":70,"children":71},{},[72],{"type":15,"value":73},"This proposal focuses on option 2, and specifically on evangelizing the tile shading features\nthat are available on Adreno ™ GPUs. Some features in this vendor extension may\nbe incorporated into a future cross-vendor tile shading extension while other features may\nbe unique to Adreno ™ and never supported by other vendors.",{"type":10,"tag":17,"props":75,"children":77},{"id":76},"_proposal",[78],{"type":15,"value":79},"Proposal",{"type":10,"tag":11,"props":81,"children":82},{},[83],{"type":15,"value":84},"This proposal builds on two existing extensions:",{"type":10,"tag":86,"props":87,"children":88},"ul",{},[89,104],{"type":10,"tag":90,"props":91,"children":92},"li",{},[93,102],{"type":10,"tag":94,"props":95,"children":99},"a",{"href":96,"rel":97},"https://docs.vulkan.org/spec/latest/appendices/extensions.html#VK_QCOM_tile_properties",[98],"nofollow",[100],{"type":15,"value":101},"VK_QCOM_tile_properties",{"type":15,"value":103}," which exposes tile locations\nand dimensions to the application.",{"type":10,"tag":90,"props":105,"children":106},{},[107,114],{"type":10,"tag":94,"props":108,"children":111},{"href":109,"rel":110},"https://docs.vulkan.org/spec/latest/appendices/extensions.html#VK_KHR_dynamic_rendering_local_read",[98],[112],{"type":15,"value":113},"VK_KHR_dynamic_rendering_local_read",{"type":15,"value":115},"\nwhich extends dynamic rendering to support multiple passes with input attachments.",{"type":10,"tag":11,"props":117,"children":118},{},[119,121,127],{"type":15,"value":120},"Implementations exposing this extension must support ",{"type":10,"tag":122,"props":123,"children":125},"code",{"className":124},[],[126],{"type":15,"value":101},{"type":15,"value":128}," because the ability\nto query how the implementation has sub-divided the attachments into tiles is so fundamental to tile\nshading. Implementations exposing this extension are encouraged (but not required) to support\n'VK_KHR_dynamic_rendering_local_read' because it significantly increases the set of tile shading use-cases\nthat can be supported with dynamic render passes.",{"type":10,"tag":11,"props":130,"children":131},{},[132],{"type":15,"value":133},"Tile shading extends Vulkan render passes with new functionality. When tile shading is\nenabled for a render pass instance, these are the highlights of the new functionality:",{"type":10,"tag":86,"props":135,"children":136},{},[137,150,163,174],{"type":10,"tag":90,"props":138,"children":139},{},[140,142,148],{"type":15,"value":141},"Fragment shaders can declare ",{"type":10,"tag":94,"props":143,"children":145},{"href":144},"/chapters/renderpass#renderpass-tile-shading-attachment-access",[146],{"type":15,"value":147},"tile image attachment",{"type":15,"value":149},"\nresources allowing fragment shader invocations to load pixel values of other fragments\nwithin the same tile, or to sample from the pixels in a tile attachment.",{"type":10,"tag":90,"props":151,"children":152},{},[153,155,161],{"type":15,"value":154},"Fragment shaders can use ",{"type":10,"tag":94,"props":156,"children":158},{"href":157},"/404#spirv-changes",[159],{"type":15,"value":160},"built-in input variables",{"type":15,"value":162}," that describe the\nactive tile’s extent in framebuffer coordinates.",{"type":10,"tag":90,"props":164,"children":165},{},[166,172],{"type":10,"tag":94,"props":167,"children":169},{"href":168},"/chapters/renderpass#renderpass-tile-shading-aprons",[170],{"type":15,"value":171},"Tile aprons",{"type":15,"value":173}," can be enabled and pixels in the apron\nregion can be accessed by the fragment shader.",{"type":10,"tag":90,"props":175,"children":176},{},[177,179,185,187],{"type":15,"value":178},"A new state command is added that enables/disables\n",{"type":10,"tag":94,"props":180,"children":182},{"href":181},"/chapters/renderpass#renderpass-per-tile-execution-model",[183],{"type":15,"value":184},"per-tile execution model",{"type":15,"value":186},".\nWhen this execution model is enabled:",{"type":10,"tag":86,"props":188,"children":189},{},[190,201,219],{"type":10,"tag":90,"props":191,"children":192},{},[193,199],{"type":10,"tag":122,"props":194,"children":196},{"className":195},[],[197],{"type":15,"value":198},"VkCmdDispatch*",{"type":15,"value":200}," commands can be recorded in a render pass instance.",{"type":10,"tag":90,"props":202,"children":203},{},[204,206,210,212,217],{"type":15,"value":205},"Recorded draw and dispatch commands will be invoked multiple times; each recorded\ncommand is invoked once for each tile in the framebuffer. The tile’s\nextent is exposed in the shader via ",{"type":10,"tag":94,"props":207,"children":208},{"href":157},[209],{"type":15,"value":160},{"type":15,"value":211},"\nand in the API via ",{"type":10,"tag":122,"props":213,"children":215},{"className":214},[],[216],{"type":15,"value":101},{"type":15,"value":218},".",{"type":10,"tag":90,"props":220,"children":221},{},[222,224,229,231,235,237,242],{"type":15,"value":223},"Compute shaders have all the same functionality described above for fragment shaders.\nThis includes load/store/sample of ",{"type":10,"tag":94,"props":225,"children":226},{"href":144},[227],{"type":15,"value":228},"tile image attachments",{"type":15,"value":230},",\n",{"type":10,"tag":94,"props":232,"children":233},{"href":157},[234],{"type":15,"value":160},{"type":15,"value":236},", and ",{"type":10,"tag":94,"props":238,"children":239},{"href":168},[240],{"type":15,"value":241},"tile aprons",{"type":15,"value":218},{"type":10,"tag":11,"props":244,"children":245},{},[246],{"type":15,"value":247},"Vulkan tile shading will empower applications to leverage tile memory by injecting\nper-tile commands into GPU’s existing TBDR geometry pipeline, allowing compute to\nparticipate fully in render passes, and enabling operations\nthat happen while the color and depth values reside in tile memory.",{"type":10,"tag":249,"props":250,"children":252},"h3",{"id":251},"_enabling_tile_shading",[253],{"type":15,"value":254},"Enabling Tile Shading",{"type":10,"tag":11,"props":256,"children":257},{},[258,260,266,268,274,276,282,284,290,292,298],{"type":15,"value":259},"To enable tile shading for a render pass, add\n",{"type":10,"tag":122,"props":261,"children":263},{"className":262},[],[264],{"type":15,"value":265},"VkRenderPassTileShadingCreateInfoQCOM",{"type":15,"value":267}," in the pNext chain of\n",{"type":10,"tag":122,"props":269,"children":271},{"className":270},[],[272],{"type":15,"value":273},"VkRenderPassCreateInfo",{"type":15,"value":275}," or ",{"type":10,"tag":122,"props":277,"children":279},{"className":278},[],[280],{"type":15,"value":281},"VkRenderingInfo",{"type":15,"value":283}," with\n",{"type":10,"tag":122,"props":285,"children":287},{"className":286},[],[288],{"type":15,"value":289},"VK_TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM",{"type":15,"value":291}," set in ",{"type":10,"tag":122,"props":293,"children":295},{"className":294},[],[296],{"type":15,"value":297},"flags",{"type":15,"value":218},{"type":10,"tag":300,"props":301,"children":306},"pre",{"className":302,"code":303,"language":304,"meta":305,"style":305},"language-c shiki shiki-themes github-light-default github-dark-default","typedef enum VkTileShadingRenderPassFlagBitsQCOM {\n VK_TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM = 0x00000001,\n VK_TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM = 0x00000002,\n VK_TILE_SHADING_RENDER_PASS_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF\n} VkTileShadingRenderPassFlagBitsQCOM;\n\ntypedef VkFlags VkTileShadingRenderPassFlagsQCOM;\n\ntypedef struct VkRenderPassTileShadingCreateInfoQCOM {\n VkStructureType sType;\n const void* pNext;\n VkTileShadingRenderPassFlagsQCOM flags;\n VkExtent2D tileApronSize;\n} VkRenderPassTileShadingCreateInfoQCOM;\n","c","",[307],{"type":10,"tag":122,"props":308,"children":309},{"__ignoreMap":305},[310,333,362,388,410,419,429,442,450,468,477,496,505,514],{"type":10,"tag":311,"props":312,"children":315},"span",{"class":313,"line":314},"line",1,[316,322,327],{"type":10,"tag":311,"props":317,"children":319},{"style":318},"--shiki-default:#CF222E;--shiki-dark:#FF7B72",[320],{"type":15,"value":321},"typedef",{"type":10,"tag":311,"props":323,"children":324},{"style":318},[325],{"type":15,"value":326}," enum",{"type":10,"tag":311,"props":328,"children":330},{"style":329},"--shiki-default:#1F2328;--shiki-dark:#E6EDF3",[331],{"type":15,"value":332}," VkTileShadingRenderPassFlagBitsQCOM {\n",{"type":10,"tag":311,"props":334,"children":336},{"class":313,"line":335},2,[337,342,347,352,358],{"type":10,"tag":311,"props":338,"children":339},{"style":329},[340],{"type":15,"value":341}," VK_TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM ",{"type":10,"tag":311,"props":343,"children":344},{"style":318},[345],{"type":15,"value":346},"=",{"type":10,"tag":311,"props":348,"children":349},{"style":318},[350],{"type":15,"value":351}," 0x",{"type":10,"tag":311,"props":353,"children":355},{"style":354},"--shiki-default:#0550AE;--shiki-dark:#79C0FF",[356],{"type":15,"value":357},"00000001",{"type":10,"tag":311,"props":359,"children":360},{"style":329},[361],{"type":15,"value":230},{"type":10,"tag":311,"props":363,"children":365},{"class":313,"line":364},3,[366,371,375,379,384],{"type":10,"tag":311,"props":367,"children":368},{"style":329},[369],{"type":15,"value":370}," VK_TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM ",{"type":10,"tag":311,"props":372,"children":373},{"style":318},[374],{"type":15,"value":346},{"type":10,"tag":311,"props":376,"children":377},{"style":318},[378],{"type":15,"value":351},{"type":10,"tag":311,"props":380,"children":381},{"style":354},[382],{"type":15,"value":383},"00000002",{"type":10,"tag":311,"props":385,"children":386},{"style":329},[387],{"type":15,"value":230},{"type":10,"tag":311,"props":389,"children":391},{"class":313,"line":390},4,[392,397,401,405],{"type":10,"tag":311,"props":393,"children":394},{"style":329},[395],{"type":15,"value":396}," VK_TILE_SHADING_RENDER_PASS_FLAG_BITS_MAX_ENUM ",{"type":10,"tag":311,"props":398,"children":399},{"style":318},[400],{"type":15,"value":346},{"type":10,"tag":311,"props":402,"children":403},{"style":318},[404],{"type":15,"value":351},{"type":10,"tag":311,"props":406,"children":407},{"style":354},[408],{"type":15,"value":409},"7FFFFFFF\n",{"type":10,"tag":311,"props":411,"children":413},{"class":313,"line":412},5,[414],{"type":10,"tag":311,"props":415,"children":416},{"style":329},[417],{"type":15,"value":418},"} VkTileShadingRenderPassFlagBitsQCOM;\n",{"type":10,"tag":311,"props":420,"children":422},{"class":313,"line":421},6,[423],{"type":10,"tag":311,"props":424,"children":426},{"emptyLinePlaceholder":425},true,[427],{"type":15,"value":428},"\n",{"type":10,"tag":311,"props":430,"children":432},{"class":313,"line":431},7,[433,437],{"type":10,"tag":311,"props":434,"children":435},{"style":318},[436],{"type":15,"value":321},{"type":10,"tag":311,"props":438,"children":439},{"style":329},[440],{"type":15,"value":441}," VkFlags VkTileShadingRenderPassFlagsQCOM;\n",{"type":10,"tag":311,"props":443,"children":445},{"class":313,"line":444},8,[446],{"type":10,"tag":311,"props":447,"children":448},{"emptyLinePlaceholder":425},[449],{"type":15,"value":428},{"type":10,"tag":311,"props":451,"children":453},{"class":313,"line":452},9,[454,458,463],{"type":10,"tag":311,"props":455,"children":456},{"style":318},[457],{"type":15,"value":321},{"type":10,"tag":311,"props":459,"children":460},{"style":318},[461],{"type":15,"value":462}," struct",{"type":10,"tag":311,"props":464,"children":465},{"style":329},[466],{"type":15,"value":467}," VkRenderPassTileShadingCreateInfoQCOM {\n",{"type":10,"tag":311,"props":469,"children":471},{"class":313,"line":470},10,[472],{"type":10,"tag":311,"props":473,"children":474},{"style":329},[475],{"type":15,"value":476}," VkStructureType sType;\n",{"type":10,"tag":311,"props":478,"children":480},{"class":313,"line":479},11,[481,486,491],{"type":10,"tag":311,"props":482,"children":483},{"style":318},[484],{"type":15,"value":485}," const",{"type":10,"tag":311,"props":487,"children":488},{"style":318},[489],{"type":15,"value":490}," void*",{"type":10,"tag":311,"props":492,"children":493},{"style":329},[494],{"type":15,"value":495}," pNext;\n",{"type":10,"tag":311,"props":497,"children":499},{"class":313,"line":498},12,[500],{"type":10,"tag":311,"props":501,"children":502},{"style":329},[503],{"type":15,"value":504}," VkTileShadingRenderPassFlagsQCOM flags;\n",{"type":10,"tag":311,"props":506,"children":508},{"class":313,"line":507},13,[509],{"type":10,"tag":311,"props":510,"children":511},{"style":329},[512],{"type":15,"value":513}," VkExtent2D tileApronSize;\n",{"type":10,"tag":311,"props":515,"children":517},{"class":313,"line":516},14,[518],{"type":10,"tag":311,"props":519,"children":520},{"style":329},[521],{"type":15,"value":522},"} VkRenderPassTileShadingCreateInfoQCOM;\n",{"type":10,"tag":11,"props":524,"children":525},{},[526,532,534,539],{"type":10,"tag":122,"props":527,"children":529},{"className":528},[],[530],{"type":15,"value":531},"tileApronSize",{"type":15,"value":533}," specifies the width and height of the\n",{"type":10,"tag":94,"props":535,"children":536},{"href":168},[537],{"type":15,"value":538},"tile apron",{"type":15,"value":540},".\nIf tile apron is not used, this should be set to 0.",{"type":10,"tag":11,"props":542,"children":543},{},[544,546,552,554,559,561,567],{"type":15,"value":545},"When tile shading is enabled for a render pass, the following\nfeatures become available to shaders within that render pass:\n* Compute shaders can declare the ",{"type":10,"tag":122,"props":547,"children":549},{"className":548},[],[550],{"type":15,"value":551},"TileShadingQCOM",{"type":15,"value":553}," capability.\n* Fragment shaders shaders can declare the ",{"type":10,"tag":122,"props":555,"children":557},{"className":556},[],[558],{"type":15,"value":551},{"type":15,"value":560}," capability if the\n",{"type":10,"tag":122,"props":562,"children":564},{"className":563},[],[565],{"type":15,"value":566},"tileShadingFragmentStage",{"type":15,"value":568}," feature is enabled.",{"type":10,"tag":249,"props":570,"children":572},{"id":571},"_per_tile_execution_mode",[573],{"type":15,"value":574},"Per-tile execution mode",{"type":10,"tag":11,"props":576,"children":577},{},[578,580,586,588,593],{"type":15,"value":579},"Within a render pass that ",{"type":10,"tag":94,"props":581,"children":583},{"href":582},"/chapters/renderpass#renderpass-tile-shading",[584],{"type":15,"value":585},"enables tile shading",{"type":15,"value":587},",\nthe ",{"type":10,"tag":94,"props":589,"children":590},{"href":181},[591],{"type":15,"value":592},"per-tile execution mode",{"type":15,"value":594},"\ncan be enabled or disabled:",{"type":10,"tag":300,"props":596,"children":598},{"className":302,"code":597,"language":304,"meta":305,"style":305},"typedef struct VkPerTileBeginInfoQCOM {\n VkStructureType sType;\n const void* pNext;\n} VkPerTileBeginInfoQCOM;\n\ntypedef struct VkPerTileEndInfoQCOM {\n VkStructureType sType;\n const void* pNext;\n} VkPerTileEndInfoQCOM;\n\nvoid vkCmdBeginPerTileExecutionQCOM(\n VkCommandBuffer commandBuffer,\n const VkPerTileBeginInfoQCOM* pPerTileBeginInfo);\n\nvoid vkCmdEndPerTileExecutionQCOM(\n VkCommandBuffer commandBuffer);\n const VkPerTileEndInfoQCOM* pPerTileEndInfo);\n",[599],{"type":10,"tag":122,"props":600,"children":601},{"__ignoreMap":305},[602,618,626,642,650,657,673,680,695,703,710,729,747,774,781,798,814],{"type":10,"tag":311,"props":603,"children":604},{"class":313,"line":314},[605,609,613],{"type":10,"tag":311,"props":606,"children":607},{"style":318},[608],{"type":15,"value":321},{"type":10,"tag":311,"props":610,"children":611},{"style":318},[612],{"type":15,"value":462},{"type":10,"tag":311,"props":614,"children":615},{"style":329},[616],{"type":15,"value":617}," VkPerTileBeginInfoQCOM {\n",{"type":10,"tag":311,"props":619,"children":620},{"class":313,"line":335},[621],{"type":10,"tag":311,"props":622,"children":623},{"style":329},[624],{"type":15,"value":625}," VkStructureType sType;\n",{"type":10,"tag":311,"props":627,"children":628},{"class":313,"line":364},[629,633,637],{"type":10,"tag":311,"props":630,"children":631},{"style":318},[632],{"type":15,"value":485},{"type":10,"tag":311,"props":634,"children":635},{"style":318},[636],{"type":15,"value":490},{"type":10,"tag":311,"props":638,"children":639},{"style":329},[640],{"type":15,"value":641}," pNext;\n",{"type":10,"tag":311,"props":643,"children":644},{"class":313,"line":390},[645],{"type":10,"tag":311,"props":646,"children":647},{"style":329},[648],{"type":15,"value":649},"} VkPerTileBeginInfoQCOM;\n",{"type":10,"tag":311,"props":651,"children":652},{"class":313,"line":412},[653],{"type":10,"tag":311,"props":654,"children":655},{"emptyLinePlaceholder":425},[656],{"type":15,"value":428},{"type":10,"tag":311,"props":658,"children":659},{"class":313,"line":421},[660,664,668],{"type":10,"tag":311,"props":661,"children":662},{"style":318},[663],{"type":15,"value":321},{"type":10,"tag":311,"props":665,"children":666},{"style":318},[667],{"type":15,"value":462},{"type":10,"tag":311,"props":669,"children":670},{"style":329},[671],{"type":15,"value":672}," VkPerTileEndInfoQCOM {\n",{"type":10,"tag":311,"props":674,"children":675},{"class":313,"line":431},[676],{"type":10,"tag":311,"props":677,"children":678},{"style":329},[679],{"type":15,"value":625},{"type":10,"tag":311,"props":681,"children":682},{"class":313,"line":444},[683,687,691],{"type":10,"tag":311,"props":684,"children":685},{"style":318},[686],{"type":15,"value":485},{"type":10,"tag":311,"props":688,"children":689},{"style":318},[690],{"type":15,"value":490},{"type":10,"tag":311,"props":692,"children":693},{"style":329},[694],{"type":15,"value":641},{"type":10,"tag":311,"props":696,"children":697},{"class":313,"line":452},[698],{"type":10,"tag":311,"props":699,"children":700},{"style":329},[701],{"type":15,"value":702},"} VkPerTileEndInfoQCOM;\n",{"type":10,"tag":311,"props":704,"children":705},{"class":313,"line":470},[706],{"type":10,"tag":311,"props":707,"children":708},{"emptyLinePlaceholder":425},[709],{"type":15,"value":428},{"type":10,"tag":311,"props":711,"children":712},{"class":313,"line":479},[713,718,724],{"type":10,"tag":311,"props":714,"children":715},{"style":318},[716],{"type":15,"value":717},"void",{"type":10,"tag":311,"props":719,"children":721},{"style":720},"--shiki-default:#8250DF;--shiki-dark:#D2A8FF",[722],{"type":15,"value":723}," vkCmdBeginPerTileExecutionQCOM",{"type":10,"tag":311,"props":725,"children":726},{"style":329},[727],{"type":15,"value":728},"(\n",{"type":10,"tag":311,"props":730,"children":731},{"class":313,"line":498},[732,737,743],{"type":10,"tag":311,"props":733,"children":734},{"style":329},[735],{"type":15,"value":736}," VkCommandBuffer ",{"type":10,"tag":311,"props":738,"children":740},{"style":739},"--shiki-default:#953800;--shiki-dark:#FFA657",[741],{"type":15,"value":742},"commandBuffer",{"type":10,"tag":311,"props":744,"children":745},{"style":329},[746],{"type":15,"value":230},{"type":10,"tag":311,"props":748,"children":749},{"class":313,"line":507},[750,754,759,764,769],{"type":10,"tag":311,"props":751,"children":752},{"style":318},[753],{"type":15,"value":485},{"type":10,"tag":311,"props":755,"children":756},{"style":329},[757],{"type":15,"value":758}," VkPerTileBeginInfoQCOM",{"type":10,"tag":311,"props":760,"children":761},{"style":318},[762],{"type":15,"value":763},"*",{"type":10,"tag":311,"props":765,"children":766},{"style":739},[767],{"type":15,"value":768}," pPerTileBeginInfo",{"type":10,"tag":311,"props":770,"children":771},{"style":329},[772],{"type":15,"value":773},");\n",{"type":10,"tag":311,"props":775,"children":776},{"class":313,"line":516},[777],{"type":10,"tag":311,"props":778,"children":779},{"emptyLinePlaceholder":425},[780],{"type":15,"value":428},{"type":10,"tag":311,"props":782,"children":784},{"class":313,"line":783},15,[785,789,794],{"type":10,"tag":311,"props":786,"children":787},{"style":318},[788],{"type":15,"value":717},{"type":10,"tag":311,"props":790,"children":791},{"style":720},[792],{"type":15,"value":793}," vkCmdEndPerTileExecutionQCOM",{"type":10,"tag":311,"props":795,"children":796},{"style":329},[797],{"type":15,"value":728},{"type":10,"tag":311,"props":799,"children":801},{"class":313,"line":800},16,[802,806,810],{"type":10,"tag":311,"props":803,"children":804},{"style":329},[805],{"type":15,"value":736},{"type":10,"tag":311,"props":807,"children":808},{"style":739},[809],{"type":15,"value":742},{"type":10,"tag":311,"props":811,"children":812},{"style":329},[813],{"type":15,"value":773},{"type":10,"tag":311,"props":815,"children":817},{"class":313,"line":816},17,[818,822,827,831],{"type":10,"tag":311,"props":819,"children":820},{"style":318},[821],{"type":15,"value":485},{"type":10,"tag":311,"props":823,"children":824},{"style":329},[825],{"type":15,"value":826}," VkPerTileEndInfoQCOM",{"type":10,"tag":311,"props":828,"children":829},{"style":318},[830],{"type":15,"value":763},{"type":10,"tag":311,"props":832,"children":833},{"style":329},[834],{"type":15,"value":835}," pPerTileEndInfo);\n",{"type":10,"tag":11,"props":837,"children":838},{},[839,841,846,848,852],{"type":15,"value":840},"Inside each begin/end block, ",{"type":10,"tag":842,"props":843,"children":844},"em",{},[845],{"type":15,"value":592},{"type":15,"value":847}," is enabled.\nBegin/end blocks can only be recorded inside a render pass instance that\nenables tile shading.\nAt the end of a render pass instance, ",{"type":10,"tag":842,"props":849,"children":850},{},[851],{"type":15,"value":592},{"type":15,"value":853}," must be disabled.",{"type":10,"tag":11,"props":855,"children":856},{},[857,859,863],{"type":15,"value":858},"When ",{"type":10,"tag":842,"props":860,"children":861},{},[862],{"type":15,"value":592},{"type":15,"value":864}," is enabled, any recorded commands (state, action,\nsynchronization, and indirection) are executed for each tile. The order in which\ntiles are processed and the ordering of commands across tiles is undefined.",{"type":10,"tag":11,"props":866,"children":867},{},[868,869,873,875,881,883,888,890,895],{"type":15,"value":858},{"type":10,"tag":842,"props":870,"children":871},{},[872],{"type":15,"value":592},{"type":15,"value":874}," is enabled, and if the ",{"type":10,"tag":122,"props":876,"children":878},{"className":877},[],[879],{"type":15,"value":880},"tileShadingPerTileDispatch",{"type":15,"value":882},"\nfeature is enabled, ",{"type":10,"tag":122,"props":884,"children":886},{"className":885},[],[887],{"type":15,"value":198},{"type":15,"value":889}," commands can be recorded inside a render pass.\nThese per-tile dispatches can use the functionality described in\n",{"type":10,"tag":94,"props":891,"children":892},{"href":157},[893],{"type":15,"value":894},"SPIRV changes",{"type":15,"value":218},{"type":10,"tag":11,"props":897,"children":898},{},[899,900,904,906,912],{"type":15,"value":858},{"type":10,"tag":842,"props":901,"children":902},{},[903],{"type":15,"value":592},{"type":15,"value":905}," is enabled, the\n",{"type":10,"tag":94,"props":907,"children":909},{"href":908},"/man/vkCmdBeginPerTileExecutionQCOM#renderpass-tile-shading-command-restrictions",[910],{"type":15,"value":911},"Per-Tile Command Restrictions",{"type":15,"value":913}," apply.",{"type":10,"tag":249,"props":915,"children":917},{"id":916},"_secondary_command_buffers",[918],{"type":15,"value":919},"Secondary Command Buffers",{"type":10,"tag":11,"props":921,"children":922},{},[923],{"type":15,"value":924},"When executing secondary command buffers in a render pass with tile shading enabled a\nVkRenderPassTileShadingInfoQCOM must have been supplied when recording the secondary command\nbuffer in VkCommandBufferInheritanceInfo.",{"type":10,"tag":11,"props":926,"children":927},{},[928],{"type":15,"value":929},"It must match the render pass for tiling enabled, per-tile mode active, and apron size.",{"type":10,"tag":249,"props":931,"children":933},{"id":932},"_tile_attachments",[934],{"type":15,"value":935},"Tile Attachments",{"type":10,"tag":11,"props":937,"children":938},{},[939],{"type":15,"value":940},"Tile attachment variables in the shader provide a per-tile storage image view\nof the color, depth, or input attachments of the current render pass instance.\nIf the attachment is multisampled or layered, a corresponding layered or\nmultisampled tile attachment variable is declared.",{"type":10,"tag":11,"props":942,"children":943},{},[944,946,951,953,959],{"type":15,"value":945},"Tile attachment variables can only be declared and statically referenced in compute\nand fragment shaders that declare the ",{"type":10,"tag":122,"props":947,"children":949},{"className":948},[],[950],{"type":15,"value":551},{"type":15,"value":952}," capability.\nTile attachment variables are backed by a descriptor that references the same\n",{"type":10,"tag":122,"props":954,"children":956},{"className":955},[],[957],{"type":15,"value":958},"VkImageView",{"type":15,"value":960}," as specified for an attachment of the current render pass instance.",{"type":10,"tag":11,"props":962,"children":963},{},[964,966,972,974],{"type":15,"value":965},"Tile attachment variables are further subdivided into \"storage tile\nattachment\" and \"sampled tile attachment\" variables. The former supports\nload/store operations and is backed by a descriptor of\ntype ",{"type":10,"tag":122,"props":967,"children":969},{"className":968},[],[970],{"type":15,"value":971},"VK_DESCRIPTOR_TYPE_STORAGE_IMAGE",{"type":15,"value":973},", while the latter supports sampling\nand is backed by a descriptor of type ",{"type":10,"tag":122,"props":975,"children":977},{"className":976},[],[978],{"type":15,"value":979},"VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE",{"type":10,"tag":11,"props":981,"children":982},{},[983,985,991,993,999,1001,1007,1009,1015,1017,1023],{"type":15,"value":984},"Existing features and format restrictions for storage images and sampled images\nalso apply when accessing a storage tile attachment or sampled tile attachment. For\ninstance, the ",{"type":10,"tag":122,"props":986,"children":988},{"className":987},[],[989],{"type":15,"value":990},"fragmentStoresAndAtomicsreads",{"type":15,"value":992}," feature applies to storage tile attachment\naccesses in the fragment shader.\nSimilarly, features ",{"type":10,"tag":122,"props":994,"children":996},{"className":995},[],[997],{"type":15,"value":998},"shaderStorageImageWriteWithoutFormat",{"type":15,"value":1000}," and\n",{"type":10,"tag":122,"props":1002,"children":1004},{"className":1003},[],[1005],{"type":15,"value":1006},"shaderStorageImageReadWithoutFormat",{"type":15,"value":1008}," apply to storage tile attachments.\n",{"type":10,"tag":122,"props":1010,"children":1012},{"className":1011},[],[1013],{"type":15,"value":1014},"OpAtomic*",{"type":15,"value":1016}," operations are supported for storage tile attachments if the\n",{"type":10,"tag":122,"props":1018,"children":1020},{"className":1019},[],[1021],{"type":15,"value":1022},"tileShadingAtomicOps",{"type":15,"value":568},{"type":10,"tag":11,"props":1025,"children":1026},{},[1027],{"type":15,"value":1028},"The basic data type of the shader variable must match the format of the attachment.\nIn the case of depth/stencil attachments, the data type of the shader variable determines\nif the depth or stencil aspect of the tile is accessed by the shader.",{"type":10,"tag":11,"props":1030,"children":1031},{},[1032,1034,1040,1041,1047],{"type":15,"value":1033},"Accessing a tile attachment only requires that the image not be in the\n",{"type":10,"tag":122,"props":1035,"children":1037},{"className":1036},[],[1038],{"type":15,"value":1039},"VK_IMAGE_LAYOUT_UNDEFINED",{"type":15,"value":275},{"type":10,"tag":122,"props":1042,"children":1044},{"className":1043},[],[1045],{"type":15,"value":1046},"VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL",{"type":15,"value":1048},"\nlayouts.",{"type":10,"tag":11,"props":1050,"children":1051},{},[1052],{"type":15,"value":1053},"Tile attachment variables can be aggregated into arrays.",{"type":10,"tag":11,"props":1055,"children":1056},{},[1057,1059,1064],{"type":15,"value":1058},"More details on tile attachment variable declarations and associated load/store/sample\noperations are described in the ",{"type":10,"tag":94,"props":1060,"children":1061},{"href":157},[1062],{"type":15,"value":1063},"SPIR-V Changes",{"type":15,"value":218},{"type":10,"tag":249,"props":1066,"children":1068},{"id":1067},"_per_tile_command_restrictions",[1069],{"type":15,"value":911},{"type":10,"tag":11,"props":1071,"children":1072},{},[1073,1074,1078],{"type":15,"value":858},{"type":10,"tag":94,"props":1075,"children":1076},{"href":181},[1077],{"type":15,"value":592},{"type":15,"value":1079},"\nis enabled within a render pass instance, the set of commands that can\nbe recorded is largely unchanged. This section documents several exceptions.\nDue to the continuously evolving API, this may not be a complete list of exceptions.",{"type":10,"tag":11,"props":1081,"children":1082},{},[1083,1085,1089,1091,1097],{"type":15,"value":1084},"Where ",{"type":10,"tag":842,"props":1086,"children":1087},{},[1088],{"type":15,"value":184},{"type":15,"value":1090}," is enabled, ",{"type":10,"tag":122,"props":1092,"children":1094},{"className":1093},[],[1095],{"type":15,"value":1096},"vkCmdDispatch*",{"type":15,"value":1098}," commands are allowed.",{"type":10,"tag":11,"props":1100,"children":1101},{},[1102,1103,1107,1109,1115,1116,1122,1124,1130,1132,1138,1139,1145,1146,1152,1153,1159,1160,1166,1167,1173,1175,1181,1182,1188,1190,1196,1198,1203,1205,1212],{"type":15,"value":1084},{"type":10,"tag":842,"props":1104,"children":1105},{},[1106],{"type":15,"value":184},{"type":15,"value":1108}," is enabled the following are disallowed:\n* Transform feedback commands are not allowed: ",{"type":10,"tag":122,"props":1110,"children":1112},{"className":1111},[],[1113],{"type":15,"value":1114},"vkCmdBeginTransformFeedbackEXT",{"type":15,"value":230},{"type":10,"tag":122,"props":1117,"children":1119},{"className":1118},[],[1120],{"type":15,"value":1121},"vkCmdEndTransformFeedbackEXT",{"type":15,"value":1123},".\n* Query commands are not allowed: ",{"type":10,"tag":122,"props":1125,"children":1127},{"className":1126},[],[1128],{"type":15,"value":1129},"vkCmdBeginQueryIndexedEXT",{"type":15,"value":1131},", ",{"type":10,"tag":122,"props":1133,"children":1135},{"className":1134},[],[1136],{"type":15,"value":1137},"vkCmdEndQueryIndexedEXT",{"type":15,"value":230},{"type":10,"tag":122,"props":1140,"children":1142},{"className":1141},[],[1143],{"type":15,"value":1144},"vkCmdBeginQuery",{"type":15,"value":1131},{"type":10,"tag":122,"props":1147,"children":1149},{"className":1148},[],[1150],{"type":15,"value":1151},"vkCmdWriteTimestamp', `vkCmdEndQuery",{"type":15,"value":1131},{"type":10,"tag":122,"props":1154,"children":1156},{"className":1155},[],[1157],{"type":15,"value":1158},"vkCmdDebugMarkerBeginEXT",{"type":15,"value":1131},{"type":10,"tag":122,"props":1161,"children":1163},{"className":1162},[],[1164],{"type":15,"value":1165},"vkCmdDebugMarkerEndEXT",{"type":15,"value":230},{"type":10,"tag":122,"props":1168,"children":1170},{"className":1169},[],[1171],{"type":15,"value":1172},"vkCmdDebugMarkerInsertEXT",{"type":15,"value":1174},".\n* Some synchronization commands are not allowed: ",{"type":10,"tag":122,"props":1176,"children":1178},{"className":1177},[],[1179],{"type":15,"value":1180},"vkCmdWaitEvents2",{"type":15,"value":1131},{"type":10,"tag":122,"props":1183,"children":1185},{"className":1184},[],[1186],{"type":15,"value":1187},"vkCmdWaitEvents",{"type":15,"value":1189},".\n* The following action command is not allowed: ",{"type":10,"tag":122,"props":1191,"children":1193},{"className":1192},[],[1194],{"type":15,"value":1195},"vkCmdClearAttachments",{"type":15,"value":1197},"\n* Access of an attachment with layout ",{"type":10,"tag":122,"props":1199,"children":1201},{"className":1200},[],[1202],{"type":15,"value":1046},{"type":15,"value":1204},"\nas provided by ",{"type":10,"tag":94,"props":1206,"children":1209},{"href":1207,"rel":1208},"https://docs.vulkan.org/spec/latest/appendices/extensions.html#VK_EXT_attachment_feedback_loop_layout",[98],[1210],{"type":15,"value":1211},"VK_EXT_attachment_feedback_loop_layout",{"type":15,"value":1213},".\n* Any commands that would cause a invocations of the tessellation, geometry, ray tracing,\nor mesh shading shader stages.",{"type":10,"tag":11,"props":1215,"children":1216},{},[1217],{"type":15,"value":1218},"Other tile shading restrictions:",{"type":10,"tag":86,"props":1220,"children":1221},{},[1222,1234,1254],{"type":10,"tag":90,"props":1223,"children":1224},{},[1225,1227,1233],{"type":15,"value":1226},"A render pass that enables tile shading must not be recorded\ninside a command buffer created with ",{"type":10,"tag":122,"props":1228,"children":1230},{"className":1229},[],[1231],{"type":15,"value":1232},"VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT",{"type":15,"value":218},{"type":10,"tag":90,"props":1235,"children":1236},{},[1237,1239,1245,1247,1253],{"type":15,"value":1238},"A render pass that enables tile shading must not include the\n",{"type":10,"tag":122,"props":1240,"children":1242},{"className":1241},[],[1243],{"type":15,"value":1244},"VkRenderPassFragmentDensityMapCreateInfoEXT::fragmentDensityMapAttachment",{"type":15,"value":1246}," equal\nto a value other than ",{"type":10,"tag":122,"props":1248,"children":1250},{"className":1249},[],[1251],{"type":15,"value":1252},"VK_NULL",{"type":15,"value":218},{"type":10,"tag":90,"props":1255,"children":1256},{},[1257,1259,1266],{"type":15,"value":1258},"A render pass that enables tile shading must not render\nto Android Hardware Buffers with external formats as provided by\n",{"type":10,"tag":94,"props":1260,"children":1263},{"href":1261,"rel":1262},"https://docs.vulkan.org/spec/latest/appendices/extensions.html#VK_ANDROID_external_format_resolve",[98],[1264],{"type":15,"value":1265},"VK_ANDROID_external_format_resolve",{"type":15,"value":218},{"type":10,"tag":249,"props":1268,"children":1270},{"id":1269},"_tile_apron",[1271],{"type":15,"value":1272},"Tile Apron",{"type":10,"tag":11,"props":1274,"children":1275},{},[1276,1278,1282,1284,1289,1291,1297,1299,1304,1306,1311,1313,1319],{"type":15,"value":1277},"In a render pass that enables tile shading, a ",{"type":10,"tag":842,"props":1279,"children":1280},{},[1281],{"type":15,"value":538},{"type":15,"value":1283}," be enabled by setting\n",{"type":10,"tag":122,"props":1285,"children":1287},{"className":1286},[],[1288],{"type":15,"value":531},{"type":15,"value":1290}," to a value other than (0,0). Subpass must be specified with flags\nthat include ",{"type":10,"tag":122,"props":1292,"children":1294},{"className":1293},[],[1295],{"type":15,"value":1296},"VK_SUBPASS_DESCRIPTION_TILE_SHADING_APRON_BIT_QCOM",{"type":15,"value":1298}," or the apron\nsize will be (0,0) for that subpass, and apps must not access values outside the tile.\nThe tile apron enables shader invocations to load from tile attachment variables at a\nlocation that is outside the current tile. The (width,height) value of ",{"type":10,"tag":122,"props":1300,"children":1302},{"className":1301},[],[1303],{"type":15,"value":531},{"type":15,"value":1305},"\nspecifies the number of pixels in the horizontal and vertical directions that are\nincluded in the apron region. For example, (1,1) means that the apron region extends\nthe top, bottom, left and right margins of the tile by 1 pixel. The ",{"type":10,"tag":122,"props":1307,"children":1309},{"className":1308},[],[1310],{"type":15,"value":531},{"type":15,"value":1312},"\nmust not exceed ",{"type":10,"tag":122,"props":1314,"children":1316},{"className":1315},[],[1317],{"type":15,"value":1318},"VkPhysicalDeviceTileShadingPropertiesQCOM::maxApronSize",{"type":15,"value":218},{"type":10,"tag":11,"props":1321,"children":1322},{},[1323],{"type":15,"value":1324},"The tile apron feature is expected to be important for image-based algorithms that require\naccess to a single pixel and the neighborhood of pixels around it. These included image\nprocessing use-cases such as convolution image processing and gaming use-cases such as\nscreen-space ambient occlusion (SSAO).\nA good mental model for the tile apron is to think of it as enabling \"overlapping\ntiles\".\nWhen enabled, the margins of each tile are extended in the horizontal and vertical\ndirections, to include some pixels that belong to the adjacent tiles.\nThose pixels that are outside the original tile extents, but within the apron region\nare termed \"apron pixels\".",{"type":10,"tag":11,"props":1326,"children":1327},{},[1328,1330,1336,1338,1344,1345,1351,1353,1359,1361,1367],{"type":15,"value":1329},"Apron pixels will be initialized as specified by the render pass ",{"type":10,"tag":122,"props":1331,"children":1333},{"className":1332},[],[1334],{"type":15,"value":1335},"VkAttachmentLoadOp",{"type":15,"value":1337},",\nand are updated by draw commands that execute inside the render pass, but they are\nalways discarded at the end of the render pass (i.e., never stored to the attachment\nby VkAttachmentStoreOp).\nIn a tile shading render pass, fragment and compute shader invocations can load apron\npixels with ",{"type":10,"tag":122,"props":1339,"children":1341},{"className":1340},[],[1342],{"type":15,"value":1343},"OpImageRead",{"type":15,"value":275},{"type":10,"tag":122,"props":1346,"children":1348},{"className":1347},[],[1349],{"type":15,"value":1350},"OpImageSparseRead",{"type":15,"value":1352}," but cannot store to apron pixels using\n",{"type":10,"tag":122,"props":1354,"children":1356},{"className":1355},[],[1357],{"type":15,"value":1358},"OpImageWrite",{"type":15,"value":1360}," or with atomic operations using ",{"type":10,"tag":122,"props":1362,"children":1364},{"className":1363},[],[1365],{"type":15,"value":1366},"OpImageTexelPointer",{"type":15,"value":1368},".\nEnabling the apron for a render pass instance affects color, depth, and input attachments.",{"type":10,"tag":11,"props":1370,"children":1371},{},[1372],{"type":15,"value":1373},"Enabling the apron will reduce the efficiency of TBDR GPU rendering, with larger apron sizes\nhaving greater impact. Aprons should be enabled judiciously.",{"type":10,"tag":249,"props":1375,"children":1377},{"id":1376},"_area_based_dispatch",[1378],{"type":15,"value":1379},"Area-based dispatch",{"type":10,"tag":11,"props":1381,"children":1382},{},[1383,1385],{"type":15,"value":1384},"The following command executes a tile-sized dispatch, where\n",{"type":10,"tag":94,"props":1386,"children":1388},{"href":96,"rel":1387},[98],[1389],{"type":15,"value":101},{"type":10,"tag":11,"props":1391,"children":1392},{},[1393,1399],{"type":10,"tag":122,"props":1394,"children":1396},{"className":1395},[],[1397],{"type":15,"value":1398},"VkTilePropertiesQCOM::tileSize",{"type":15,"value":1400}," or the associated shader built-ins provide\nthe tile dimensions.",{"type":10,"tag":300,"props":1402,"children":1404},{"className":302,"code":1403,"language":304,"meta":305,"style":305},"typedef struct VkDispatchTileInfoQCOM {\n VkStructureType sType;\n const void* pNext;\n} VkDispatchTileInfoQCOM;\n\nvoid vkCmdDispatchTileQCOM(\n VkCommandBuffer c,\n const VkDispatchTileInfoQCOM* pDispatchTileInfo);\n",[1405],{"type":10,"tag":122,"props":1406,"children":1407},{"__ignoreMap":305},[1408,1424,1431,1446,1454,1461,1477,1492],{"type":10,"tag":311,"props":1409,"children":1410},{"class":313,"line":314},[1411,1415,1419],{"type":10,"tag":311,"props":1412,"children":1413},{"style":318},[1414],{"type":15,"value":321},{"type":10,"tag":311,"props":1416,"children":1417},{"style":318},[1418],{"type":15,"value":462},{"type":10,"tag":311,"props":1420,"children":1421},{"style":329},[1422],{"type":15,"value":1423}," VkDispatchTileInfoQCOM {\n",{"type":10,"tag":311,"props":1425,"children":1426},{"class":313,"line":335},[1427],{"type":10,"tag":311,"props":1428,"children":1429},{"style":329},[1430],{"type":15,"value":625},{"type":10,"tag":311,"props":1432,"children":1433},{"class":313,"line":364},[1434,1438,1442],{"type":10,"tag":311,"props":1435,"children":1436},{"style":318},[1437],{"type":15,"value":485},{"type":10,"tag":311,"props":1439,"children":1440},{"style":318},[1441],{"type":15,"value":490},{"type":10,"tag":311,"props":1443,"children":1444},{"style":329},[1445],{"type":15,"value":641},{"type":10,"tag":311,"props":1447,"children":1448},{"class":313,"line":390},[1449],{"type":10,"tag":311,"props":1450,"children":1451},{"style":329},[1452],{"type":15,"value":1453},"} VkDispatchTileInfoQCOM;\n",{"type":10,"tag":311,"props":1455,"children":1456},{"class":313,"line":412},[1457],{"type":10,"tag":311,"props":1458,"children":1459},{"emptyLinePlaceholder":425},[1460],{"type":15,"value":428},{"type":10,"tag":311,"props":1462,"children":1463},{"class":313,"line":421},[1464,1468,1473],{"type":10,"tag":311,"props":1465,"children":1466},{"style":318},[1467],{"type":15,"value":717},{"type":10,"tag":311,"props":1469,"children":1470},{"style":720},[1471],{"type":15,"value":1472}," vkCmdDispatchTileQCOM",{"type":10,"tag":311,"props":1474,"children":1475},{"style":329},[1476],{"type":15,"value":728},{"type":10,"tag":311,"props":1478,"children":1479},{"class":313,"line":431},[1480,1484,1488],{"type":10,"tag":311,"props":1481,"children":1482},{"style":329},[1483],{"type":15,"value":736},{"type":10,"tag":311,"props":1485,"children":1486},{"style":739},[1487],{"type":15,"value":304},{"type":10,"tag":311,"props":1489,"children":1490},{"style":329},[1491],{"type":15,"value":230},{"type":10,"tag":311,"props":1493,"children":1494},{"class":313,"line":444},[1495,1499,1504,1508,1513],{"type":10,"tag":311,"props":1496,"children":1497},{"style":318},[1498],{"type":15,"value":485},{"type":10,"tag":311,"props":1500,"children":1501},{"style":329},[1502],{"type":15,"value":1503}," VkDispatchTileInfoQCOM",{"type":10,"tag":311,"props":1505,"children":1506},{"style":318},[1507],{"type":15,"value":763},{"type":10,"tag":311,"props":1509,"children":1510},{"style":739},[1511],{"type":15,"value":1512}," pDispatchTileInfo",{"type":10,"tag":311,"props":1514,"children":1515},{"style":329},[1516],{"type":15,"value":773},{"type":10,"tag":11,"props":1518,"children":1519},{},[1520,1522,1526,1528,1533,1535,1540],{"type":15,"value":1521},"This command operates in the\n",{"type":10,"tag":94,"props":1523,"children":1524},{"href":181},[1525],{"type":15,"value":184},{"type":15,"value":1527},",\ninvoking a separate dispatch for each ",{"type":10,"tag":842,"props":1529,"children":1530},{},[1531],{"type":15,"value":1532},"covered tile",{"type":15,"value":1534},".\nThe global workgroup count and local workgroup size of each dispatch are defined by the\nimplementation to efficiently iterate over a uniform grid of pixel blocks within\nthe area of its ",{"type":10,"tag":842,"props":1536,"children":1537},{},[1538],{"type":15,"value":1539},"active tile",{"type":15,"value":218},{"type":10,"tag":11,"props":1542,"children":1543},{},[1544,1546,1551,1553,1557,1559,1565,1567,1571,1573,1578,1580,1586,1588,1592,1594,1600],{"type":15,"value":1545},"Each shader invocation operates on a single pixel block and its size is determined by the shader’s\ntiling rate, which ",{"type":10,"tag":842,"props":1547,"children":1548},{},[1549],{"type":15,"value":1550},"must",{"type":15,"value":1552}," be defined by shaders executed by this command. The TileShadingRateQCOM\nexecution mode operand defines the shader’s tiling rate. Its x and y ",{"type":10,"tag":842,"props":1554,"children":1555},{},[1556],{"type":15,"value":1550},{"type":15,"value":1558}," be a power\nof two and less than or equal to the ",{"type":10,"tag":94,"props":1560,"children":1562},{"href":1561},"/man/VkPhysicalDeviceTileShadingPropertiesQCOM#limits-maxTileShadingRate",[1563],{"type":15,"value":1564},"maxTileShadingRate",{"type":15,"value":1566}," limit.\nIts z ",{"type":10,"tag":842,"props":1568,"children":1569},{},[1570],{"type":15,"value":1550},{"type":15,"value":1572}," be less than or equal to the z value of the active tile size as returned by\n",{"type":10,"tag":122,"props":1574,"children":1576},{"className":1575},[],[1577],{"type":15,"value":101},{"type":15,"value":1579},", and\n",{"type":10,"tag":122,"props":1581,"children":1583},{"className":1582},[],[1584],{"type":15,"value":1585},"VkTilePropertiesQCOM::tileSize.z % TileShadingRateQCOM.z",{"type":15,"value":1587}," ",{"type":10,"tag":842,"props":1589,"children":1590},{},[1591],{"type":15,"value":1550},{"type":15,"value":1593}," equal ",{"type":10,"tag":122,"props":1595,"children":1597},{"className":1596},[],[1598],{"type":15,"value":1599},"0",{"type":15,"value":218},{"type":10,"tag":11,"props":1602,"children":1603},{},[1604,1606],{"type":15,"value":1605},"The start location of the shader invocation’s pixel block is\n",{"type":10,"tag":122,"props":1607,"children":1609},{"className":1608},[],[1610],{"type":15,"value":1611},"vec3(TileOffsetQCOM, 0) + (GlobalInvocationId * TileShadingRateQCOM)",{"type":10,"tag":11,"props":1613,"children":1614},{},[1615,1617,1622,1624,1628,1630,1635],{"type":15,"value":1616},"Shader invocations ",{"type":10,"tag":842,"props":1618,"children":1619},{},[1620],{"type":15,"value":1621},"can",{"type":15,"value":1623}," perform tile attachment load/store operations at\nany location within the ",{"type":10,"tag":842,"props":1625,"children":1626},{},[1627],{"type":15,"value":1539},{"type":15,"value":1629},", but the most efficient access ",{"type":10,"tag":842,"props":1631,"children":1632},{},[1633],{"type":15,"value":1634},"may",{"type":15,"value":1636},"\nbe limited to fragment locations within and local to the shader invocation’s pixel block.",{"type":10,"tag":249,"props":1638,"children":1640},{"id":1639},"spirv-changes",[1641],{"type":15,"value":1063},{"type":10,"tag":11,"props":1643,"children":1644},{},[1645,1647,1653],{"type":15,"value":1646},"The proposed SPIR-V extension ",{"type":10,"tag":122,"props":1648,"children":1650},{"className":1649},[],[1651],{"type":15,"value":1652},"SPV_QCOM_tile_shading",{"type":15,"value":1654}," will add the following SPIR-V Capabilities,\nInstructions, Storage Classes, and Decorations.",{"type":10,"tag":300,"props":1656,"children":1658},{"className":302,"code":1657,"language":304,"meta":305,"style":305},"Capability Meaning\n------------- ----------------------------------------------\nTileShadingQCOM Enables access to tile image attachments.\n\nStorage Class Meaning\n------------- ----------------------------------------------\nTileAttachmentQCOM Tile image variable. Fragment or Compute.\n\n\nExecution Mode Meaning\n------------- ---------------------------------------\nNonCoherentTileAttachmentReadQCOM Disables raster order guarantee. Fragment only.\n",[1659],{"type":10,"tag":122,"props":1660,"children":1661},{"__ignoreMap":305},[1662,1670,1683,1691,1698,1706,1717,1725,1732,1739,1747,1759],{"type":10,"tag":311,"props":1663,"children":1664},{"class":313,"line":314},[1665],{"type":10,"tag":311,"props":1666,"children":1667},{"style":329},[1668],{"type":15,"value":1669},"Capability Meaning\n",{"type":10,"tag":311,"props":1671,"children":1672},{"class":313,"line":335},[1673,1678],{"type":10,"tag":311,"props":1674,"children":1675},{"style":318},[1676],{"type":15,"value":1677},"-------------",{"type":10,"tag":311,"props":1679,"children":1680},{"style":318},[1681],{"type":15,"value":1682}," ----------------------------------------------\n",{"type":10,"tag":311,"props":1684,"children":1685},{"class":313,"line":364},[1686],{"type":10,"tag":311,"props":1687,"children":1688},{"style":329},[1689],{"type":15,"value":1690},"TileShadingQCOM Enables access to tile image attachments.\n",{"type":10,"tag":311,"props":1692,"children":1693},{"class":313,"line":390},[1694],{"type":10,"tag":311,"props":1695,"children":1696},{"emptyLinePlaceholder":425},[1697],{"type":15,"value":428},{"type":10,"tag":311,"props":1699,"children":1700},{"class":313,"line":412},[1701],{"type":10,"tag":311,"props":1702,"children":1703},{"style":329},[1704],{"type":15,"value":1705},"Storage Class Meaning\n",{"type":10,"tag":311,"props":1707,"children":1708},{"class":313,"line":421},[1709,1713],{"type":10,"tag":311,"props":1710,"children":1711},{"style":318},[1712],{"type":15,"value":1677},{"type":10,"tag":311,"props":1714,"children":1715},{"style":318},[1716],{"type":15,"value":1682},{"type":10,"tag":311,"props":1718,"children":1719},{"class":313,"line":431},[1720],{"type":10,"tag":311,"props":1721,"children":1722},{"style":329},[1723],{"type":15,"value":1724},"TileAttachmentQCOM Tile image variable. Fragment or Compute.\n",{"type":10,"tag":311,"props":1726,"children":1727},{"class":313,"line":444},[1728],{"type":10,"tag":311,"props":1729,"children":1730},{"emptyLinePlaceholder":425},[1731],{"type":15,"value":428},{"type":10,"tag":311,"props":1733,"children":1734},{"class":313,"line":452},[1735],{"type":10,"tag":311,"props":1736,"children":1737},{"emptyLinePlaceholder":425},[1738],{"type":15,"value":428},{"type":10,"tag":311,"props":1740,"children":1741},{"class":313,"line":470},[1742],{"type":10,"tag":311,"props":1743,"children":1744},{"style":329},[1745],{"type":15,"value":1746},"Execution Mode Meaning\n",{"type":10,"tag":311,"props":1748,"children":1749},{"class":313,"line":479},[1750,1754],{"type":10,"tag":311,"props":1751,"children":1752},{"style":318},[1753],{"type":15,"value":1677},{"type":10,"tag":311,"props":1755,"children":1756},{"style":318},[1757],{"type":15,"value":1758}," ---------------------------------------\n",{"type":10,"tag":311,"props":1760,"children":1761},{"class":313,"line":498},[1762],{"type":10,"tag":311,"props":1763,"children":1764},{"style":329},[1765],{"type":15,"value":1766},"NonCoherentTileAttachmentReadQCOM Disables raster order guarantee. Fragment only.\n",{"type":10,"tag":11,"props":1768,"children":1769},{},[1770,1775,1777,1783,1785,1791],{"type":10,"tag":94,"props":1771,"children":1772},{"href":144},[1773],{"type":15,"value":1774},"Tile attachment",{"type":15,"value":1776}," variables are declared\nas ",{"type":10,"tag":122,"props":1778,"children":1780},{"className":1779},[],[1781],{"type":15,"value":1782},"OpTypeImage",{"type":15,"value":1784}," variables with storage class ",{"type":10,"tag":122,"props":1786,"children":1788},{"className":1787},[],[1789],{"type":15,"value":1790},"TileAttachmentQCOM",{"type":15,"value":1792},".\nSuch variables can be used to perform tile read/write operations, tile sampling\noperations, or tile atomic operations.\nThese variables must be 2D images but can be arrayed, layered, and/or\nmulti-sampled.\nThese variables require \"DescriptorSet\" and \"Binding\" decorations,\nbut do not require the \"Location\" nor the \"InputAttachmentIndex\" decorations.",{"type":10,"tag":11,"props":1794,"children":1795},{},[1796,1798,1803,1804,1809,1810,1815,1817,1822],{"type":15,"value":1797},"Such variables can be consumed by ",{"type":10,"tag":122,"props":1799,"children":1801},{"className":1800},[],[1802],{"type":15,"value":1343},{"type":15,"value":1131},{"type":10,"tag":122,"props":1805,"children":1807},{"className":1806},[],[1808],{"type":15,"value":1350},{"type":15,"value":1131},{"type":10,"tag":122,"props":1811,"children":1813},{"className":1812},[],[1814],{"type":15,"value":1358},{"type":15,"value":1816},",\nand ",{"type":10,"tag":122,"props":1818,"children":1820},{"className":1819},[],[1821],{"type":15,"value":1366},{"type":15,"value":218},{"type":10,"tag":11,"props":1824,"children":1825},{},[1826,1828,1834,1836,1842],{"type":15,"value":1827},"To declare a tile attachment variable compatible with sampling operations,\nthe variable must be declared as described above except that the ",{"type":10,"tag":122,"props":1829,"children":1831},{"className":1830},[],[1832],{"type":15,"value":1833},"Sampled",{"type":15,"value":1835},"\noperand must be equal to ",{"type":10,"tag":122,"props":1837,"children":1839},{"className":1838},[],[1840],{"type":15,"value":1841},"1",{"type":15,"value":218},{"type":10,"tag":11,"props":1844,"children":1845},{},[1846,1848,1853,1854,1859,1860,1866,1867,1873,1874,1880,1882,1888,1890,1895],{"type":15,"value":1847},"Each tile attachment image variable must be backed by an associated descriptor of\ntype ",{"type":10,"tag":122,"props":1849,"children":1851},{"className":1850},[],[1852],{"type":15,"value":971},{"type":15,"value":1131},{"type":10,"tag":122,"props":1855,"children":1857},{"className":1856},[],[1858],{"type":15,"value":979},{"type":15,"value":230},{"type":10,"tag":122,"props":1861,"children":1863},{"className":1862},[],[1864],{"type":15,"value":1865},"VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER",{"type":15,"value":1131},{"type":10,"tag":122,"props":1868,"children":1870},{"className":1869},[],[1871],{"type":15,"value":1872},"VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM",{"type":15,"value":230},{"type":10,"tag":122,"props":1875,"children":1877},{"className":1876},[],[1878],{"type":15,"value":1879},"VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM",{"type":15,"value":1881},", or\n",{"type":10,"tag":122,"props":1883,"children":1885},{"className":1884},[],[1886],{"type":15,"value":1887},"VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT",{"type":15,"value":1889},"\nthat is equivalent to the ",{"type":10,"tag":122,"props":1891,"children":1893},{"className":1892},[],[1894],{"type":15,"value":958},{"type":15,"value":1896}," specified as an attachment in the current\nrender pass instance.",{"type":10,"tag":11,"props":1898,"children":1899},{},[1900],{"type":15,"value":1901},"Other restrictions, such the valid shader stages, formats, and image coordinates\nfor access to these tile image variables are specified by Vulkan SPIR-V environment.",{"type":10,"tag":11,"props":1903,"children":1904},{},[1905,1907,1913],{"type":15,"value":1906},"The extension adds the optional execution mode ",{"type":10,"tag":122,"props":1908,"children":1910},{"className":1909},[],[1911],{"type":15,"value":1912},"NonCoherentTileAttachmentReadQCOM",{"type":15,"value":1914},".\nWhen the new execution mode is enabled, the read operations of\ntile image attachments are not guaranteed to be in rasterization order.\nThis execution mode is only valid for the fragment shader.",{"type":10,"tag":11,"props":1916,"children":1917},{},[1918],{"type":15,"value":1919},"The following built-in input variables are proposed, describing the (x,y)\nlocation and extent of the current tile:",{"type":10,"tag":300,"props":1921,"children":1923},{"className":302,"code":1922,"language":304,"meta":305,"style":305},"TileOffsetQCOM; // uvec2 framebuffer coordinates of top-left\n // texel of active tile.\nTileDimensionQCOM; // uvec3 tile size (width,height,layers) in texels of\n // the current tile.\nTileApronSizeQCOM; // uvec2 size of (vertical,horizontal) apron for the\n // active tile.\n",[1924],{"type":10,"tag":122,"props":1925,"children":1926},{"__ignoreMap":305},[1927,1941,1949,1962,1970,1983],{"type":10,"tag":311,"props":1928,"children":1929},{"class":313,"line":314},[1930,1935],{"type":10,"tag":311,"props":1931,"children":1932},{"style":329},[1933],{"type":15,"value":1934},"TileOffsetQCOM;",{"type":10,"tag":311,"props":1936,"children":1938},{"style":1937},"--shiki-default:#6E7781;--shiki-dark:#8B949E",[1939],{"type":15,"value":1940}," // uvec2 framebuffer coordinates of top-left\n",{"type":10,"tag":311,"props":1942,"children":1943},{"class":313,"line":335},[1944],{"type":10,"tag":311,"props":1945,"children":1946},{"style":1937},[1947],{"type":15,"value":1948}," // texel of active tile.\n",{"type":10,"tag":311,"props":1950,"children":1951},{"class":313,"line":364},[1952,1957],{"type":10,"tag":311,"props":1953,"children":1954},{"style":329},[1955],{"type":15,"value":1956},"TileDimensionQCOM;",{"type":10,"tag":311,"props":1958,"children":1959},{"style":1937},[1960],{"type":15,"value":1961}," // uvec3 tile size (width,height,layers) in texels of\n",{"type":10,"tag":311,"props":1963,"children":1964},{"class":313,"line":390},[1965],{"type":10,"tag":311,"props":1966,"children":1967},{"style":1937},[1968],{"type":15,"value":1969}," // the current tile.\n",{"type":10,"tag":311,"props":1971,"children":1972},{"class":313,"line":412},[1973,1978],{"type":10,"tag":311,"props":1974,"children":1975},{"style":329},[1976],{"type":15,"value":1977},"TileApronSizeQCOM;",{"type":10,"tag":311,"props":1979,"children":1980},{"style":1937},[1981],{"type":15,"value":1982}," // uvec2 size of (vertical,horizontal) apron for the\n",{"type":10,"tag":311,"props":1984,"children":1985},{"class":313,"line":421},[1986],{"type":10,"tag":311,"props":1987,"children":1988},{"style":1937},[1989],{"type":15,"value":1990}," // active tile.\n",{"type":10,"tag":11,"props":1992,"children":1993},{},[1994],{"type":15,"value":1995},"The Vulkan SPIR-V environment will specify that:",{"type":10,"tag":86,"props":1997,"children":1998},{},[1999,2019,2031,2050,2055,2073,2090],{"type":10,"tag":90,"props":2000,"children":2001},{},[2002,2004,2010,2012,2017],{"type":15,"value":2003},"The ",{"type":10,"tag":122,"props":2005,"children":2007},{"className":2006},[],[2008],{"type":15,"value":2009},"tileShading",{"type":15,"value":2011}," feature must be enabled to create fragment or compute shader\nmodules with the ",{"type":10,"tag":122,"props":2013,"children":2015},{"className":2014},[],[2016],{"type":15,"value":551},{"type":15,"value":2018}," capability.",{"type":10,"tag":90,"props":2020,"children":2021},{},[2022,2024,2029],{"type":15,"value":2023},"A pipeline that contains shaders with ",{"type":10,"tag":122,"props":2025,"children":2027},{"className":2026},[],[2028],{"type":15,"value":551},{"type":15,"value":2030}," capability can only be bound in\na render pass instance that enables tile shading.",{"type":10,"tag":90,"props":2032,"children":2033},{},[2034,2036,2041,2043,2048],{"type":15,"value":2035},"A compute shader can use stores (via ",{"type":10,"tag":122,"props":2037,"children":2039},{"className":2038},[],[2040],{"type":15,"value":1358},{"type":15,"value":2042},") and atomics (via ",{"type":10,"tag":122,"props":2044,"children":2046},{"className":2045},[],[2047],{"type":15,"value":1366},{"type":15,"value":2049},")\nfor tile color attachments. Compute shader stores and atomics are not allowed for tile\ndepth/stencil or tile input attachments.",{"type":10,"tag":90,"props":2051,"children":2052},{},[2053],{"type":15,"value":2054},"A fragment shader must not use stores for tile color, tile input, or tile depth/stencil attachments.",{"type":10,"tag":90,"props":2056,"children":2057},{},[2058,2060,2065,2066,2071],{"type":15,"value":2059},"A fragment or compute shader can use loads (",{"type":10,"tag":122,"props":2061,"children":2063},{"className":2062},[],[2064],{"type":15,"value":1343},{"type":15,"value":1131},{"type":10,"tag":122,"props":2067,"children":2069},{"className":2068},[],[2070],{"type":15,"value":1350},{"type":15,"value":2072},") for tile color, tile depth/stencil,\nor tile input attachments.",{"type":10,"tag":90,"props":2074,"children":2075},{},[2076,2078,2082,2084,2089],{"type":15,"value":2077},"If the ",{"type":10,"tag":94,"props":2079,"children":2080},{"href":168},[2081],{"type":15,"value":538},{"type":15,"value":2083}," has width or height greater than zero, then loads\nand sampling of apron pixels (outside the tile, but within\nthe apron) are allowed. Stores to apron pixels are disallowed. If not executing in a dynamic render pass,\nthe subpass flags must include ",{"type":10,"tag":122,"props":2085,"children":2087},{"className":2086},[],[2088],{"type":15,"value":1296},{"type":15,"value":218},{"type":10,"tag":90,"props":2091,"children":2092},{},[2093,2094,2099,2100,2105,2106,2111,2113,2118,2120,2126],{"type":15,"value":2077},{"type":10,"tag":122,"props":2095,"children":2097},{"className":2096},[],[2098],{"type":15,"value":1343},{"type":15,"value":1131},{"type":10,"tag":122,"props":2101,"children":2103},{"className":2102},[],[2104],{"type":15,"value":1350},{"type":15,"value":1131},{"type":10,"tag":122,"props":2107,"children":2109},{"className":2108},[],[2110],{"type":15,"value":1358},{"type":15,"value":2112},", or ",{"type":10,"tag":122,"props":2114,"children":2116},{"className":2115},[],[2117],{"type":15,"value":1366},{"type":15,"value":2119}," instructions access a\ntile attachment, the Coordinate must be a location within the tile extent and within\nthe render pass ",{"type":10,"tag":122,"props":2121,"children":2123},{"className":2122},[],[2124],{"type":15,"value":2125},"renderArea",{"type":15,"value":218},{"type":10,"tag":249,"props":2128,"children":2130},{"id":2129},"_high_level_language_exposure",[2131],{"type":15,"value":2132},"High Level Language Exposure",{"type":10,"tag":11,"props":2134,"children":2135},{},[2136],{"type":15,"value":2137},"The GLSL extension GL_QCOM_tile_shading will adds the following types, storage qualifiers,\nlayout qualifiers, and built-in variables.",{"type":10,"tag":300,"props":2139,"children":2141},{"className":302,"code":2140,"language":304,"meta":305,"style":305},"Layout Qualifier Meaning\n--------------------------- ---------------------------------------------\nnon_coherent_attachment_readQCOM \"In-only\" fragment qualifier (like early_fragment_tests).\n Specifies that image attachment reads do not follow raster order.\n\ntile_memoryQCOM A uniform qualifier for fragment and compute shaders.\n Can be used for storage image types (i.e. image2D) as well as\n read-only types (texture2D, sampler2D).\n\nBuilt-in Variable Meaning\n--------------------------- ---------------------------------------------\nin uvec2 gl_TileOffsetQCOM The framebuffer coordinates of the top-left texel\n of the current tile.\nin uvec3 gl_TileDimensionQCOM The dimension of the current tile in pixels.\nin uvec2 gl_TileApronSizeQCOM The apron width and height.\n",[2142],{"type":10,"tag":122,"props":2143,"children":2144},{"__ignoreMap":305},[2145,2153,2166,2205,2223,2230,2248,2275,2302,2309,2326,2338,2355,2363,2371],{"type":10,"tag":311,"props":2146,"children":2147},{"class":313,"line":314},[2148],{"type":10,"tag":311,"props":2149,"children":2150},{"style":329},[2151],{"type":15,"value":2152},"Layout Qualifier Meaning\n",{"type":10,"tag":311,"props":2154,"children":2155},{"class":313,"line":335},[2156,2161],{"type":10,"tag":311,"props":2157,"children":2158},{"style":318},[2159],{"type":15,"value":2160},"---------------------------",{"type":10,"tag":311,"props":2162,"children":2163},{"style":318},[2164],{"type":15,"value":2165}," ---------------------------------------------\n",{"type":10,"tag":311,"props":2167,"children":2168},{"class":313,"line":364},[2169,2174,2180,2185,2190,2195,2200],{"type":10,"tag":311,"props":2170,"children":2171},{"style":329},[2172],{"type":15,"value":2173},"non_coherent_attachment_readQCOM ",{"type":10,"tag":311,"props":2175,"children":2177},{"style":2176},"--shiki-default:#0A3069;--shiki-dark:#A5D6FF",[2178],{"type":15,"value":2179},"\"In-only\"",{"type":10,"tag":311,"props":2181,"children":2182},{"style":329},[2183],{"type":15,"value":2184}," fragment ",{"type":10,"tag":311,"props":2186,"children":2187},{"style":720},[2188],{"type":15,"value":2189},"qualifier",{"type":10,"tag":311,"props":2191,"children":2192},{"style":329},[2193],{"type":15,"value":2194}," (like ",{"type":10,"tag":311,"props":2196,"children":2197},{"style":739},[2198],{"type":15,"value":2199},"early_fragment_tests",{"type":10,"tag":311,"props":2201,"children":2202},{"style":329},[2203],{"type":15,"value":2204},").\n",{"type":10,"tag":311,"props":2206,"children":2207},{"class":313,"line":390},[2208,2213,2218],{"type":10,"tag":311,"props":2209,"children":2210},{"style":329},[2211],{"type":15,"value":2212}," Specifies that image attachment reads ",{"type":10,"tag":311,"props":2214,"children":2215},{"style":318},[2216],{"type":15,"value":2217},"do",{"type":10,"tag":311,"props":2219,"children":2220},{"style":329},[2221],{"type":15,"value":2222}," not follow raster order.\n",{"type":10,"tag":311,"props":2224,"children":2225},{"class":313,"line":412},[2226],{"type":10,"tag":311,"props":2227,"children":2228},{"emptyLinePlaceholder":425},[2229],{"type":15,"value":428},{"type":10,"tag":311,"props":2231,"children":2232},{"class":313,"line":421},[2233,2238,2243],{"type":10,"tag":311,"props":2234,"children":2235},{"style":329},[2236],{"type":15,"value":2237},"tile_memoryQCOM A uniform qualifier ",{"type":10,"tag":311,"props":2239,"children":2240},{"style":318},[2241],{"type":15,"value":2242},"for",{"type":10,"tag":311,"props":2244,"children":2245},{"style":329},[2246],{"type":15,"value":2247}," fragment and compute shaders.\n",{"type":10,"tag":311,"props":2249,"children":2250},{"class":313,"line":431},[2251,2256,2260,2265,2270],{"type":10,"tag":311,"props":2252,"children":2253},{"style":329},[2254],{"type":15,"value":2255}," Can be used ",{"type":10,"tag":311,"props":2257,"children":2258},{"style":318},[2259],{"type":15,"value":2242},{"type":10,"tag":311,"props":2261,"children":2262},{"style":329},[2263],{"type":15,"value":2264}," storage image ",{"type":10,"tag":311,"props":2266,"children":2267},{"style":720},[2268],{"type":15,"value":2269},"types",{"type":10,"tag":311,"props":2271,"children":2272},{"style":329},[2273],{"type":15,"value":2274}," (i.e. image2D) as well as\n",{"type":10,"tag":311,"props":2276,"children":2277},{"class":313,"line":444},[2278,2283,2288,2293,2297],{"type":10,"tag":311,"props":2279,"children":2280},{"style":329},[2281],{"type":15,"value":2282}," read",{"type":10,"tag":311,"props":2284,"children":2285},{"style":318},[2286],{"type":15,"value":2287},"-",{"type":10,"tag":311,"props":2289,"children":2290},{"style":329},[2291],{"type":15,"value":2292},"only ",{"type":10,"tag":311,"props":2294,"children":2295},{"style":720},[2296],{"type":15,"value":2269},{"type":10,"tag":311,"props":2298,"children":2299},{"style":329},[2300],{"type":15,"value":2301}," (texture2D, sampler2D).\n",{"type":10,"tag":311,"props":2303,"children":2304},{"class":313,"line":452},[2305],{"type":10,"tag":311,"props":2306,"children":2307},{"emptyLinePlaceholder":425},[2308],{"type":15,"value":428},{"type":10,"tag":311,"props":2310,"children":2311},{"class":313,"line":470},[2312,2317,2321],{"type":10,"tag":311,"props":2313,"children":2314},{"style":329},[2315],{"type":15,"value":2316},"Built",{"type":10,"tag":311,"props":2318,"children":2319},{"style":318},[2320],{"type":15,"value":2287},{"type":10,"tag":311,"props":2322,"children":2323},{"style":329},[2324],{"type":15,"value":2325},"in Variable Meaning\n",{"type":10,"tag":311,"props":2327,"children":2328},{"class":313,"line":479},[2329,2333],{"type":10,"tag":311,"props":2330,"children":2331},{"style":318},[2332],{"type":15,"value":2160},{"type":10,"tag":311,"props":2334,"children":2335},{"style":318},[2336],{"type":15,"value":2337}," ---------------------------------------------\n",{"type":10,"tag":311,"props":2339,"children":2340},{"class":313,"line":498},[2341,2346,2350],{"type":10,"tag":311,"props":2342,"children":2343},{"style":329},[2344],{"type":15,"value":2345},"in uvec2 gl_TileOffsetQCOM The framebuffer coordinates of the top",{"type":10,"tag":311,"props":2347,"children":2348},{"style":318},[2349],{"type":15,"value":2287},{"type":10,"tag":311,"props":2351,"children":2352},{"style":329},[2353],{"type":15,"value":2354},"left texel\n",{"type":10,"tag":311,"props":2356,"children":2357},{"class":313,"line":507},[2358],{"type":10,"tag":311,"props":2359,"children":2360},{"style":329},[2361],{"type":15,"value":2362}," of the current tile.\n",{"type":10,"tag":311,"props":2364,"children":2365},{"class":313,"line":516},[2366],{"type":10,"tag":311,"props":2367,"children":2368},{"style":329},[2369],{"type":15,"value":2370},"in uvec3 gl_TileDimensionQCOM The dimension of the current tile in pixels.\n",{"type":10,"tag":311,"props":2372,"children":2373},{"class":313,"line":783},[2374],{"type":10,"tag":311,"props":2375,"children":2376},{"style":329},[2377],{"type":15,"value":2378},"in uvec2 gl_TileApronSizeQCOM The apron width and height.\n",{"type":10,"tag":11,"props":2380,"children":2381},{},[2382],{"type":15,"value":2383},"Earlier versions of this proposal included new built-in functions for tile image load/stores\nand atomics. In the latest version these have been removed. Tile image\nattachments (both storage and sampled attachments) are accessed using existing load/store and image\natomic built-in functions.",{"type":10,"tag":11,"props":2385,"children":2386},{},[2387],{"type":15,"value":2388},"Fragment shader sample showing tile attachment load/stores",{"type":10,"tag":300,"props":2390,"children":2392},{"className":302,"code":2391,"language":304,"meta":305,"style":305},"#version 310 es\n#extension GL_QCOM_tile_shading : enable\nprecision highp float;\n\n// input attachment\nlayout (set=0, binding=0, tile_memoryQCOM) uniform highp image2D input0;\n\n// tile color and depth/stencil attachments\nlayout (set=0, binding=1, tile_memoryQCOM) uniform highp image2D color0;\nlayout (set=0, binding=2, tile_memoryQCOM) uniform highp image2D color1;\nlayout (set=0, binding=3, tile_memoryQCOM) uniform highp image2D depth0;\nlayout (set=0, binding=3, tile_memoryQCOM) uniform highp image2D stencil0;\n\nlayout (location=0) out vec4 fragColor;\nvoid main()\n{\n uvec3 center = uvec3(gl_TileOffset,0) + (gl_TileSize/2); // coordinates of center of tile\n\n // load from tile attachments\n vec4 colorB = imageLoad( input0, center ); // read input attachment\n vec4 colorC = imageLoad( color0, center ); // read color attachment0\n vec4 colorD = imageLoad( color1, center ); // read color attachment1\n vec4 depthVal = vec4(imageLoad( depth0, center)); // read depth\n vec4 stencilVal = vec4(imageLoad( stencil0, center)); // read stencil\n\n // compute output value\n vec4 outColor = ( colorB + colorC + colorD + depthVal + stencilVal );\n\n // write to tile attachments not allowed in fragment shader.\n // imageStore( color0, center, outColor ); // not allowed in a fragment shader\n // imageStore( depth0, center, depthVal ); // not allowed in fragment or compute shader\n\n // write to color attachment 0 via fragment output\n fragColor = outColor + vec4(1.0, 0.0, 0.0, 1.0);\n}\n",[2393],{"type":10,"tag":122,"props":2394,"children":2395},{"__ignoreMap":305},[2396,2414,2422,2440,2447,2455,2494,2501,2509,2545,2582,2619,2655,2662,2687,2704,2712,2772,2780,2789,2817,2844,2871,2909,2944,2952,2961,3015,3023,3032,3041,3050,3058,3067,3131],{"type":10,"tag":311,"props":2397,"children":2398},{"class":313,"line":314},[2399,2404,2409],{"type":10,"tag":311,"props":2400,"children":2401},{"style":329},[2402],{"type":15,"value":2403},"#version ",{"type":10,"tag":311,"props":2405,"children":2406},{"style":354},[2407],{"type":15,"value":2408},"310",{"type":10,"tag":311,"props":2410,"children":2411},{"style":329},[2412],{"type":15,"value":2413}," es\n",{"type":10,"tag":311,"props":2415,"children":2416},{"class":313,"line":335},[2417],{"type":10,"tag":311,"props":2418,"children":2419},{"style":329},[2420],{"type":15,"value":2421},"#extension GL_QCOM_tile_shading : enable\n",{"type":10,"tag":311,"props":2423,"children":2424},{"class":313,"line":364},[2425,2430,2435],{"type":10,"tag":311,"props":2426,"children":2427},{"style":329},[2428],{"type":15,"value":2429},"precision highp ",{"type":10,"tag":311,"props":2431,"children":2432},{"style":318},[2433],{"type":15,"value":2434},"float",{"type":10,"tag":311,"props":2436,"children":2437},{"style":329},[2438],{"type":15,"value":2439},";\n",{"type":10,"tag":311,"props":2441,"children":2442},{"class":313,"line":390},[2443],{"type":10,"tag":311,"props":2444,"children":2445},{"emptyLinePlaceholder":425},[2446],{"type":15,"value":428},{"type":10,"tag":311,"props":2448,"children":2449},{"class":313,"line":412},[2450],{"type":10,"tag":311,"props":2451,"children":2452},{"style":1937},[2453],{"type":15,"value":2454},"// input attachment\n",{"type":10,"tag":311,"props":2456,"children":2457},{"class":313,"line":421},[2458,2463,2468,2472,2476,2481,2485,2489],{"type":10,"tag":311,"props":2459,"children":2460},{"style":720},[2461],{"type":15,"value":2462},"layout",{"type":10,"tag":311,"props":2464,"children":2465},{"style":329},[2466],{"type":15,"value":2467}," (set",{"type":10,"tag":311,"props":2469,"children":2470},{"style":318},[2471],{"type":15,"value":346},{"type":10,"tag":311,"props":2473,"children":2474},{"style":354},[2475],{"type":15,"value":1599},{"type":10,"tag":311,"props":2477,"children":2478},{"style":329},[2479],{"type":15,"value":2480},", binding",{"type":10,"tag":311,"props":2482,"children":2483},{"style":318},[2484],{"type":15,"value":346},{"type":10,"tag":311,"props":2486,"children":2487},{"style":354},[2488],{"type":15,"value":1599},{"type":10,"tag":311,"props":2490,"children":2491},{"style":329},[2492],{"type":15,"value":2493},", tile_memoryQCOM) uniform highp image2D input0;\n",{"type":10,"tag":311,"props":2495,"children":2496},{"class":313,"line":431},[2497],{"type":10,"tag":311,"props":2498,"children":2499},{"emptyLinePlaceholder":425},[2500],{"type":15,"value":428},{"type":10,"tag":311,"props":2502,"children":2503},{"class":313,"line":444},[2504],{"type":10,"tag":311,"props":2505,"children":2506},{"style":1937},[2507],{"type":15,"value":2508},"// tile color and depth/stencil attachments\n",{"type":10,"tag":311,"props":2510,"children":2511},{"class":313,"line":452},[2512,2516,2520,2524,2528,2532,2536,2540],{"type":10,"tag":311,"props":2513,"children":2514},{"style":720},[2515],{"type":15,"value":2462},{"type":10,"tag":311,"props":2517,"children":2518},{"style":329},[2519],{"type":15,"value":2467},{"type":10,"tag":311,"props":2521,"children":2522},{"style":318},[2523],{"type":15,"value":346},{"type":10,"tag":311,"props":2525,"children":2526},{"style":354},[2527],{"type":15,"value":1599},{"type":10,"tag":311,"props":2529,"children":2530},{"style":329},[2531],{"type":15,"value":2480},{"type":10,"tag":311,"props":2533,"children":2534},{"style":318},[2535],{"type":15,"value":346},{"type":10,"tag":311,"props":2537,"children":2538},{"style":354},[2539],{"type":15,"value":1841},{"type":10,"tag":311,"props":2541,"children":2542},{"style":329},[2543],{"type":15,"value":2544},", tile_memoryQCOM) uniform highp image2D color0;\n",{"type":10,"tag":311,"props":2546,"children":2547},{"class":313,"line":470},[2548,2552,2556,2560,2564,2568,2572,2577],{"type":10,"tag":311,"props":2549,"children":2550},{"style":720},[2551],{"type":15,"value":2462},{"type":10,"tag":311,"props":2553,"children":2554},{"style":329},[2555],{"type":15,"value":2467},{"type":10,"tag":311,"props":2557,"children":2558},{"style":318},[2559],{"type":15,"value":346},{"type":10,"tag":311,"props":2561,"children":2562},{"style":354},[2563],{"type":15,"value":1599},{"type":10,"tag":311,"props":2565,"children":2566},{"style":329},[2567],{"type":15,"value":2480},{"type":10,"tag":311,"props":2569,"children":2570},{"style":318},[2571],{"type":15,"value":346},{"type":10,"tag":311,"props":2573,"children":2574},{"style":354},[2575],{"type":15,"value":2576},"2",{"type":10,"tag":311,"props":2578,"children":2579},{"style":329},[2580],{"type":15,"value":2581},", tile_memoryQCOM) uniform highp image2D color1;\n",{"type":10,"tag":311,"props":2583,"children":2584},{"class":313,"line":479},[2585,2589,2593,2597,2601,2605,2609,2614],{"type":10,"tag":311,"props":2586,"children":2587},{"style":720},[2588],{"type":15,"value":2462},{"type":10,"tag":311,"props":2590,"children":2591},{"style":329},[2592],{"type":15,"value":2467},{"type":10,"tag":311,"props":2594,"children":2595},{"style":318},[2596],{"type":15,"value":346},{"type":10,"tag":311,"props":2598,"children":2599},{"style":354},[2600],{"type":15,"value":1599},{"type":10,"tag":311,"props":2602,"children":2603},{"style":329},[2604],{"type":15,"value":2480},{"type":10,"tag":311,"props":2606,"children":2607},{"style":318},[2608],{"type":15,"value":346},{"type":10,"tag":311,"props":2610,"children":2611},{"style":354},[2612],{"type":15,"value":2613},"3",{"type":10,"tag":311,"props":2615,"children":2616},{"style":329},[2617],{"type":15,"value":2618},", tile_memoryQCOM) uniform highp image2D depth0;\n",{"type":10,"tag":311,"props":2620,"children":2621},{"class":313,"line":498},[2622,2626,2630,2634,2638,2642,2646,2650],{"type":10,"tag":311,"props":2623,"children":2624},{"style":720},[2625],{"type":15,"value":2462},{"type":10,"tag":311,"props":2627,"children":2628},{"style":329},[2629],{"type":15,"value":2467},{"type":10,"tag":311,"props":2631,"children":2632},{"style":318},[2633],{"type":15,"value":346},{"type":10,"tag":311,"props":2635,"children":2636},{"style":354},[2637],{"type":15,"value":1599},{"type":10,"tag":311,"props":2639,"children":2640},{"style":329},[2641],{"type":15,"value":2480},{"type":10,"tag":311,"props":2643,"children":2644},{"style":318},[2645],{"type":15,"value":346},{"type":10,"tag":311,"props":2647,"children":2648},{"style":354},[2649],{"type":15,"value":2613},{"type":10,"tag":311,"props":2651,"children":2652},{"style":329},[2653],{"type":15,"value":2654},", tile_memoryQCOM) uniform highp image2D stencil0;\n",{"type":10,"tag":311,"props":2656,"children":2657},{"class":313,"line":507},[2658],{"type":10,"tag":311,"props":2659,"children":2660},{"emptyLinePlaceholder":425},[2661],{"type":15,"value":428},{"type":10,"tag":311,"props":2663,"children":2664},{"class":313,"line":516},[2665,2669,2674,2678,2682],{"type":10,"tag":311,"props":2666,"children":2667},{"style":720},[2668],{"type":15,"value":2462},{"type":10,"tag":311,"props":2670,"children":2671},{"style":329},[2672],{"type":15,"value":2673}," (location",{"type":10,"tag":311,"props":2675,"children":2676},{"style":318},[2677],{"type":15,"value":346},{"type":10,"tag":311,"props":2679,"children":2680},{"style":354},[2681],{"type":15,"value":1599},{"type":10,"tag":311,"props":2683,"children":2684},{"style":329},[2685],{"type":15,"value":2686},") out vec4 fragColor;\n",{"type":10,"tag":311,"props":2688,"children":2689},{"class":313,"line":783},[2690,2694,2699],{"type":10,"tag":311,"props":2691,"children":2692},{"style":318},[2693],{"type":15,"value":717},{"type":10,"tag":311,"props":2695,"children":2696},{"style":720},[2697],{"type":15,"value":2698}," main",{"type":10,"tag":311,"props":2700,"children":2701},{"style":329},[2702],{"type":15,"value":2703},"()\n",{"type":10,"tag":311,"props":2705,"children":2706},{"class":313,"line":800},[2707],{"type":10,"tag":311,"props":2708,"children":2709},{"style":329},[2710],{"type":15,"value":2711},"{\n",{"type":10,"tag":311,"props":2713,"children":2714},{"class":313,"line":816},[2715,2720,2724,2729,2734,2738,2743,2748,2753,2758,2762,2767],{"type":10,"tag":311,"props":2716,"children":2717},{"style":329},[2718],{"type":15,"value":2719}," uvec3 center ",{"type":10,"tag":311,"props":2721,"children":2722},{"style":318},[2723],{"type":15,"value":346},{"type":10,"tag":311,"props":2725,"children":2726},{"style":720},[2727],{"type":15,"value":2728}," uvec3",{"type":10,"tag":311,"props":2730,"children":2731},{"style":329},[2732],{"type":15,"value":2733},"(gl_TileOffset,",{"type":10,"tag":311,"props":2735,"children":2736},{"style":354},[2737],{"type":15,"value":1599},{"type":10,"tag":311,"props":2739,"children":2740},{"style":329},[2741],{"type":15,"value":2742},") ",{"type":10,"tag":311,"props":2744,"children":2745},{"style":318},[2746],{"type":15,"value":2747},"+",{"type":10,"tag":311,"props":2749,"children":2750},{"style":329},[2751],{"type":15,"value":2752}," (gl_TileSize",{"type":10,"tag":311,"props":2754,"children":2755},{"style":318},[2756],{"type":15,"value":2757},"/",{"type":10,"tag":311,"props":2759,"children":2760},{"style":354},[2761],{"type":15,"value":2576},{"type":10,"tag":311,"props":2763,"children":2764},{"style":329},[2765],{"type":15,"value":2766},");",{"type":10,"tag":311,"props":2768,"children":2769},{"style":1937},[2770],{"type":15,"value":2771}," // coordinates of center of tile\n",{"type":10,"tag":311,"props":2773,"children":2775},{"class":313,"line":2774},18,[2776],{"type":10,"tag":311,"props":2777,"children":2778},{"emptyLinePlaceholder":425},[2779],{"type":15,"value":428},{"type":10,"tag":311,"props":2781,"children":2783},{"class":313,"line":2782},19,[2784],{"type":10,"tag":311,"props":2785,"children":2786},{"style":1937},[2787],{"type":15,"value":2788}," // load from tile attachments\n",{"type":10,"tag":311,"props":2790,"children":2792},{"class":313,"line":2791},20,[2793,2798,2802,2807,2812],{"type":10,"tag":311,"props":2794,"children":2795},{"style":329},[2796],{"type":15,"value":2797}," vec4 colorB ",{"type":10,"tag":311,"props":2799,"children":2800},{"style":318},[2801],{"type":15,"value":346},{"type":10,"tag":311,"props":2803,"children":2804},{"style":720},[2805],{"type":15,"value":2806}," imageLoad",{"type":10,"tag":311,"props":2808,"children":2809},{"style":329},[2810],{"type":15,"value":2811},"( input0, center );",{"type":10,"tag":311,"props":2813,"children":2814},{"style":1937},[2815],{"type":15,"value":2816}," // read input attachment\n",{"type":10,"tag":311,"props":2818,"children":2820},{"class":313,"line":2819},21,[2821,2826,2830,2834,2839],{"type":10,"tag":311,"props":2822,"children":2823},{"style":329},[2824],{"type":15,"value":2825}," vec4 colorC ",{"type":10,"tag":311,"props":2827,"children":2828},{"style":318},[2829],{"type":15,"value":346},{"type":10,"tag":311,"props":2831,"children":2832},{"style":720},[2833],{"type":15,"value":2806},{"type":10,"tag":311,"props":2835,"children":2836},{"style":329},[2837],{"type":15,"value":2838},"( color0, center );",{"type":10,"tag":311,"props":2840,"children":2841},{"style":1937},[2842],{"type":15,"value":2843}," // read color attachment0\n",{"type":10,"tag":311,"props":2845,"children":2847},{"class":313,"line":2846},22,[2848,2853,2857,2861,2866],{"type":10,"tag":311,"props":2849,"children":2850},{"style":329},[2851],{"type":15,"value":2852}," vec4 colorD ",{"type":10,"tag":311,"props":2854,"children":2855},{"style":318},[2856],{"type":15,"value":346},{"type":10,"tag":311,"props":2858,"children":2859},{"style":720},[2860],{"type":15,"value":2806},{"type":10,"tag":311,"props":2862,"children":2863},{"style":329},[2864],{"type":15,"value":2865},"( color1, center );",{"type":10,"tag":311,"props":2867,"children":2868},{"style":1937},[2869],{"type":15,"value":2870}," // read color attachment1\n",{"type":10,"tag":311,"props":2872,"children":2874},{"class":313,"line":2873},23,[2875,2880,2884,2889,2894,2899,2904],{"type":10,"tag":311,"props":2876,"children":2877},{"style":329},[2878],{"type":15,"value":2879}," vec4 depthVal ",{"type":10,"tag":311,"props":2881,"children":2882},{"style":318},[2883],{"type":15,"value":346},{"type":10,"tag":311,"props":2885,"children":2886},{"style":720},[2887],{"type":15,"value":2888}," vec4",{"type":10,"tag":311,"props":2890,"children":2891},{"style":329},[2892],{"type":15,"value":2893},"(",{"type":10,"tag":311,"props":2895,"children":2896},{"style":720},[2897],{"type":15,"value":2898},"imageLoad",{"type":10,"tag":311,"props":2900,"children":2901},{"style":329},[2902],{"type":15,"value":2903},"( depth0, center));",{"type":10,"tag":311,"props":2905,"children":2906},{"style":1937},[2907],{"type":15,"value":2908}," // read depth\n",{"type":10,"tag":311,"props":2910,"children":2912},{"class":313,"line":2911},24,[2913,2918,2922,2926,2930,2934,2939],{"type":10,"tag":311,"props":2914,"children":2915},{"style":329},[2916],{"type":15,"value":2917}," vec4 stencilVal ",{"type":10,"tag":311,"props":2919,"children":2920},{"style":318},[2921],{"type":15,"value":346},{"type":10,"tag":311,"props":2923,"children":2924},{"style":720},[2925],{"type":15,"value":2888},{"type":10,"tag":311,"props":2927,"children":2928},{"style":329},[2929],{"type":15,"value":2893},{"type":10,"tag":311,"props":2931,"children":2932},{"style":720},[2933],{"type":15,"value":2898},{"type":10,"tag":311,"props":2935,"children":2936},{"style":329},[2937],{"type":15,"value":2938},"( stencil0, center));",{"type":10,"tag":311,"props":2940,"children":2941},{"style":1937},[2942],{"type":15,"value":2943}," // read stencil\n",{"type":10,"tag":311,"props":2945,"children":2947},{"class":313,"line":2946},25,[2948],{"type":10,"tag":311,"props":2949,"children":2950},{"emptyLinePlaceholder":425},[2951],{"type":15,"value":428},{"type":10,"tag":311,"props":2953,"children":2955},{"class":313,"line":2954},26,[2956],{"type":10,"tag":311,"props":2957,"children":2958},{"style":1937},[2959],{"type":15,"value":2960}," // compute output value\n",{"type":10,"tag":311,"props":2962,"children":2964},{"class":313,"line":2963},27,[2965,2970,2974,2979,2983,2988,2992,2997,3001,3006,3010],{"type":10,"tag":311,"props":2966,"children":2967},{"style":329},[2968],{"type":15,"value":2969}," vec4 outColor ",{"type":10,"tag":311,"props":2971,"children":2972},{"style":318},[2973],{"type":15,"value":346},{"type":10,"tag":311,"props":2975,"children":2976},{"style":329},[2977],{"type":15,"value":2978}," ( colorB ",{"type":10,"tag":311,"props":2980,"children":2981},{"style":318},[2982],{"type":15,"value":2747},{"type":10,"tag":311,"props":2984,"children":2985},{"style":329},[2986],{"type":15,"value":2987}," colorC ",{"type":10,"tag":311,"props":2989,"children":2990},{"style":318},[2991],{"type":15,"value":2747},{"type":10,"tag":311,"props":2993,"children":2994},{"style":329},[2995],{"type":15,"value":2996}," colorD ",{"type":10,"tag":311,"props":2998,"children":2999},{"style":318},[3000],{"type":15,"value":2747},{"type":10,"tag":311,"props":3002,"children":3003},{"style":329},[3004],{"type":15,"value":3005}," depthVal ",{"type":10,"tag":311,"props":3007,"children":3008},{"style":318},[3009],{"type":15,"value":2747},{"type":10,"tag":311,"props":3011,"children":3012},{"style":329},[3013],{"type":15,"value":3014}," stencilVal );\n",{"type":10,"tag":311,"props":3016,"children":3018},{"class":313,"line":3017},28,[3019],{"type":10,"tag":311,"props":3020,"children":3021},{"emptyLinePlaceholder":425},[3022],{"type":15,"value":428},{"type":10,"tag":311,"props":3024,"children":3026},{"class":313,"line":3025},29,[3027],{"type":10,"tag":311,"props":3028,"children":3029},{"style":1937},[3030],{"type":15,"value":3031}," // write to tile attachments not allowed in fragment shader.\n",{"type":10,"tag":311,"props":3033,"children":3035},{"class":313,"line":3034},30,[3036],{"type":10,"tag":311,"props":3037,"children":3038},{"style":1937},[3039],{"type":15,"value":3040}," // imageStore( color0, center, outColor ); // not allowed in a fragment shader\n",{"type":10,"tag":311,"props":3042,"children":3044},{"class":313,"line":3043},31,[3045],{"type":10,"tag":311,"props":3046,"children":3047},{"style":1937},[3048],{"type":15,"value":3049}," // imageStore( depth0, center, depthVal ); // not allowed in fragment or compute shader\n",{"type":10,"tag":311,"props":3051,"children":3053},{"class":313,"line":3052},32,[3054],{"type":10,"tag":311,"props":3055,"children":3056},{"emptyLinePlaceholder":425},[3057],{"type":15,"value":428},{"type":10,"tag":311,"props":3059,"children":3061},{"class":313,"line":3060},33,[3062],{"type":10,"tag":311,"props":3063,"children":3064},{"style":1937},[3065],{"type":15,"value":3066}," // write to color attachment 0 via fragment output\n",{"type":10,"tag":311,"props":3068,"children":3070},{"class":313,"line":3069},34,[3071,3076,3080,3085,3089,3093,3097,3102,3106,3111,3115,3119,3123,3127],{"type":10,"tag":311,"props":3072,"children":3073},{"style":329},[3074],{"type":15,"value":3075}," fragColor ",{"type":10,"tag":311,"props":3077,"children":3078},{"style":318},[3079],{"type":15,"value":346},{"type":10,"tag":311,"props":3081,"children":3082},{"style":329},[3083],{"type":15,"value":3084}," outColor ",{"type":10,"tag":311,"props":3086,"children":3087},{"style":318},[3088],{"type":15,"value":2747},{"type":10,"tag":311,"props":3090,"children":3091},{"style":720},[3092],{"type":15,"value":2888},{"type":10,"tag":311,"props":3094,"children":3095},{"style":329},[3096],{"type":15,"value":2893},{"type":10,"tag":311,"props":3098,"children":3099},{"style":354},[3100],{"type":15,"value":3101},"1.0",{"type":10,"tag":311,"props":3103,"children":3104},{"style":329},[3105],{"type":15,"value":1131},{"type":10,"tag":311,"props":3107,"children":3108},{"style":354},[3109],{"type":15,"value":3110},"0.0",{"type":10,"tag":311,"props":3112,"children":3113},{"style":329},[3114],{"type":15,"value":1131},{"type":10,"tag":311,"props":3116,"children":3117},{"style":354},[3118],{"type":15,"value":3110},{"type":10,"tag":311,"props":3120,"children":3121},{"style":329},[3122],{"type":15,"value":1131},{"type":10,"tag":311,"props":3124,"children":3125},{"style":354},[3126],{"type":15,"value":3101},{"type":10,"tag":311,"props":3128,"children":3129},{"style":329},[3130],{"type":15,"value":773},{"type":10,"tag":311,"props":3132,"children":3134},{"class":313,"line":3133},35,[3135],{"type":10,"tag":311,"props":3136,"children":3137},{"style":329},[3138],{"type":15,"value":3139},"}\n",{"type":10,"tag":11,"props":3141,"children":3142},{},[3143],{"type":15,"value":3144},"Compute shader sample showing tile attachment load/stores",{"type":10,"tag":300,"props":3146,"children":3148},{"className":302,"code":3147,"language":304,"meta":305,"style":305},"\u003C ... same attachment declarations as fragment shader >\n\nvoid main ()\n{\n uvec2 center2D = clamp(gl_GlobalInvocationID.xy, gl_TileOffset, gl_TileOffset + gl_TileSize - uvec2(1,1));\n uvec3 center = uvec3(center2D,0);\n\n // read from attachments\n vec4 colorA = imageLoad( color0, center );\n vec4 colorB = imageLoad( color1, center );\n vec4 colorC = imageLoad( input0, center );\n\n // compute output values\n vec4 outColor = ( colorA + colorB + colorC ) * 0.33f;\n\n // write to color tile attachment\n imageStore( color0, center, outColor );\n\n // write to depth/stencil/input attachments not allowed in compute shader.\n // imageStore( input0, center, outColor ); // not allowed\n // imageStore( depth0, center, depthVal ); // not allowed\n // imageStore( stencil0, center, stencilVal ); // not allowed\n\nreturn;\n}\n",[3149],{"type":10,"tag":122,"props":3150,"children":3151},{"__ignoreMap":305},[3152,3170,3177,3193,3200,3262,3291,3298,3306,3327,3348,3369,3376,3384,3437,3444,3452,3465,3472,3480,3488,3496,3504,3511,3523],{"type":10,"tag":311,"props":3153,"children":3154},{"class":313,"line":314},[3155,3160,3165],{"type":10,"tag":311,"props":3156,"children":3157},{"style":318},[3158],{"type":15,"value":3159},"\u003C",{"type":10,"tag":311,"props":3161,"children":3162},{"style":329},[3163],{"type":15,"value":3164}," ... same attachment declarations as fragment shader ",{"type":10,"tag":311,"props":3166,"children":3167},{"style":318},[3168],{"type":15,"value":3169},">\n",{"type":10,"tag":311,"props":3171,"children":3172},{"class":313,"line":335},[3173],{"type":10,"tag":311,"props":3174,"children":3175},{"emptyLinePlaceholder":425},[3176],{"type":15,"value":428},{"type":10,"tag":311,"props":3178,"children":3179},{"class":313,"line":364},[3180,3184,3188],{"type":10,"tag":311,"props":3181,"children":3182},{"style":318},[3183],{"type":15,"value":717},{"type":10,"tag":311,"props":3185,"children":3186},{"style":720},[3187],{"type":15,"value":2698},{"type":10,"tag":311,"props":3189,"children":3190},{"style":329},[3191],{"type":15,"value":3192}," ()\n",{"type":10,"tag":311,"props":3194,"children":3195},{"class":313,"line":390},[3196],{"type":10,"tag":311,"props":3197,"children":3198},{"style":329},[3199],{"type":15,"value":2711},{"type":10,"tag":311,"props":3201,"children":3202},{"class":313,"line":412},[3203,3208,3212,3217,3222,3226,3231,3235,3240,3244,3248,3253,3257],{"type":10,"tag":311,"props":3204,"children":3205},{"style":329},[3206],{"type":15,"value":3207}," uvec2 center2D ",{"type":10,"tag":311,"props":3209,"children":3210},{"style":318},[3211],{"type":15,"value":346},{"type":10,"tag":311,"props":3213,"children":3214},{"style":720},[3215],{"type":15,"value":3216}," clamp",{"type":10,"tag":311,"props":3218,"children":3219},{"style":329},[3220],{"type":15,"value":3221},"(gl_GlobalInvocationID.xy, gl_TileOffset, gl_TileOffset ",{"type":10,"tag":311,"props":3223,"children":3224},{"style":318},[3225],{"type":15,"value":2747},{"type":10,"tag":311,"props":3227,"children":3228},{"style":329},[3229],{"type":15,"value":3230}," gl_TileSize ",{"type":10,"tag":311,"props":3232,"children":3233},{"style":318},[3234],{"type":15,"value":2287},{"type":10,"tag":311,"props":3236,"children":3237},{"style":720},[3238],{"type":15,"value":3239}," uvec2",{"type":10,"tag":311,"props":3241,"children":3242},{"style":329},[3243],{"type":15,"value":2893},{"type":10,"tag":311,"props":3245,"children":3246},{"style":354},[3247],{"type":15,"value":1841},{"type":10,"tag":311,"props":3249,"children":3250},{"style":329},[3251],{"type":15,"value":3252},",",{"type":10,"tag":311,"props":3254,"children":3255},{"style":354},[3256],{"type":15,"value":1841},{"type":10,"tag":311,"props":3258,"children":3259},{"style":329},[3260],{"type":15,"value":3261},"));\n",{"type":10,"tag":311,"props":3263,"children":3264},{"class":313,"line":421},[3265,3270,3274,3278,3283,3287],{"type":10,"tag":311,"props":3266,"children":3267},{"style":329},[3268],{"type":15,"value":3269}," uvec3 center ",{"type":10,"tag":311,"props":3271,"children":3272},{"style":318},[3273],{"type":15,"value":346},{"type":10,"tag":311,"props":3275,"children":3276},{"style":720},[3277],{"type":15,"value":2728},{"type":10,"tag":311,"props":3279,"children":3280},{"style":329},[3281],{"type":15,"value":3282},"(center2D,",{"type":10,"tag":311,"props":3284,"children":3285},{"style":354},[3286],{"type":15,"value":1599},{"type":10,"tag":311,"props":3288,"children":3289},{"style":329},[3290],{"type":15,"value":773},{"type":10,"tag":311,"props":3292,"children":3293},{"class":313,"line":431},[3294],{"type":10,"tag":311,"props":3295,"children":3296},{"emptyLinePlaceholder":425},[3297],{"type":15,"value":428},{"type":10,"tag":311,"props":3299,"children":3300},{"class":313,"line":444},[3301],{"type":10,"tag":311,"props":3302,"children":3303},{"style":1937},[3304],{"type":15,"value":3305}," // read from attachments\n",{"type":10,"tag":311,"props":3307,"children":3308},{"class":313,"line":452},[3309,3314,3318,3322],{"type":10,"tag":311,"props":3310,"children":3311},{"style":329},[3312],{"type":15,"value":3313}," vec4 colorA ",{"type":10,"tag":311,"props":3315,"children":3316},{"style":318},[3317],{"type":15,"value":346},{"type":10,"tag":311,"props":3319,"children":3320},{"style":720},[3321],{"type":15,"value":2806},{"type":10,"tag":311,"props":3323,"children":3324},{"style":329},[3325],{"type":15,"value":3326},"( color0, center );\n",{"type":10,"tag":311,"props":3328,"children":3329},{"class":313,"line":470},[3330,3335,3339,3343],{"type":10,"tag":311,"props":3331,"children":3332},{"style":329},[3333],{"type":15,"value":3334}," vec4 colorB ",{"type":10,"tag":311,"props":3336,"children":3337},{"style":318},[3338],{"type":15,"value":346},{"type":10,"tag":311,"props":3340,"children":3341},{"style":720},[3342],{"type":15,"value":2806},{"type":10,"tag":311,"props":3344,"children":3345},{"style":329},[3346],{"type":15,"value":3347},"( color1, center );\n",{"type":10,"tag":311,"props":3349,"children":3350},{"class":313,"line":479},[3351,3356,3360,3364],{"type":10,"tag":311,"props":3352,"children":3353},{"style":329},[3354],{"type":15,"value":3355}," vec4 colorC ",{"type":10,"tag":311,"props":3357,"children":3358},{"style":318},[3359],{"type":15,"value":346},{"type":10,"tag":311,"props":3361,"children":3362},{"style":720},[3363],{"type":15,"value":2806},{"type":10,"tag":311,"props":3365,"children":3366},{"style":329},[3367],{"type":15,"value":3368},"( input0, center );\n",{"type":10,"tag":311,"props":3370,"children":3371},{"class":313,"line":498},[3372],{"type":10,"tag":311,"props":3373,"children":3374},{"emptyLinePlaceholder":425},[3375],{"type":15,"value":428},{"type":10,"tag":311,"props":3377,"children":3378},{"class":313,"line":507},[3379],{"type":10,"tag":311,"props":3380,"children":3381},{"style":1937},[3382],{"type":15,"value":3383}," // compute output values\n",{"type":10,"tag":311,"props":3385,"children":3386},{"class":313,"line":516},[3387,3392,3396,3401,3405,3410,3414,3419,3423,3428,3433],{"type":10,"tag":311,"props":3388,"children":3389},{"style":329},[3390],{"type":15,"value":3391}," vec4 outColor ",{"type":10,"tag":311,"props":3393,"children":3394},{"style":318},[3395],{"type":15,"value":346},{"type":10,"tag":311,"props":3397,"children":3398},{"style":329},[3399],{"type":15,"value":3400}," ( colorA ",{"type":10,"tag":311,"props":3402,"children":3403},{"style":318},[3404],{"type":15,"value":2747},{"type":10,"tag":311,"props":3406,"children":3407},{"style":329},[3408],{"type":15,"value":3409}," colorB ",{"type":10,"tag":311,"props":3411,"children":3412},{"style":318},[3413],{"type":15,"value":2747},{"type":10,"tag":311,"props":3415,"children":3416},{"style":329},[3417],{"type":15,"value":3418}," colorC ) ",{"type":10,"tag":311,"props":3420,"children":3421},{"style":318},[3422],{"type":15,"value":763},{"type":10,"tag":311,"props":3424,"children":3425},{"style":354},[3426],{"type":15,"value":3427}," 0.33",{"type":10,"tag":311,"props":3429,"children":3430},{"style":318},[3431],{"type":15,"value":3432},"f",{"type":10,"tag":311,"props":3434,"children":3435},{"style":329},[3436],{"type":15,"value":2439},{"type":10,"tag":311,"props":3438,"children":3439},{"class":313,"line":783},[3440],{"type":10,"tag":311,"props":3441,"children":3442},{"emptyLinePlaceholder":425},[3443],{"type":15,"value":428},{"type":10,"tag":311,"props":3445,"children":3446},{"class":313,"line":800},[3447],{"type":10,"tag":311,"props":3448,"children":3449},{"style":1937},[3450],{"type":15,"value":3451}," // write to color tile attachment\n",{"type":10,"tag":311,"props":3453,"children":3454},{"class":313,"line":816},[3455,3460],{"type":10,"tag":311,"props":3456,"children":3457},{"style":720},[3458],{"type":15,"value":3459}," imageStore",{"type":10,"tag":311,"props":3461,"children":3462},{"style":329},[3463],{"type":15,"value":3464},"( color0, center, outColor );\n",{"type":10,"tag":311,"props":3466,"children":3467},{"class":313,"line":2774},[3468],{"type":10,"tag":311,"props":3469,"children":3470},{"emptyLinePlaceholder":425},[3471],{"type":15,"value":428},{"type":10,"tag":311,"props":3473,"children":3474},{"class":313,"line":2782},[3475],{"type":10,"tag":311,"props":3476,"children":3477},{"style":1937},[3478],{"type":15,"value":3479}," // write to depth/stencil/input attachments not allowed in compute shader.\n",{"type":10,"tag":311,"props":3481,"children":3482},{"class":313,"line":2791},[3483],{"type":10,"tag":311,"props":3484,"children":3485},{"style":1937},[3486],{"type":15,"value":3487}," // imageStore( input0, center, outColor ); // not allowed\n",{"type":10,"tag":311,"props":3489,"children":3490},{"class":313,"line":2819},[3491],{"type":10,"tag":311,"props":3492,"children":3493},{"style":1937},[3494],{"type":15,"value":3495}," // imageStore( depth0, center, depthVal ); // not allowed\n",{"type":10,"tag":311,"props":3497,"children":3498},{"class":313,"line":2846},[3499],{"type":10,"tag":311,"props":3500,"children":3501},{"style":1937},[3502],{"type":15,"value":3503}," // imageStore( stencil0, center, stencilVal ); // not allowed\n",{"type":10,"tag":311,"props":3505,"children":3506},{"class":313,"line":2873},[3507],{"type":10,"tag":311,"props":3508,"children":3509},{"emptyLinePlaceholder":425},[3510],{"type":15,"value":428},{"type":10,"tag":311,"props":3512,"children":3513},{"class":313,"line":2911},[3514,3519],{"type":10,"tag":311,"props":3515,"children":3516},{"style":318},[3517],{"type":15,"value":3518},"return",{"type":10,"tag":311,"props":3520,"children":3521},{"style":329},[3522],{"type":15,"value":2439},{"type":10,"tag":311,"props":3524,"children":3525},{"class":313,"line":2946},[3526],{"type":10,"tag":311,"props":3527,"children":3528},{"style":329},[3529],{"type":15,"value":3139},{"type":10,"tag":249,"props":3531,"children":3533},{"id":3532},"_synchronization",[3534],{"type":15,"value":3535},"Synchronization",{"type":10,"tag":11,"props":3537,"children":3538},{},[3539],{"type":15,"value":3540},"The following synchronization-related enumerations are added. These can be\nspecified in synchronization commands or in subpass dependencies.",{"type":10,"tag":300,"props":3542,"children":3544},{"className":302,"code":3543,"language":304,"meta":305,"style":305},"VK_ACCESS_2_SHADER_TILE_ATTACHMENT_READ_BIT_QCOM // read access to a tile attachment\nVK_ACCESS_2_SHADER_TILE_ATTACHMENT_WRITE_BIT_QCOM // write access to a tile attachment\n",[3545],{"type":10,"tag":122,"props":3546,"children":3547},{"__ignoreMap":305},[3548,3561],{"type":10,"tag":311,"props":3549,"children":3550},{"class":313,"line":314},[3551,3556],{"type":10,"tag":311,"props":3552,"children":3553},{"style":329},[3554],{"type":15,"value":3555},"VK_ACCESS_2_SHADER_TILE_ATTACHMENT_READ_BIT_QCOM",{"type":10,"tag":311,"props":3557,"children":3558},{"style":1937},[3559],{"type":15,"value":3560}," // read access to a tile attachment\n",{"type":10,"tag":311,"props":3562,"children":3563},{"class":313,"line":335},[3564,3569],{"type":10,"tag":311,"props":3565,"children":3566},{"style":329},[3567],{"type":15,"value":3568},"VK_ACCESS_2_SHADER_TILE_ATTACHMENT_WRITE_BIT_QCOM",{"type":10,"tag":311,"props":3570,"children":3571},{"style":1937},[3572],{"type":15,"value":3573}," // write access to a tile attachment\n",{"type":10,"tag":11,"props":3575,"children":3576},{},[3577,3579,3584,3586,3592],{"type":15,"value":3578},"Prior to this extension, the ",{"type":10,"tag":842,"props":3580,"children":3581},{},[3582],{"type":15,"value":3583},"framebuffer region",{"type":15,"value":3585}," described by ",{"type":10,"tag":122,"props":3587,"children":3589},{"className":3588},[],[3590],{"type":15,"value":3591},"VK_DEPENDENCY_BY_REGION_BIT",{"type":15,"value":3593},"\nmay be no larger than a single pixel or single sample. For a render pass that enables tile shading,\nthe following changes are made:",{"type":10,"tag":86,"props":3595,"children":3596},{},[3597,3616,3621,3649,3654,3659],{"type":10,"tag":90,"props":3598,"children":3599},{},[3600,3602,3607,3609,3614],{"type":15,"value":3601},"The framebuffer regions defined by ",{"type":10,"tag":122,"props":3603,"children":3605},{"className":3604},[],[3606],{"type":15,"value":3591},{"type":15,"value":3608}," are enlarged to\nbe tile-sized regions, where ",{"type":10,"tag":94,"props":3610,"children":3612},{"href":96,"rel":3611},[98],[3613],{"type":15,"value":101},{"type":15,"value":3615},"\nexposes the tile regions. In other words, the framebuffer region is a tile region and\nframebuffer-local dependencies are tile granularity dependencies.",{"type":10,"tag":90,"props":3617,"children":3618},{},[3619],{"type":15,"value":3620},"Both synchronization scopes of a framebuffer-local dependency include all the pixels\ncontained in the tile.",{"type":10,"tag":90,"props":3622,"children":3623},{},[3624,3626,3632,3634,3640,3642,3647],{"type":15,"value":3625},"The framebuffer-space pipeline stages are extended to include\n",{"type":10,"tag":122,"props":3627,"children":3629},{"className":3628},[],[3630],{"type":15,"value":3631},"VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT",{"type":15,"value":3633}," and ",{"type":10,"tag":122,"props":3635,"children":3637},{"className":3636},[],[3638],{"type":15,"value":3639},"VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT",{"type":15,"value":3641},". Allowing\n",{"type":10,"tag":122,"props":3643,"children":3645},{"className":3644},[],[3646],{"type":15,"value":3639},{"type":15,"value":3648}," with framebuffer-local dependencies enables important\nuse-cases of tile shading.",{"type":10,"tag":90,"props":3650,"children":3651},{},[3652],{"type":15,"value":3653},"Explicit ordering constraints must be expressed through explicit synchronization primitives.",{"type":10,"tag":90,"props":3655,"children":3656},{},[3657],{"type":15,"value":3658},"Dependencies between subpasses can be expressed with subpass dependencies, including the\nabove bits for tile attachments.",{"type":10,"tag":90,"props":3660,"children":3661},{},[3662],{"type":15,"value":3663},"Dependencies between synchronizing scopes within a subpass can be expressed with a\npipeline barrier.",{"type":10,"tag":11,"props":3665,"children":3666},{},[3667,3669,3675],{"type":15,"value":3668},"For a render pass that enables tile shading, the following changes are\nmade to pipeline barriers:\n* The set of ",{"type":10,"tag":122,"props":3670,"children":3672},{"className":3671},[],[3673],{"type":15,"value":3674},"VkAccessFlags",{"type":15,"value":3676}," allowed in a render pass self-dependency or in a pipeline barrier within\na render pass are extended to include the following:",{"type":10,"tag":300,"props":3678,"children":3680},{"className":302,"code":3679,"language":304,"meta":305,"style":305}," VK_ACCESS_INDIRECT_COMMAND_READ_BIT\n VK_ACCESS_SHADER_SAMPLED_READ_BIT,\n VK_ACCESS_SHADER_STORAGE_READ_BIT\n VK_ACCESS_SHADER_STORAGE_WRITE_BIT\n VK_ACCESS_SHADER_TILE_ATTACHMENT_READ_BIT\n VK_ACCESS_SHADER_TILE_ATTACHMENT_WRITE_BIT\n",[3681],{"type":10,"tag":122,"props":3682,"children":3683},{"__ignoreMap":305},[3684,3692,3700,3708,3716,3724],{"type":10,"tag":311,"props":3685,"children":3686},{"class":313,"line":314},[3687],{"type":10,"tag":311,"props":3688,"children":3689},{"style":329},[3690],{"type":15,"value":3691}," VK_ACCESS_INDIRECT_COMMAND_READ_BIT\n",{"type":10,"tag":311,"props":3693,"children":3694},{"class":313,"line":335},[3695],{"type":10,"tag":311,"props":3696,"children":3697},{"style":329},[3698],{"type":15,"value":3699}," VK_ACCESS_SHADER_SAMPLED_READ_BIT,\n",{"type":10,"tag":311,"props":3701,"children":3702},{"class":313,"line":364},[3703],{"type":10,"tag":311,"props":3704,"children":3705},{"style":329},[3706],{"type":15,"value":3707}," VK_ACCESS_SHADER_STORAGE_READ_BIT\n",{"type":10,"tag":311,"props":3709,"children":3710},{"class":313,"line":390},[3711],{"type":10,"tag":311,"props":3712,"children":3713},{"style":329},[3714],{"type":15,"value":3715}," VK_ACCESS_SHADER_STORAGE_WRITE_BIT\n",{"type":10,"tag":311,"props":3717,"children":3718},{"class":313,"line":412},[3719],{"type":10,"tag":311,"props":3720,"children":3721},{"style":329},[3722],{"type":15,"value":3723}," VK_ACCESS_SHADER_TILE_ATTACHMENT_READ_BIT\n",{"type":10,"tag":311,"props":3725,"children":3726},{"class":313,"line":421},[3727],{"type":10,"tag":311,"props":3728,"children":3729},{"style":329},[3730],{"type":15,"value":3731}," VK_ACCESS_SHADER_TILE_ATTACHMENT_WRITE_BIT\n",{"type":10,"tag":86,"props":3733,"children":3734},{},[3735],{"type":10,"tag":90,"props":3736,"children":3737},{},[3738,3740,3744],{"type":15,"value":3739},"Consistent with the above, the source and destination stage masks in\na render pass self-dependency or pipeline barrier within a render pass are extended\nto include:",{"type":10,"tag":3741,"props":3742,"children":3743},"br",{},[],{"type":15,"value":3745},"VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT\nVK_PIPELINE_STAGE_COMPUTE_SHADER_BIT",{"type":10,"tag":249,"props":3747,"children":3749},{"id":3748},"_features_and_properties_structures",[3750],{"type":15,"value":3751},"Features and Properties structures",{"type":10,"tag":11,"props":3753,"children":3754},{},[3755],{"type":15,"value":3756},"The following feature structure is proposed. Most of the features should be\nself-explanatory.",{"type":10,"tag":300,"props":3758,"children":3760},{"className":302,"code":3759,"language":304,"meta":305,"style":305},"typedef struct VkPhysicalDeviceTileShadingFeaturesQCOM {\n VkStructureType sType;\n void* pNext;\n VkBool32 tileShading;\n VkBool32 tileShadingFragmentStage;\n VkBool32 tileShadingColorAttachments;\n VkBool32 tileShadingDepthAttachments;\n VkBool32 tileShadingStencilAttachments;\n VkBool32 tileShadingInputAttachments;\n VkBool32 tileShadingSampledAttachments;\n VkBool32 tileShadingPerTileDraw;\n VkBool32 tileShadingPerTileDispatch;\n VkBool32 tileShadingDispatchTile;\n VkBool32 tileShadingApron;\n VkBool32 tileShadingAnisotropicApron;\n VkBool32 tileShadingAtomicOps;\n VkBool32 tileShadingImageProcessing;\n} VkPhysicalDeviceTileShadingFeaturesQCOM;\n",[3761],{"type":10,"tag":122,"props":3762,"children":3763},{"__ignoreMap":305},[3764,3780,3787,3800,3808,3816,3824,3832,3840,3848,3856,3864,3872,3880,3888,3896,3904,3912],{"type":10,"tag":311,"props":3765,"children":3766},{"class":313,"line":314},[3767,3771,3775],{"type":10,"tag":311,"props":3768,"children":3769},{"style":318},[3770],{"type":15,"value":321},{"type":10,"tag":311,"props":3772,"children":3773},{"style":318},[3774],{"type":15,"value":462},{"type":10,"tag":311,"props":3776,"children":3777},{"style":329},[3778],{"type":15,"value":3779}," VkPhysicalDeviceTileShadingFeaturesQCOM {\n",{"type":10,"tag":311,"props":3781,"children":3782},{"class":313,"line":335},[3783],{"type":10,"tag":311,"props":3784,"children":3785},{"style":329},[3786],{"type":15,"value":625},{"type":10,"tag":311,"props":3788,"children":3789},{"class":313,"line":364},[3790,3795],{"type":10,"tag":311,"props":3791,"children":3792},{"style":318},[3793],{"type":15,"value":3794}," void*",{"type":10,"tag":311,"props":3796,"children":3797},{"style":329},[3798],{"type":15,"value":3799}," pNext;\n",{"type":10,"tag":311,"props":3801,"children":3802},{"class":313,"line":390},[3803],{"type":10,"tag":311,"props":3804,"children":3805},{"style":329},[3806],{"type":15,"value":3807}," VkBool32 tileShading;\n",{"type":10,"tag":311,"props":3809,"children":3810},{"class":313,"line":412},[3811],{"type":10,"tag":311,"props":3812,"children":3813},{"style":329},[3814],{"type":15,"value":3815}," VkBool32 tileShadingFragmentStage;\n",{"type":10,"tag":311,"props":3817,"children":3818},{"class":313,"line":421},[3819],{"type":10,"tag":311,"props":3820,"children":3821},{"style":329},[3822],{"type":15,"value":3823}," VkBool32 tileShadingColorAttachments;\n",{"type":10,"tag":311,"props":3825,"children":3826},{"class":313,"line":431},[3827],{"type":10,"tag":311,"props":3828,"children":3829},{"style":329},[3830],{"type":15,"value":3831}," VkBool32 tileShadingDepthAttachments;\n",{"type":10,"tag":311,"props":3833,"children":3834},{"class":313,"line":444},[3835],{"type":10,"tag":311,"props":3836,"children":3837},{"style":329},[3838],{"type":15,"value":3839}," VkBool32 tileShadingStencilAttachments;\n",{"type":10,"tag":311,"props":3841,"children":3842},{"class":313,"line":452},[3843],{"type":10,"tag":311,"props":3844,"children":3845},{"style":329},[3846],{"type":15,"value":3847}," VkBool32 tileShadingInputAttachments;\n",{"type":10,"tag":311,"props":3849,"children":3850},{"class":313,"line":470},[3851],{"type":10,"tag":311,"props":3852,"children":3853},{"style":329},[3854],{"type":15,"value":3855}," VkBool32 tileShadingSampledAttachments;\n",{"type":10,"tag":311,"props":3857,"children":3858},{"class":313,"line":479},[3859],{"type":10,"tag":311,"props":3860,"children":3861},{"style":329},[3862],{"type":15,"value":3863}," VkBool32 tileShadingPerTileDraw;\n",{"type":10,"tag":311,"props":3865,"children":3866},{"class":313,"line":498},[3867],{"type":10,"tag":311,"props":3868,"children":3869},{"style":329},[3870],{"type":15,"value":3871}," VkBool32 tileShadingPerTileDispatch;\n",{"type":10,"tag":311,"props":3873,"children":3874},{"class":313,"line":507},[3875],{"type":10,"tag":311,"props":3876,"children":3877},{"style":329},[3878],{"type":15,"value":3879}," VkBool32 tileShadingDispatchTile;\n",{"type":10,"tag":311,"props":3881,"children":3882},{"class":313,"line":516},[3883],{"type":10,"tag":311,"props":3884,"children":3885},{"style":329},[3886],{"type":15,"value":3887}," VkBool32 tileShadingApron;\n",{"type":10,"tag":311,"props":3889,"children":3890},{"class":313,"line":783},[3891],{"type":10,"tag":311,"props":3892,"children":3893},{"style":329},[3894],{"type":15,"value":3895}," VkBool32 tileShadingAnisotropicApron;\n",{"type":10,"tag":311,"props":3897,"children":3898},{"class":313,"line":800},[3899],{"type":10,"tag":311,"props":3900,"children":3901},{"style":329},[3902],{"type":15,"value":3903}," VkBool32 tileShadingAtomicOps;\n",{"type":10,"tag":311,"props":3905,"children":3906},{"class":313,"line":816},[3907],{"type":10,"tag":311,"props":3908,"children":3909},{"style":329},[3910],{"type":15,"value":3911}," VkBool32 tileShadingImageProcessing;\n",{"type":10,"tag":311,"props":3913,"children":3914},{"class":313,"line":2774},[3915],{"type":10,"tag":311,"props":3916,"children":3917},{"style":329},[3918],{"type":15,"value":3919},"} VkPhysicalDeviceTileShadingFeaturesQCOM;\n",{"type":10,"tag":11,"props":3921,"children":3922},{},[3923],{"type":15,"value":3924},"A few notable features are documented below.",{"type":10,"tag":86,"props":3926,"children":3927},{},[3928,3944,3954,3992,4015,4038,4055,4136,4147,4164,4189,4200,4211,4221],{"type":10,"tag":90,"props":3929,"children":3930},{},[3931,3936,3938,3943],{"type":10,"tag":122,"props":3932,"children":3934},{"className":3933},[],[3935],{"type":15,"value":2009},{"type":15,"value":3937}," is the base feature, indicating the\nimplementation supports creating a render pass that enables\ntile shading and shaders that enable the ",{"type":10,"tag":122,"props":3939,"children":3941},{"className":3940},[],[3942],{"type":15,"value":551},{"type":15,"value":2018},{"type":10,"tag":90,"props":3945,"children":3946},{},[3947,3952],{"type":10,"tag":122,"props":3948,"children":3950},{"className":3949},[],[3951],{"type":15,"value":566},{"type":15,"value":3953}," indicates the implementation supports tile shading\nin the fragment stage.",{"type":10,"tag":90,"props":3955,"children":3956},{},[3957,3963,3965,3970,3971,3976,3978,3984,3985,3990],{"type":10,"tag":122,"props":3958,"children":3960},{"className":3959},[],[3961],{"type":15,"value":3962},"tileShadingColorAttachments",{"type":15,"value":3964}," indicates the implementation supports\nuse of ",{"type":10,"tag":122,"props":3966,"children":3968},{"className":3967},[],[3969],{"type":15,"value":1343},{"type":15,"value":3633},{"type":10,"tag":122,"props":3972,"children":3974},{"className":3973},[],[3975],{"type":15,"value":1350},{"type":15,"value":3977}," in the supported stages\nto access a color attachment.\nIn addition, this feature indicates support for and ",{"type":10,"tag":122,"props":3979,"children":3981},{"className":3980},[],[3982],{"type":15,"value":3983},"OpImageStore",{"type":15,"value":1000},{"type":10,"tag":122,"props":3986,"children":3988},{"className":3987},[],[3989],{"type":15,"value":1350},{"type":15,"value":3991}," to access a color attachment in the compute stage.",{"type":10,"tag":90,"props":3993,"children":3994},{},[3995,4001,4002,4007,4008,4013],{"type":10,"tag":122,"props":3996,"children":3998},{"className":3997},[],[3999],{"type":15,"value":4000},"tileShadingDepthAttachments",{"type":15,"value":3964},{"type":10,"tag":122,"props":4003,"children":4005},{"className":4004},[],[4006],{"type":15,"value":1343},{"type":15,"value":3633},{"type":10,"tag":122,"props":4009,"children":4011},{"className":4010},[],[4012],{"type":15,"value":1350},{"type":15,"value":4014}," in the supported\nstages to access the depth aspect of a depth/stencil attachment.",{"type":10,"tag":90,"props":4016,"children":4017},{},[4018,4024,4025,4030,4031,4036],{"type":10,"tag":122,"props":4019,"children":4021},{"className":4020},[],[4022],{"type":15,"value":4023},"tileShadingStencilAttachments",{"type":15,"value":3964},{"type":10,"tag":122,"props":4026,"children":4028},{"className":4027},[],[4029],{"type":15,"value":1343},{"type":15,"value":3633},{"type":10,"tag":122,"props":4032,"children":4034},{"className":4033},[],[4035],{"type":15,"value":1350},{"type":15,"value":4037}," in the supported\nstages to access the stencil aspect of a depth/stencil attachment.",{"type":10,"tag":90,"props":4039,"children":4040},{},[4041,4047,4048,4053],{"type":10,"tag":122,"props":4042,"children":4044},{"className":4043},[],[4045],{"type":15,"value":4046},"tileShadingInputAttachments",{"type":15,"value":3964},{"type":10,"tag":122,"props":4049,"children":4051},{"className":4050},[],[4052],{"type":15,"value":1343},{"type":15,"value":4054}," in the supported\nstages to access an input attachment.",{"type":10,"tag":90,"props":4056,"children":4057},{},[4058,4060,4066,4067,4073,4074,4080,4081,4087,4088,4094,4095,4101,4102,4108,4109,4115,4116,4122,4124,4129,4130,4135],{"type":15,"value":4059},"Feature`tileShadingSampledAttachments` indicates the implementation supports\nsampling instructions (",{"type":10,"tag":122,"props":4061,"children":4063},{"className":4062},[],[4064],{"type":15,"value":4065},"OpImageSample*",{"type":15,"value":1131},{"type":10,"tag":122,"props":4068,"children":4070},{"className":4069},[],[4071],{"type":15,"value":4072},"OpImageSparseSample*",{"type":15,"value":230},{"type":10,"tag":122,"props":4075,"children":4077},{"className":4076},[],[4078],{"type":15,"value":4079},"OpImage*Gather",{"type":15,"value":1131},{"type":10,"tag":122,"props":4082,"children":4084},{"className":4083},[],[4085],{"type":15,"value":4086},"OpImageSparse*Gather",{"type":15,"value":1131},{"type":10,"tag":122,"props":4089,"children":4091},{"className":4090},[],[4092],{"type":15,"value":4093},"OpImageFetch",{"type":15,"value":1131},{"type":10,"tag":122,"props":4096,"children":4098},{"className":4097},[],[4099],{"type":15,"value":4100},"OpImageSparseFetch",{"type":15,"value":230},{"type":10,"tag":122,"props":4103,"children":4105},{"className":4104},[],[4106],{"type":15,"value":4107},"OpImageSampleWeightedQCOM",{"type":15,"value":1131},{"type":10,"tag":122,"props":4110,"children":4112},{"className":4111},[],[4113],{"type":15,"value":4114},"OpImageBoxFilterQCOM",{"type":15,"value":1131},{"type":10,"tag":122,"props":4117,"children":4119},{"className":4118},[],[4120],{"type":15,"value":4121},"OpImageBlockMatch*SSD*QCOM",{"type":15,"value":4123},")\nfor any tile attachment supporting ",{"type":10,"tag":122,"props":4125,"children":4127},{"className":4126},[],[4128],{"type":15,"value":1343},{"type":15,"value":275},{"type":10,"tag":122,"props":4131,"children":4133},{"className":4132},[],[4134],{"type":15,"value":1350},{"type":15,"value":218},{"type":10,"tag":90,"props":4137,"children":4138},{},[4139,4145],{"type":10,"tag":122,"props":4140,"children":4142},{"className":4141},[],[4143],{"type":15,"value":4144},"tileShadingPerTileDraw",{"type":15,"value":4146}," indicates the implementation supports the\nrecording of draw commands inside a per-tile execution block.",{"type":10,"tag":90,"props":4148,"children":4149},{},[4150,4155,4157,4162],{"type":10,"tag":122,"props":4151,"children":4153},{"className":4152},[],[4154],{"type":15,"value":880},{"type":15,"value":4156}," indicates the implementation supports\nthe recording of dispatch commands inside a render pass. Note that\ndispatches inside a render pass are allowed only where\n",{"type":10,"tag":94,"props":4158,"children":4159},{"href":181},[4160],{"type":15,"value":4161},"per-tile execution",{"type":15,"value":4163}," is enabled.",{"type":10,"tag":90,"props":4165,"children":4166},{},[4167,4173,4175,4181,4183,4188],{"type":10,"tag":122,"props":4168,"children":4170},{"className":4169},[],[4171],{"type":15,"value":4172},"tileShadingDispatchTile",{"type":15,"value":4174}," indicates the implementation supports\nthe ",{"type":10,"tag":122,"props":4176,"children":4178},{"className":4177},[],[4179],{"type":15,"value":4180},"vkCmdDispatchTileQCOM",{"type":15,"value":4182}," command. Note this feature requires\n",{"type":10,"tag":122,"props":4184,"children":4186},{"className":4185},[],[4187],{"type":15,"value":880},{"type":15,"value":218},{"type":10,"tag":90,"props":4190,"children":4191},{},[4192,4198],{"type":10,"tag":122,"props":4193,"children":4195},{"className":4194},[],[4196],{"type":15,"value":4197},"tileShadingApron",{"type":15,"value":4199}," indicates the implementation supports an apron\nwidth/height greater than 0. Note that for aprons to be useful, one\nof the below tileShading*Attachments features needs to be supported.",{"type":10,"tag":90,"props":4201,"children":4202},{},[4203,4209],{"type":10,"tag":122,"props":4204,"children":4206},{"className":4205},[],[4207],{"type":15,"value":4208},"tileShadingAnisotropicApron",{"type":15,"value":4210}," indicates the implementation supports\naprons with a width and height that are different values.",{"type":10,"tag":90,"props":4212,"children":4213},{},[4214,4219],{"type":10,"tag":122,"props":4215,"children":4217},{"className":4216},[],[4218],{"type":15,"value":1022},{"type":15,"value":4220}," indicates the implementation support atomic\noperations with tile attachments.",{"type":10,"tag":90,"props":4222,"children":4223},{},[4224,4230],{"type":10,"tag":122,"props":4225,"children":4227},{"className":4226},[],[4228],{"type":15,"value":4229},"tileShadingImageProcessing",{"type":15,"value":4231}," indicates that the implementation\nsupports image processing instructions with tile attachments.",{"type":10,"tag":11,"props":4233,"children":4234},{},[4235],{"type":15,"value":4236},"The following properties structure is proposed.",{"type":10,"tag":300,"props":4238,"children":4240},{"className":302,"code":4239,"language":304,"meta":305,"style":305},"typedef struct VkPhysicalDeviceTileShadingPropertiesQCOM {\n VkStructureType sType;\n void* pNext;\n uint32_t maxApronSize;\n VkBool32 preferNonCoherent;\n VkExtent2D tileGranularity;\n VkExtent2D maxTileShadingRate;\n} VkPhysicalDeviceTileShadingPropertiesQCOM;\n",[4241],{"type":10,"tag":122,"props":4242,"children":4243},{"__ignoreMap":305},[4244,4260,4267,4278,4291,4299,4307,4315],{"type":10,"tag":311,"props":4245,"children":4246},{"class":313,"line":314},[4247,4251,4255],{"type":10,"tag":311,"props":4248,"children":4249},{"style":318},[4250],{"type":15,"value":321},{"type":10,"tag":311,"props":4252,"children":4253},{"style":318},[4254],{"type":15,"value":462},{"type":10,"tag":311,"props":4256,"children":4257},{"style":329},[4258],{"type":15,"value":4259}," VkPhysicalDeviceTileShadingPropertiesQCOM {\n",{"type":10,"tag":311,"props":4261,"children":4262},{"class":313,"line":335},[4263],{"type":10,"tag":311,"props":4264,"children":4265},{"style":329},[4266],{"type":15,"value":625},{"type":10,"tag":311,"props":4268,"children":4269},{"class":313,"line":364},[4270,4274],{"type":10,"tag":311,"props":4271,"children":4272},{"style":318},[4273],{"type":15,"value":3794},{"type":10,"tag":311,"props":4275,"children":4276},{"style":329},[4277],{"type":15,"value":3799},{"type":10,"tag":311,"props":4279,"children":4280},{"class":313,"line":390},[4281,4286],{"type":10,"tag":311,"props":4282,"children":4283},{"style":318},[4284],{"type":15,"value":4285}," uint32_t",{"type":10,"tag":311,"props":4287,"children":4288},{"style":329},[4289],{"type":15,"value":4290}," maxApronSize;\n",{"type":10,"tag":311,"props":4292,"children":4293},{"class":313,"line":412},[4294],{"type":10,"tag":311,"props":4295,"children":4296},{"style":329},[4297],{"type":15,"value":4298}," VkBool32 preferNonCoherent;\n",{"type":10,"tag":311,"props":4300,"children":4301},{"class":313,"line":421},[4302],{"type":10,"tag":311,"props":4303,"children":4304},{"style":329},[4305],{"type":15,"value":4306}," VkExtent2D tileGranularity;\n",{"type":10,"tag":311,"props":4308,"children":4309},{"class":313,"line":431},[4310],{"type":10,"tag":311,"props":4311,"children":4312},{"style":329},[4313],{"type":15,"value":4314}," VkExtent2D maxTileShadingRate;\n",{"type":10,"tag":311,"props":4316,"children":4317},{"class":313,"line":444},[4318],{"type":10,"tag":311,"props":4319,"children":4320},{"style":329},[4321],{"type":15,"value":4322},"} VkPhysicalDeviceTileShadingPropertiesQCOM;\n",{"type":10,"tag":86,"props":4324,"children":4325},{},[4326,4338,4358,4370],{"type":10,"tag":90,"props":4327,"children":4328},{},[4329,4330,4336],{"type":15,"value":2003},{"type":10,"tag":122,"props":4331,"children":4333},{"className":4332},[],[4334],{"type":15,"value":4335},"maxApronSize",{"type":15,"value":4337}," property defines the maximum tile apron size allowed.",{"type":10,"tag":90,"props":4339,"children":4340},{},[4341,4342,4348,4350,4356],{"type":15,"value":2003},{"type":10,"tag":122,"props":4343,"children":4345},{"className":4344},[],[4346],{"type":15,"value":4347},"preferNonCoherent",{"type":15,"value":4349}," property indicates whether the implementation prefers\nSPIR-V ",{"type":10,"tag":122,"props":4351,"children":4353},{"className":4352},[],[4354],{"type":15,"value":4355},"NonCoherentTileAttachment",{"type":15,"value":4357}," execution mode.",{"type":10,"tag":90,"props":4359,"children":4360},{},[4361,4362,4368],{"type":15,"value":2003},{"type":10,"tag":122,"props":4363,"children":4365},{"className":4364},[],[4366],{"type":15,"value":4367},"tileGranularity",{"type":15,"value":4369}," property provides a guarantee on the granularity of each tile.\nEach tile will have dimensions that are a multiple of this granularity in width and height.",{"type":10,"tag":90,"props":4371,"children":4372},{},[4373,4374,4379,4381,4387],{"type":15,"value":2003},{"type":10,"tag":122,"props":4375,"children":4377},{"className":4376},[],[4378],{"type":15,"value":1564},{"type":15,"value":4380}," property defines the maximum value that the ",{"type":10,"tag":122,"props":4382,"children":4384},{"className":4383},[],[4385],{"type":15,"value":4386},"TileShadingRateQCOM",{"type":15,"value":4388},"\nspecified in the shader can be, and must be a power of 2.",{"type":10,"tag":17,"props":4390,"children":4392},{"id":4391},"_issues",[4393],{"type":15,"value":4394},"Issues",{"type":10,"tag":249,"props":4396,"children":4398},{"id":4397},"_are_all_attachment_typescolor_depthstencil_input_resolve_accessible_via_tile_attachment_loadstore_operations",[4399],{"type":15,"value":4400},"Are all attachment types(color, depth/stencil, input, resolve) accessible via tile attachment load/store operations.",{"type":10,"tag":11,"props":4402,"children":4403},{},[4404],{"type":15,"value":4405},"PROPOSED: No, we propose the following restrictions for specific attachment types and shader stages:",{"type":10,"tag":86,"props":4407,"children":4408},{},[4409,4414],{"type":10,"tag":90,"props":4410,"children":4411},{},[4412],{"type":15,"value":4413},"Compute and fragment shaders must not store to depth/stencil attachments, resolve attachments,\nnor input attachments.",{"type":10,"tag":90,"props":4415,"children":4416},{},[4417],{"type":15,"value":4418},"Fragment shaders must not store to color attachments.",{"type":10,"tag":11,"props":4420,"children":4421},{},[4422],{"type":15,"value":4423},"There are no known use-cases for tile stores to input attachments, and it seemed\nunexpected that an \"input attachment\" would be modified. Shader writes to\ndepth/stencil attachments is unexpected and may require disablement of\nimplementation-specific depth acceleration features. Resolve attachments are\nunlikely to be backed by tile memory Within a fragment shader, stores to the\ncolor attachment do not seem useful and could be difficult to synchronize with\nfragment output writes. For those reasons, the above cases are disallowed\nin this extension.",{"type":10,"tag":249,"props":4425,"children":4427},{"id":4426},"_should_draw_commands_be_allowed_when_per_tile_execution_mode_is_enabled",[4428],{"type":15,"value":4429},"Should draw commands be allowed when per-tile execution mode is enabled?",{"type":10,"tag":11,"props":4431,"children":4432},{},[4433],{"type":15,"value":4434},"PROPOSED: Yes, this is allowed, because it can be useful for certain use-cases.",{"type":10,"tag":11,"props":4436,"children":4437},{},[4438],{"type":15,"value":4439},"Without this extension, a TBDR GPU can \"distribute\" the draw call across the tiles.\nAs the GPU processes each tile, if a draw command includes primitives that do not\ncover the current tile, then the implementation may \"skip\" such primitives for\nthat tile.\nIf a draw command contains no primitives that cover the current tile, the\ndraw call may be entirely skipped for that tile.\nThis is important feature for maximizing TBDR rendering efficiency.",{"type":10,"tag":11,"props":4441,"children":4442},{},[4443,4445,4450],{"type":15,"value":4444},"With this extension, per-tile draws are introduced. A per-tile draw guarantees\nthe draw will be executed for each tile, effectively bypassing the above\nmechanisms.\nThe intended use-case for per-tile draws is for GPU-driven rendering.\nIn this use-case, a per-tile dispatch invokes a per-tile compute shader that writes\ndata to an indirect buffer, followed by a per-tile vkCmdDrawIndirect* that\nconsumes the same buffer. The application should ensure that each\nper-tile draw contains only primitives that cover the current tile. This is also\nthe motivation for adding ",{"type":10,"tag":122,"props":4446,"children":4448},{"className":4447},[],[4449],{"type":15,"value":3639},{"type":15,"value":4451}," as a\nframebuffer-space pipeline stage, enabling BY_REGION dependencies for the\nDRAW_INDIRECT stage.",{"type":10,"tag":11,"props":4453,"children":4454},{},[4455],{"type":15,"value":4456},"Other than such GPU-driven use-cases, the use of per-tile draws is discouraged.",{"type":10,"tag":249,"props":4458,"children":4460},{"id":4459},"_should_texture_sampling_be_supported_on_tile_attachments",[4461],{"type":15,"value":4462},"Should texture sampling be supported on tile attachments?",{"type":10,"tag":11,"props":4464,"children":4465},{},[4466,4468,4474],{"type":15,"value":4467},"PROPOSED: Yes, this has been included in the current proposal, but\nguarded by feature bit ",{"type":10,"tag":122,"props":4469,"children":4471},{"className":4470},[],[4472],{"type":15,"value":4473},"tileShadingSampledAttachments",{"type":15,"value":218},{"type":10,"tag":86,"props":4476,"children":4477},{},[4478,4513,4550,4555],{"type":10,"tag":90,"props":4479,"children":4480},{},[4481,4483,4489,4491,4497,4499,4504,4506,4511],{"type":15,"value":4482},"Tile attachment images used to construct ",{"type":10,"tag":122,"props":4484,"children":4486},{"className":4485},[],[4487],{"type":15,"value":4488},"OpSampledImage",{"type":15,"value":4490}," must\nhave been declared with the ",{"type":10,"tag":122,"props":4492,"children":4494},{"className":4493},[],[4495],{"type":15,"value":4496},"tileSampledImageQCOM",{"type":15,"value":4498}," storage qualifier,\nand will have an associated ",{"type":10,"tag":122,"props":4500,"children":4502},{"className":4501},[],[4503],{"type":15,"value":979},{"type":15,"value":4505}," or\n",{"type":10,"tag":122,"props":4507,"children":4509},{"className":4508},[],[4510],{"type":15,"value":1865},{"type":15,"value":4512}," descriptor.",{"type":10,"tag":90,"props":4514,"children":4515},{},[4516,4518,4523,4525,4530,4531,4536,4537,4542,4543,4548],{"type":15,"value":4517},"The resulting ",{"type":10,"tag":122,"props":4519,"children":4521},{"className":4520},[],[4522],{"type":15,"value":4488},{"type":15,"value":4524}," variable can be used with all the texture\n",{"type":10,"tag":122,"props":4526,"children":4528},{"className":4527},[],[4529],{"type":15,"value":4065},{"type":15,"value":1131},{"type":10,"tag":122,"props":4532,"children":4534},{"className":4533},[],[4535],{"type":15,"value":4072},{"type":15,"value":1131},{"type":10,"tag":122,"props":4538,"children":4540},{"className":4539},[],[4541],{"type":15,"value":4079},{"type":15,"value":236},{"type":10,"tag":122,"props":4544,"children":4546},{"className":4545},[],[4547],{"type":15,"value":4086},{"type":15,"value":4549},"\ninstructions.",{"type":10,"tag":90,"props":4551,"children":4552},{},[4553],{"type":15,"value":4554},"Texture coordinates for are relative to the attachment dimensions, rather than\nrelative to the tile dimensions.",{"type":10,"tag":90,"props":4556,"children":4557},{},[4558],{"type":15,"value":4559},"When sampling from a sampled tile attachment, if the texture coordinates\nare near a tile edge, or fully outside the tile, the texels participating in\ntexture filter may extend beyond the boundaries of the tile, resulting in reads\nof invalid texel locations, resulting in undefined values returned to the\nshader. The implementation is not required to clamp the coordinates to a valid\nrange. Applications will need to guarantee that the filter does not result in\nreading locations outside the tile+apron boundary.",{"type":10,"tag":249,"props":4561,"children":4563},{"id":4562},"_does_this_extension_offer_any_guarantees_for_the_granularity_of_the_tile_dimensions",[4564],{"type":15,"value":4565},"Does this extension offer any guarantees for the granularity of the tile dimensions?",{"type":10,"tag":11,"props":4567,"children":4568},{},[4569],{"type":15,"value":4570},"PROPOSED: Yes, the granularity is guaranteed.",{"type":10,"tag":11,"props":4572,"children":4573},{},[4574,4579],{"type":10,"tag":94,"props":4575,"children":4577},{"href":96,"rel":4576},[98],[4578],{"type":15,"value":101},{"type":15,"value":4580}," reports\ntile dimensions but does not provide any guarantees on the granularity of the tile\ndimension, making it difficult to author compute shaders that operate on a workgroup\nsize of known dimensions.",{"type":10,"tag":11,"props":4582,"children":4583},{},[4584,4586,4591],{"type":15,"value":4585},"An extension property ",{"type":10,"tag":122,"props":4587,"children":4589},{"className":4588},[],[4590],{"type":15,"value":4367},{"type":15,"value":4592}," is exposed to provide this.",{"type":10,"tag":249,"props":4594,"children":4596},{"id":4595},"_should_we_support_atomic_operations_on_tile_attachments",[4597],{"type":15,"value":4598},"Should we support atomic operations on tile attachments?",{"type":10,"tag":11,"props":4600,"children":4601},{},[4602],{"type":15,"value":4603},"PROPOSED: Yes, the atomic operations on tile attachments are supported but\nthe functionality is currently guarded by a feature bit.",{"type":10,"tag":249,"props":4605,"children":4607},{"id":4606},"_does_this_extension_support_multiview_rendering",[4608],{"type":15,"value":4609},"Does this extension support multiview rendering?",{"type":10,"tag":11,"props":4611,"children":4612},{},[4613],{"type":15,"value":4614},"PROPOSED: Yes, this is supported.",{"type":10,"tag":11,"props":4616,"children":4617},{},[4618,4620,4625],{"type":15,"value":4619},"Without this extension, implementations may implement multiview\nrendering as single-pass rendering to a multi-layered attachment, or multi-pass\nrendering where each pass renders one view/layer. With this extension,\nthe former would use multi-layered tiles and the latter would use\nsingle-layered tiles. The number of layers in the tile would affect\nmost application use-cases for tile shading. ",{"type":10,"tag":122,"props":4621,"children":4623},{"className":4622},[],[4624],{"type":15,"value":101},{"type":15,"value":4626}," exposes\nthe number of layers in the tile, allowing the application to handle either\nimplementation style.",{"type":10,"tag":249,"props":4628,"children":4630},{"id":4629},"_does_this_extension_support_attachments_with_a_layer_count_greater_than_1",[4631],{"type":15,"value":4632},"Does this extension support attachments with a layer count greater than 1?",{"type":10,"tag":11,"props":4634,"children":4635},{},[4636,4638,4643],{"type":15,"value":4637},"PROPOSED: Yes, this is supported. The the existing ",{"type":10,"tag":122,"props":4639,"children":4641},{"className":4640},[],[4642],{"type":15,"value":101},{"type":15,"value":4644},"\nextension exposes support for multi-layered tiles.",{"type":10,"tag":249,"props":4646,"children":4648},{"id":4647},"_are_store_operations_allowed_for_apron_pixels",[4649],{"type":15,"value":4650},"Are store operations allowed for apron pixels?",{"type":10,"tag":11,"props":4652,"children":4653},{},[4654],{"type":15,"value":4655},"PROPOSED: No, this is not allowed.",{"type":10,"tag":11,"props":4657,"children":4658},{},[4659],{"type":15,"value":4660},"There are no known use-cases, for stores to the apron pixels\nand supporting this may come at a performance cost on some\nTBDRs.",{"type":10,"tag":249,"props":4662,"children":4664},{"id":4663},"_is_functionality_and_performance_expected_to_be_similar_for_both_render_pass_objects_and_dynamic_render_passes",[4665],{"type":15,"value":4666},"Is functionality and performance expected to be similar for both render pass objects and dynamic render passes?",{"type":10,"tag":11,"props":4668,"children":4669},{},[4670,4672,4677],{"type":15,"value":4671},"PROPOSED: Yes, since this extension builds upon\n",{"type":10,"tag":94,"props":4673,"children":4675},{"href":109,"rel":4674},[98],[4676],{"type":15,"value":113},{"type":15,"value":4678},",\nthe functionality and performance is expected to be equivalent.",{"type":10,"tag":11,"props":4680,"children":4681},{},[4682],{"type":15,"value":4683},"Earlier versions of this extension that were not based on\nVK_KHR_dynamic_rendering_local_read resulted in far less functionality\nfor dynamic render passes.",{"type":10,"tag":249,"props":4685,"children":4687},{"id":4686},"_does_this_extension_change_the_behavior_of_render_pass_loadop_or_storeop",[4688],{"type":15,"value":4689},"Does this extension change the behavior of render pass LoadOp or StoreOp?",{"type":10,"tag":11,"props":4691,"children":4692},{},[4693],{"type":15,"value":4694},"RESOLVED: No, there is no change to the behavior.",{"type":10,"tag":249,"props":4696,"children":4698},{"id":4697},"_can_tile_attachment_loadstore_operations_be_used_without_enabling_per_tile_execution",[4699],{"type":15,"value":4700},"Can tile attachment load/store operations be used without enabling per-tile execution?",{"type":10,"tag":11,"props":4702,"children":4703},{},[4704,4706,4710],{"type":15,"value":4705},"RESOLVED: Yes, if a render pass enables tile shading but not the\n",{"type":10,"tag":94,"props":4707,"children":4708},{"href":181},[4709],{"type":15,"value":184},{"type":15,"value":4711},", then\nfragment shader invocations can load pixel values from tile attachment\nvariables.",{"type":10,"tag":11,"props":4713,"children":4714},{},[4715],{"type":15,"value":4716},"This includes loading the pixel value of the fragment coordinate\n(aka \"framebuffer fetch\") as well as the ability to load pixel values\nof other fragments within the tile and/or the apron region.",{"type":10,"tag":249,"props":4718,"children":4720},{"id":4719},"_should_this_extension_include_the_ability_for_fragment_or_compute_shader_to_reinterpret_the_format_of_tile_attachment_pixels",[4721],{"type":15,"value":4722},"Should this extension include the ability for fragment or compute shader to reinterpret the format of tile attachment pixels?",{"type":10,"tag":11,"props":4724,"children":4725},{},[4726],{"type":15,"value":4727},"RESOLVED: No, while such a feature is desirable for many TBDR GPUs and is related to\nto this extension, but was considered beyond the scope of this extension.",{"type":10,"tag":11,"props":4729,"children":4730},{},[4731,4733,4739],{"type":15,"value":4732},"Use-cases such as deferred shading and deferred lighting are often implemented with multiple\ncolor attachments, representing the framebuffer pixels in different formats or layouts.\nThe OpenGL extension ",{"type":10,"tag":122,"props":4734,"children":4736},{"className":4735},[],[4737],{"type":15,"value":4738},"GL_EXT_shader_pixel_local_storage",{"type":15,"value":4740}," supports such reinterpretation,\nand other tile shading APIs incorporate something similar. These mechanisms enable\nthe same block of tile memory to be interpreted as multiple layouts or formats.",{"type":10,"tag":11,"props":4742,"children":4743},{},[4744],{"type":15,"value":4745},"Such reinterpretation of framebuffer pixels can be useful even if tile shading is not\nused. Therefore, it may be best handled as a completely separate extension.",{"type":10,"tag":249,"props":4747,"children":4749},{"id":4748},"_should_this_extension_include_an_area_based_dispatch",[4750],{"type":15,"value":4751},"Should this extension include an area-based dispatch?",{"type":10,"tag":11,"props":4753,"children":4754},{},[4755],{"type":15,"value":4756},"RESOLVED: Yes, one some Adreno ™ GPUs and for some use-cases, the tile-sized\ndispatch can improve GPU efficiency and has been incorporated into this extension.",{"type":10,"tag":11,"props":4758,"children":4759},{},[4760,4765],{"type":10,"tag":122,"props":4761,"children":4763},{"className":4762},[],[4764],{"type":15,"value":4180},{"type":15,"value":4766}," provides a \"tile-sized dispatch\" where\nthe number of compute shader invocations is a function of the tile dimensions,\nwhere the GPU can construct workgroups that are aligned to implementation specific\nmicro-tiles and assign those workgroups to the shader core that is able to\nmost optimally perform load/store operations for the micro tile’s pixels.",{"type":10,"tag":249,"props":4768,"children":4770},{"id":4769},"_do_we_need_a_new_vk_pipeline_create_bit_to_specify_if_per_tile_execution_mode_will_be_enabled",[4771],{"type":15,"value":4772},"Do we need a new VK_PIPELINE_CREATE bit to specify if per-tile execution mode will be enabled?",{"type":10,"tag":11,"props":4774,"children":4775},{},[4776,4778,4782,4784,4789],{"type":15,"value":4777},"RESOLVED: No. In this proposal, a created graphics pipeline can be used in a render\npass regardless whether the render pass enables tile shading, and regardless whether\n",{"type":10,"tag":94,"props":4779,"children":4780},{"href":181},[4781],{"type":15,"value":592},{"type":15,"value":4783}," is enabled. Similarly,\na created compute pipelines can now be used inside or outside a render pass. We decided\nnot to require these usage flags during pipeline creation because we think it would be a burden\nto developers and because we do not anticipate implementations will require this information.\nWe do specify that the new shader built-ins (e.g., TileDimensionQCOM, TileOffsetQCOM, etc.) contain\nthe value ",{"type":10,"tag":122,"props":4785,"children":4787},{"className":4786},[],[4788],{"type":15,"value":1599},{"type":15,"value":4790}," if the shader is invoked when per-tile execution mode is disabled.",{"type":10,"tag":249,"props":4792,"children":4794},{"id":4793},"_should_vkcomputepipelinecreateinfo_be_extended_with_renderpasssubpass_information",[4795],{"type":15,"value":4796},"Should VkComputePipelineCreateInfo be extended with renderpass/subpass information?",{"type":10,"tag":11,"props":4798,"children":4799},{},[4800],{"type":15,"value":4801},"RESOLVED: No. Similar to above, we believe that limiting\ncompute pipelines to a single renderpass/subpass would be a burden to developers\nand we do not anticipate that implementations need this information.",{"type":10,"tag":249,"props":4803,"children":4805},{"id":4804},"_how_does_this_extension_differ_from_vk_ext_shader_tile_image",[4806,4808,4815],{"type":15,"value":4807},"How does this extension differ from ",{"type":10,"tag":94,"props":4809,"children":4812},{"href":4810,"rel":4811},"https://docs.vulkan.org/spec/latest/appendices/extensions.html#VK_EXT_shader_tile_image",[98],[4813],{"type":15,"value":4814},"VK_EXT_shader_tile_image",{"type":15,"value":4816},"?",{"type":10,"tag":11,"props":4818,"children":4819},{},[4820,4822,4827],{"type":15,"value":4821},"RESOLVED: The functionality of this extension is a superset of ",{"type":10,"tag":122,"props":4823,"children":4825},{"className":4824},[],[4826],{"type":15,"value":4814},{"type":15,"value":218},{"type":10,"tag":11,"props":4829,"children":4830},{},[4831],{"type":15,"value":4832},"VK_EXT_shader_tile_image is limited to bringing the functionality of\nGL_EXT_shader_framebuffer_fetch to Vulkan dynamic render passes. The\nassociated SPV_EXT_shader_tile_image and GL_EXT_shader_tile_image\nextensions provide descriptor-less read-only access to only the current\nfragment location for only color/depth/stencil attachments. This extension\nis a superset of the functionality in VK_EXT_shader_tile_image with\nthe exception of descriptor-less access.",{"type":10,"tag":249,"props":4834,"children":4836},{"id":4835},"_is_robustness_specified_for_out_of_bounds_tile_attachment_access",[4837],{"type":15,"value":4838},"Is robustness specified for out-of-bounds tile attachment access?",{"type":10,"tag":11,"props":4840,"children":4841},{},[4842],{"type":15,"value":4843},"RESOLVED: Possibly in a future extension. This extension requires that sampling\nand load/store tile attachment access must use an offset/coordinate that is within\nthe boundary of the tile (plus any apron). Out-of-bounds access will result in\nundefined behavior. For many use-cases, this will require the\napplication shader clamps the coordinates to the tile’s boundaries.\nNote that although clamp/wrap modes are specified in the VkSampler object,\nand are fully supported with tile attachment access, those clamp/wrap operations are\ndefined to occur at the edges of the VkImage and not at the edges of the tile.\nWhile shader-based clamping will add unwanted shader overhead, initial implementations\nsupporting this extension may not support tile access with robustness.",{"type":10,"tag":11,"props":4845,"children":4846},{},[4847],{"type":15,"value":4848},"While this extension could define an optional tile robustness feature, we have not\nyet standardized on the robustness behavior(s) that should be provided for tile access.\nFor example, a robust out-of-bounds tile access might return 0, or the coordinates might\nbe clamped to the tile’s boundaries.\nIn this initial proposal, we have elected to simply ban out-of-bounds tile access.",{"type":10,"tag":249,"props":4850,"children":4852},{"id":4851},"_how_does_this_extension_interact_with_vk_qcom_image_processing",[4853,4855,4862],{"type":15,"value":4854},"How does this extension interact with ",{"type":10,"tag":94,"props":4856,"children":4859},{"href":4857,"rel":4858},"https://docs.vulkan.org/spec/latest/appendices/extensions.html#VK_QCOM_image_processing",[98],[4860],{"type":15,"value":4861},"VK_QCOM_image_processing",{"type":15,"value":4816},{"type":10,"tag":11,"props":4864,"children":4865},{},[4866,4868,4873],{"type":15,"value":4867},"RESOLVED: The functionality VK_QCOM_image_processing and VK_QCOM_image_processing2 are\navailable with tile shading with an optional feature bit ",{"type":10,"tag":122,"props":4869,"children":4871},{"className":4870},[],[4872],{"type":15,"value":4229},{"type":15,"value":218},{"type":10,"tag":11,"props":4875,"children":4876},{},[4877,4879,4884,4885,4890,4891,4897],{"type":15,"value":4878},"VK_QCOM_image_processing and VK_QCOM_image_processing2 adds several new \"high order\" SPIR-V texture filtering operations\nfor image processing (",{"type":10,"tag":122,"props":4880,"children":4882},{"className":4881},[],[4883],{"type":15,"value":4107},{"type":15,"value":1131},{"type":10,"tag":122,"props":4886,"children":4888},{"className":4887},[],[4889],{"type":15,"value":4114},{"type":15,"value":1131},{"type":10,"tag":122,"props":4892,"children":4894},{"className":4893},[],[4895],{"type":15,"value":4896},"OpImageBlockMatch*",{"type":15,"value":4898},").",{"type":10,"tag":4900,"props":4901,"children":4902},"style",{},[4903],{"type":15,"value":4904},"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":305,"searchDepth":335,"depth":335,"links":4906},[4907,4908,4909,4922],{"id":19,"depth":335,"text":22},{"id":45,"depth":335,"text":48},{"id":76,"depth":335,"text":79,"children":4910},[4911,4912,4913,4914,4915,4916,4917,4918,4919,4920,4921],{"id":251,"depth":364,"text":254},{"id":571,"depth":364,"text":574},{"id":916,"depth":364,"text":919},{"id":932,"depth":364,"text":935},{"id":1067,"depth":364,"text":911},{"id":1269,"depth":364,"text":1272},{"id":1376,"depth":364,"text":1379},{"id":1639,"depth":364,"text":1063},{"id":2129,"depth":364,"text":2132},{"id":3532,"depth":364,"text":3535},{"id":3748,"depth":364,"text":3751},{"id":4391,"depth":335,"text":4394,"children":4923},[4924,4925,4926,4927,4928,4929,4930,4931,4932,4933,4934,4935,4936,4937,4938,4939,4941,4942],{"id":4397,"depth":364,"text":4400},{"id":4426,"depth":364,"text":4429},{"id":4459,"depth":364,"text":4462},{"id":4562,"depth":364,"text":4565},{"id":4595,"depth":364,"text":4598},{"id":4606,"depth":364,"text":4609},{"id":4629,"depth":364,"text":4632},{"id":4647,"depth":364,"text":4650},{"id":4663,"depth":364,"text":4666},{"id":4686,"depth":364,"text":4689},{"id":4697,"depth":364,"text":4700},{"id":4719,"depth":364,"text":4722},{"id":4748,"depth":364,"text":4751},{"id":4769,"depth":364,"text":4772},{"id":4793,"depth":364,"text":4796},{"id":4804,"depth":364,"text":4940},"How does this extension differ from VK_EXT_shader_tile_image?",{"id":4835,"depth":364,"text":4838},{"id":4851,"depth":364,"text":4943},"How does this extension interact with VK_QCOM_image_processing?","markdown",[4946,4951,4954,4957,4960,4963,4966,4969,4972,4975,4978,4981,4984,4987,4990,4993,4996,4999,5002,5005,5008,5011,5014,5017,5020,5023,5026,5029,5032,5035,5038,5041,5044,5047,5050,5053,5056,5060,5064,5068,5072,5076,5080,5084,5088,5092,5096,5100,5104,5108,5112,5116,5119,5122,5125,5128,5131,5134,5137,5140],{"index":4947,"title":4948,"id":4949,"appendix":4950},0,"Preamble","preamble",false,{"index":314,"title":4952,"id":4953,"appendix":4950},"Introduction","introduction",{"index":335,"title":4955,"id":4956,"appendix":4950},"Fundamentals","fundamentals",{"index":364,"title":4958,"id":4959,"appendix":4950},"Initialization","initialization",{"index":390,"title":4961,"id":4962,"appendix":4950},"Devices and Queues","devsandqueues",{"index":412,"title":4964,"id":4965,"appendix":4950},"Command Buffers","commandbuffers",{"index":421,"title":4967,"id":4968,"appendix":4950},"Synchronization and Cache Control","synchronization",{"index":431,"title":4970,"id":4971,"appendix":4950},"Render Pass","renderpass",{"index":444,"title":4973,"id":4974,"appendix":4950},"Shaders","shaders",{"index":452,"title":4976,"id":4977,"appendix":4950},"Pipelines","pipelines",{"index":470,"title":4979,"id":4980,"appendix":4950},"Memory Allocation","memory",{"index":479,"title":4982,"id":4983,"appendix":4950},"Resource Creation","resources",{"index":498,"title":4985,"id":4986,"appendix":4950},"Samplers","samplers",{"index":507,"title":4988,"id":4989,"appendix":4950},"Resource Descriptors","descriptorsets",{"index":516,"title":4991,"id":4992,"appendix":4950},"Shader Interfaces","interfaces",{"index":783,"title":4994,"id":4995,"appendix":4950},"Image Operations","textures",{"index":800,"title":4997,"id":4998,"appendix":4950},"Fragment Density Map Operations","fragmentdensitymapops",{"index":816,"title":5000,"id":5001,"appendix":4950},"Queries","queries",{"index":2774,"title":5003,"id":5004,"appendix":4950},"Clear Commands","clears",{"index":2782,"title":5006,"id":5007,"appendix":4950},"Copy Commands","copies",{"index":2791,"title":5009,"id":5010,"appendix":4950},"Drawing Commands","drawing",{"index":2819,"title":5012,"id":5013,"appendix":4950},"Fixed-Function Vertex Processing","fxvertex",{"index":2846,"title":5015,"id":5016,"appendix":4950},"Tessellation","tessellation",{"index":2873,"title":5018,"id":5019,"appendix":4950},"Geometry Shading","geometry",{"index":2911,"title":5021,"id":5022,"appendix":4950},"Mesh Shading","mesh",{"index":2946,"title":5024,"id":5025,"appendix":4950},"Cluster Culling Shading","cluster-culling",{"index":2954,"title":5027,"id":5028,"appendix":4950},"Fixed-Function Vertex Post-Processing","vertexpostproc",{"index":2963,"title":5030,"id":5031,"appendix":4950},"Rasterization","primsrast",{"index":3017,"title":5033,"id":5034,"appendix":4950},"Fragment Operations","fragops",{"index":3025,"title":5036,"id":5037,"appendix":4950},"The Framebuffer","framebuffer",{"index":3034,"title":5039,"id":5040,"appendix":4950},"Dispatching Commands","dispatch",{"index":3043,"title":5042,"id":5043,"appendix":4950},"Device-Generated Commands","device-generated-commands",{"index":3052,"title":5045,"id":5046,"appendix":4950},"Sparse Resources","sparsememory",{"index":3060,"title":5048,"id":5049,"appendix":4950},"Window System Integration (WSI)","wsi",{"index":3069,"title":5051,"id":5052,"appendix":4950},"Deferred Host Operations","deferred-host-operations",{"index":3133,"title":5054,"id":5055,"appendix":4950},"Private Data","private-data",{"index":5057,"title":5058,"id":5059,"appendix":4950},36,"Acceleration Structures","acceleration-structure",{"index":5061,"title":5062,"id":5063,"appendix":4950},37,"Micromap","micromap",{"index":5065,"title":5066,"id":5067,"appendix":4950},38,"Ray Traversal","ray-traversal",{"index":5069,"title":5070,"id":5071,"appendix":4950},39,"Ray Tracing","ray-tracing",{"index":5073,"title":5074,"id":5075,"appendix":4950},40,"Memory Decompression","memory-decompression",{"index":5077,"title":5078,"id":5079,"appendix":4950},41,"Video Coding","video-coding",{"index":5081,"title":5082,"id":5083,"appendix":4950},42,"Optical Flow","opticalflow",{"index":5085,"title":5086,"id":5087,"appendix":4950},43,"Execution Graphs","executiongraphs",{"index":5089,"title":5090,"id":5091,"appendix":4950},44,"External Compute Queues","_external_compute_queues",{"index":5093,"title":5094,"id":5095,"appendix":4950},45,"Extending Vulkan","extendingvulkan",{"index":5097,"title":5098,"id":5099,"appendix":4950},46,"Features","features",{"index":5101,"title":5102,"id":5103,"appendix":4950},47,"Limits","limits",{"index":5105,"title":5106,"id":5107,"appendix":4950},48,"Formats","formats",{"index":5109,"title":5110,"id":5111,"appendix":4950},49,"Additional Capabilities","capabilities",{"index":5113,"title":5114,"id":5115,"appendix":4950},50,"Debugging","debugging",{"index":4947,"title":5117,"id":5118,"appendix":425},"Vulkan Environment for SPIR-V","spirvenv",{"index":314,"title":5120,"id":5121,"appendix":425},"Memory Model","memory-model",{"index":335,"title":5123,"id":5124,"appendix":425},"Compressed Image Formats","compressed_image_formats",{"index":364,"title":5126,"id":5127,"appendix":425},"Core Revisions (Informative)","versions",{"index":390,"title":5129,"id":5130,"appendix":425},"Layers & Extensions (Informative)","extensions",{"index":412,"title":5132,"id":5133,"appendix":425},"API Boilerplate","boilerplate",{"index":421,"title":5135,"id":5136,"appendix":425},"Invariance","invariance",{"index":431,"title":5138,"id":5139,"appendix":425},"Lexicon","lexicon",{"index":444,"title":5141,"id":5142,"appendix":425},"Credits (Informative)","credits",[5144,5152,5156,5161,5165,5170,5173,5176,5179,5183,5187,5190,5193,5196,5198,5200,5203,5206,5210,5212,5216,5218,5221,5223,5226,5233,5237,5243,5248,5252,5257,5259,5263,5269,5275,5282,5284,5288,5294,5296,5300,5305,5309,5313,5317,5321,5324,5327,5333,5336,5339,5343,5347,5352,5356,5359,5361,5365,5370,5376,5379,5383,5387,5390,5396,5399,5403,5406,5410,5413,5417,5420,5425,5429,5432,5437,5442,5445,5448,5453,5456,5460,5465,5470,5474,5478,5482,5486,5491,5495,5499,5502,5505,5509,5512,5515,5518,5522,5527,5531,5534,5538,5543,5547,5552,5555,5558,5563,5567,5571,5574,5578,5583,5586,5591,5595,5598,5601,5605,5609,5613,5618,5622,5625,5630,5634,5638,5641,5645,5649,5653,5656,5658,5662,5665,5668,5671,5674,5677,5680,5683,5686,5689,5693,5697,5700,5703,5706,5709,5711,5714,5718,5722,5726,5729,5733,5736,5739,5742,5744,5748,5753,5757,5761,5764,5766,5770,5773,5780,5784,5788,5792,5798,5800,5804,5808,5811,5814,5818,5823,5828,5834,5838,5840,5845,5848,5853,5857,5862,5866,5870,5872,5875,5878,5880,5884,5887,5890,5895,5899,5903,5905,5910,5914,5918,5920,5922,5925,5927,5930,5933,5936,5940,5942,5946,5949,5953,5956,5958,5961,5965,5967,5971,5974,5977,5980,5984,5987,5990,5993,5996,5998,6001,6005,6008,6010,6012,6014,6016,6020,6023,6026,6031,6035,6038,6041,6044,6047,6049,6053,6057,6060,6063,6067,6070,6075,6079,6082,6086,6089,6092,6096,6100,6102,6107,6110,6114,6117,6120,6123,6126,6128,6131,6135,6138,6142,6145,6149,6153,6156,6159,6162,6165,6169,6172,6175,6177,6182,6183,6187,6190,6193,6196,6199,6201,6205,6208,6211,6214,6218,6221,6223,6227,6229,6233,6236,6238,6241,6245,6249,6251,6255,6258,6261,6264,6267,6271,6276,6281,6285,6291,6295,6298,6302,6306,6309,6312,6316,6320,6323,6326,6329,6333,6336,6341,6345,6347,6353,6356,6359,6362,6366,6369,6373,6378,6381,6385,6389,6391,6394,6396,6399,6401,6403,6406,6409,6412,6415,6418,6421,6423,6427,6431,6435,6439,6442,6445,6449,6452,6456,6460,6464,6466,6470,6474,6477,6480,6483,6486,6489,6492,6495,6498,6501,6504,6507,6510,6513,6516,6519,6523,6526,6530,6533,6536,6539,6542,6545,6548,6551,6555,6557,6561,6564,6570,6574,6578,6582],{"number":5145,"type":5146,"author":5147,"provisional":425,"depends":5148,"platform":5149,"contact":5150,"extension":5151,"proposal":425},135,"device","AMD","((VK_KHR_synchronization2+VK_KHR_spirv_1_4+VK_EXT_extended_dynamic_state),VK_VERSION_1_3)+VK_KHR_maintenance5+VK_KHR_pipeline_library","provisional","Tobias Hector @tobski","VK_AMDX_shader_enqueue",{"number":5153,"type":5146,"author":5147,"provisional":4950,"contact":5154,"extension":5155,"proposal":425},477,"Stu Smith","VK_AMD_anti_lag",{"number":5157,"type":5146,"author":5147,"provisional":4950,"specialuse":5158,"contact":5159,"extension":5160,"proposal":4950},180,"devtools","Daniel Rakos @drakos-amd","VK_AMD_buffer_marker",{"number":5162,"type":5146,"author":5147,"provisional":4950,"depends":5163,"contact":5150,"extension":5164,"proposal":4950},230,"VK_KHR_get_physical_device_properties2,VK_VERSION_1_1","VK_AMD_device_coherent_memory",{"number":5166,"type":5146,"author":5147,"provisional":4950,"depends":5167,"contact":5168,"extension":5169,"proposal":4950},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":3069,"type":5146,"author":5147,"promotedto":5171,"provisional":4950,"contact":5159,"extension":5172,"proposal":4950},"VK_KHR_draw_indirect_count","VK_AMD_draw_indirect_count",{"number":2954,"type":5146,"author":5147,"provisional":4950,"contact":5174,"extension":5175,"proposal":4950},"Dominik Witczak @dominikwitczakamd","VK_AMD_gcn_shader",{"number":5061,"type":5146,"author":5147,"deprecatedby":5177,"provisional":4950,"contact":5174,"extension":5178,"proposal":4950},"VK_KHR_shader_float16_int8","VK_AMD_gpu_shader_half_float",{"number":5180,"type":5146,"author":5147,"deprecatedby":5177,"provisional":4950,"contact":5181,"extension":5182,"proposal":4950},133,"Qun Lin @linqun","VK_AMD_gpu_shader_int16",{"number":5184,"type":5146,"author":5147,"provisional":4950,"contact":5185,"extension":5186,"proposal":4950},190,"Martin Dinkov @mdinkov","VK_AMD_memory_overallocation_behavior",{"number":5188,"type":5146,"author":5147,"provisional":4950,"contact":5168,"extension":5189,"proposal":4950},137,"VK_AMD_mixed_attachment_samples",{"number":5057,"type":5146,"author":5147,"obsoletedby":5191,"provisional":4950,"contact":5168,"extension":5192,"proposal":4950},"VK_KHR_maintenance1","VK_AMD_negative_viewport_height",{"number":5194,"type":5146,"author":5147,"provisional":4950,"contact":5168,"extension":5195,"proposal":4950},184,"VK_AMD_pipeline_compiler_control",{"number":2782,"type":5146,"author":5147,"provisional":4950,"contact":5159,"extension":5197,"proposal":4950},"VK_AMD_rasterization_order",{"number":5065,"type":5146,"author":5147,"provisional":4950,"contact":5174,"extension":5199,"proposal":4950},"VK_AMD_shader_ballot",{"number":5201,"type":5146,"author":5147,"provisional":4950,"depends":5163,"contact":5185,"extension":5202,"proposal":4950},186,"VK_AMD_shader_core_properties",{"number":5204,"type":5146,"author":5147,"provisional":4950,"depends":5202,"contact":5168,"extension":5205,"proposal":4950},228,"VK_AMD_shader_core_properties2",{"number":5207,"type":5146,"author":5208,"provisional":4950,"depends":5163,"contact":5150,"extension":5209,"proposal":425},322,"EXT","VK_AMD_shader_early_and_late_fragment_tests",{"number":2846,"type":5146,"author":5147,"provisional":4950,"contact":5181,"extension":5211,"proposal":4950},"VK_AMD_shader_explicit_vertex_parameter",{"number":5213,"type":5146,"author":5147,"provisional":4950,"contact":5214,"extension":5215,"proposal":4950},138,"Aaron Hagan @AaronHaganAMD","VK_AMD_shader_fragment_mask",{"number":5101,"type":5146,"author":5147,"provisional":4950,"contact":5174,"extension":5217,"proposal":4950},"VK_AMD_shader_image_load_store_lod",{"number":5085,"type":5146,"author":5147,"provisional":4950,"specialuse":5158,"contact":5219,"extension":5220,"proposal":4950},"Jaakko Konttinen @jaakkoamd","VK_AMD_shader_info",{"number":2819,"type":5146,"author":5147,"provisional":4950,"contact":5181,"extension":5222,"proposal":4950},"VK_AMD_shader_trinary_minmax",{"number":5081,"type":5146,"author":5147,"provisional":4950,"depends":5163,"contact":5224,"extension":5225,"proposal":4950},"Rex Xu @amdrexu","VK_AMD_texture_gather_bias_lod",{"number":5227,"type":5146,"author":5228,"provisional":4950,"depends":5229,"platform":5230,"specialuse":5231,"contact":5232,"extension":1265,"proposal":425},469,"ANDROID","VK_ANDROID_external_memory_android_hardware_buffer","android","glemulation","Chris Forbes @chrisforbes",{"number":5234,"type":5146,"author":5228,"provisional":4950,"depends":5235,"platform":5230,"contact":5236,"extension":5229,"proposal":4950},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":5238,"type":5146,"author":5239,"provisional":4950,"depends":5240,"contact":5241,"extension":5242,"proposal":425},597,"ARM","VK_EXT_opacity_micromap","Mathieu Robart @mathieurobart-arm","VK_ARM_pipeline_opacity_micromap",{"number":5244,"type":5146,"author":5239,"promotedto":5245,"provisional":4950,"depends":5163,"contact":5246,"extension":5247,"proposal":4950},343,"VK_EXT_rasterization_order_attachment_access","Jan-Harald Fredriksen @janharaldfredriksen-arm","VK_ARM_rasterization_order_attachment_access",{"number":5249,"type":5146,"author":5239,"provisional":4950,"depends":5250,"contact":5246,"extension":5251,"proposal":425},425,"((VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_synchronization2),VK_VERSION_1_3","VK_ARM_render_pass_striped",{"number":5253,"type":5146,"author":5239,"provisional":4950,"depends":5254,"contact":5255,"extension":5256,"proposal":4950},418,"VK_ARM_shader_core_builtins","Kevin Petit @kpet","VK_ARM_scheduling_controls",{"number":5258,"type":5146,"author":5239,"provisional":4950,"depends":5163,"contact":5255,"extension":5254,"proposal":4950},498,{"number":5260,"type":5146,"author":5239,"provisional":4950,"depends":5261,"contact":5246,"extension":5262,"proposal":4950},416,"VK_VERSION_1_1","VK_ARM_shader_core_properties",{"number":5264,"type":5146,"author":5208,"promotedto":5265,"provisional":4950,"depends":5163,"ratified":5266,"contact":5267,"extension":5268,"proposal":4950},341,"VK_VERSION_1_3","vulkansc","Joshua Ashton @Joshua-Ashton","VK_EXT_4444_formats",{"number":5270,"type":5271,"author":5208,"provisional":4950,"depends":5272,"contact":5273,"extension":5274,"proposal":4950},286,"instance","VK_EXT_direct_mode_display","Drew DeVault sir@cmpwn.com","VK_EXT_acquire_drm_display",{"number":5276,"type":5271,"author":5277,"provisional":4950,"depends":5272,"platform":5278,"ratified":5279,"contact":5280,"extension":5281,"proposal":4950},90,"NV","xlib_xrandr","vulkan","James Jones @cubanismo","VK_EXT_acquire_xlib_display",{"extension":5283,"proposal":4950},"VK_EXT_application_parameters",{"number":5285,"type":5146,"author":5239,"provisional":4950,"depends":5163,"ratified":5286,"contact":5246,"extension":5287,"proposal":4950},68,"vulkan,vulkansc","VK_EXT_astc_decode_mode",{"number":5289,"type":5146,"author":5208,"provisional":4950,"depends":5290,"ratified":5279,"specialuse":5291,"contact":5292,"extension":5293,"proposal":425},525,"(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_EXT_attachment_feedback_loop_layout","glemulation,d3demulation","Mike Blumenkrantz @zmike","VK_EXT_attachment_feedback_loop_dynamic_state",{"number":5295,"type":5146,"author":5208,"provisional":4950,"depends":5163,"ratified":5279,"specialuse":5291,"contact":5267,"extension":1211,"proposal":425},340,{"number":5297,"type":5146,"author":5277,"provisional":4950,"depends":5163,"ratified":5286,"contact":5298,"extension":5299,"proposal":4950},149,"Jeff Bolz @jeffbolznv","VK_EXT_blend_operation_advanced",{"number":5301,"type":5146,"author":5208,"provisional":4950,"depends":5302,"ratified":5279,"specialuse":5291,"contact":5303,"extension":5304,"proposal":4950},412,"VK_EXT_custom_border_color","Piers Daniell @pdaniell-nv","VK_EXT_border_color_swizzle",{"number":5306,"type":5146,"author":5277,"deprecatedby":5307,"provisional":4950,"depends":5163,"contact":5298,"extension":5308,"proposal":4950},245,"VK_KHR_buffer_device_address","VK_EXT_buffer_device_address",{"number":5310,"type":5146,"author":5208,"promotedto":5311,"provisional":4950,"depends":5163,"contact":5159,"extension":5312,"proposal":425},185,"VK_KHR_calibrated_timestamps","VK_EXT_calibrated_timestamps",{"number":5314,"type":5146,"author":5208,"provisional":4950,"depends":5163,"ratified":5286,"contact":5315,"extension":5316,"proposal":4950},382,"Sharif Elcott @selcott","VK_EXT_color_write_enable",{"number":5318,"type":5146,"author":5277,"provisional":4950,"depends":5163,"contact":5319,"extension":5320,"proposal":4950},82,"Vikram Kushwaha @vkushwaha","VK_EXT_conditional_rendering",{"number":5322,"type":5146,"author":5277,"provisional":4950,"depends":5163,"ratified":5286,"contact":5303,"extension":5323,"proposal":4950},102,"VK_EXT_conservative_rasterization",{"number":5325,"type":5146,"author":5208,"provisional":4950,"depends":5163,"ratified":5286,"specialuse":5291,"contact":5326,"extension":5302,"proposal":4950},288,"Liam Middlebrook @liam-middlebrook",{"number":2873,"type":5146,"author":5328,"promotedto":5329,"provisional":4950,"depends":5330,"specialuse":5115,"contact":5331,"extension":5332,"proposal":4950},"Baldur Karlsson","VK_EXT_debug_utils","VK_EXT_debug_report","Baldur Karlsson @baldurk","VK_EXT_debug_marker",{"number":498,"type":5271,"author":5334,"deprecatedby":5329,"provisional":4950,"specialuse":5115,"contact":5335,"extension":5330,"proposal":4950},"GOOGLE","Courtney Goeltzenleuchter @courtney-g",{"number":5337,"type":5271,"author":5208,"provisional":4950,"ratified":5286,"specialuse":5115,"contact":5338,"extension":5329,"proposal":4950},129,"Mark Young @marky-lunarg",{"number":5340,"type":5146,"author":5208,"provisional":4950,"depends":5163,"ratified":5279,"specialuse":5341,"contact":5267,"extension":5342,"proposal":425},284,"d3demulation","VK_EXT_depth_bias_control",{"number":5344,"type":5146,"author":5208,"provisional":4950,"depends":5163,"ratified":5279,"contact":5345,"extension":5346,"proposal":425},583,"Jules Blok @jules","VK_EXT_depth_clamp_control",{"number":5348,"type":5146,"author":5208,"promotedto":5349,"provisional":4950,"depends":5163,"ratified":5279,"contact":5350,"extension":5351,"proposal":4950},422,"VK_KHR_depth_clamp_zero_one","Graeme Leese @gnl21","VK_EXT_depth_clamp_zero_one",{"number":5353,"type":5146,"author":5208,"provisional":4950,"depends":5163,"ratified":5279,"specialuse":5231,"contact":5354,"extension":5355,"proposal":4950},356,"Shahbaz Youssefi @syoussefi","VK_EXT_depth_clip_control",{"number":5357,"type":5146,"author":5208,"provisional":4950,"depends":5163,"ratified":5286,"specialuse":5341,"contact":5303,"extension":5358,"proposal":4950},103,"VK_EXT_depth_clip_enable",{"number":516,"type":5146,"author":5277,"provisional":4950,"ratified":5286,"contact":5303,"extension":5360,"proposal":4950},"VK_EXT_depth_range_unrestricted",{"number":5362,"type":5146,"author":5208,"provisional":4950,"depends":5363,"ratified":5279,"contact":5150,"extension":5364,"proposal":425},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":5366,"type":5146,"author":5277,"promotedto":5367,"provisional":4950,"depends":5368,"ratified":5279,"contact":5298,"extension":5369,"proposal":4950},162,"VK_VERSION_1_2","(VK_KHR_get_physical_device_properties2+VK_KHR_maintenance3),VK_VERSION_1_1","VK_EXT_descriptor_indexing",{"number":5371,"type":5146,"author":5208,"provisional":4950,"depends":5372,"specialuse":5373,"contact":5374,"extension":5375,"proposal":4950},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":5377,"type":5146,"author":5208,"provisional":4950,"depends":5163,"ratified":5279,"contact":5374,"extension":5378,"proposal":425},342,"VK_EXT_device_fault",{"number":5380,"type":5146,"author":5208,"provisional":4950,"depends":5381,"ratified":5279,"contact":5292,"extension":5382,"proposal":425},573,"((VK_KHR_buffer_device_address,VK_VERSION_1_2)+VK_KHR_maintenance5),VK_VERSION_1_3","VK_EXT_device_generated_commands",{"number":5384,"type":5146,"author":5208,"provisional":4950,"depends":5163,"ratified":5279,"specialuse":5158,"contact":5385,"extension":5386,"proposal":4950},285,"Yiwei Zhang @zhangyiwei","VK_EXT_device_memory_report",{"number":5388,"type":5271,"author":5277,"provisional":4950,"depends":5389,"ratified":5286,"contact":5280,"extension":5272,"proposal":4950},89,"VK_KHR_display",{"number":5391,"type":5271,"author":5208,"provisional":4950,"depends":5392,"platform":5393,"ratified":5279,"contact":5394,"extension":5395,"proposal":4950},347,"VK_KHR_surface","directfb","Nicolas Caramelli @caramelli","VK_EXT_directfb_surface",{"number":5397,"type":5146,"author":5277,"provisional":4950,"depends":5163,"ratified":5286,"contact":5303,"extension":5398,"proposal":4950},100,"VK_EXT_discard_rectangles",{"number":5400,"type":5146,"author":5277,"provisional":4950,"depends":5401,"ratified":5286,"contact":5280,"extension":5402,"proposal":4950},92,"VK_EXT_display_surface_counter+VK_KHR_swapchain","VK_EXT_display_control",{"number":5404,"type":5271,"author":5277,"provisional":4950,"depends":5389,"ratified":5286,"contact":5280,"extension":5405,"proposal":4950},91,"VK_EXT_display_surface_counter",{"number":5407,"type":5146,"author":5208,"provisional":4950,"depends":5408,"ratified":5279,"contact":5303,"extension":5409,"proposal":425},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":5411,"type":5146,"author":5208,"promotedto":5265,"provisional":4950,"depends":5163,"ratified":5266,"contact":5303,"extension":5412,"proposal":4950},268,"VK_EXT_extended_dynamic_state",{"number":5414,"type":5146,"author":5208,"promotedto":5265,"provisional":4950,"depends":5163,"ratified":5266,"contact":5415,"extension":5416,"proposal":4950},378,"Vikram Kushwaha @vkushwaha-nv","VK_EXT_extended_dynamic_state2",{"number":5418,"type":5146,"author":5277,"provisional":4950,"depends":5163,"ratified":5279,"contact":5303,"extension":5419,"proposal":425},456,"VK_EXT_extended_dynamic_state3",{"number":5421,"type":5146,"author":5208,"provisional":4950,"depends":5422,"ratified":5279,"contact":5423,"extension":5424,"proposal":425},454,"VK_KHR_external_memory,VK_VERSION_1_1","Lina Versace @linyaa-kiwi","VK_EXT_external_memory_acquire_unmodified",{"number":5426,"type":5146,"author":5208,"provisional":4950,"depends":5427,"ratified":5286,"contact":5423,"extension":5428,"proposal":4950},126,"VK_KHR_external_memory_fd","VK_EXT_external_memory_dma_buf",{"number":5430,"type":5146,"author":5208,"provisional":4950,"depends":5422,"ratified":5286,"contact":5159,"extension":5431,"proposal":4950},179,"VK_EXT_external_memory_host",{"number":5433,"type":5146,"author":5208,"provisional":4950,"depends":5422,"platform":5434,"ratified":5279,"contact":5435,"extension":5436,"proposal":425},603,"metal","Aitor Camacho Larrondo @aitor-lunarg","VK_EXT_external_memory_metal",{"number":5438,"type":5146,"author":5439,"provisional":4950,"ratified":5286,"contact":5440,"extension":5441,"proposal":4950},171,"QCOM","Matthew Netsch @mnetsch","VK_EXT_filter_cubic",{"number":5443,"type":5146,"author":5208,"provisional":4950,"depends":5163,"ratified":5279,"contact":5440,"extension":5444,"proposal":4950},219,"VK_EXT_fragment_density_map",{"number":5446,"type":5146,"author":5208,"provisional":4950,"depends":5444,"ratified":5279,"contact":5440,"extension":5447,"proposal":4950},333,"VK_EXT_fragment_density_map2",{"number":5449,"type":5146,"author":5208,"provisional":4950,"depends":5450,"contact":5451,"extension":5452,"proposal":425},620,"(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_EXT_fragment_density_map+(VK_KHR_create_renderpass2,VK_VERSION_1_2)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)","Connor Abbott @cwabbott0","VK_EXT_fragment_density_map_offset",{"number":5454,"type":5146,"author":5208,"provisional":4950,"depends":5163,"ratified":5286,"contact":5303,"extension":5455,"proposal":4950},252,"VK_EXT_fragment_shader_interlock",{"number":5457,"type":5146,"author":5208,"provisional":4950,"ratified":5279,"contact":5458,"extension":5459,"proposal":425},376,"James Fitzpatrick @jamesfitzpatrick","VK_EXT_frame_boundary",{"number":5461,"type":5146,"author":5208,"provisional":4950,"depends":5462,"platform":5463,"ratified":5279,"contact":5280,"extension":5464,"proposal":4950},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":5466,"type":5146,"author":5208,"promotedto":5467,"provisional":4950,"contact":5468,"extension":5469,"proposal":4950},175,"VK_KHR_global_priority","Andres Rodriguez @lostgoat","VK_EXT_global_priority",{"number":5471,"type":5146,"author":5208,"promotedto":5467,"provisional":4950,"depends":5472,"contact":5385,"extension":5473,"proposal":4950},389,"VK_EXT_global_priority+(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)","VK_EXT_global_priority_query",{"number":5475,"type":5146,"author":5147,"provisional":4950,"depends":5476,"ratified":5279,"contact":5150,"extension":5477,"proposal":425},321,"(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_pipeline_library","VK_EXT_graphics_pipeline_library",{"number":5479,"type":5146,"author":5334,"provisional":4950,"depends":5480,"ratified":5286,"contact":5335,"extension":5481,"proposal":4950},106,"VK_KHR_swapchain","VK_EXT_hdr_metadata",{"number":5483,"type":5271,"author":5208,"provisional":4950,"depends":5392,"ratified":5286,"contact":5484,"extension":5485,"proposal":4950},257,"Lisa Wu @chengtianww","VK_EXT_headless_surface",{"number":5487,"type":5146,"author":5208,"promotedto":5488,"provisional":4950,"depends":5489,"ratified":5279,"contact":5354,"extension":5490,"proposal":425},271,"VK_VERSION_1_4","((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":5492,"type":5146,"author":5208,"promotedto":5367,"provisional":4950,"depends":5163,"contact":5493,"extension":5494,"proposal":4950},262,"Bas Nieuwenhuizen @BNieuwenhuizen","VK_EXT_host_query_reset",{"number":5496,"type":5146,"author":5208,"provisional":4950,"depends":5497,"ratified":5279,"specialuse":5231,"contact":5292,"extension":5498,"proposal":4950},394,"(VK_KHR_maintenance1+VK_KHR_get_physical_device_properties2),VK_VERSION_1_1","VK_EXT_image_2d_view_of_3d",{"number":5500,"type":5146,"author":5208,"provisional":4950,"depends":5163,"ratified":5279,"contact":5246,"extension":5501,"proposal":425},339,"VK_EXT_image_compression_control",{"number":5503,"type":5146,"author":5208,"provisional":4950,"depends":5501,"ratified":5279,"contact":5246,"extension":5504,"proposal":4950},438,"VK_EXT_image_compression_control_swapchain",{"number":5506,"type":5146,"author":5208,"provisional":4950,"depends":5507,"ratified":5286,"contact":5423,"extension":5508,"proposal":4950},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":5510,"type":5146,"author":5208,"promotedto":5265,"provisional":4950,"depends":5163,"ratified":5266,"contact":5350,"extension":5511,"proposal":4950},336,"VK_EXT_image_robustness",{"number":5513,"type":5146,"author":5208,"provisional":4950,"depends":5497,"specialuse":5341,"contact":5292,"extension":5514,"proposal":425},419,"VK_EXT_image_sliced_view_of_3d",{"number":5516,"type":5146,"author":5208,"provisional":4950,"depends":5163,"ratified":5279,"contact":5267,"extension":5517,"proposal":4950},392,"VK_EXT_image_view_min_lod",{"number":5519,"type":5146,"author":5208,"promotedto":5520,"provisional":4950,"depends":5163,"contact":5303,"extension":5521,"proposal":4950},266,"VK_KHR_index_type_uint8","VK_EXT_index_type_uint8",{"number":5523,"type":5146,"author":5208,"promotedto":5265,"provisional":4950,"depends":5524,"contact":5525,"extension":5526,"proposal":4950},139,"(VK_KHR_get_physical_device_properties2+VK_KHR_maintenance1),VK_VERSION_1_1","Daniel Rakos @aqnuep","VK_EXT_inline_uniform_block",{"number":5528,"type":5271,"author":5208,"provisional":4950,"ratified":5286,"contact":5529,"extension":5530,"proposal":425},497,"Christophe Riccio @christophe","VK_EXT_layer_settings",{"number":5532,"type":5146,"author":5208,"provisional":4950,"depends":5163,"specialuse":5231,"contact":5354,"extension":5533,"proposal":425},466,"VK_EXT_legacy_dithering",{"number":5535,"type":5146,"author":5208,"provisional":4950,"depends":5536,"ratified":5279,"specialuse":5231,"contact":5292,"extension":5537,"proposal":425},496,"VK_EXT_vertex_input_dynamic_state","VK_EXT_legacy_vertex_attributes",{"number":5539,"type":5146,"author":5208,"promotedto":5540,"provisional":4950,"depends":5163,"specialuse":5541,"contact":5298,"extension":5542,"proposal":4950},260,"VK_KHR_line_rasterization","cadsupport","VK_EXT_line_rasterization",{"number":5544,"type":5146,"author":5208,"promotedto":5545,"provisional":4950,"ratified":5279,"contact":5354,"extension":5546,"proposal":4950},401,"VK_KHR_load_store_op_none","VK_EXT_load_store_op_none",{"number":5548,"type":5146,"author":5208,"provisional":4950,"depends":5549,"ratified":5279,"contact":5550,"extension":5551,"proposal":425},273,"VK_KHR_map_memory2,VK_VERSION_1_4","Faith Ekstrand @gfxstrand","VK_EXT_map_memory_placed",{"number":5553,"type":5146,"author":5208,"provisional":4950,"depends":5163,"ratified":5286,"contact":5298,"extension":5554,"proposal":4950},238,"VK_EXT_memory_budget",{"number":5556,"type":5146,"author":5208,"provisional":4950,"depends":5163,"ratified":5279,"contact":5298,"extension":5557,"proposal":4950},239,"VK_EXT_memory_priority",{"number":5559,"type":5146,"author":5208,"provisional":4950,"depends":5560,"contact":5561,"extension":5562,"proposal":425},329,"VK_KHR_spirv_1_4,VK_VERSION_1_2","Christoph Kubisch @pixeljetstream","VK_EXT_mesh_shader",{"number":5564,"type":5146,"author":5208,"provisional":4950,"platform":5434,"ratified":5279,"contact":5565,"extension":5566,"proposal":425},312,"Bill Hollings @billhollings","VK_EXT_metal_objects",{"number":5568,"type":5271,"author":5208,"provisional":4950,"depends":5392,"platform":5434,"ratified":5279,"contact":5569,"extension":5570,"proposal":4950},218,"Dzmitry Malyshau @kvark","VK_EXT_metal_surface",{"number":5572,"type":5146,"author":5208,"provisional":4950,"depends":5163,"ratified":5279,"contact":5292,"extension":5573,"proposal":4950},393,"VK_EXT_multi_draw",{"number":5575,"type":5146,"author":5208,"provisional":4950,"depends":5576,"ratified":5279,"contact":5354,"extension":5577,"proposal":425},377,"(VK_KHR_create_renderpass2+VK_KHR_depth_stencil_resolve),VK_VERSION_1_2","VK_EXT_multisampled_render_to_single_sampled",{"number":5579,"type":5146,"author":5208,"provisional":4950,"depends":5580,"ratified":5279,"specialuse":5341,"contact":5581,"extension":5582,"proposal":425},495,"VK_KHR_maintenance3,VK_VERSION_1_1","Joshua Ashton @Joshua-Ashton,Hans-Kristian Arntzen @HansKristian-Work","VK_EXT_mutable_descriptor_type",{"number":5584,"type":5146,"author":5208,"provisional":4950,"depends":5163,"ratified":5279,"contact":5303,"extension":5585,"proposal":4950},452,"VK_EXT_nested_command_buffer",{"number":5587,"type":5146,"author":5208,"provisional":4950,"depends":5163,"ratified":5279,"specialuse":5588,"contact":5589,"extension":5590,"proposal":425},423,"d3demulation,glemulation","Georg Lehmann @DadSchoorse","VK_EXT_non_seamless_cube_map",{"number":5592,"type":5146,"author":5208,"provisional":4950,"depends":5593,"ratified":5279,"contact":5594,"extension":5240,"proposal":425},397,"VK_KHR_acceleration_structure+(VK_KHR_synchronization2,VK_VERSION_1_3)","Christoph Kubisch @pixeljetstream, Eric Werness",{"number":5596,"type":5146,"author":5208,"provisional":4950,"depends":5557,"contact":5303,"extension":5597,"proposal":4950},413,"VK_EXT_pageable_device_local_memory",{"number":5599,"type":5146,"author":5208,"provisional":4950,"depends":5163,"ratified":5286,"contact":5168,"extension":5600,"proposal":4950},213,"VK_EXT_pci_bus_info",{"number":5602,"type":5146,"author":5208,"provisional":4950,"depends":5163,"ratified":5279,"contact":5603,"extension":5604,"proposal":4950},354,"Simon Ser @emersion","VK_EXT_physical_device_drm",{"number":5606,"type":5146,"author":5147,"promotedto":5265,"provisional":4950,"depends":5163,"contact":5607,"extension":5608,"proposal":4950},298,"Gregory Grebe @grgrebe_amd","VK_EXT_pipeline_creation_cache_control",{"number":5610,"type":5146,"author":5334,"promotedto":5265,"provisional":4950,"specialuse":5158,"contact":5611,"extension":5612,"proposal":4950},193,"Jean-Francois Roy @jfroy","VK_EXT_pipeline_creation_feedback",{"number":5614,"type":5146,"author":5208,"provisional":4950,"depends":5615,"contact":5616,"extension":5617,"proposal":425},499,"VK_KHR_ray_tracing_pipeline+VK_KHR_pipeline_library","Hans-Kristian Arntzen @HansKristian-Work","VK_EXT_pipeline_library_group_handles",{"number":5619,"type":5146,"author":5208,"provisional":4950,"depends":5163,"contact":5620,"extension":5621,"proposal":4950},373,"Mukund Keshava @mkeshavanv","VK_EXT_pipeline_properties",{"number":5623,"type":5146,"author":5208,"promotedto":5488,"provisional":4950,"depends":5163,"contact":5354,"extension":5624,"proposal":425},467,"VK_EXT_pipeline_protected_access",{"number":5626,"type":5146,"author":5627,"promotedto":5488,"provisional":4950,"depends":5163,"ratified":5279,"contact":5628,"extension":5629,"proposal":4950},69,"IMG","Jarred Davies","VK_EXT_pipeline_robustness",{"number":5631,"type":5146,"author":5277,"provisional":4950,"ratified":5286,"contact":5632,"extension":5633,"proposal":4950},156,"Daniel Koch @dgkoch","VK_EXT_post_depth_coverage",{"number":5635,"type":5146,"author":5208,"provisional":4950,"depends":5480,"ratified":5279,"contact":5636,"extension":5637,"proposal":425},362,"Lionel Duc @nvlduc","VK_EXT_present_mode_fifo_latest_ready",{"number":5639,"type":5146,"author":5208,"provisional":4950,"depends":5163,"ratified":5279,"specialuse":5231,"contact":5354,"extension":5640,"proposal":4950},357,"VK_EXT_primitive_topology_list_restart",{"number":5642,"type":5146,"author":5208,"provisional":4950,"depends":5643,"ratified":5279,"specialuse":5231,"contact":5354,"extension":5644,"proposal":425},383,"VK_EXT_transform_feedback","VK_EXT_primitives_generated_query",{"number":5646,"type":5146,"author":5277,"promotedto":5265,"provisional":4950,"depends":5163,"contact":5647,"extension":5648,"proposal":4950},296,"Matthew Rusch @mattruschnv","VK_EXT_private_data",{"number":5650,"type":5146,"author":5208,"provisional":4950,"depends":5163,"ratified":5279,"specialuse":5231,"contact":5651,"extension":5652,"proposal":4950},255,"Jesse Hall @jessehall","VK_EXT_provoking_vertex",{"number":5654,"type":5146,"author":5208,"provisional":4950,"depends":5422,"ratified":5286,"contact":5423,"extension":5655,"proposal":4950},127,"VK_EXT_queue_family_foreign",{"number":5657,"type":5146,"author":5239,"provisional":4950,"depends":5163,"ratified":5279,"contact":5246,"extension":5245,"proposal":425},464,{"number":5659,"type":5146,"author":5208,"provisional":4950,"depends":5660,"ratified":5279,"contact":5246,"extension":5661,"proposal":4950},345,"VK_KHR_sampler_ycbcr_conversion,VK_VERSION_1_1","VK_EXT_rgba10x6_formats",{"number":5663,"type":5146,"author":5208,"provisional":4950,"depends":5163,"ratified":5286,"contact":5326,"extension":5664,"proposal":4950},287,"VK_EXT_robustness2",{"number":5666,"type":5146,"author":5147,"provisional":4950,"depends":5163,"ratified":5286,"contact":5159,"extension":5667,"proposal":4950},144,"VK_EXT_sample_locations",{"number":5669,"type":5146,"author":5277,"promotedto":5367,"provisional":4950,"depends":5163,"contact":5298,"extension":5670,"proposal":4950},131,"VK_EXT_sampler_filter_minmax",{"number":5672,"type":5146,"author":5208,"promotedto":5367,"provisional":4950,"depends":5163,"contact":5150,"extension":5673,"proposal":4950},222,"VK_EXT_scalar_block_layout",{"number":5675,"type":5146,"author":5208,"promotedto":5367,"provisional":4950,"contact":5159,"extension":5676,"proposal":4950},247,"VK_EXT_separate_stencil_usage",{"number":5678,"type":5146,"author":5277,"provisional":4950,"depends":5163,"ratified":5286,"contact":5415,"extension":5679,"proposal":4950},261,"VK_EXT_shader_atomic_float",{"number":5681,"type":5146,"author":5208,"provisional":4950,"depends":5679,"ratified":5279,"contact":5550,"extension":5682,"proposal":4950},274,"VK_EXT_shader_atomic_float2",{"number":5684,"type":5146,"author":5208,"promotedto":5265,"provisional":4950,"depends":5163,"ratified":5266,"contact":5298,"extension":5685,"proposal":4950},277,"VK_EXT_shader_demote_to_helper_invocation",{"number":5687,"type":5146,"author":5208,"provisional":4950,"depends":5163,"ratified":5286,"contact":5150,"extension":5688,"proposal":4950},235,"VK_EXT_shader_image_atomic_int64",{"number":5690,"type":5146,"author":5208,"provisional":4950,"depends":5691,"ratified":5279,"contact":5616,"extension":5692,"proposal":425},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":5694,"type":5146,"author":5208,"provisional":4950,"depends":5408,"ratified":5279,"contact":5695,"extension":5696,"proposal":425},483,"Daniel Story @daniel-story","VK_EXT_shader_object",{"number":5698,"type":5146,"author":5208,"provisional":4950,"ratified":5279,"contact":5255,"extension":5699,"proposal":425},565,"VK_EXT_shader_replicated_composites",{"number":5701,"type":5146,"author":5208,"provisional":4950,"ratified":5286,"contact":5174,"extension":5702,"proposal":4950},141,"VK_EXT_shader_stencil_export",{"number":5704,"type":5146,"author":5277,"deprecatedby":5367,"provisional":4950,"contact":5632,"extension":5705,"proposal":4950},65,"VK_EXT_shader_subgroup_ballot",{"number":5707,"type":5146,"author":5277,"deprecatedby":5261,"provisional":4950,"contact":5632,"extension":5708,"proposal":4950},66,"VK_EXT_shader_subgroup_vote",{"number":5710,"type":5146,"author":5208,"provisional":4950,"depends":5265,"ratified":5279,"contact":5246,"extension":4814,"proposal":425},396,{"number":5712,"type":5146,"author":5277,"promotedto":5367,"provisional":4950,"contact":5632,"extension":5713,"proposal":4950},163,"VK_EXT_shader_viewport_index_layer",{"number":5715,"type":5146,"author":5208,"promotedto":5265,"provisional":4950,"depends":5261,"ratified":5266,"contact":5716,"extension":5717,"proposal":4950},226,"Neil Henning @sheredom","VK_EXT_subgroup_size_control",{"number":5719,"type":5146,"author":5208,"provisional":4950,"depends":5163,"ratified":5279,"contact":5720,"extension":5721,"proposal":425},459,"Ting Wei @catweiting","VK_EXT_subpass_merge_feedback",{"number":5723,"type":5271,"author":5208,"provisional":4950,"depends":5724,"ratified":5279,"contact":5354,"extension":5725,"proposal":425},275,"VK_KHR_surface+VK_KHR_get_surface_capabilities2","VK_EXT_surface_maintenance1",{"number":5727,"type":5271,"author":5334,"provisional":4950,"depends":5392,"ratified":5286,"contact":5335,"extension":5728,"proposal":4950},105,"VK_EXT_swapchain_colorspace",{"number":5730,"type":5146,"author":5208,"provisional":4950,"depends":5731,"ratified":5279,"contact":5354,"extension":5732,"proposal":425},276,"VK_KHR_swapchain+VK_EXT_surface_maintenance1+(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)","VK_EXT_swapchain_maintenance1",{"number":5734,"type":5146,"author":5208,"promotedto":5265,"provisional":4950,"depends":5163,"ratified":5266,"contact":5298,"extension":5735,"proposal":4950},282,"VK_EXT_texel_buffer_alignment",{"number":5737,"type":5146,"author":5239,"promotedto":5265,"provisional":4950,"depends":5163,"ratified":5266,"contact":5246,"extension":5738,"proposal":4950},67,"VK_EXT_texture_compression_astc_hdr",{"number":5740,"type":5146,"author":5208,"promotedto":5265,"provisional":4950,"contact":5150,"extension":5741,"proposal":4950},246,"VK_EXT_tooling_info",{"number":3025,"type":5146,"author":5277,"provisional":4950,"depends":5163,"ratified":5279,"specialuse":5743,"contact":5303,"extension":5643,"proposal":4950},"glemulation,d3demulation,devtools",{"number":5745,"type":5146,"author":5334,"provisional":4950,"ratified":5279,"contact":5746,"extension":5747,"proposal":4950},161,"Cort Stratton @cdwfs","VK_EXT_validation_cache",{"number":5749,"type":5271,"author":5750,"deprecatedby":5530,"provisional":4950,"ratified":5279,"specialuse":5115,"contact":5751,"extension":5752,"proposal":4950},248,"LUNARG","Karl Schultz @karl-lunarg","VK_EXT_validation_features",{"number":5754,"type":5271,"author":5334,"deprecatedby":5530,"provisional":4950,"specialuse":5115,"contact":5755,"extension":5756,"proposal":4950},62,"Tobin Ehlis @tobine","VK_EXT_validation_flags",{"number":5758,"type":5146,"author":5277,"promotedto":5759,"provisional":4950,"depends":5163,"contact":5319,"extension":5760,"proposal":4950},191,"VK_KHR_vertex_attribute_divisor","VK_EXT_vertex_attribute_divisor",{"number":5762,"type":5146,"author":5208,"provisional":4950,"depends":5163,"contact":5303,"extension":5763,"proposal":4950},609,"VK_EXT_vertex_attribute_robustness",{"number":5765,"type":5146,"author":5208,"provisional":4950,"depends":5163,"ratified":5286,"contact":5303,"extension":5536,"proposal":4950},353,{"number":5767,"type":5146,"author":5208,"promotedto":5265,"provisional":4950,"depends":5660,"ratified":5266,"contact":5768,"extension":5769,"proposal":4950},331,"Tony Zlatinski @tzlatinski","VK_EXT_ycbcr_2plane_444_formats",{"number":5771,"type":5146,"author":5208,"provisional":4950,"depends":5660,"ratified":5286,"contact":5303,"extension":5772,"proposal":4950},253,"VK_EXT_ycbcr_image_arrays",{"number":5774,"type":5146,"author":5775,"provisional":4950,"depends":5776,"platform":5777,"contact":5778,"extension":5779,"proposal":4950},367,"FUCHSIA","VK_FUCHSIA_external_memory+(VK_KHR_sampler_ycbcr_conversion,VK_VERSION_1_1)","fuchsia","John Rosasco @rosasco","VK_FUCHSIA_buffer_collection",{"number":5781,"type":5146,"author":5775,"provisional":4950,"depends":5782,"platform":5777,"contact":5778,"extension":5783,"proposal":4950},365,"(VK_KHR_external_memory_capabilities+VK_KHR_external_memory),VK_VERSION_1_1","VK_FUCHSIA_external_memory",{"number":5785,"type":5146,"author":5775,"provisional":4950,"depends":5786,"platform":5777,"contact":5778,"extension":5787,"proposal":4950},366,"VK_KHR_external_semaphore_capabilities+VK_KHR_external_semaphore","VK_FUCHSIA_external_semaphore",{"number":5789,"type":5271,"author":5775,"provisional":4950,"depends":5392,"platform":5777,"contact":5790,"extension":5791,"proposal":4950},215,"Craig Stout @cdotstout","VK_FUCHSIA_imagepipe_surface",{"number":5793,"type":5146,"author":5794,"provisional":4950,"depends":5795,"platform":5796,"contact":5611,"extension":5797,"proposal":4950},192,"GGP","VK_KHR_swapchain+VK_GGP_stream_descriptor_surface","ggp","VK_GGP_frame_token",{"number":5113,"type":5271,"author":5794,"provisional":4950,"depends":5392,"platform":5796,"contact":5611,"extension":5799,"proposal":4950},"VK_GGP_stream_descriptor_surface",{"number":5801,"type":5146,"author":5334,"provisional":4950,"contact":5802,"extension":5803,"proposal":4950},225,"Hai Nguyen @chaoticbob","VK_GOOGLE_decorate_string",{"number":5805,"type":5146,"author":5334,"provisional":4950,"depends":5480,"contact":5806,"extension":5807,"proposal":4950},93,"Ian Elliott @ianelliottus","VK_GOOGLE_display_timing",{"number":5809,"type":5146,"author":5334,"provisional":4950,"contact":5802,"extension":5810,"proposal":4950},224,"VK_GOOGLE_hlsl_functionality1",{"number":5812,"type":5271,"author":5334,"provisional":4950,"depends":5392,"specialuse":5231,"contact":5354,"extension":5813,"proposal":425},434,"VK_GOOGLE_surfaceless_query",{"number":5815,"type":5146,"author":5334,"provisional":4950,"contact":5816,"extension":5817,"proposal":4950},290,"Kaye Mason @chaleur","VK_GOOGLE_user_type",{"number":5819,"type":5146,"author":5820,"provisional":4950,"depends":5163,"contact":5821,"extension":5822,"proposal":425},405,"HUAWEI","Yuchang Wang @richard_Wang2","VK_HUAWEI_cluster_culling_shader",{"number":5824,"type":5146,"author":5820,"provisional":4950,"depends":5825,"contact":5826,"extension":5827,"proposal":4950},591,"(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_swapchain+VK_EXT_hdr_metadata","Zehui Lin @bactlink","VK_HUAWEI_hdr_vivid",{"number":5829,"type":5146,"author":5830,"provisional":4950,"depends":5831,"contact":5832,"extension":5833,"proposal":425},371,"Huawei","VK_KHR_ray_tracing_pipeline+(VK_KHR_synchronization2,VK_VERSION_1_3)","Pan Gao @PanGao-h","VK_HUAWEI_invocation_mask",{"number":5835,"type":5146,"author":5820,"provisional":4950,"depends":5836,"contact":5832,"extension":5837,"proposal":4950},370,"((VK_KHR_create_renderpass2,VK_VERSION_1_2)+VK_KHR_synchronization2),VK_VERSION_1_3","VK_HUAWEI_subpass_shading",{"number":800,"type":5146,"author":5627,"provisional":4950,"contact":5150,"extension":5839,"proposal":4950},"VK_IMG_filter_cubic",{"number":5841,"type":5146,"author":5627,"deprecatedby":5842,"provisional":4950,"contact":5843,"extension":5844,"proposal":4950},55,null,"Stuart Smith","VK_IMG_format_pvrtc",{"number":5846,"type":5146,"author":5627,"provisional":4950,"depends":5163,"specialuse":5231,"contact":5458,"extension":5847,"proposal":4950},111,"VK_IMG_relaxed_line_rasterization",{"number":5849,"type":5146,"author":5850,"provisional":4950,"specialuse":5158,"contact":5851,"extension":5852,"proposal":4950},211,"INTEL","Lionel Landwerlin @llandwerlin","VK_INTEL_performance_query",{"number":5854,"type":5146,"author":5850,"provisional":4950,"depends":5163,"contact":5855,"extension":5856,"proposal":4950},210,"Ian Romanick @ianromanick","VK_INTEL_shader_integer_functions2",{"number":5858,"type":5146,"author":5859,"promotedto":5261,"provisional":4950,"depends":5860,"ratified":5279,"contact":5246,"extension":5861,"proposal":4950},84,"KHR","(VK_KHR_get_physical_device_properties2+VK_KHR_storage_buffer_storage_class),VK_VERSION_1_1","VK_KHR_16bit_storage",{"number":5863,"type":5146,"author":5859,"promotedto":5367,"provisional":4950,"depends":5860,"ratified":5279,"contact":5864,"extension":5865,"proposal":4950},178,"Alexander Galazin @alegal-arm","VK_KHR_8bit_storage",{"number":5867,"type":5146,"author":5859,"provisional":4950,"depends":5868,"ratified":5279,"contact":5632,"extension":5869,"proposal":4950},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":452,"type":5271,"author":5859,"provisional":4950,"depends":5392,"platform":5230,"ratified":5279,"contact":5236,"extension":5871,"proposal":4950},"VK_KHR_android_surface",{"number":5873,"type":5146,"author":5859,"promotedto":5261,"provisional":4950,"ratified":5279,"contact":5150,"extension":5874,"proposal":4950},158,"VK_KHR_bind_memory2",{"number":5876,"type":5146,"author":5859,"promotedto":5367,"provisional":4950,"depends":5877,"ratified":5279,"contact":5298,"extension":5307,"proposal":4950},258,"(VK_KHR_get_physical_device_properties2+VK_KHR_device_group),VK_VERSION_1_1",{"number":5879,"type":5146,"author":5859,"provisional":4950,"depends":5163,"ratified":5286,"contact":5525,"extension":5311,"proposal":4950},544,{"number":5881,"type":5146,"author":5859,"provisional":4950,"depends":5163,"ratified":5279,"contact":5882,"extension":5883,"proposal":425},512,"Jean-Noe Morissette @MagicPoncho","VK_KHR_compute_shader_derivatives",{"number":5885,"type":5146,"author":5859,"provisional":4950,"depends":5163,"ratified":5279,"contact":5255,"extension":5886,"proposal":425},507,"VK_KHR_cooperative_matrix",{"number":5888,"type":5146,"author":5859,"promotedto":5265,"provisional":4950,"depends":5163,"ratified":5286,"contact":5440,"extension":5889,"proposal":4950},338,"VK_KHR_copy_commands2",{"number":5891,"type":5146,"author":5859,"promotedto":5367,"provisional":4950,"depends":5892,"ratified":5279,"contact":5893,"extension":5894,"proposal":4950},110,"(VK_KHR_multiview+VK_KHR_maintenance2),VK_VERSION_1_1","Tobias Hector @tobias","VK_KHR_create_renderpass2",{"number":5896,"type":5146,"author":5859,"promotedto":5261,"provisional":4950,"depends":5897,"ratified":5279,"contact":5280,"extension":5898,"proposal":4950},128,"VK_KHR_get_memory_requirements2,VK_VERSION_1_1","VK_KHR_dedicated_allocation",{"number":5900,"type":5146,"author":5859,"provisional":4950,"ratified":5279,"contact":5901,"extension":5902,"proposal":4950},269,"Josh Barczak @jbarczak","VK_KHR_deferred_host_operations",{"number":5904,"type":5146,"author":5859,"provisional":4950,"depends":5163,"ratified":5279,"contact":5350,"extension":5349,"proposal":4950},605,{"number":5906,"type":5146,"author":5859,"promotedto":5367,"provisional":4950,"depends":5907,"ratified":5279,"contact":5908,"extension":5909,"proposal":4950},200,"VK_KHR_create_renderpass2,VK_VERSION_1_2","Jan-Harald Fredriksen @janharald","VK_KHR_depth_stencil_resolve",{"number":5911,"type":5146,"author":5859,"promotedto":5261,"provisional":4950,"ratified":5279,"contact":5912,"extension":5913,"proposal":4950},86,"Markus Tavenrath @mtavenrath","VK_KHR_descriptor_update_template",{"number":5915,"type":5146,"author":5859,"promotedto":5261,"provisional":4950,"depends":5916,"ratified":5279,"contact":5298,"extension":5917,"proposal":4950},61,"VK_KHR_device_group_creation","VK_KHR_device_group",{"number":5919,"type":5271,"author":5859,"promotedto":5261,"provisional":4950,"ratified":5279,"contact":5298,"extension":5916,"proposal":4950},71,{"number":364,"type":5271,"author":5859,"provisional":4950,"depends":5392,"ratified":5286,"contact":5921,"extension":5389,"proposal":4950},"James Jones @cubanismo,Norbert Nopper @FslNopper",{"number":390,"type":5146,"author":5859,"provisional":4950,"depends":5923,"ratified":5286,"contact":5280,"extension":5924,"proposal":4950},"VK_KHR_swapchain+VK_KHR_display","VK_KHR_display_swapchain",{"number":5926,"type":5146,"author":5859,"promotedto":5367,"provisional":4950,"ratified":5279,"contact":5303,"extension":5171,"proposal":4950},170,{"number":5928,"type":5146,"author":5859,"promotedto":5367,"provisional":4950,"depends":5163,"ratified":5279,"contact":5159,"extension":5929,"proposal":4950},197,"VK_KHR_driver_properties",{"number":5093,"type":5146,"author":5859,"promotedto":5265,"provisional":4950,"depends":5931,"ratified":5279,"contact":5150,"extension":5932,"proposal":425},"((VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_depth_stencil_resolve),VK_VERSION_1_2","VK_KHR_dynamic_rendering",{"number":5934,"type":5146,"author":5147,"promotedto":5488,"provisional":4950,"depends":5935,"ratified":5279,"contact":5150,"extension":113,"proposal":425},233,"VK_KHR_dynamic_rendering,VK_VERSION_1_3",{"number":5937,"type":5146,"author":5859,"promotedto":5261,"provisional":4950,"depends":5938,"ratified":5279,"contact":5236,"extension":5939,"proposal":4950},114,"VK_KHR_external_fence_capabilities","VK_KHR_external_fence",{"number":5941,"type":5271,"author":5859,"promotedto":5261,"provisional":4950,"depends":5163,"ratified":5279,"contact":5236,"extension":5938,"proposal":4950},113,{"number":5943,"type":5146,"author":5859,"provisional":4950,"depends":5944,"ratified":5286,"contact":5236,"extension":5945,"proposal":4950},116,"VK_KHR_external_fence,VK_VERSION_1_1","VK_KHR_external_fence_fd",{"number":5947,"type":5146,"author":5859,"provisional":4950,"depends":5939,"platform":5463,"ratified":5279,"contact":5236,"extension":5948,"proposal":4950},115,"VK_KHR_external_fence_win32",{"number":5950,"type":5146,"author":5859,"promotedto":5261,"provisional":4950,"depends":5951,"ratified":5279,"contact":5280,"extension":5952,"proposal":4950},73,"VK_KHR_external_memory_capabilities,VK_VERSION_1_1","VK_KHR_external_memory",{"number":5954,"type":5271,"author":5859,"promotedto":5261,"provisional":4950,"depends":5163,"ratified":5279,"contact":5280,"extension":5955,"proposal":4950},72,"VK_KHR_external_memory_capabilities",{"number":5957,"type":5146,"author":5859,"provisional":4950,"depends":5422,"ratified":5286,"contact":5280,"extension":5427,"proposal":4950},75,{"number":5959,"type":5146,"author":5859,"provisional":4950,"depends":5422,"platform":5463,"ratified":5279,"contact":5280,"extension":5960,"proposal":4950},74,"VK_KHR_external_memory_win32",{"number":5962,"type":5146,"author":5859,"promotedto":5261,"provisional":4950,"depends":5963,"ratified":5279,"contact":5280,"extension":5964,"proposal":4950},78,"VK_KHR_external_semaphore_capabilities","VK_KHR_external_semaphore",{"number":5966,"type":5271,"author":5859,"promotedto":5261,"provisional":4950,"depends":5163,"ratified":5279,"contact":5280,"extension":5963,"proposal":4950},77,{"number":5968,"type":5146,"author":5859,"provisional":4950,"depends":5969,"ratified":5286,"contact":5280,"extension":5970,"proposal":4950},80,"VK_KHR_external_semaphore,VK_VERSION_1_1","VK_KHR_external_semaphore_fd",{"number":5972,"type":5146,"author":5859,"provisional":4950,"depends":5964,"platform":5463,"ratified":5279,"contact":5280,"extension":5973,"proposal":4950},79,"VK_KHR_external_semaphore_win32",{"number":5975,"type":5146,"author":5859,"promotedto":5265,"provisional":4950,"depends":5163,"ratified":5279,"contact":5851,"extension":5976,"proposal":4950},361,"VK_KHR_format_feature_flags2",{"number":5978,"type":5146,"author":5859,"provisional":4950,"depends":5163,"ratified":5279,"contact":5154,"extension":5979,"proposal":425},323,"VK_KHR_fragment_shader_barycentric",{"number":5981,"type":5146,"author":5859,"provisional":4950,"depends":5982,"ratified":5286,"contact":5150,"extension":5983,"proposal":425},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":5985,"type":5271,"author":5859,"provisional":4950,"depends":5389,"ratified":5286,"contact":5280,"extension":5986,"proposal":4950},122,"VK_KHR_get_display_properties2",{"number":5988,"type":5146,"author":5859,"promotedto":5261,"provisional":4950,"ratified":5279,"contact":5550,"extension":5989,"proposal":4950},147,"VK_KHR_get_memory_requirements2",{"number":5991,"type":5271,"author":5859,"promotedto":5261,"provisional":4950,"ratified":5279,"contact":5298,"extension":5992,"proposal":4950},60,"VK_KHR_get_physical_device_properties2",{"number":5994,"type":5271,"author":5859,"provisional":4950,"depends":5392,"ratified":5286,"contact":5280,"extension":5995,"proposal":4950},120,"VK_KHR_get_surface_capabilities2",{"number":5997,"type":5146,"author":5859,"promotedto":5488,"provisional":4950,"depends":5163,"ratified":5286,"contact":5150,"extension":5467,"proposal":4950},189,{"number":5999,"type":5146,"author":5859,"promotedto":5367,"provisional":4950,"ratified":5279,"contact":5550,"extension":6000,"proposal":4950},148,"VK_KHR_image_format_list",{"number":6002,"type":5146,"author":5859,"promotedto":5367,"provisional":4950,"depends":6003,"ratified":5279,"contact":5893,"extension":6004,"proposal":4950},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":6006,"type":5146,"author":5859,"provisional":4950,"depends":5480,"ratified":5286,"contact":5806,"extension":6007,"proposal":4950},85,"VK_KHR_incremental_present",{"number":6009,"type":5146,"author":5859,"promotedto":5488,"provisional":4950,"depends":5163,"ratified":5286,"contact":5303,"extension":5520,"proposal":4950},534,{"number":6011,"type":5146,"author":5859,"promotedto":5488,"provisional":4950,"depends":5163,"ratified":5286,"contact":5303,"extension":5540,"proposal":4950},535,{"number":6013,"type":5146,"author":5859,"promotedto":5488,"provisional":4950,"ratified":5279,"contact":5354,"extension":5545,"proposal":425},527,{"number":6015,"type":5146,"author":5859,"promotedto":5261,"provisional":4950,"ratified":5279,"contact":5303,"extension":5191,"proposal":4950},70,{"number":6017,"type":5146,"author":5859,"promotedto":5261,"provisional":4950,"ratified":5279,"contact":6018,"extension":6019,"proposal":4950},118,"Michael Worcester @michaelworcester","VK_KHR_maintenance2",{"number":6021,"type":5146,"author":5859,"promotedto":5261,"provisional":4950,"depends":5163,"ratified":5279,"contact":5298,"extension":6022,"proposal":4950},169,"VK_KHR_maintenance3",{"number":6024,"type":5146,"author":5859,"promotedto":5265,"provisional":4950,"depends":5261,"ratified":5279,"contact":5303,"extension":6025,"proposal":4950},414,"VK_KHR_maintenance4",{"number":6027,"type":5146,"author":5859,"promotedto":5488,"provisional":4950,"depends":6028,"ratified":5279,"contact":6029,"extension":6030,"proposal":425},471,"(VK_VERSION_1_1+VK_KHR_dynamic_rendering),VK_VERSION_1_3","Stu Smith @stu-s","VK_KHR_maintenance5",{"number":6032,"type":5146,"author":5859,"promotedto":5488,"provisional":4950,"depends":5261,"ratified":5279,"contact":6033,"extension":6034,"proposal":425},546,"Jon Leech @oddhack","VK_KHR_maintenance6",{"number":6036,"type":5146,"author":5859,"provisional":4950,"depends":5261,"ratified":5279,"contact":5292,"extension":6037,"proposal":425},563,"VK_KHR_maintenance7",{"number":6039,"type":5146,"author":5859,"provisional":4950,"depends":5261,"ratified":5279,"contact":5292,"extension":6040,"proposal":425},575,"VK_KHR_maintenance8",{"number":6042,"type":5146,"author":5859,"promotedto":5488,"provisional":4950,"ratified":5279,"contact":5550,"extension":6043,"proposal":425},272,"VK_KHR_map_memory2",{"number":6045,"type":5146,"author":5859,"promotedto":5261,"provisional":4950,"depends":5163,"ratified":5279,"contact":5298,"extension":6046,"proposal":4950},54,"VK_KHR_multiview",{"extension":6048,"proposal":4950},"VK_KHR_object_refresh",{"number":6050,"type":5146,"author":5859,"provisional":4950,"depends":5163,"ratified":5286,"specialuse":5158,"contact":6051,"extension":6052,"proposal":4950},117,"Alon Or-bach @alonorbach","VK_KHR_performance_query",{"number":6054,"type":5146,"author":5859,"provisional":4950,"depends":6055,"ratified":5279,"contact":6029,"extension":6056,"proposal":425},484,"VK_KHR_maintenance5,VK_VERSION_1_4","VK_KHR_pipeline_binary",{"number":6058,"type":5146,"author":5859,"provisional":4950,"depends":5163,"ratified":5279,"specialuse":5158,"contact":5550,"extension":6059,"proposal":4950},270,"VK_KHR_pipeline_executable_properties",{"number":6061,"type":5146,"author":5859,"provisional":4950,"ratified":5279,"contact":5561,"extension":6062,"proposal":4950},291,"VK_KHR_pipeline_library",{"number":6064,"type":5271,"author":5859,"provisional":4950,"ratified":5279,"contact":6065,"extension":6066,"proposal":4950},395,"Charles Giessen @charles-lunarg","VK_KHR_portability_enumeration",{"number":6068,"type":5146,"author":5859,"provisional":425,"depends":5163,"platform":5149,"ratified":5279,"contact":5565,"extension":6069,"proposal":4950},164,"VK_KHR_portability_subset",{"number":6071,"type":5146,"author":5859,"provisional":4950,"depends":6072,"ratified":5279,"contact":6073,"extension":6074,"proposal":4950},295,"VK_KHR_swapchain+VK_KHR_get_physical_device_properties2,VK_VERSION_1_1","Keith Packard @keithp","VK_KHR_present_id",{"number":6076,"type":5146,"author":5859,"provisional":4950,"depends":6077,"ratified":5279,"contact":6073,"extension":6078,"proposal":4950},249,"VK_KHR_swapchain+VK_KHR_present_id","VK_KHR_present_wait",{"number":6080,"type":5146,"author":5859,"promotedto":5488,"provisional":4950,"depends":5163,"ratified":5279,"contact":5298,"extension":6081,"proposal":4950},81,"VK_KHR_push_descriptor",{"number":6083,"type":5146,"author":5859,"provisional":4950,"depends":6084,"ratified":5279,"contact":5632,"extension":6085,"proposal":4950},349,"(VK_KHR_spirv_1_4,VK_VERSION_1_2)+VK_KHR_acceleration_structure","VK_KHR_ray_query",{"number":6087,"type":5146,"author":5859,"provisional":4950,"depends":5869,"ratified":5279,"contact":5632,"extension":6088,"proposal":4950},387,"VK_KHR_ray_tracing_maintenance1",{"number":6090,"type":5146,"author":5859,"provisional":4950,"depends":6084,"ratified":5279,"contact":5632,"extension":6091,"proposal":4950},348,"VK_KHR_ray_tracing_pipeline",{"number":6093,"type":5146,"author":5859,"provisional":4950,"depends":5869,"ratified":5279,"contact":6094,"extension":6095,"proposal":425},482,"Eric Werness","VK_KHR_ray_tracing_position_fetch",{"number":6097,"type":5146,"author":5859,"promotedto":5261,"provisional":4950,"ratified":5279,"contact":6098,"extension":6099,"proposal":4950},145,"John Kessenich @johnkslang","VK_KHR_relaxed_block_layout",{"number":783,"type":5146,"author":5859,"promotedto":5367,"provisional":4950,"ratified":5279,"contact":5150,"extension":6101,"proposal":4950},"VK_KHR_sampler_mirror_clamp_to_edge",{"number":6103,"type":5146,"author":5859,"promotedto":5261,"provisional":4950,"depends":6104,"ratified":5279,"contact":6105,"extension":6106,"proposal":4950},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":6108,"type":5146,"author":5859,"promotedto":5367,"provisional":4950,"depends":5982,"ratified":5279,"contact":5303,"extension":6109,"proposal":4950},242,"VK_KHR_separate_depth_stencil_layouts",{"number":6111,"type":5146,"author":5859,"promotedto":5367,"provisional":4950,"depends":5163,"ratified":5279,"contact":6112,"extension":6113,"proposal":4950},181,"Aaron Hagan @ahagan","VK_KHR_shader_atomic_int64",{"number":6115,"type":5146,"author":5859,"provisional":4950,"depends":5163,"ratified":5279,"contact":5150,"extension":6116,"proposal":425},142,"VK_KHR_shader_bfloat16",{"number":6118,"type":5146,"author":5859,"provisional":4950,"depends":5163,"ratified":5286,"contact":6112,"extension":6119,"proposal":4950},182,"VK_KHR_shader_clock",{"number":6121,"type":5146,"author":5859,"promotedto":5261,"provisional":4950,"ratified":5279,"contact":5632,"extension":6122,"proposal":4950},64,"VK_KHR_shader_draw_parameters",{"number":6124,"type":5146,"author":5859,"promotedto":5488,"provisional":4950,"depends":5163,"ratified":5279,"contact":5255,"extension":6125,"proposal":425},545,"VK_KHR_shader_expect_assume",{"number":6127,"type":5146,"author":5859,"promotedto":5367,"provisional":4950,"depends":5163,"ratified":5279,"contact":5864,"extension":5177,"proposal":4950},83,{"number":6129,"type":5146,"author":5859,"promotedto":5367,"provisional":4950,"depends":5163,"ratified":5279,"contact":5864,"extension":6130,"proposal":4950},198,"VK_KHR_shader_float_controls",{"number":6132,"type":5146,"author":5859,"promotedto":5488,"provisional":4950,"depends":6133,"ratified":5279,"contact":5350,"extension":6134,"proposal":425},529,"VK_VERSION_1_1+VK_KHR_shader_float_controls","VK_KHR_shader_float_controls2",{"number":6136,"type":5146,"author":5859,"promotedto":5265,"provisional":4950,"depends":5163,"ratified":5279,"contact":5255,"extension":6137,"proposal":425},281,"VK_KHR_shader_integer_dot_product",{"number":6139,"type":5146,"author":5859,"provisional":4950,"depends":5261,"ratified":5279,"contact":6140,"extension":6141,"proposal":425},435,"Alan Baker @alan-baker","VK_KHR_shader_maximal_reconvergence",{"number":6143,"type":5146,"author":5859,"promotedto":5265,"provisional":4950,"ratified":5279,"contact":5331,"extension":6144,"proposal":4950},294,"VK_KHR_shader_non_semantic_info",{"number":6146,"type":5146,"author":5859,"provisional":4950,"depends":6147,"ratified":5279,"contact":5150,"extension":6148,"proposal":425},236,"((VK_VERSION_1_1+VK_KHR_vulkan_memory_model),VK_VERSION_1_2)+VK_KHR_shader_maximal_reconvergence","VK_KHR_shader_quad_control",{"number":6150,"type":5146,"author":5859,"provisional":4950,"ratified":5279,"contact":6151,"extension":6152,"proposal":425},559,"Nathan Gauër @Keenuts","VK_KHR_shader_relaxed_extended_instruction",{"number":6154,"type":5146,"author":5859,"promotedto":5367,"provisional":4950,"depends":5261,"ratified":5279,"contact":5716,"extension":6155,"proposal":4950},176,"VK_KHR_shader_subgroup_extended_types",{"number":6157,"type":5146,"author":5859,"promotedto":5488,"provisional":4950,"ratified":5279,"contact":5255,"extension":6158,"proposal":425},417,"VK_KHR_shader_subgroup_rotate",{"number":6160,"type":5146,"author":5859,"provisional":4950,"depends":5261,"ratified":5279,"contact":6140,"extension":6161,"proposal":4950},324,"VK_KHR_shader_subgroup_uniform_control_flow",{"number":6163,"type":5146,"author":5859,"promotedto":5265,"provisional":4950,"depends":5163,"ratified":5286,"contact":5236,"extension":6164,"proposal":4950},216,"VK_KHR_shader_terminate_invocation",{"number":6166,"type":5146,"author":5859,"provisional":4950,"depends":6167,"ratified":5286,"contact":6051,"extension":6168,"proposal":4950},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":6170,"type":5146,"author":5859,"promotedto":5367,"provisional":4950,"depends":6133,"ratified":5279,"contact":5236,"extension":6171,"proposal":4950},237,"VK_KHR_spirv_1_4",{"number":6173,"type":5146,"author":5859,"promotedto":5261,"provisional":4950,"ratified":5279,"contact":5864,"extension":6174,"proposal":4950},132,"VK_KHR_storage_buffer_storage_class",{"number":314,"type":5271,"author":5859,"provisional":4950,"ratified":5286,"contact":6176,"extension":5392,"proposal":4950},"James Jones @cubanismo,Ian Elliott @ianelliottus",{"number":6178,"type":5271,"author":5859,"provisional":4950,"depends":6179,"ratified":5279,"contact":6180,"extension":6181,"proposal":4950},240,"VK_VERSION_1_1+VK_KHR_get_surface_capabilities2","Sandeep Shinde @sashinde","VK_KHR_surface_protected_capabilities",{"number":335,"type":5146,"author":5859,"provisional":4950,"depends":5392,"ratified":5286,"contact":6176,"extension":5480,"proposal":4950},{"number":6184,"type":5146,"author":5859,"provisional":4950,"depends":6185,"ratified":5286,"contact":5159,"extension":6186,"proposal":4950},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":6188,"type":5146,"author":5859,"promotedto":5265,"provisional":4950,"depends":5163,"ratified":5286,"contact":5150,"extension":6189,"proposal":4950},315,"VK_KHR_synchronization2",{"number":6191,"type":5146,"author":5859,"promotedto":5367,"provisional":4950,"depends":5163,"ratified":5279,"contact":5550,"extension":6192,"proposal":4950},208,"VK_KHR_timeline_semaphore",{"number":6194,"type":5146,"author":5859,"promotedto":5367,"provisional":4950,"depends":5163,"ratified":5279,"contact":5350,"extension":6195,"proposal":4950},254,"VK_KHR_uniform_buffer_standard_layout",{"number":6197,"type":5146,"author":5859,"promotedto":5261,"provisional":4950,"depends":5860,"ratified":5279,"contact":5236,"extension":6198,"proposal":4950},121,"VK_KHR_variable_pointers",{"number":6200,"type":5146,"author":5859,"promotedto":5488,"provisional":4950,"depends":5163,"ratified":5286,"contact":5354,"extension":5759,"proposal":425},526,{"number":6202,"type":5146,"author":5859,"provisional":4950,"depends":6203,"ratified":5279,"contact":5525,"extension":6204,"proposal":425},513,"VK_KHR_video_decode_queue","VK_KHR_video_decode_av1",{"number":5077,"type":5146,"author":5859,"provisional":4950,"depends":6203,"ratified":5279,"contact":6206,"extension":6207,"proposal":425},"peter.fang@amd.com","VK_KHR_video_decode_h264",{"number":6209,"type":5146,"author":5859,"provisional":4950,"depends":6203,"ratified":5279,"contact":6206,"extension":6210,"proposal":425},188,"VK_KHR_video_decode_h265",{"number":2946,"type":5146,"author":5859,"provisional":4950,"depends":6212,"ratified":5279,"contact":6213,"extension":6203,"proposal":425},"VK_KHR_video_queue+(VK_KHR_synchronization2,VK_VERSION_1_3)","jake.beju@amd.com",{"number":6215,"type":5146,"author":5859,"provisional":4950,"depends":6216,"ratified":5279,"contact":5525,"extension":6217,"proposal":425},514,"VK_KHR_video_encode_queue","VK_KHR_video_encode_av1",{"number":5069,"type":5146,"author":5859,"provisional":4950,"depends":6216,"ratified":5279,"contact":6219,"extension":6220,"proposal":425},"Ahmed Abdelkhalek @aabdelkh","VK_KHR_video_encode_h264",{"number":5073,"type":5146,"author":5859,"provisional":4950,"depends":6216,"ratified":5279,"contact":6219,"extension":6222,"proposal":425},"VK_KHR_video_encode_h265",{"number":6224,"type":5146,"author":5859,"provisional":4950,"depends":6225,"ratified":5279,"contact":6219,"extension":6226,"proposal":425},554,"VK_KHR_video_encode_queue+(VK_KHR_format_feature_flags2,VK_VERSION_1_3)","VK_KHR_video_encode_quantization_map",{"number":6228,"type":5146,"author":5859,"provisional":4950,"depends":6212,"ratified":5279,"contact":6219,"extension":6216,"proposal":425},300,{"number":6230,"type":5146,"author":5859,"provisional":4950,"depends":6231,"ratified":5279,"contact":5525,"extension":6232,"proposal":425},516,"VK_KHR_video_queue","VK_KHR_video_maintenance1",{"number":6234,"type":5146,"author":5859,"provisional":4950,"depends":6231,"ratified":5279,"contact":5525,"extension":6235,"proposal":425},587,"VK_KHR_video_maintenance2",{"number":2911,"type":5146,"author":5859,"provisional":4950,"depends":6237,"ratified":5279,"contact":5768,"extension":6231,"proposal":425},"(VK_VERSION_1_1+VK_KHR_synchronization2),VK_VERSION_1_3",{"number":6239,"type":5146,"author":5859,"promotedto":5367,"provisional":4950,"depends":5163,"ratified":5279,"contact":5298,"extension":6240,"proposal":4950},212,"VK_KHR_vulkan_memory_model",{"number":431,"type":5271,"author":5859,"provisional":4950,"depends":5392,"platform":6242,"ratified":5279,"contact":6243,"extension":6244,"proposal":4950},"wayland","Jesse Hall @critsec,Ian Elliott @ianelliottus","VK_KHR_wayland_surface",{"number":6246,"type":5146,"author":5859,"provisional":4950,"depends":5960,"platform":5463,"ratified":5279,"contact":6247,"extension":6248,"proposal":4950},76,"Carsten Rohde @crohde","VK_KHR_win32_keyed_mutex",{"number":470,"type":5271,"author":5859,"provisional":4950,"depends":5392,"platform":5463,"ratified":5279,"contact":6243,"extension":6250,"proposal":4950},"VK_KHR_win32_surface",{"number":6252,"type":5146,"author":5859,"provisional":4950,"depends":5163,"ratified":5279,"contact":6253,"extension":6254,"proposal":4950},337,"Caio Marcelo de Oliveira Filho @cmarcelo","VK_KHR_workgroup_memory_explicit_layout",{"number":421,"type":5271,"author":5859,"provisional":4950,"depends":5392,"platform":6256,"ratified":5279,"contact":6243,"extension":6257,"proposal":4950},"xcb","VK_KHR_xcb_surface",{"number":412,"type":5271,"author":5859,"provisional":4950,"depends":5392,"platform":6259,"ratified":5279,"contact":6243,"extension":6260,"proposal":4950},"xlib","VK_KHR_xlib_surface",{"number":6262,"type":5146,"author":5859,"promotedto":5265,"provisional":4950,"depends":5163,"ratified":5279,"contact":6140,"extension":6263,"proposal":4950},326,"VK_KHR_zero_initialize_workgroup_memory",{"number":6265,"type":5271,"author":5750,"provisional":4950,"contact":6065,"extension":6266,"proposal":425},460,"VK_LUNARG_direct_driver_loading",{"number":6268,"type":5146,"author":6269,"provisional":4950,"depends":5163,"specialuse":5341,"contact":5616,"extension":6270,"proposal":4950},576,"MESA","VK_MESA_image_alignment_control",{"number":6272,"type":5146,"author":6273,"provisional":4950,"depends":5163,"contact":6274,"extension":6275,"proposal":425},531,"MSFT","Jesse Natalie @jenatali","VK_MSFT_layered_driver",{"number":6277,"type":5271,"author":6278,"deprecatedby":5570,"provisional":4950,"depends":5392,"platform":6279,"contact":5565,"extension":6280,"proposal":4950},123,"MVK","ios","VK_MVK_ios_surface",{"number":6282,"type":5271,"author":6278,"deprecatedby":5570,"provisional":4950,"depends":5392,"platform":6283,"contact":5565,"extension":6284,"proposal":4950},124,"macos","VK_MVK_macos_surface",{"number":6286,"type":5271,"author":6287,"provisional":4950,"depends":5392,"platform":6288,"contact":6289,"extension":6290,"proposal":4950},63,"NN","vi","Mathias Heyer gitlab:@mheyer","VK_NN_vi_surface",{"number":3034,"type":5146,"author":6292,"provisional":4950,"contact":6293,"extension":6294,"proposal":4950},"NVX","Eric Werness @ewerness-nv,Liam Middlebrook @liam-middlebrook","VK_NVX_binary_import",{"number":3043,"type":5146,"author":6292,"provisional":4950,"contact":6296,"extension":6297,"proposal":4950},"Eric Werness @ewerness-nv","VK_NVX_image_view_handle",{"number":6299,"type":5146,"author":6292,"provisional":4950,"depends":6300,"contact":5298,"extension":6301,"proposal":4950},98,"VK_KHR_multiview,VK_VERSION_1_1","VK_NVX_multiview_per_view_attributes",{"number":6303,"type":5146,"author":5277,"provisional":4950,"depends":5272,"platform":5463,"contact":6304,"extension":6305,"proposal":4950},346,"Jeff Juliano @jjuliano","VK_NV_acquire_winrt_display",{"number":6307,"type":5146,"author":5277,"provisional":4950,"contact":6296,"extension":6308,"proposal":4950},88,"VK_NV_clip_space_w_scaling",{"number":6310,"type":5146,"author":5277,"provisional":4950,"depends":5869,"contact":5319,"extension":6311,"proposal":425},570,"VK_NV_cluster_acceleration_structure",{"number":6313,"type":5146,"author":5277,"provisional":4950,"contact":6314,"extension":6315,"proposal":4950},560,"Lujin Wang @lujinwangnv","VK_NV_command_buffer_inheritance",{"number":6317,"type":5146,"author":5277,"promotedto":5883,"provisional":4950,"depends":5163,"contact":6318,"extension":6319,"proposal":4950},202,"Pat Brown @nvpbrown","VK_NV_compute_shader_derivatives",{"number":6321,"type":5146,"author":5277,"provisional":4950,"depends":5163,"contact":5298,"extension":6322,"proposal":4950},250,"VK_NV_cooperative_matrix",{"number":6324,"type":5146,"author":5277,"provisional":4950,"depends":5886,"contact":5298,"extension":6325,"proposal":425},594,"VK_NV_cooperative_matrix2",{"number":6327,"type":5146,"author":5277,"provisional":4950,"contact":5298,"extension":6328,"proposal":425},492,"VK_NV_cooperative_vector",{"number":6330,"type":5146,"author":5277,"provisional":4950,"depends":6331,"contact":5415,"extension":6332,"proposal":4950},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":6334,"type":5146,"author":5277,"provisional":4950,"depends":5163,"contact":5632,"extension":6335,"proposal":4950},51,"VK_NV_corner_sampled_image",{"number":6337,"type":5146,"author":5277,"provisional":4950,"depends":6338,"contact":6339,"extension":6340,"proposal":4950},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":6342,"type":5146,"author":5277,"provisional":425,"platform":5149,"contact":6343,"extension":6344,"proposal":4950},308,"Tristan Lorach @tlorach","VK_NV_cuda_kernel_launch",{"number":2963,"type":5146,"author":5277,"deprecatedby":5898,"provisional":4950,"contact":5298,"extension":6346,"proposal":4950},"VK_NV_dedicated_allocation",{"number":6348,"type":5146,"author":6349,"provisional":4950,"depends":6350,"contact":6351,"extension":6352,"proposal":4950},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":6354,"type":5146,"author":5277,"provisional":4950,"depends":5261,"contact":5303,"extension":6355,"proposal":4950},547,"VK_NV_descriptor_pool_overallocation",{"number":6357,"type":5146,"author":6349,"provisional":4950,"depends":5163,"contact":6351,"extension":6358,"proposal":4950},207,"VK_NV_device_diagnostic_checkpoints",{"number":6360,"type":5146,"author":5277,"provisional":4950,"depends":5163,"contact":6339,"extension":6361,"proposal":4950},301,"VK_NV_device_diagnostics_config",{"number":6363,"type":5146,"author":5277,"provisional":4950,"depends":6364,"contact":5561,"extension":6365,"proposal":4950},278,"(VK_VERSION_1_1+VK_KHR_buffer_device_address),VK_VERSION_1_2","VK_NV_device_generated_commands",{"number":6367,"type":5146,"author":5277,"provisional":4950,"depends":6365,"contact":5415,"extension":6368,"proposal":4950},429,"VK_NV_device_generated_commands_compute",{"number":6370,"type":5146,"author":5277,"provisional":425,"depends":5240,"platform":5149,"contact":6371,"extension":6372,"proposal":4950},398,"Christoph Kubisch @pixeljetstream, Eric Werness @ewerness-nv","VK_NV_displacement_micromap",{"number":6374,"type":5271,"author":5277,"provisional":4950,"depends":6375,"contact":6376,"extension":6377,"proposal":425},552,"VK_KHR_display+VK_KHR_get_display_properties2","Russell Chou @russellcnv","VK_NV_display_stereo",{"number":6379,"type":5146,"author":5277,"provisional":4950,"contact":6376,"extension":6380,"proposal":4950},493,"VK_NV_extended_sparse_address_space",{"number":6382,"type":5146,"author":5277,"provisional":4950,"contact":6383,"extension":6384,"proposal":425},557,"Chris Lentini @clentini","VK_NV_external_compute_queue",{"number":6386,"type":5146,"author":5277,"deprecatedby":5952,"provisional":4950,"depends":6387,"contact":5280,"extension":6388,"proposal":4950},57,"VK_NV_external_memory_capabilities","VK_NV_external_memory",{"number":6390,"type":5271,"author":5277,"deprecatedby":5955,"provisional":4950,"contact":5280,"extension":6387,"proposal":4950},56,{"number":6392,"type":5146,"author":5277,"provisional":4950,"depends":5422,"contact":6247,"extension":6393,"proposal":4950},372,"VK_NV_external_memory_rdma",{"extension":6395,"proposal":4950},"VK_NV_external_memory_sci_buf",{"number":6397,"type":5146,"author":5277,"deprecatedby":5960,"provisional":4950,"depends":6388,"platform":5463,"contact":5280,"extension":6398,"proposal":4950},58,"VK_NV_external_memory_win32",{"extension":6400,"proposal":4950},"VK_NV_external_sci_sync",{"extension":6402,"proposal":4950},"VK_NV_external_sci_sync2",{"number":6404,"type":5146,"author":5277,"provisional":4950,"contact":5298,"extension":6405,"proposal":4950},154,"VK_NV_fill_rectangle",{"number":6407,"type":5146,"author":5277,"provisional":4950,"contact":5298,"extension":6408,"proposal":4950},150,"VK_NV_fragment_coverage_to_color",{"number":6410,"type":5146,"author":5277,"promotedto":5979,"provisional":4950,"depends":5163,"contact":6318,"extension":6411,"proposal":4950},204,"VK_NV_fragment_shader_barycentric",{"number":6413,"type":5146,"author":5277,"provisional":4950,"depends":5983,"contact":6318,"extension":6414,"proposal":4950},327,"VK_NV_fragment_shading_rate_enums",{"number":6416,"type":5146,"author":5277,"provisional":4950,"contact":5298,"extension":6417,"proposal":4950},153,"VK_NV_framebuffer_mixed_samples",{"number":6419,"type":5146,"author":5277,"provisional":4950,"contact":5632,"extension":6420,"proposal":4950},96,"VK_NV_geometry_shader_passthrough",{"number":507,"type":5146,"author":5277,"deprecatedby":5842,"provisional":4950,"contact":5303,"extension":6422,"proposal":4950},"VK_NV_glsl_shader",{"number":6424,"type":5146,"author":5277,"provisional":4950,"depends":5163,"contact":6425,"extension":6426,"proposal":4950},279,"David Zhao Akeley @akeley98","VK_NV_inherited_viewport_scissor",{"number":6428,"type":5146,"author":6349,"provisional":4950,"depends":5163,"contact":6429,"extension":6430,"proposal":4950},431,"sourav parmar @souravpNV","VK_NV_linear_color_attachment",{"number":6432,"type":5146,"author":5277,"provisional":4950,"contact":6433,"extension":6434,"proposal":4950},311,"Charles Hansen @cshansen","VK_NV_low_latency",{"number":6436,"type":5146,"author":5277,"provisional":4950,"depends":6437,"contact":6433,"extension":6438,"proposal":4950},506,"VK_VERSION_1_2,VK_KHR_timeline_semaphore","VK_NV_low_latency2",{"number":6440,"type":5146,"author":5277,"provisional":4950,"depends":6331,"contact":5415,"extension":6441,"proposal":4950},428,"VK_NV_memory_decompression",{"number":6443,"type":5146,"author":5277,"provisional":4950,"depends":5163,"contact":5561,"extension":6444,"proposal":4950},203,"VK_NV_mesh_shader",{"number":6446,"type":5146,"author":5277,"provisional":4950,"depends":6447,"contact":6247,"extension":6448,"proposal":4950},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":6450,"type":5146,"author":5277,"provisional":4950,"depends":5869,"contact":5319,"extension":6451,"proposal":425},571,"VK_NV_partitioned_acceleration_structure",{"number":6453,"type":5146,"author":5277,"provisional":4950,"depends":6454,"contact":5303,"extension":6455,"proposal":4950},517,"VK_KHR_maintenance6,VK_VERSION_1_4","VK_NV_per_stage_descriptor_set",{"number":6457,"type":5146,"author":5277,"provisional":4950,"depends":5462,"contact":6458,"extension":6459,"proposal":4950},293,"Liya Li @liyli","VK_NV_present_barrier",{"number":6461,"type":5146,"author":5277,"provisional":425,"platform":5149,"contact":6462,"extension":6463,"proposal":4950},614,"Charles Hansen @chansen","VK_NV_present_metering",{"extension":6465,"proposal":4950},"VK_NV_private_vendor_info",{"number":6467,"type":5146,"author":5277,"provisional":4950,"contact":6468,"extension":6469,"proposal":4950},556,"Rodrigo Locatti @rlocatti","VK_NV_raw_access_chains",{"number":6471,"type":5146,"author":5277,"deprecatedby":6091,"provisional":4950,"depends":6472,"contact":6296,"extension":6473,"proposal":4950},166,"(VK_KHR_get_physical_device_properties2+VK_KHR_get_memory_requirements2),VK_VERSION_1_1","VK_NV_ray_tracing",{"number":6475,"type":5146,"author":5277,"provisional":4950,"depends":6091,"contact":6296,"extension":6476,"proposal":4950},491,"VK_NV_ray_tracing_invocation_reorder",{"number":6478,"type":5146,"author":5277,"provisional":4950,"depends":6091,"contact":5319,"extension":6479,"proposal":425},430,"VK_NV_ray_tracing_linear_swept_spheres",{"number":6481,"type":5146,"author":5277,"provisional":4950,"depends":6091,"contact":6094,"extension":6482,"proposal":4950},328,"VK_NV_ray_tracing_motion_blur",{"number":6484,"type":5146,"author":5277,"provisional":4950,"contact":5415,"extension":6485,"proposal":425},569,"VK_NV_ray_tracing_validation",{"number":6487,"type":5146,"author":5277,"provisional":4950,"depends":5163,"contact":6339,"extension":6488,"proposal":4950},167,"VK_NV_representative_fragment_test",{"number":6490,"type":5146,"author":5277,"provisional":4950,"contact":5303,"extension":6491,"proposal":4950},95,"VK_NV_sample_mask_override_coverage",{"number":6493,"type":5146,"author":5277,"provisional":4950,"depends":5163,"contact":6318,"extension":6494,"proposal":4950},206,"VK_NV_scissor_exclusive",{"number":6496,"type":5146,"author":5277,"provisional":4950,"contact":5298,"extension":6497,"proposal":4950},564,"VK_NV_shader_atomic_float16_vector",{"number":6499,"type":5146,"author":5277,"provisional":4950,"depends":5163,"contact":6318,"extension":6500,"proposal":4950},205,"VK_NV_shader_image_footprint",{"number":6502,"type":5146,"author":5277,"provisional":4950,"depends":5261,"contact":5632,"extension":6503,"proposal":4950},155,"VK_NV_shader_sm_builtins",{"number":6505,"type":5146,"author":5277,"provisional":4950,"depends":5261,"contact":5298,"extension":6506,"proposal":4950},199,"VK_NV_shader_subgroup_partitioned",{"number":6508,"type":5146,"author":5277,"provisional":4950,"depends":5163,"contact":6318,"extension":6509,"proposal":4950},165,"VK_NV_shading_rate_image",{"number":6511,"type":5146,"author":5277,"provisional":4950,"contact":5632,"extension":6512,"proposal":4950},97,"VK_NV_viewport_array2",{"number":6514,"type":5146,"author":5277,"provisional":4950,"contact":5303,"extension":6515,"proposal":4950},99,"VK_NV_viewport_swizzle",{"number":6517,"type":5146,"author":5277,"promotedto":6248,"provisional":4950,"depends":6398,"platform":5463,"contact":6247,"extension":6518,"proposal":4950},59,"VK_NV_win32_keyed_mutex",{"number":6520,"type":5146,"author":5439,"provisional":4950,"depends":6521,"contact":5440,"extension":6522,"proposal":4950},522,"(VK_EXT_filter_cubic)+(VK_VERSION_1_2,VK_EXT_sampler_filter_minmax)","VK_QCOM_filter_cubic_clamp",{"number":6524,"type":5146,"author":5439,"provisional":4950,"depends":5441,"contact":5440,"extension":6525,"proposal":4950},520,"VK_QCOM_filter_cubic_weights",{"number":6527,"type":5146,"author":5439,"promotedto":5452,"provisional":4950,"depends":6528,"contact":5440,"extension":6529,"proposal":4950},426,"(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_EXT_fragment_density_map","VK_QCOM_fragment_density_map_offset",{"number":6531,"type":5146,"author":5439,"provisional":4950,"depends":6532,"contact":5440,"extension":4861,"proposal":425},441,"VK_KHR_format_feature_flags2,VK_VERSION_1_3",{"number":6534,"type":5146,"author":5439,"provisional":4950,"depends":4861,"contact":5440,"extension":6535,"proposal":4950},519,"VK_QCOM_image_processing2",{"number":6537,"type":5146,"author":5439,"provisional":4950,"contact":5440,"extension":6538,"proposal":4950},511,"VK_QCOM_multiview_per_view_render_areas",{"number":6540,"type":5146,"author":5439,"provisional":4950,"depends":5163,"contact":5440,"extension":6541,"proposal":4950},489,"VK_QCOM_multiview_per_view_viewports",{"number":6543,"type":5146,"author":5439,"provisional":4950,"contact":5440,"extension":6544,"proposal":4950},172,"VK_QCOM_render_pass_shader_resolve",{"number":6546,"type":5146,"author":5439,"provisional":4950,"contact":5440,"extension":6547,"proposal":4950},302,"VK_QCOM_render_pass_store_ops",{"number":6549,"type":5146,"author":5439,"provisional":4950,"contact":5440,"extension":6550,"proposal":4950},283,"VK_QCOM_render_pass_transform",{"number":6552,"type":5146,"author":5439,"provisional":4950,"depends":6553,"contact":5440,"extension":6554,"proposal":4950},334,"VK_KHR_copy_commands2,VK_VERSION_1_3","VK_QCOM_rotated_copy_commands",{"number":6556,"type":5146,"author":5439,"provisional":4950,"depends":5163,"contact":5440,"extension":101,"proposal":425},485,{"number":6558,"type":5146,"author":5439,"provisional":4950,"depends":6559,"contact":5440,"extension":6560,"proposal":425},310,"VK_QCOM_tile_properties,VK_KHR_get_physical_device_properties2","VK_QCOM_tile_shading",{"number":6562,"type":5146,"author":5439,"provisional":4950,"contact":5440,"extension":6563,"proposal":4950},521,"VK_QCOM_ycbcr_degamma",{"number":6565,"type":5146,"author":6566,"provisional":4950,"depends":5235,"platform":6567,"contact":6568,"extension":6569,"proposal":4950},530,"QNX","screen","Mike Gorchak @mgorchak-blackberry, Aaron Ruby @aruby-blackberry","VK_QNX_external_memory_screen_buffer",{"number":6571,"type":5271,"author":6566,"provisional":4950,"depends":5392,"platform":6567,"contact":6572,"extension":6573,"proposal":4950},379,"Mike Gorchak @mgorchak-blackberry","VK_QNX_screen_surface",{"number":6575,"type":5146,"author":6576,"provisional":4950,"depends":5163,"contact":5374,"extension":6577,"proposal":4950},486,"SEC","VK_SEC_amigo_profiling",{"number":6579,"type":5146,"author":6580,"provisional":4950,"depends":5163,"specialuse":5341,"contact":5616,"extension":6581,"proposal":4950},421,"VALVE","VK_VALVE_descriptor_set_host_mapping",{"number":6583,"type":5146,"author":6580,"promotedto":5582,"provisional":4950,"depends":6022,"specialuse":5341,"contact":5581,"extension":6584,"proposal":4950},352,"VK_VALVE_mutable_descriptor_type",1744876669121]