| Safe Haskell | None | 
|---|---|
| Language | Haskell2010 | 
Vulkan.Extensions.VK_NV_mesh_shader
Description
Name
VK_NV_mesh_shader - device extension
VK_NV_mesh_shader
- Name String
- VK_NV_mesh_shader
- Extension Type
- Device extension
- Registered Extension Number
- 203
- Revision
- 1
- Extension and Version Dependencies
- Requires Vulkan 1.0
- Requires VK_KHR_get_physical_device_properties2
 
- Contact
Other Extension Metadata
- Last Modified Date
- 2018-07-19
- Interactions and External Dependencies
- This extension requires SPV_NV_mesh_shader
- This extension provides API support for GLSL_NV_mesh_shader
 
- Contributors
- Pat Brown, NVIDIA
- Jeff Bolz, NVIDIA
- Daniel Koch, NVIDIA
- Piers Daniell, NVIDIA
- Pierre Boudier, NVIDIA
 
Description
This extension provides a new mechanism allowing applications to generate collections of geometric primitives via programmable mesh shading. It is an alternative to the existing programmable primitive shading pipeline, which relied on generating input primitives by a fixed function assembler as well as fixed function vertex fetch.
There are new programmable shader types — the task and mesh shader — to generate these collections to be processed by fixed-function primitive assembly and rasterization logic. When the task and mesh shaders are dispatched, they replace the standard programmable vertex processing pipeline, including vertex array attribute fetching, vertex shader processing, tessellation, and the geometry shader processing.
This extension also adds support for the following SPIR-V extension in Vulkan:
New Commands
New Structures
- Extending - PhysicalDeviceFeatures2,- DeviceCreateInfo:
- Extending - PhysicalDeviceProperties2:
New Enum Constants
- NV_MESH_SHADER_SPEC_VERSION
- Extending - PipelineStageFlagBits:
- Extending - ShaderStageFlagBits:
- Extending - StructureType:
New or Modified Built-In Variables
- PrimitiveCountNV
- PrimitiveIndicesNV
- ClipDistancePerViewNV
- CullDistancePerViewNV
- LayerPerViewNV
- MeshViewCountNV
- MeshViewIndicesNV
- (modified)Position
- (modified)PointSize
- (modified)ClipDistance
- (modified)CullDistance
- (modified)PrimitiveId
- (modified)Layer
- (modified)ViewportIndex
- (modified)WorkgroupSize
- (modified)WorkgroupId
- (modified)LocalInvocationId
- (modified)GlobalInvocationId
- (modified)LocalInvocationIndex
- (modified)DrawIndex
- (modified)ViewportMaskNV
- (modified)PositionPerViewNV
- (modified)ViewportMaskPerViewNV
New SPIR-V Capability
Issues
- How to name this extension? - RESOLVED: VK_NV_mesh_shader - Other options considered: - VK_NV_mesh_shading
- VK_NV_programmable_mesh_shading
- VK_NV_primitive_group_shading
- VK_NV_grouped_drawing
 
- Do we need a new VkPrimitiveTopology? - RESOLVED: NO, we skip the InputAssembler stage 
- Should we allow Instancing? - RESOLVED: NO, there is no fixed function input, other than the IDs. However, allow offsetting with a "first" value. 
- Should we use existing vkCmdDraw or introduce new functions? - RESOLVED: Introduce new functions. - New functions make it easier to separate from "programmable primitive shading" chapter, less "dual use" language about existing functions having alternative behavior. The text around the existing "draws" is heavily based around emitting vertices. 
- If new functions, how to name? - RESOLVED: CmdDrawMeshTasks* - Other options considered: - CmdDrawMeshed
- CmdDrawTasked
- CmdDrawGrouped
 
- Should VK_SHADER_STAGE_ALL_GRAPHICS be updated to include the new stages? - RESOLVED: No. If an application were to be recompiled with headers that include additional shader stage bits in VK_SHADER_STAGE_ALL_GRAPHICS, then the previously valid application would no longer be valid on implementations that don’t support mesh or task shaders. This means the change would not be backwards compatible. It’s too bad VkShaderStageFlagBits doesn’t have a dedicated "all supported graphics stages" bit like VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, which would have avoided this problem. 
Version History
- Revision 1, 2018-07-19 (Christoph Kubisch, Daniel Koch) - Internal revisions
 
See Also
DrawMeshTasksIndirectCommandNV, PhysicalDeviceMeshShaderFeaturesNV,
 PhysicalDeviceMeshShaderPropertiesNV,
 cmdDrawMeshTasksIndirectCountNV, cmdDrawMeshTasksIndirectNV,
 cmdDrawMeshTasksNV
