[{"data":1,"prerenderedAt":778},["ShallowReactive",2],{"j8YJrKfeHm":3},{"title":4,"description":5,"parent":6,"cmd_buf_level":7,"render_pass_scope":10,"supported_queue_types":11,"tasks":14,"type":16,"xrefs":17,"body":18,"_type":777,"_id":4},"vkCmdBeginPerTileExecutionQCOM","Begin per-tile execution mode","VK_QCOM_tile_shading",[8,9],"primary","secondary","inside",[12,13],"graphics","compute",[15],"state","protos",[],{"type":19,"children":20,"toc":775},"root",[21,29,225,268,339,357,362,372,555,606,739,769],{"type":22,"tag":23,"props":24,"children":25},"element","p",{},[26],{"type":27,"value":28},"text","To enable the per-tile execution model, call:",{"type":22,"tag":30,"props":31,"children":32},"code-group",{},[33,119],{"type":22,"tag":34,"props":35,"children":41},"pre",{"className":36,"code":37,"filename":38,"language":39,"meta":40,"style":40},"language-c shiki shiki-themes github-light-default github-dark-default","void vkCmdBeginPerTileExecutionQCOM(\n VkCommandBuffer commandBuffer,\n const VkPerTileBeginInfoQCOM* pPerTileBeginInfo);\n","C","c","",[42],{"type":22,"tag":43,"props":44,"children":45},"code",{"__ignoreMap":40},[46,70,90],{"type":22,"tag":47,"props":48,"children":51},"span",{"class":49,"line":50},"line",1,[52,58,64],{"type":22,"tag":47,"props":53,"children":55},{"style":54},"--shiki-default:#CF222E;--shiki-dark:#FF7B72",[56],{"type":27,"value":57},"void",{"type":22,"tag":47,"props":59,"children":61},{"style":60},"--shiki-default:#8250DF;--shiki-dark:#D2A8FF",[62],{"type":27,"value":63}," vkCmdBeginPerTileExecutionQCOM",{"type":22,"tag":47,"props":65,"children":67},{"style":66},"--shiki-default:#1F2328;--shiki-dark:#E6EDF3",[68],{"type":27,"value":69},"(\n",{"type":22,"tag":47,"props":71,"children":73},{"class":49,"line":72},2,[74,79,85],{"type":22,"tag":47,"props":75,"children":76},{"style":66},[77],{"type":27,"value":78}," VkCommandBuffer ",{"type":22,"tag":47,"props":80,"children":82},{"style":81},"--shiki-default:#953800;--shiki-dark:#FFA657",[83],{"type":27,"value":84},"commandBuffer",{"type":22,"tag":47,"props":86,"children":87},{"style":66},[88],{"type":27,"value":89},",\n",{"type":22,"tag":47,"props":91,"children":93},{"class":49,"line":92},3,[94,99,104,109,114],{"type":22,"tag":47,"props":95,"children":96},{"style":54},[97],{"type":27,"value":98}," const",{"type":22,"tag":47,"props":100,"children":101},{"style":66},[102],{"type":27,"value":103}," VkPerTileBeginInfoQCOM",{"type":22,"tag":47,"props":105,"children":106},{"style":54},[107],{"type":27,"value":108},"*",{"type":22,"tag":47,"props":110,"children":111},{"style":81},[112],{"type":27,"value":113}," pPerTileBeginInfo",{"type":22,"tag":47,"props":115,"children":116},{"style":66},[117],{"type":27,"value":118},");\n",{"type":22,"tag":34,"props":120,"children":125},{"className":121,"code":122,"filename":123,"language":124,"meta":40,"style":40},"language-rs shiki shiki-themes github-light-default github-dark-default","pub fn cmd_begin_per_tile_execution_qcom(\n command_buffer: vk::CommandBuffer,\n p_per_tile_begin_info: *const vk::PerTileBeginInfoQCOM,\n);\n","Rust","rs",[126],{"type":22,"tag":43,"props":127,"children":128},{"__ignoreMap":40},[129,151,183,217],{"type":22,"tag":47,"props":130,"children":131},{"class":49,"line":50},[132,137,142,147],{"type":22,"tag":47,"props":133,"children":134},{"style":54},[135],{"type":27,"value":136},"pub",{"type":22,"tag":47,"props":138,"children":139},{"style":54},[140],{"type":27,"value":141}," fn",{"type":22,"tag":47,"props":143,"children":144},{"style":60},[145],{"type":27,"value":146}," cmd_begin_per_tile_execution_qcom",{"type":22,"tag":47,"props":148,"children":149},{"style":66},[150],{"type":27,"value":69},{"type":22,"tag":47,"props":152,"children":153},{"class":49,"line":72},[154,159,164,169,174,179],{"type":22,"tag":47,"props":155,"children":156},{"style":66},[157],{"type":27,"value":158}," command_buffer",{"type":22,"tag":47,"props":160,"children":161},{"style":54},[162],{"type":27,"value":163},":",{"type":22,"tag":47,"props":165,"children":166},{"style":81},[167],{"type":27,"value":168}," vk",{"type":22,"tag":47,"props":170,"children":171},{"style":54},[172],{"type":27,"value":173},"::",{"type":22,"tag":47,"props":175,"children":176},{"style":81},[177],{"type":27,"value":178},"CommandBuffer",{"type":22,"tag":47,"props":180,"children":181},{"style":66},[182],{"type":27,"value":89},{"type":22,"tag":47,"props":184,"children":185},{"class":49,"line":92},[186,191,195,200,204,208,213],{"type":22,"tag":47,"props":187,"children":188},{"style":66},[189],{"type":27,"value":190}," p_per_tile_begin_info",{"type":22,"tag":47,"props":192,"children":193},{"style":54},[194],{"type":27,"value":163},{"type":22,"tag":47,"props":196,"children":197},{"style":54},[198],{"type":27,"value":199}," *const",{"type":22,"tag":47,"props":201,"children":202},{"style":81},[203],{"type":27,"value":168},{"type":22,"tag":47,"props":205,"children":206},{"style":54},[207],{"type":27,"value":173},{"type":22,"tag":47,"props":209,"children":210},{"style":81},[211],{"type":27,"value":212},"PerTileBeginInfoQCOM",{"type":22,"tag":47,"props":214,"children":215},{"style":66},[216],{"type":27,"value":89},{"type":22,"tag":47,"props":218,"children":220},{"class":49,"line":219},4,[221],{"type":22,"tag":47,"props":222,"children":223},{"style":66},[224],{"type":27,"value":118},{"type":22,"tag":226,"props":227,"children":228},"ul",{},[229,240],{"type":22,"tag":230,"props":231,"children":232},"li",{},[233,238],{"type":22,"tag":43,"props":234,"children":236},{"className":235},[],[237],{"type":27,"value":84},{"type":27,"value":239}," is the command buffer in which to record the\ncommand.",{"type":22,"tag":230,"props":241,"children":242},{},[243,249,251,258,260,266],{"type":22,"tag":43,"props":244,"children":246},{"className":245},[],[247],{"type":27,"value":248},"pPerTileBeginInfo",{"type":27,"value":250}," is a pointer to a ",{"type":22,"tag":252,"props":253,"children":255},"a",{"href":254},"/man/VkPerTileBeginInfoQCOM",[256],{"type":27,"value":257},"VkPerTileBeginInfoQCOM",{"type":27,"value":259},"\nstructure containing information about how the ",{"type":22,"tag":261,"props":262,"children":263},"em",{},[264],{"type":27,"value":265},"per-tile execution\nmodel",{"type":27,"value":267}," is started.",{"type":22,"tag":23,"props":269,"children":270},{},[271,273,278,280,286,288,294,296,301,303,308,310,315,317,323,325,331,333,337],{"type":27,"value":272},"When ",{"type":22,"tag":261,"props":274,"children":275},{},[276],{"type":27,"value":277},"per-tile execution model",{"type":27,"value":279}," is enabled, recorded ",{"type":22,"tag":43,"props":281,"children":283},{"className":282},[],[284],{"type":27,"value":285},"vkCmdDraw*",{"type":27,"value":287}," or\n",{"type":22,"tag":43,"props":289,"children":291},{"className":290},[],[292],{"type":27,"value":293},"vkCmdDispatch*",{"type":27,"value":295}," commands are invoked per tile.\nThat is, the recorded draw or dispatch is invoked exactly once for each\n",{"type":22,"tag":261,"props":297,"children":298},{},[299],{"type":27,"value":300},"covered tile",{"type":27,"value":302},".\nThe set of ",{"type":22,"tag":261,"props":304,"children":305},{},[306],{"type":27,"value":307},"covered tiles",{"type":27,"value":309}," for a given render pass instance consists of the\nset of render pass tiles, which ",{"type":22,"tag":311,"props":312,"children":314},"normative",{"type":313},"can",[],{"type":27,"value":316}," be queried with\n",{"type":22,"tag":252,"props":318,"children":320},{"href":319},"/extensions/VK_QCOM_tile_properties",[321],{"type":27,"value":322},"VK_QCOM_tile_properties",{"type":27,"value":324},", that are completely or partially covered\nby the ",{"type":22,"tag":43,"props":326,"children":328},{"className":327},[],[329],{"type":27,"value":330},"renderArea",{"type":27,"value":332}," for the render pass instance.\nThe draw or dispatch commands ",{"type":22,"tag":311,"props":334,"children":336},{"type":335},"may",[],{"type":27,"value":338}," be invoked for uncovered tiles.",{"type":22,"tag":23,"props":340,"children":341},{},[342,344,349,351,355],{"type":27,"value":343},"Each per-tile command invocation is associated with a single tile, the\n",{"type":22,"tag":261,"props":345,"children":346},{},[347],{"type":27,"value":348},"active tile",{"type":27,"value":350},".\nThese per-tile invocations are not specified to execute in any particular\norder, but the size and offset of the ",{"type":22,"tag":261,"props":352,"children":353},{},[354],{"type":27,"value":348},{"type":27,"value":356}," is available via shader\nbuilt-ins.",{"type":22,"tag":358,"props":359,"children":361},"anchor",{"id":360},"renderpass-tile-shading-command-restrictions",[],{"type":22,"tag":23,"props":363,"children":364},{},[365,366,370],{"type":27,"value":272},{"type":22,"tag":261,"props":367,"children":368},{},[369],{"type":27,"value":277},{"type":27,"value":371}," is enabled, the following restrictions\napply:",{"type":22,"tag":226,"props":373,"children":374},{},[375,411,464,489,506,527],{"type":22,"tag":230,"props":376,"children":377},{},[378,380,386,388,394,395,401,403,409],{"type":27,"value":379},"Transform feedback commands such as\n",{"type":22,"tag":252,"props":381,"children":383},{"href":382},"/man/vkCmdBeginTransformFeedbackEXT",[384],{"type":27,"value":385},"vkCmdBeginTransformFeedbackEXT",{"type":27,"value":387},", ",{"type":22,"tag":252,"props":389,"children":391},{"href":390},"/man/vkCmdEndTransformFeedbackEXT",[392],{"type":27,"value":393},"vkCmdEndTransformFeedbackEXT",{"type":27,"value":89},{"type":22,"tag":252,"props":396,"children":398},{"href":397},"/man/vkCmdBeginQueryIndexedEXT",[399],{"type":27,"value":400},"vkCmdBeginQueryIndexedEXT",{"type":27,"value":402},", and ",{"type":22,"tag":252,"props":404,"children":406},{"href":405},"/man/vkCmdEndQueryIndexedEXT",[407],{"type":27,"value":408},"vkCmdEndQueryIndexedEXT",{"type":27,"value":410},",:normative{type=\"must\"}\nnot be recorded.",{"type":22,"tag":230,"props":412,"children":413},{},[414,416,422,423,429,430,436,437,443,444,450,451,457,458,462],{"type":27,"value":415},"Query commands such as ",{"type":22,"tag":252,"props":417,"children":419},{"href":418},"/man/vkCmdWriteTimestamp",[420],{"type":27,"value":421},"vkCmdWriteTimestamp",{"type":27,"value":89},{"type":22,"tag":252,"props":424,"children":426},{"href":425},"/man/vkCmdDebugMarkerBeginEXT",[427],{"type":27,"value":428},"vkCmdDebugMarkerBeginEXT",{"type":27,"value":387},{"type":22,"tag":252,"props":431,"children":433},{"href":432},"/man/vkCmdDebugMarkerEndEXT",[434],{"type":27,"value":435},"vkCmdDebugMarkerEndEXT",{"type":27,"value":89},{"type":22,"tag":252,"props":438,"children":440},{"href":439},"/man/vkCmdDebugMarkerInsertEXT",[441],{"type":27,"value":442},"vkCmdDebugMarkerInsertEXT",{"type":27,"value":89},{"type":22,"tag":252,"props":445,"children":447},{"href":446},"/man/vkCmdBeginQuery",[448],{"type":27,"value":449},"vkCmdBeginQuery",{"type":27,"value":402},{"type":22,"tag":252,"props":452,"children":454},{"href":453},"/man/vkCmdEndQuery",[455],{"type":27,"value":456},"vkCmdEndQuery",{"type":27,"value":387},{"type":22,"tag":311,"props":459,"children":461},{"type":460},"must",[],{"type":27,"value":463}," not be recorded.",{"type":22,"tag":230,"props":465,"children":466},{},[467,469,475,477,483,485,488],{"type":27,"value":468},"Event commands such as\n",{"type":22,"tag":252,"props":470,"children":472},{"href":471},"/man/vkCmdWaitEvents2",[473],{"type":27,"value":474},"vkCmdWaitEvents2",{"type":27,"value":476}," and\n",{"type":22,"tag":252,"props":478,"children":480},{"href":479},"/man/vkCmdWaitEvents",[481],{"type":27,"value":482},"vkCmdWaitEvents",{"type":27,"value":484}," ",{"type":22,"tag":311,"props":486,"children":487},{"type":460},[],{"type":27,"value":463},{"type":22,"tag":230,"props":490,"children":491},{},[492,494,500,501,504],{"type":27,"value":493},"Render pass clears like ",{"type":22,"tag":252,"props":495,"children":497},{"href":496},"/man/vkCmdClearAttachments",[498],{"type":27,"value":499},"vkCmdClearAttachments",{"type":27,"value":484},{"type":22,"tag":311,"props":502,"children":503},{"type":460},[],{"type":27,"value":505}," not be\nrecorded",{"type":22,"tag":230,"props":507,"children":508},{},[509,511,517,519,525],{"type":27,"value":510},"Access of an attachment with layout\n",{"type":22,"tag":43,"props":512,"children":514},{"className":513},[],[515],{"type":27,"value":516},"VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT",{"type":27,"value":518}," as provided\nby ",{"type":22,"tag":252,"props":520,"children":522},{"href":521},"/extensions/VK_EXT_attachment_feedback_loop_layout",[523],{"type":27,"value":524},"VK_EXT_attachment_feedback_loop_layout",{"type":27,"value":526}," is disallowed",{"type":22,"tag":230,"props":528,"children":529},{},[530,532],{"type":27,"value":531},"Any commands that would cause a invocations of one of the following\nshader stages are not allowed",{"type":22,"tag":226,"props":533,"children":534},{},[535,540,545,550],{"type":22,"tag":230,"props":536,"children":537},{},[538],{"type":27,"value":539},"tessellation",{"type":22,"tag":230,"props":541,"children":542},{},[543],{"type":27,"value":544},"geometry",{"type":22,"tag":230,"props":546,"children":547},{},[548],{"type":27,"value":549},"ray tracing",{"type":22,"tag":230,"props":551,"children":552},{},[553],{"type":27,"value":554},"mesh shading",{"type":22,"tag":556,"props":557,"children":559},"validity-group",{"name":558},"Valid Usage",[560,581],{"type":22,"tag":561,"props":562,"children":564},"validity-field",{"name":563},"VUID-vkCmdBeginPerTileExecutionQCOM-None-10664",[565],{"type":22,"tag":23,"props":566,"children":567},{},[568,570,573,575],{"type":27,"value":569},"The current render pass ",{"type":22,"tag":311,"props":571,"children":572},{"type":460},[],{"type":27,"value":574}," be a ",{"type":22,"tag":252,"props":576,"children":578},{"href":577},"/chapters/renderpass#renderpass-tile-shading",[579],{"type":27,"value":580},"tile\nshading render pass",{"type":22,"tag":561,"props":582,"children":584},{"name":583},"VUID-vkCmdBeginPerTileExecutionQCOM-None-10665",[585],{"type":22,"tag":23,"props":586,"children":587},{},[588,590,596,598,604],{"type":27,"value":589},"The ",{"type":22,"tag":252,"props":591,"children":593},{"href":592},"/man/VkPhysicalDeviceTileShadingFeaturesQCOM#features-tileShadingPerTileDispatch",[594],{"type":27,"value":595},"tileShadingPerTileDispatch",{"type":27,"value":597},"\nor ",{"type":22,"tag":252,"props":599,"children":601},{"href":600},"/man/VkPhysicalDeviceTileShadingFeaturesQCOM#features-tileShadingPerTileDraw",[602],{"type":27,"value":603},"tileShadingPerTileDraw",{"type":27,"value":605}," feature\nmust be enabled",{"type":22,"tag":556,"props":607,"children":609},{"name":608},"Valid Usage (Implicit)",[610,636,660,684,712,726],{"type":22,"tag":561,"props":611,"children":613},{"name":612},"VUID-vkCmdBeginPerTileExecutionQCOM-commandBuffer-parameter",[614],{"type":22,"tag":23,"props":615,"children":616},{},[617,622,623,626,628,634],{"type":22,"tag":43,"props":618,"children":620},{"className":619},[],[621],{"type":27,"value":84},{"type":27,"value":484},{"type":22,"tag":311,"props":624,"children":625},{"type":460},[],{"type":27,"value":627}," be a valid ",{"type":22,"tag":252,"props":629,"children":631},{"href":630},"/man/VkCommandBuffer",[632],{"type":27,"value":633},"VkCommandBuffer",{"type":27,"value":635}," handle",{"type":22,"tag":561,"props":637,"children":639},{"name":638},"VUID-vkCmdBeginPerTileExecutionQCOM-pPerTileBeginInfo-parameter",[640],{"type":22,"tag":23,"props":641,"children":642},{},[643,648,649,652,654,658],{"type":22,"tag":43,"props":644,"children":646},{"className":645},[],[647],{"type":27,"value":248},{"type":27,"value":484},{"type":22,"tag":311,"props":650,"children":651},{"type":460},[],{"type":27,"value":653}," be a valid pointer to a valid ",{"type":22,"tag":252,"props":655,"children":656},{"href":254},[657],{"type":27,"value":257},{"type":27,"value":659}," structure",{"type":22,"tag":561,"props":661,"children":663},{"name":662},"VUID-vkCmdBeginPerTileExecutionQCOM-commandBuffer-recording",[664],{"type":22,"tag":23,"props":665,"children":666},{},[667,672,673,676,678],{"type":22,"tag":43,"props":668,"children":670},{"className":669},[],[671],{"type":27,"value":84},{"type":27,"value":484},{"type":22,"tag":311,"props":674,"children":675},{"type":460},[],{"type":27,"value":677}," be in the ",{"type":22,"tag":252,"props":679,"children":681},{"href":680},"/chapters/commandbuffers#commandbuffers-lifecycle",[682],{"type":27,"value":683},"recording state",{"type":22,"tag":561,"props":685,"children":687},{"name":686},"VUID-vkCmdBeginPerTileExecutionQCOM-commandBuffer-cmdpool",[688],{"type":22,"tag":23,"props":689,"children":690},{},[691,692,698,700,705,707,710],{"type":27,"value":589},{"type":22,"tag":43,"props":693,"children":695},{"className":694},[],[696],{"type":27,"value":697},"VkCommandPool",{"type":27,"value":699}," that ",{"type":22,"tag":43,"props":701,"children":703},{"className":702},[],[704],{"type":27,"value":84},{"type":27,"value":706}," was allocated from ",{"type":22,"tag":311,"props":708,"children":709},{"type":460},[],{"type":27,"value":711}," support graphics, or compute operations",{"type":22,"tag":561,"props":713,"children":715},{"name":714},"VUID-vkCmdBeginPerTileExecutionQCOM-renderpass",[716],{"type":22,"tag":23,"props":717,"children":718},{},[719,721,724],{"type":27,"value":720},"This command ",{"type":22,"tag":311,"props":722,"children":723},{"type":460},[],{"type":27,"value":725}," only be called inside of a render pass instance",{"type":22,"tag":561,"props":727,"children":729},{"name":728},"VUID-vkCmdBeginPerTileExecutionQCOM-videocoding",[730],{"type":22,"tag":23,"props":731,"children":732},{},[733,734,737],{"type":27,"value":720},{"type":22,"tag":311,"props":735,"children":736},{"type":460},[],{"type":27,"value":738}," only be called outside of a video coding scope",{"type":22,"tag":740,"props":741,"children":743},"validity-box",{"name":742},"Host Synchronization",[744],{"type":22,"tag":226,"props":745,"children":746},{},[747],{"type":22,"tag":230,"props":748,"children":749},{},[750,752,757,758,763,764,767],{"type":27,"value":751},"Host access to the ",{"type":22,"tag":43,"props":753,"children":755},{"className":754},[],[756],{"type":27,"value":697},{"type":27,"value":699},{"type":22,"tag":43,"props":759,"children":761},{"className":760},[],[762],{"type":27,"value":84},{"type":27,"value":706},{"type":22,"tag":311,"props":765,"children":766},{"type":460},[],{"type":27,"value":768}," be externally synchronized\n::",{"type":22,"tag":770,"props":771,"children":772},"style",{},[773],{"type":27,"value":774},"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":40,"searchDepth":72,"depth":72,"links":776},[],"markdown",1744876580972]