C Specification
To record a dispatch using non-zero base values for the components of
WorkgroupId, call:
// Provided by VK_VERSION_1_1
void vkCmdDispatchBase(
VkCommandBuffer commandBuffer,
uint32_t baseGroupX,
uint32_t baseGroupY,
uint32_t baseGroupZ,
uint32_t groupCountX,
uint32_t groupCountY,
uint32_t groupCountZ);
Parameters
-
commandBufferis the command buffer into which the command will be recorded. -
baseGroupXis the start value for the X component ofWorkgroupId. -
baseGroupYis the start value for the Y component ofWorkgroupId. -
baseGroupZis the start value for the Z component ofWorkgroupId. -
groupCountXis the number of local workgroups to dispatch in the X dimension. -
groupCountYis the number of local workgroups to dispatch in the Y dimension. -
groupCountZis the number of local workgroups to dispatch in the Z dimension.
Description
When the command is executed, a global workgroup consisting of
groupCountX × groupCountY × groupCountZ
local workgroups is assembled, with WorkgroupId values ranging from
[baseGroup*, baseGroup* + groupCount*) in each
component.
vkCmdDispatch is equivalent to
vkCmdDispatchBase(0,0,0,groupCountX,groupCountY,groupCountZ).
-
VUID-vkCmdDispatchBase-magFilter-04553
If a VkSampler created withmagFilterorminFilterequal to VK_FILTER_LINEAR,reductionModeequal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE, andcompareEnableequal to VK_FALSE is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT -
VUID-vkCmdDispatchBase-magFilter-09598
If a VkSampler created withmagFilterorminFilterequal to VK_FILTER_LINEAR andreductionModeequal to either VK_SAMPLER_REDUCTION_MODE_MIN or VK_SAMPLER_REDUCTION_MODE_MAX is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT -
VUID-vkCmdDispatchBase-mipmapMode-04770
If a VkSampler created withmipmapModeequal to VK_SAMPLER_MIPMAP_MODE_LINEAR,reductionModeequal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE, andcompareEnableequal to VK_FALSE is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT -
VUID-vkCmdDispatchBase-mipmapMode-09599
If a VkSampler created withmipmapModeequal to VK_SAMPLER_MIPMAP_MODE_LINEAR andreductionModeequal to either VK_SAMPLER_REDUCTION_MODE_MIN or VK_SAMPLER_REDUCTION_MODE_MAX is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT -
VUID-vkCmdDispatchBase-unnormalizedCoordinates-09635
If a VkSampler created withunnormalizedCoordinatesequal to VK_TRUE is used to sample a VkImageView as a result of this command, then the image view’slevelCountandlayerCountmust be 1 -
VUID-vkCmdDispatchBase-None-08609
If a VkSampler created withunnormalizedCoordinatesequal to VK_TRUE is used to sample a VkImageView as a result of this command, then the image view’sviewTypemust be VK_IMAGE_VIEW_TYPE_1D or VK_IMAGE_VIEW_TYPE_2D -
VUID-vkCmdDispatchBase-None-08610
If a VkSampler created withunnormalizedCoordinatesequal to VK_TRUE is used to sample a VkImageView as a result of this command, then the sampler must not be used with any of the SPIR-VOpImageSample*orOpImageSparseSample*instructions withImplicitLod,DreforProjin their name -
VUID-vkCmdDispatchBase-None-08611
If a VkSampler created withunnormalizedCoordinatesequal to VK_TRUE is used to sample a VkImageView as a result of this command, then the sampler must not be used with any of the SPIR-VOpImageSample*orOpImageSparseSample*instructions that includes a LOD bias or any offset values -
VUID-vkCmdDispatchBase-aspectMask-06478
If a VkImageView is sampled with depth comparison, the image view must have been created with anaspectMaskthat contains VK_IMAGE_ASPECT_DEPTH_BIT -
VUID-vkCmdDispatchBase-None-02691
If a VkImageView is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT -
VUID-vkCmdDispatchBase-None-07888
If a VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer’s format features must contain VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT -
VUID-vkCmdDispatchBase-None-02692
If a VkImageView is sampled with VK_FILTER_CUBIC_EXT as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT -
VUID-vkCmdDispatchBase-None-02693
If the VK_EXT_filter_cubic extension is not enabled and any VkImageView is sampled with VK_FILTER_CUBIC_EXT as a result of this command, it must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D, VK_IMAGE_VIEW_TYPE_CUBE, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY -
VUID-vkCmdDispatchBase-filterCubic-02694
Any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubicreturned by vkGetPhysicalDeviceImageFormatProperties2 -
VUID-vkCmdDispatchBase-filterCubicMinmax-02695
Any VkImageView being sampled with VK_FILTER_CUBIC_EXT with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN or VK_SAMPLER_REDUCTION_MODE_MAX as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmaxreturned by vkGetPhysicalDeviceImageFormatProperties2 -
VUID-vkCmdDispatchBase-None-08600
If a a bound shader statically uses a set n, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout that is compatible for set n, with the VkPipelineLayout used to create the current VkPipeline , as described in [descriptorsets-compatibility] -
VUID-vkCmdDispatchBase-None-08601
If a a bound shader statically uses a push constant value, that value must have been set for the same pipeline bind point, with a VkPipelineLayout that is compatible for push constants with the VkPipelineLayout used to create the current VkPipeline -
VUID-vkCmdDispatchBase-None-10068
For each array of resources that is used by a bound shader, the indices used to access members of the array must be less than the descriptor count for the identified binding in the descriptor sets used by this command -
VUID-vkCmdDispatchBase-None-08114
Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets, must be valid if they are accessed as described by descriptor validity by a bound shader -
VUID-vkCmdDispatchBase-imageLayout-00344
If an image descriptor is accessed by a shader, the VkImageLayout must match the subresource accessible from the VkImageView as defined by the image layout matching rules -
VUID-vkCmdDispatchBase-None-08606
A valid pipeline must be bound to the pipeline bind point used by this command -
VUID-vkCmdDispatchBase-None-08608
There must not have been any calls to dynamic state setting commands for any state specified statically in the VkPipeline object bound to the pipeline bind point used by this command, since that pipeline was bound -
VUID-vkCmdDispatchBase-uniformBuffers-06935
If any stage of the VkPipeline object bound to the pipeline bind point used by this command accesses a uniform buffer, and therobustBufferAccessfeature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point -
VUID-vkCmdDispatchBase-storageBuffers-06936
If any stage of the VkPipeline object bound to the pipeline bind point used by this command accesses a storage buffer, and therobustBufferAccessfeature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point -
VUID-vkCmdDispatchBase-commandBuffer-02707
IfcommandBufferis an unprotected command buffer andprotectedNoFaultis not supported, any resource accessed by bound shaders must not be a protected resource -
VUID-vkCmdDispatchBase-viewType-07752
If a VkImageView is accessed as a result of this command, then the image view’sviewTypemust match theDimoperand of theOpTypeImageas described in [spirvenv-image-dimensions] -
VUID-vkCmdDispatchBase-format-07753
If a VkImageView or VkBufferView is accessed as a result of this command, then the numeric type of the view’sformatand theSampledTypeoperand of theOpTypeImagemust match -
VUID-vkCmdDispatchBase-OpImageWrite-08795
If a VkImageView is accessed usingOpImageWriteas a result of this command, then theTypeof theTexeloperand of that instruction must have at least as many components as the image view’s format -
VUID-vkCmdDispatchBase-OpImageWrite-04469
If a VkBufferView is accessed usingOpImageWriteas a result of this command, then theTypeof theTexeloperand of that instruction must have at least as many components as the buffer view’s format -
VUID-vkCmdDispatchBase-SampledType-04470
If a VkImageView with a VkFormat that has a 64-bit component width is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 64 -
VUID-vkCmdDispatchBase-SampledType-04471
If a VkImageView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 32 -
VUID-vkCmdDispatchBase-SampledType-04472
If a VkBufferView with a VkFormat that has a 64-bit component width is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 64 -
VUID-vkCmdDispatchBase-SampledType-04473
If a VkBufferView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 32 -
VUID-vkCmdDispatchBase-sparseImageInt64Atomics-04474
If thesparseImageInt64Atomicsfeature is not enabled, VkImage objects created with the VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT flag must not be accessed by atomic instructions through anOpTypeImagewith aSampledTypewith aWidthof 64 by this command -
VUID-vkCmdDispatchBase-sparseImageInt64Atomics-04475
If thesparseImageInt64Atomicsfeature is not enabled, VkBuffer objects created with the VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT flag must not be accessed by atomic instructions through anOpTypeImagewith aSampledTypewith aWidthof 64 by this command -
VUID-vkCmdDispatchBase-None-07288
Any shader invocation executed by this command must terminate -
VUID-vkCmdDispatchBase-None-09600
If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written -
VUID-vkCmdDispatchBase-None-10672
this command must be called outside of a render pass instance
-
VUID-vkCmdDispatchBase-commandBuffer-02712
IfcommandBufferis a protected command buffer andprotectedNoFaultis not supported, any resource written to by theVkPipelineobject bound to the pipeline bind point used by this command must not be an unprotected resource -
VUID-vkCmdDispatchBase-commandBuffer-02713
IfcommandBufferis a protected command buffer andprotectedNoFaultis not supported, pipeline stages other than the framebuffer-space and compute stages in theVkPipelineobject bound to the pipeline bind point used by this command must not write to any resource -
VUID-vkCmdDispatchBase-baseGroupX-00421
baseGroupXmust be less thanVkPhysicalDeviceLimits::maxComputeWorkGroupCount[0] -
VUID-vkCmdDispatchBase-baseGroupX-00422
baseGroupYmust be less thanVkPhysicalDeviceLimits::maxComputeWorkGroupCount[1] -
VUID-vkCmdDispatchBase-baseGroupZ-00423
baseGroupZmust be less thanVkPhysicalDeviceLimits::maxComputeWorkGroupCount[2] -
VUID-vkCmdDispatchBase-groupCountX-00424
groupCountXmust be less than or equal toVkPhysicalDeviceLimits::maxComputeWorkGroupCount[0] minusbaseGroupX -
VUID-vkCmdDispatchBase-groupCountY-00425
groupCountYmust be less than or equal toVkPhysicalDeviceLimits::maxComputeWorkGroupCount[1] minusbaseGroupY -
VUID-vkCmdDispatchBase-groupCountZ-00426
groupCountZmust be less than or equal toVkPhysicalDeviceLimits::maxComputeWorkGroupCount[2] minusbaseGroupZ -
VUID-vkCmdDispatchBase-baseGroupX-00427
If any ofbaseGroupX,baseGroupY, orbaseGroupZare not zero, then the bound compute pipeline must have been created with the VK_PIPELINE_CREATE_DISPATCH_BASE_BIT flag
-
VUID-vkCmdDispatchBase-commandBuffer-parameter
commandBuffermust be a valid VkCommandBuffer handle -
VUID-vkCmdDispatchBase-commandBuffer-recording
commandBuffermust be in the recording state -
VUID-vkCmdDispatchBase-commandBuffer-cmdpool
TheVkCommandPoolthatcommandBufferwas allocated from must support VK_QUEUE_COMPUTE_BIT operations
-
Host access to
commandBuffermust be externally synchronized -
Host access to the
VkCommandPoolthatcommandBufferwas allocated from must be externally synchronized
| Command Buffer Levels | Render Pass Scope | Supported Queue Types | Command Type |
|---|---|---|---|
Primary |
Both |
VK_QUEUE_COMPUTE_BIT |
Action |
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.