C Specification

To record an area-based dispatch, call:

// Provided by VK_QCOM_tile_shading
void vkCmdDispatchTileQCOM(
    VkCommandBuffer                             commandBuffer,
    const VkDispatchTileInfoQCOM*               pDispatchTileInfo);

Parameters

  • commandBuffer is the command buffer into which the command will be recorded.

  • pDispatchTileInfo is a pointer to a VkDispatchTileInfoQCOM structure containing information about the area-based dispatch.

Description

This command operates in the per-tile execution model, invoking a separate dispatch for each covered tile. The global workgroup count and local workgroup size of each dispatch are defined by the implementation to efficiently iterate over a uniform grid of pixel blocks within the area of its active tile.

Each shader invocation operates on a single pixel block and its size is determined by the shader’s tiling rate, which must be defined by shaders executed by this command. The TileShadingRateQCOM execution mode operand defines the shader’s tiling rate. Its x and y must be a power of two and less than or equal to the maxTileShadingRate limit. Its z must be less than or equal to the active tile’s depth as reported by VK_QCOM_tile_properties, and VkTilePropertiesQCOM.tileSize.z % TileShadingRateQCOM::z must equal 0.

The start location of the shader invocation’s pixel block is vec3(TileOffsetQCOM, 0) + (GlobalInvocationId * TileShadingRateQCOM)

Shader invocations can perform tile attachment load/store operations at any location within the active tile, but the most efficient access may be limited to fragment locations within and local to the shader invocation’s pixel block.

Valid Usage
  • VUID-vkCmdDispatchTileQCOM-commandBuffer-02712
    If commandBuffer is a protected command buffer and protectedNoFault is not supported, any resource written to by the VkPipeline object bound to the pipeline bind point used by this command must not be an unprotected resource

  • VUID-vkCmdDispatchTileQCOM-commandBuffer-02713
    If commandBuffer is a protected command buffer and protectedNoFault is not supported, pipeline stages other than the framebuffer-space and compute stages in the VkPipeline object bound to the pipeline bind point used by this command must not write to any resource

  • VUID-vkCmdDispatchTileQCOM-commandBuffer-04617
    If any of the shader stages of the VkPipeline bound to the pipeline bind point used by this command uses the RayQueryKHR capability, then commandBuffer must not be a protected command buffer

  • VUID-vkCmdDispatchTileQCOM-None-10668
    When this command is recorded per-tile execution model must be enabled

  • VUID-vkCmdDispatchTileQCOM-None-10669
    The tileShadingDispatchTile must enabled

Valid Usage (Implicit)
  • VUID-vkCmdDispatchTileQCOM-commandBuffer-parameter
    commandBuffer must be a valid VkCommandBuffer handle

  • VUID-vkCmdDispatchTileQCOM-pDispatchTileInfo-parameter
    pDispatchTileInfo must be a valid pointer to a valid VkDispatchTileInfoQCOM structure

  • VUID-vkCmdDispatchTileQCOM-commandBuffer-recording
    commandBuffer must be in the recording state

  • VUID-vkCmdDispatchTileQCOM-commandBuffer-cmdpool
    The VkCommandPool that commandBuffer was allocated from must support VK_QUEUE_COMPUTE_BIT operations

  • VUID-vkCmdDispatchTileQCOM-renderpass
    This command must only be called inside of a render pass instance

  • VUID-vkCmdDispatchTileQCOM-suspended
    This command must not be called between suspended render pass instances

  • VUID-vkCmdDispatchTileQCOM-videocoding
    This command must only be called outside of a video coding scope

Host Synchronization
  • Host access to the VkCommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties
Command Buffer Levels Render Pass Scope Video Coding Scope Supported Queue Types Command Type

Primary
Secondary

Inside

Outside

VK_QUEUE_COMPUTE_BIT

Action

Conditional Rendering

vkCmdDispatchTileQCOM is affected by conditional rendering

See Also

Document Notes

For more information, see the Vulkan Specification.

This page is extracted from the Vulkan Specification. Fixes and changes should be made to the Specification, not directly.

Copyright 2014-2026 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0