vkCmdBeginPerTileExecutionQCOM
To enable the per-tile execution model, call:
void vkCmdBeginPerTileExecutionQCOM(
VkCommandBuffer commandBuffer,
const VkPerTileBeginInfoQCOM* pPerTileBeginInfo);
commandBuffer
is the command buffer in which to record the command.pPerTileBeginInfo
is a pointer to a VkPerTileBeginInfoQCOM structure containing information about how the per-tile execution model is started.
When per-tile execution model is enabled, recorded vkCmdDraw*
or
vkCmdDispatch*
commands are invoked per tile.
That is, the recorded draw or dispatch is invoked exactly once for each
covered tile.
The set of covered tiles for a given render pass instance consists of the
set of render pass tiles, which can be queried with
VK_QCOM_tile_properties, that are completely or partially covered
by the renderArea
for the render pass instance.
The draw or dispatch commands may be invoked for uncovered tiles.
Each per-tile command invocation is associated with a single tile, the active tile. These per-tile invocations are not specified to execute in any particular order, but the size and offset of the active tile is available via shader built-ins.
When per-tile execution model is enabled, the following restrictions apply:
- Transform feedback commands such as vkCmdBeginTransformFeedbackEXT, vkCmdEndTransformFeedbackEXT, vkCmdBeginQueryIndexedEXT, and vkCmdEndQueryIndexedEXT,:normative{type="must"} not be recorded.
- Query commands such as vkCmdWriteTimestamp, vkCmdDebugMarkerBeginEXT, vkCmdDebugMarkerEndEXT, vkCmdDebugMarkerInsertEXT, vkCmdBeginQuery, and vkCmdEndQuery, must not be recorded.
- Event commands such as vkCmdWaitEvents2 and vkCmdWaitEvents must not be recorded.
- Render pass clears like vkCmdClearAttachments must not be recorded
- Access of an attachment with layout
VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT
as provided by VK_EXT_attachment_feedback_loop_layout is disallowed - Any commands that would cause a invocations of one of the following
shader stages are not allowed
- tessellation
- geometry
- ray tracing
- mesh shading
Valid Usage
VUID-vkCmdBeginPerTileExecutionQCOM-None-10664
The current render pass must be a tile shading render pass
VUID-vkCmdBeginPerTileExecutionQCOM-None-10665
The tileShadingPerTileDispatch or tileShadingPerTileDraw feature must be enabled
Valid Usage (Implicit)
VUID-vkCmdBeginPerTileExecutionQCOM-commandBuffer-parameter
commandBuffer
must be a valid VkCommandBuffer handle
VUID-vkCmdBeginPerTileExecutionQCOM-pPerTileBeginInfo-parameter
pPerTileBeginInfo
must be a valid pointer to a valid VkPerTileBeginInfoQCOM structure
VUID-vkCmdBeginPerTileExecutionQCOM-commandBuffer-recording
commandBuffer
must be in the recording state
VUID-vkCmdBeginPerTileExecutionQCOM-commandBuffer-cmdpool
The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations
VUID-vkCmdBeginPerTileExecutionQCOM-renderpass
This command must only be called inside of a render pass instance
VUID-vkCmdBeginPerTileExecutionQCOM-videocoding
This command must only be called outside of a video coding scope
Host Synchronization
- Host access to the
VkCommandPool
thatcommandBuffer
was allocated from must be externally synchronized ::