Document Notes
For more information, see the Vulkan Specification
This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.
Synopsis
- cmdDrawMeshTasksNV :: forall io. MonadIO io => CommandBuffer -> ("taskCount" ::: Word32) -> ("firstTask" ::: Word32) -> io ()
- cmdDrawMeshTasksIndirectNV :: forall io. MonadIO io => CommandBuffer -> Buffer -> ("offset" ::: DeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> io ()
- cmdDrawMeshTasksIndirectCountNV :: forall io. MonadIO io => CommandBuffer -> Buffer -> ("offset" ::: DeviceSize) -> ("countBuffer" ::: Buffer) -> ("countBufferOffset" ::: DeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> io ()
- data PhysicalDeviceMeshShaderFeaturesNV = PhysicalDeviceMeshShaderFeaturesNV {- taskShader :: Bool
- meshShader :: Bool
 
- data PhysicalDeviceMeshShaderPropertiesNV = PhysicalDeviceMeshShaderPropertiesNV {- maxDrawMeshTasksCount :: Word32
- maxTaskWorkGroupInvocations :: Word32
- maxTaskWorkGroupSize :: (Word32, Word32, Word32)
- maxTaskTotalMemorySize :: Word32
- maxTaskOutputCount :: Word32
- maxMeshWorkGroupInvocations :: Word32
- maxMeshWorkGroupSize :: (Word32, Word32, Word32)
- maxMeshTotalMemorySize :: Word32
- maxMeshOutputVertices :: Word32
- maxMeshOutputPrimitives :: Word32
- maxMeshMultiviewViewCount :: Word32
- meshOutputPerVertexGranularity :: Word32
- meshOutputPerPrimitiveGranularity :: Word32
 
- data DrawMeshTasksIndirectCommandNV = DrawMeshTasksIndirectCommandNV {}
- type NV_MESH_SHADER_SPEC_VERSION = 1
- pattern NV_MESH_SHADER_SPEC_VERSION :: forall a. Integral a => a
- type NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader"
- pattern NV_MESH_SHADER_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
Documentation
Arguments
| :: forall io. MonadIO io | |
| => CommandBuffer | 
 | 
| -> ("taskCount" ::: Word32) | 
 | 
| -> ("firstTask" ::: Word32) | 
 | 
| -> io () | 
vkCmdDrawMeshTasksNV - Draw mesh task work items
Description
When the command is executed, a global workgroup consisting of
 taskCount local workgroups is assembled.
Valid Usage
-  If a
     Samplercreated withmagFilterorminFilterequal toFILTER_LINEARandcompareEnableequal toFALSEis used to sample aImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
-  If a
     ImageViewis accessed using atomic operations as a result of this command, then the image view’s format features must containFORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
-  If a
     ImageViewis sampled withFILTER_CUBIC_EXTas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
-  Any
     ImageViewbeing sampled withFILTER_CUBIC_EXTas a result of this command must have aImageViewTypeand format that supports cubic filtering, as specified byFilterCubicImageViewImageFormatPropertiesEXT::filterCubicreturned bygetPhysicalDeviceImageFormatProperties2
-  Any
     ImageViewbeing sampled withFILTER_CUBIC_EXTwith a reduction mode of eitherSAMPLER_REDUCTION_MODE_MINorSAMPLER_REDUCTION_MODE_MAXas a result of this command must have aImageViewTypeand format that supports cubic filtering together with minmax filtering, as specified byFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmaxreturned bygetPhysicalDeviceImageFormatProperties2
-  Any
     Imagecreated with aImageCreateInfo::flagscontainingIMAGE_CREATE_CORNER_SAMPLED_BIT_NVsampled as a result of this command must only be sampled using aSamplerAddressModeofSAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
-  For each set n that is
     statically used by the Pipelinebound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with aPipelineLayoutthat is compatible for set n, with thePipelineLayoutused to create the currentPipeline, as described in ???
-  For each push constant that
     is statically used by the Pipelinebound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with aPipelineLayoutthat is compatible for push constants, with thePipelineLayoutused to create the currentPipeline, as described in ???
-  Descriptors in each bound
     descriptor set, specified via
     cmdBindDescriptorSets, must be valid if they are statically used by thePipelinebound to the pipeline bind point used by this command
- A valid pipeline must be bound to the pipeline bind point used by this command
-  If the
     Pipelineobject bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set forcommandBuffer, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
-  There must not have been
     any calls to dynamic state setting commands for any state not
     specified as dynamic in the Pipelineobject bound to the pipeline bind point used by this command, since that pipeline was bound
-  If the
     Pipelineobject bound to the pipeline bind point used by this command accesses aSamplerobject that uses unnormalized coordinates, that sampler must not be used to sample from anyImagewith aImageViewof the typeIMAGE_VIEW_TYPE_3D,IMAGE_VIEW_TYPE_CUBE,IMAGE_VIEW_TYPE_1D_ARRAY,IMAGE_VIEW_TYPE_2D_ARRAYorIMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
-  If the
     Pipelineobject bound to the pipeline bind point used by this command accesses aSamplerobject that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-VOpImageSample*orOpImageSparseSample*instructions withImplicitLod,DreforProjin their name, in any shader stage
-  If the
     Pipelineobject bound to the pipeline bind point used by this command accesses aSamplerobject that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-VOpImageSample*orOpImageSparseSample*instructions that includes a LOD bias or any offset values, in any shader stage
-  If the
     robust buffer access
     feature is not enabled, and if the Pipelineobject bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point
-  If the
     robust buffer access
     feature is not enabled, and if the Pipelineobject bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point
-  If commandBufferis an unprotected command buffer, any resource accessed by thePipelineobject bound to the pipeline bind point used by this command must not be a protected resource
-  If a
     ImageViewis 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.
-  If a
     BufferViewis 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.
-  If a
     ImageViewwith aFormatthat has a 64-bit channel width is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 64.
-  If a
     ImageViewwith aFormatthat has a channel width less than 64-bit is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 32.
-  If a
     BufferViewwith aFormatthat has a 64-bit channel width is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 64.
-  If a
     BufferViewwith aFormatthat has a channel width less than 64-bit is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 32.
-  If the
     sparseImageInt64Atomics
     feature is not enabled, Imageobjects created with theIMAGE_CREATE_SPARSE_RESIDENCY_BITflag must not be accessed by atomic instructions through anOpTypeImagewith aSampledTypewith aWidthof 64 by this command.
-  If the
     sparseImageInt64Atomics
     feature is not enabled, Bufferobjects created with theBUFFER_CREATE_SPARSE_RESIDENCY_BITflag must not be accessed by atomic instructions through anOpTypeImagewith aSampledTypewith aWidthof 64 by this command.
-  The current render pass
     must be
     compatible
     with the renderPassmember of theGraphicsPipelineCreateInfostructure specified when creating thePipelinebound toPIPELINE_BIND_POINT_GRAPHICS
-  The subpass index of the
     current render pass must be equal to the subpassmember of theGraphicsPipelineCreateInfostructure specified when creating thePipelinebound toPIPELINE_BIND_POINT_GRAPHICS
- Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set
- Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the Render Pass chapter
-  If the
     draw is recorded in a render pass instance with multiview enabled,
     the maximum instance index must be less than or equal to
     PhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex
-  If the bound
     graphics pipeline was created with
     PipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnableset toTRUEand the current subpass has a depth/stencil attachment, then that attachment must have been created with theIMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXTbit set
-  If the bound
     graphics pipeline state was created with the
     DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXTdynamic state enabled, but not theDYNAMIC_STATE_SCISSOR_WITH_COUNT_EXTdynamic state enabled, thencmdSetViewportWithCountEXTmust have been called in the current command buffer prior to this draw command, and theviewportCountparameter ofcmdSetViewportWithCountEXTmust match thePipelineViewportStateCreateInfo::scissorCountof the pipeline
-  If the bound graphics
     pipeline state was created with the
     DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXTdynamic state enabled, but not theDYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXTdynamic state enabled, thencmdSetScissorWithCountEXTmust have been called in the current command buffer prior to this draw command, and thescissorCountparameter ofcmdSetScissorWithCountEXTmust match thePipelineViewportStateCreateInfo::viewportCountof the pipeline
-  If the bound
     graphics pipeline state was created with both the
     DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXTandDYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXTdynamic states enabled then bothcmdSetViewportWithCountEXTandcmdSetScissorWithCountEXTmust have been called in the current command buffer prior to this draw command, and theviewportCountparameter ofcmdSetViewportWithCountEXTmust match thescissorCountparameter ofcmdSetScissorWithCountEXT
-  If the bound
     graphics pipeline state was created with the
     DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXTdynamic state enabled, but not theDYNAMIC_STATE_VIEWPORT_W_SCALING_NVdynamic state enabled, then the bound graphics pipeline must have been created withPipelineViewportWScalingStateCreateInfoNV::viewportCountgreater or equal to theviewportCountparameter in the last call tocmdSetViewportWithCountEXT
-  If the bound
     graphics pipeline state was created with the
     DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXTandDYNAMIC_STATE_VIEWPORT_W_SCALING_NVdynamic states enabled then theviewportCountparameter in the last call tocmdSetViewportWScalingNVmust be greater than or equal to theviewportCountparameter in the last call tocmdSetViewportWithCountEXT
-  If the bound
     graphics pipeline state was created with the
     DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXTdynamic state enabled, but not theDYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NVdynamic state enabled, then the bound graphics pipeline must have been created withPipelineViewportShadingRateImageStateCreateInfoNV::viewportCountgreater or equal to theviewportCountparameter in the last call tocmdSetViewportWithCountEXT
-  If the bound
     graphics pipeline state was created with the
     DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXTandDYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NVdynamic states enabled then theviewportCountparameter in the last call tocmdSetViewportShadingRatePaletteNVmust be greater than or equal to theviewportCountparameter in the last call tocmdSetViewportWithCountEXT
-  If the
     bound graphics pipeline state was created with the
     DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXTdynamic state enabled and an instance ofPipelineViewportSwizzleStateCreateInfoNVchained fromVkPipelineVieportCreateInfo, then the bound graphics pipeline must have been created withPipelineViewportSwizzleStateCreateInfoNV::viewportCountgreater or equal to theviewportCountparameter in the last call tocmdSetViewportWithCountEXT
-  If the
     bound graphics pipeline state was created with the
     DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXTdynamic state enabled and an instance ofPipelineViewportExclusiveScissorStateCreateInfoNVchained fromVkPipelineVieportCreateInfo, then the bound graphics pipeline must have been created withPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCountgreater or equal to theviewportCountparameter in the last call tocmdSetViewportWithCountEXT
-  If the bound
     graphics pipeline state was created with the
     DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXTdynamic state enabled thencmdSetPrimitiveTopologyEXTmust have been called in the current command buffer prior to this draw command, and theprimitiveTopologyparameter ofcmdSetPrimitiveTopologyEXTmust be of the same topology class as the pipelinePipelineInputAssemblyStateCreateInfo::topologystate
- 
     If the
     primitiveFragmentShadingRateWithMultipleViewports
     limit is not supported, the bound graphics pipeline was created with
     the
     DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXTdynamic state enabled, and any of the shader stages of the bound graphics pipeline write to thePrimitiveShadingRateKHRbuilt-in, thencmdSetViewportWithCountEXTmust have been called in the current command buffer prior to this draw command, and theviewportCountparameter ofcmdSetViewportWithCountEXTmust be1
-  taskCountmust be less than or equal toPhysicalDeviceMeshShaderPropertiesNV::maxDrawMeshTasksCount
Valid Usage (Implicit)
-  commandBuffermust be a validCommandBufferhandle
-  commandBuffermust be in the recording state
-  The
     CommandPoolthatcommandBufferwas allocated from must support graphics operations
- This command must only be called inside of a render pass instance
Host Synchronization
- Host access to commandBuffermust be externally synchronized
- Host access to the CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Supported Queue Types | Pipeline Type | 
|---|---|---|---|
| Primary Secondary | Inside | Graphics | Graphics | 
See Also
cmdDrawMeshTasksIndirectNV Source #
Arguments
| :: forall io. MonadIO io | |
| => CommandBuffer | 
 | 
| -> Buffer | 
 | 
| -> ("offset" ::: DeviceSize) | 
 | 
| -> ("drawCount" ::: Word32) | 
 | 
| -> ("stride" ::: Word32) | 
 | 
| -> io () | 
vkCmdDrawMeshTasksIndirectNV - Issue an indirect mesh tasks draw into a command buffer
Description
cmdDrawMeshTasksIndirectNV behaves similarly to cmdDrawMeshTasksNV
 except that the parameters are read by the device from a buffer during
 execution. drawCount draws are executed by the command, with
 parameters taken from buffer starting at offset and increasing by
 stride bytes for each successive draw. The parameters of each draw are
 encoded in an array of DrawMeshTasksIndirectCommandNV structures. If
 drawCount is less than or equal to one, stride is ignored.
Valid Usage
-  If a
     Samplercreated withmagFilterorminFilterequal toFILTER_LINEARandcompareEnableequal toFALSEis used to sample aImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
-  If a
     ImageViewis accessed using atomic operations as a result of this command, then the image view’s format features must containFORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
-  If a
     ImageViewis sampled withFILTER_CUBIC_EXTas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
-  Any
     ImageViewbeing sampled withFILTER_CUBIC_EXTas a result of this command must have aImageViewTypeand format that supports cubic filtering, as specified byFilterCubicImageViewImageFormatPropertiesEXT::filterCubicreturned bygetPhysicalDeviceImageFormatProperties2
-  Any
     ImageViewbeing sampled withFILTER_CUBIC_EXTwith a reduction mode of eitherSAMPLER_REDUCTION_MODE_MINorSAMPLER_REDUCTION_MODE_MAXas a result of this command must have aImageViewTypeand format that supports cubic filtering together with minmax filtering, as specified byFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmaxreturned bygetPhysicalDeviceImageFormatProperties2
-  Any
     Imagecreated with aImageCreateInfo::flagscontainingIMAGE_CREATE_CORNER_SAMPLED_BIT_NVsampled as a result of this command must only be sampled using aSamplerAddressModeofSAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
-  For each set n that
     is statically used by the Pipelinebound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with aPipelineLayoutthat is compatible for set n, with thePipelineLayoutused to create the currentPipeline, as described in ???
-  For each push
     constant that is statically used by the
     Pipelinebound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with aPipelineLayoutthat is compatible for push constants, with thePipelineLayoutused to create the currentPipeline, as described in ???
-  Descriptors in each
     bound descriptor set, specified via
     cmdBindDescriptorSets, must be valid if they are statically used by thePipelinebound to the pipeline bind point used by this command
- A valid pipeline must be bound to the pipeline bind point used by this command
-  If the
     Pipelineobject bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set forcommandBuffer, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
-  There must not have
     been any calls to dynamic state setting commands for any state not
     specified as dynamic in the Pipelineobject bound to the pipeline bind point used by this command, since that pipeline was bound
-  If the
     Pipelineobject bound to the pipeline bind point used by this command accesses aSamplerobject that uses unnormalized coordinates, that sampler must not be used to sample from anyImagewith aImageViewof the typeIMAGE_VIEW_TYPE_3D,IMAGE_VIEW_TYPE_CUBE,IMAGE_VIEW_TYPE_1D_ARRAY,IMAGE_VIEW_TYPE_2D_ARRAYorIMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
-  If the
     Pipelineobject bound to the pipeline bind point used by this command accesses aSamplerobject that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-VOpImageSample*orOpImageSparseSample*instructions withImplicitLod,DreforProjin their name, in any shader stage
-  If the
     Pipelineobject bound to the pipeline bind point used by this command accesses aSamplerobject that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-VOpImageSample*orOpImageSparseSample*instructions that includes a LOD bias or any offset values, in any shader stage
-  If the
     robust buffer access
     feature is not enabled, and if the Pipelineobject bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point
-  If the
     robust buffer access
     feature is not enabled, and if the Pipelineobject bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point
-  If
     commandBufferis an unprotected command buffer, any resource accessed by thePipelineobject bound to the pipeline bind point used by this command must not be a protected resource
-  If a
     ImageViewis 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.
-  If a
     BufferViewis 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.
-  If a
     ImageViewwith aFormatthat has a 64-bit channel width is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 64.
-  If a
     ImageViewwith aFormatthat has a channel width less than 64-bit is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 32.
-  If a
     BufferViewwith aFormatthat has a 64-bit channel width is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 64.
-  If a
     BufferViewwith aFormatthat has a channel width less than 64-bit is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 32.
-  If
     the
     sparseImageInt64Atomics
     feature is not enabled, Imageobjects created with theIMAGE_CREATE_SPARSE_RESIDENCY_BITflag must not be accessed by atomic instructions through anOpTypeImagewith aSampledTypewith aWidthof 64 by this command.
-  If
     the
     sparseImageInt64Atomics
     feature is not enabled, Bufferobjects created with theBUFFER_CREATE_SPARSE_RESIDENCY_BITflag must not be accessed by atomic instructions through anOpTypeImagewith aSampledTypewith aWidthof 64 by this command.
-  The current
     render pass must be
     compatible
     with the renderPassmember of theGraphicsPipelineCreateInfostructure specified when creating thePipelinebound toPIPELINE_BIND_POINT_GRAPHICS
-  The subpass index
     of the current render pass must be equal to the subpassmember of theGraphicsPipelineCreateInfostructure specified when creating thePipelinebound toPIPELINE_BIND_POINT_GRAPHICS
- Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set
- Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the Render Pass chapter
- 
     If the draw is recorded in a render pass instance with multiview
     enabled, the maximum instance index must be less than or equal to
     PhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex
-  If
     the bound graphics pipeline was created with
     PipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnableset toTRUEand the current subpass has a depth/stencil attachment, then that attachment must have been created with theIMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXTbit set
-  If the bound
     graphics pipeline state was created with the
     DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXTdynamic state enabled, but not theDYNAMIC_STATE_SCISSOR_WITH_COUNT_EXTdynamic state enabled, thencmdSetViewportWithCountEXTmust have been called in the current command buffer prior to this draw command, and theviewportCountparameter ofcmdSetViewportWithCountEXTmust match thePipelineViewportStateCreateInfo::scissorCountof the pipeline
-  If the bound
     graphics pipeline state was created with the
     DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXTdynamic state enabled, but not theDYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXTdynamic state enabled, thencmdSetScissorWithCountEXTmust have been called in the current command buffer prior to this draw command, and thescissorCountparameter ofcmdSetScissorWithCountEXTmust match thePipelineViewportStateCreateInfo::viewportCountof the pipeline
-  If the bound
     graphics pipeline state was created with both the
     DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXTandDYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXTdynamic states enabled then bothcmdSetViewportWithCountEXTandcmdSetScissorWithCountEXTmust have been called in the current command buffer prior to this draw command, and theviewportCountparameter ofcmdSetViewportWithCountEXTmust match thescissorCountparameter ofcmdSetScissorWithCountEXT
-  If the bound
     graphics pipeline state was created with the
     DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXTdynamic state enabled, but not theDYNAMIC_STATE_VIEWPORT_W_SCALING_NVdynamic state enabled, then the bound graphics pipeline must have been created withPipelineViewportWScalingStateCreateInfoNV::viewportCountgreater or equal to theviewportCountparameter in the last call tocmdSetViewportWithCountEXT
-  If the bound
     graphics pipeline state was created with the
     DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXTandDYNAMIC_STATE_VIEWPORT_W_SCALING_NVdynamic states enabled then theviewportCountparameter in the last call tocmdSetViewportWScalingNVmust be greater than or equal to theviewportCountparameter in the last call tocmdSetViewportWithCountEXT
-  If the bound
     graphics pipeline state was created with the
     DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXTdynamic state enabled, but not theDYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NVdynamic state enabled, then the bound graphics pipeline must have been created withPipelineViewportShadingRateImageStateCreateInfoNV::viewportCountgreater or equal to theviewportCountparameter in the last call tocmdSetViewportWithCountEXT
-  If the bound
     graphics pipeline state was created with the
     DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXTandDYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NVdynamic states enabled then theviewportCountparameter in the last call tocmdSetViewportShadingRatePaletteNVmust be greater than or equal to theviewportCountparameter in the last call tocmdSetViewportWithCountEXT
- 
     If the bound graphics pipeline state was created with the
     DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXTdynamic state enabled and an instance ofPipelineViewportSwizzleStateCreateInfoNVchained fromVkPipelineVieportCreateInfo, then the bound graphics pipeline must have been created withPipelineViewportSwizzleStateCreateInfoNV::viewportCountgreater or equal to theviewportCountparameter in the last call tocmdSetViewportWithCountEXT
- 
     If the bound graphics pipeline state was created with the
     DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXTdynamic state enabled and an instance ofPipelineViewportExclusiveScissorStateCreateInfoNVchained fromVkPipelineVieportCreateInfo, then the bound graphics pipeline must have been created withPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCountgreater or equal to theviewportCountparameter in the last call tocmdSetViewportWithCountEXT
-  If the
     bound graphics pipeline state was created with the
     DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXTdynamic state enabled thencmdSetPrimitiveTopologyEXTmust have been called in the current command buffer prior to this draw command, and theprimitiveTopologyparameter ofcmdSetPrimitiveTopologyEXTmust be of the same topology class as the pipelinePipelineInputAssemblyStateCreateInfo::topologystate
- 
     If the
     primitiveFragmentShadingRateWithMultipleViewports
     limit is not supported, the bound graphics pipeline was created with
     the
     DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXTdynamic state enabled, and any of the shader stages of the bound graphics pipeline write to thePrimitiveShadingRateKHRbuilt-in, thencmdSetViewportWithCountEXTmust have been called in the current command buffer prior to this draw command, and theviewportCountparameter ofcmdSetViewportWithCountEXTmust be1
-  If bufferis non-sparse then it must be bound completely and contiguously to a singleDeviceMemoryobject
-  buffermust have been created with theBUFFER_USAGE_INDIRECT_BUFFER_BITbit set
-  offsetmust be a multiple of4
- 
     commandBuffermust not be a protected command buffer
-  If the
     multi-draw indirect
     feature is not enabled, drawCountmust be0or1
-  drawCountmust be less than or equal toPhysicalDeviceLimits::maxDrawIndirectCount
-  If drawCountis greater than1,stridemust be a multiple of4and must be greater than or equal tosizeof(DrawMeshTasksIndirectCommandNV)
-  If drawCountis equal to1, (offset+sizeof(DrawMeshTasksIndirectCommandNV)) must be less than or equal to the size ofbuffer
-  If drawCountis greater than1, (stride× (drawCount- 1) +offset+sizeof(DrawMeshTasksIndirectCommandNV)) must be less than or equal to the size ofbuffer
Valid Usage (Implicit)
- 
     commandBuffermust be a validCommandBufferhandle
-  buffermust be a validBufferhandle
- 
     commandBuffermust be in the recording state
-  The
     CommandPoolthatcommandBufferwas allocated from must support graphics operations
- This command must only be called inside of a render pass instance
-  Both of buffer, andcommandBuffermust have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to commandBuffermust be externally synchronized
- Host access to the CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Supported Queue Types | Pipeline Type | 
|---|---|---|---|
| Primary Secondary | Inside | Graphics | Graphics | 
See Also
cmdDrawMeshTasksIndirectCountNV Source #
Arguments
| :: forall io. MonadIO io | |
| => CommandBuffer | 
 | 
| -> Buffer | 
 | 
| -> ("offset" ::: DeviceSize) | 
 | 
| -> ("countBuffer" ::: Buffer) | 
 | 
| -> ("countBufferOffset" ::: DeviceSize) | 
 | 
| -> ("maxDrawCount" ::: Word32) | 
 | 
| -> ("stride" ::: Word32) | 
 | 
| -> io () | 
vkCmdDrawMeshTasksIndirectCountNV - Perform an indirect mesh tasks draw with the draw count sourced from a buffer
Description
cmdDrawMeshTasksIndirectCountNV behaves similarly to
 cmdDrawMeshTasksIndirectNV except that the draw count is read by the
 device from a buffer during execution. The command will read an unsigned
 32-bit integer from countBuffer located at countBufferOffset and use
 this as the draw count.
Valid Usage
-  If a
     Samplercreated withmagFilterorminFilterequal toFILTER_LINEARandcompareEnableequal toFALSEis used to sample aImageViewas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
-  If a
     ImageViewis accessed using atomic operations as a result of this command, then the image view’s format features must containFORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
-  If a
     ImageViewis sampled withFILTER_CUBIC_EXTas a result of this command, then the image view’s format features must containFORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
-  Any
     ImageViewbeing sampled withFILTER_CUBIC_EXTas a result of this command must have aImageViewTypeand format that supports cubic filtering, as specified byFilterCubicImageViewImageFormatPropertiesEXT::filterCubicreturned bygetPhysicalDeviceImageFormatProperties2
-  Any
     ImageViewbeing sampled withFILTER_CUBIC_EXTwith a reduction mode of eitherSAMPLER_REDUCTION_MODE_MINorSAMPLER_REDUCTION_MODE_MAXas a result of this command must have aImageViewTypeand format that supports cubic filtering together with minmax filtering, as specified byFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmaxreturned bygetPhysicalDeviceImageFormatProperties2
-  Any
     Imagecreated with aImageCreateInfo::flagscontainingIMAGE_CREATE_CORNER_SAMPLED_BIT_NVsampled as a result of this command must only be sampled using aSamplerAddressModeofSAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
-  For each set n
     that is statically used by the Pipelinebound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with aPipelineLayoutthat is compatible for set n, with thePipelineLayoutused to create the currentPipeline, as described in ???
-  For each push
     constant that is statically used by the
     Pipelinebound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with aPipelineLayoutthat is compatible for push constants, with thePipelineLayoutused to create the currentPipeline, as described in ???
-  Descriptors in
     each bound descriptor set, specified via
     cmdBindDescriptorSets, must be valid if they are statically used by thePipelinebound to the pipeline bind point used by this command
- A valid pipeline must be bound to the pipeline bind point used by this command
-  If the
     Pipelineobject bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set forcommandBuffer, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
-  There must not
     have been any calls to dynamic state setting commands for any state
     not specified as dynamic in the Pipelineobject bound to the pipeline bind point used by this command, since that pipeline was bound
-  If the
     Pipelineobject bound to the pipeline bind point used by this command accesses aSamplerobject that uses unnormalized coordinates, that sampler must not be used to sample from anyImagewith aImageViewof the typeIMAGE_VIEW_TYPE_3D,IMAGE_VIEW_TYPE_CUBE,IMAGE_VIEW_TYPE_1D_ARRAY,IMAGE_VIEW_TYPE_2D_ARRAYorIMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
-  If the
     Pipelineobject bound to the pipeline bind point used by this command accesses aSamplerobject that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-VOpImageSample*orOpImageSparseSample*instructions withImplicitLod,DreforProjin their name, in any shader stage
-  If the
     Pipelineobject bound to the pipeline bind point used by this command accesses aSamplerobject that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-VOpImageSample*orOpImageSparseSample*instructions that includes a LOD bias or any offset values, in any shader stage
-  If the
     robust buffer access
     feature is not enabled, and if the Pipelineobject bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point
-  If the
     robust buffer access
     feature is not enabled, and if the Pipelineobject bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point
-  If
     commandBufferis an unprotected command buffer, any resource accessed by thePipelineobject bound to the pipeline bind point used by this command must not be a protected resource
-  If a
     ImageViewis 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.
-  If a
     BufferViewis 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.
-  If a
     ImageViewwith aFormatthat has a 64-bit channel width is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 64.
-  If a
     ImageViewwith aFormatthat has a channel width less than 64-bit is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 32.
-  If a
     BufferViewwith aFormatthat has a 64-bit channel width is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 64.
-  If a
     BufferViewwith aFormatthat has a channel width less than 64-bit is accessed as a result of this command, theSampledTypeof theOpTypeImageoperand of that instruction must have aWidthof 32.
- 
     If the
     sparseImageInt64Atomics
     feature is not enabled, Imageobjects created with theIMAGE_CREATE_SPARSE_RESIDENCY_BITflag must not be accessed by atomic instructions through anOpTypeImagewith aSampledTypewith aWidthof 64 by this command.
- 
     If the
     sparseImageInt64Atomics
     feature is not enabled, Bufferobjects created with theBUFFER_CREATE_SPARSE_RESIDENCY_BITflag must not be accessed by atomic instructions through anOpTypeImagewith aSampledTypewith aWidthof 64 by this command.
-  The
     current render pass must be
     compatible
     with the renderPassmember of theGraphicsPipelineCreateInfostructure specified when creating thePipelinebound toPIPELINE_BIND_POINT_GRAPHICS
-  The subpass
     index of the current render pass must be equal to the subpassmember of theGraphicsPipelineCreateInfostructure specified when creating thePipelinebound toPIPELINE_BIND_POINT_GRAPHICS
- Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set
- Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the Render Pass chapter
- 
     If the draw is recorded in a render pass instance with multiview
     enabled, the maximum instance index must be less than or equal to
     PhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex
- 
     If the bound graphics pipeline was created with
     PipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnableset toTRUEand the current subpass has a depth/stencil attachment, then that attachment must have been created with theIMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXTbit set
-  If the
     bound graphics pipeline state was created with the
     DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXTdynamic state enabled, but not theDYNAMIC_STATE_SCISSOR_WITH_COUNT_EXTdynamic state enabled, thencmdSetViewportWithCountEXTmust have been called in the current command buffer prior to this draw command, and theviewportCountparameter ofcmdSetViewportWithCountEXTmust match thePipelineViewportStateCreateInfo::scissorCountof the pipeline
-  If the
     bound graphics pipeline state was created with the
     DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXTdynamic state enabled, but not theDYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXTdynamic state enabled, thencmdSetScissorWithCountEXTmust have been called in the current command buffer prior to this draw command, and thescissorCountparameter ofcmdSetScissorWithCountEXTmust match thePipelineViewportStateCreateInfo::viewportCountof the pipeline
-  If the
     bound graphics pipeline state was created with both the
     DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXTandDYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXTdynamic states enabled then bothcmdSetViewportWithCountEXTandcmdSetScissorWithCountEXTmust have been called in the current command buffer prior to this draw command, and theviewportCountparameter ofcmdSetViewportWithCountEXTmust match thescissorCountparameter ofcmdSetScissorWithCountEXT
-  If the
     bound graphics pipeline state was created with the
     DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXTdynamic state enabled, but not theDYNAMIC_STATE_VIEWPORT_W_SCALING_NVdynamic state enabled, then the bound graphics pipeline must have been created withPipelineViewportWScalingStateCreateInfoNV::viewportCountgreater or equal to theviewportCountparameter in the last call tocmdSetViewportWithCountEXT
-  If the
     bound graphics pipeline state was created with the
     DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXTandDYNAMIC_STATE_VIEWPORT_W_SCALING_NVdynamic states enabled then theviewportCountparameter in the last call tocmdSetViewportWScalingNVmust be greater than or equal to theviewportCountparameter in the last call tocmdSetViewportWithCountEXT
-  If the
     bound graphics pipeline state was created with the
     DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXTdynamic state enabled, but not theDYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NVdynamic state enabled, then the bound graphics pipeline must have been created withPipelineViewportShadingRateImageStateCreateInfoNV::viewportCountgreater or equal to theviewportCountparameter in the last call tocmdSetViewportWithCountEXT
-  If the
     bound graphics pipeline state was created with the
     DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXTandDYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NVdynamic states enabled then theviewportCountparameter in the last call tocmdSetViewportShadingRatePaletteNVmust be greater than or equal to theviewportCountparameter in the last call tocmdSetViewportWithCountEXT
- 
     If the bound graphics pipeline state was created with the
     DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXTdynamic state enabled and an instance ofPipelineViewportSwizzleStateCreateInfoNVchained fromVkPipelineVieportCreateInfo, then the bound graphics pipeline must have been created withPipelineViewportSwizzleStateCreateInfoNV::viewportCountgreater or equal to theviewportCountparameter in the last call tocmdSetViewportWithCountEXT
- 
     If the bound graphics pipeline state was created with the
     DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXTdynamic state enabled and an instance ofPipelineViewportExclusiveScissorStateCreateInfoNVchained fromVkPipelineVieportCreateInfo, then the bound graphics pipeline must have been created withPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCountgreater or equal to theviewportCountparameter in the last call tocmdSetViewportWithCountEXT
-  If
     the bound graphics pipeline state was created with the
     DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXTdynamic state enabled thencmdSetPrimitiveTopologyEXTmust have been called in the current command buffer prior to this draw command, and theprimitiveTopologyparameter ofcmdSetPrimitiveTopologyEXTmust be of the same topology class as the pipelinePipelineInputAssemblyStateCreateInfo::topologystate
- 
     If the
     primitiveFragmentShadingRateWithMultipleViewports
     limit is not supported, the bound graphics pipeline was created with
     the
     DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXTdynamic state enabled, and any of the shader stages of the bound graphics pipeline write to thePrimitiveShadingRateKHRbuilt-in, thencmdSetViewportWithCountEXTmust have been called in the current command buffer prior to this draw command, and theviewportCountparameter ofcmdSetViewportWithCountEXTmust be1
-  If bufferis non-sparse then it must be bound completely and contiguously to a singleDeviceMemoryobject
-  buffermust have been created with theBUFFER_USAGE_INDIRECT_BUFFER_BITbit set
-  offsetmust be a multiple of4
- 
     commandBuffermust not be a protected command buffer
-  If
     countBufferis non-sparse then it must be bound completely and contiguously to a singleDeviceMemoryobject
- 
     countBuffermust have been created with theBUFFER_USAGE_INDIRECT_BUFFER_BITbit set
- 
     countBufferOffsetmust be a multiple of4
-  The count
     stored in countBuffermust be less than or equal toPhysicalDeviceLimits::maxDrawIndirectCount
- 
     (countBufferOffset+sizeof(uint32_t)) must be less than or equal to the size ofcountBuffer
- If drawIndirectCount is not enabled this function must not be used
-  stridemust be a multiple of4and must be greater than or equal tosizeof(DrawMeshTasksIndirectCommandNV)
-  If
     maxDrawCountis greater than or equal to1, (stride× (maxDrawCount- 1) +offset+sizeof(DrawMeshTasksIndirectCommandNV)) must be less than or equal to the size ofbuffer
-  If the
     count stored in countBufferis equal to1, (offset+sizeof(DrawMeshTasksIndirectCommandNV)) must be less than or equal to the size ofbuffer
-  If the
     count stored in countBufferis greater than1, (stride× (drawCount- 1) +offset+sizeof(DrawMeshTasksIndirectCommandNV)) must be less than or equal to the size ofbuffer
Valid Usage (Implicit)
- 
     commandBuffermust be a validCommandBufferhandle
-  buffermust be a validBufferhandle
- 
     countBuffermust be a validBufferhandle
- 
     commandBuffermust be in the recording state
-  The
     CommandPoolthatcommandBufferwas allocated from must support graphics operations
- This command must only be called inside of a render pass instance
-  Each of
     buffer,commandBuffer, andcountBuffermust have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to commandBuffermust be externally synchronized
- Host access to the CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Supported Queue Types | Pipeline Type | 
|---|---|---|---|
| Primary Secondary | Inside | Graphics | Graphics | 
See Also
data PhysicalDeviceMeshShaderFeaturesNV Source #
VkPhysicalDeviceMeshShaderFeaturesNV - Structure describing mesh shading features that can be supported by an implementation
Description
If the PhysicalDeviceMeshShaderFeaturesNV structure is included in the
 pNext chain of
 PhysicalDeviceFeatures2,
 it is filled with a value indicating whether the feature is supported.
 PhysicalDeviceMeshShaderFeaturesNV can also be included in pNext
 chain of DeviceCreateInfo to enable the features.
Valid Usage (Implicit)
See Also
Constructors
| PhysicalDeviceMeshShaderFeaturesNV | |
| Fields 
 | |
Instances
data PhysicalDeviceMeshShaderPropertiesNV Source #
VkPhysicalDeviceMeshShaderPropertiesNV - Structure describing mesh shading properties
Members
The members of the PhysicalDeviceMeshShaderPropertiesNV structure
 describe the following implementation-dependent limits:
Description
If the PhysicalDeviceMeshShaderPropertiesNV structure is included in
 the pNext chain of
 PhysicalDeviceProperties2,
 it is filled with the implementation-dependent limits.
Valid Usage (Implicit)
See Also
Constructors
| PhysicalDeviceMeshShaderPropertiesNV | |
| Fields 
 | |
Instances
data DrawMeshTasksIndirectCommandNV Source #
VkDrawMeshTasksIndirectCommandNV - Structure specifying a mesh tasks draw indirect command
Description
The members of DrawMeshTasksIndirectCommandNV have the same meaning as
 the similarly named parameters of cmdDrawMeshTasksNV.
Valid Usage
See Also
Constructors
| DrawMeshTasksIndirectCommandNV | |
| Fields 
 | |
Instances
type NV_MESH_SHADER_SPEC_VERSION = 1 Source #
pattern NV_MESH_SHADER_SPEC_VERSION :: forall a. Integral a => a Source #
type NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" Source #
pattern NV_MESH_SHADER_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #