vulkan-3.3: Bindings to the Vulkan graphics API.
Safe HaskellNone
LanguageHaskell2010

Vulkan.Extensions.VK_NV_mesh_shader

Synopsis

Documentation

cmdDrawMeshTasksNV :: forall io. MonadIO io => CommandBuffer -> ("taskCount" ::: Word32) -> ("firstTask" ::: Word32) -> io () Source #

vkCmdDrawMeshTasksNV - Draw mesh task work items

Parameters

  • commandBuffer is the command buffer into which the command will be recorded.
  • taskCount is the number of local workgroups to dispatch in the X dimension. Y and Z dimension are implicitly set to one.
  • firstTask is the X component of the first workgroup ID.

Description

When the command is executed, a global workgroup consisting of taskCount local workgroups is assembled.

Valid Usage

Valid Usage (Implicit)

  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called inside of a render pass instance

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was 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

CommandBuffer

cmdDrawMeshTasksIndirectNV :: forall io. MonadIO io => CommandBuffer -> Buffer -> ("offset" ::: DeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> io () Source #

vkCmdDrawMeshTasksIndirectNV - Issue an indirect mesh tasks draw into a command buffer

Parameters

  • commandBuffer is the command buffer into which the command is recorded.
  • buffer is the buffer containing draw parameters.
  • offset is the byte offset into buffer where parameters begin.
  • drawCount is the number of draws to execute, and can be zero.
  • stride is the byte stride between successive sets of draw parameters.

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

Valid Usage (Implicit)

  • buffer must be a valid Buffer handle
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called inside of a render pass instance
  • Both of buffer, and commandBuffer must have been created, allocated, or retrieved from the same Device

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was 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

Buffer, CommandBuffer, DeviceSize

cmdDrawMeshTasksIndirectCountNV :: forall io. MonadIO io => CommandBuffer -> Buffer -> ("offset" ::: DeviceSize) -> ("countBuffer" ::: Buffer) -> ("countBufferOffset" ::: DeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> io () Source #

vkCmdDrawMeshTasksIndirectCountNV - Perform an indirect mesh tasks draw with the draw count sourced from a buffer

Parameters

  • commandBuffer is the command buffer into which the command is recorded.
  • buffer is the buffer containing draw parameters.
  • offset is the byte offset into buffer where parameters begin.
  • countBuffer is the buffer containing the draw count.
  • countBufferOffset is the byte offset into countBuffer where the draw count begins.
  • maxDrawCount specifies the maximum number of draws that will be executed. The actual number of executed draw calls is the minimum of the count specified in countBuffer and maxDrawCount.
  • stride is the byte stride between successive sets of draw parameters.

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

Valid Usage (Implicit)

  • buffer must be a valid Buffer handle
  • countBuffer must be a valid Buffer handle
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called inside of a render pass instance
  • Each of buffer, commandBuffer, and countBuffer must have been created, allocated, or retrieved from the same Device

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was 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

Buffer, CommandBuffer, DeviceSize

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

Bool32, StructureType

Constructors

PhysicalDeviceMeshShaderFeaturesNV 

Fields

  • taskShader :: Bool

    taskShader indicates whether the task shader stage is supported.

  • meshShader :: Bool

    meshShader indicates whether the mesh shader stage is supported.

Instances

Instances details
Show PhysicalDeviceMeshShaderFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_mesh_shader

Storable PhysicalDeviceMeshShaderFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_mesh_shader

FromCStruct PhysicalDeviceMeshShaderFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_mesh_shader

ToCStruct PhysicalDeviceMeshShaderFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_mesh_shader

Zero PhysicalDeviceMeshShaderFeaturesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_mesh_shader

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

StructureType

Constructors

PhysicalDeviceMeshShaderPropertiesNV 

Fields

  • maxDrawMeshTasksCount :: Word32

    maxDrawMeshTasksCount is the maximum number of local workgroups that can be launched by a single draw mesh tasks command. See https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-mesh-shading.

  • maxTaskWorkGroupInvocations :: Word32

    maxTaskWorkGroupInvocations is the maximum total number of task shader invocations in a single local workgroup. The product of the X, Y, and Z sizes, as specified by the LocalSize execution mode in shader modules or by the object decorated by the WorkgroupSize decoration, must be less than or equal to this limit.

  • maxTaskWorkGroupSize :: (Word32, Word32, Word32)

    maxTaskWorkGroupSize[3] is the maximum size of a local task workgroup. These three values represent the maximum local workgroup size in the X, Y, and Z dimensions, respectively. The x, y, and z sizes, as specified by the LocalSize execution mode or by the object decorated by the WorkgroupSize decoration in shader modules, must be less than or equal to the corresponding limit.

  • maxTaskTotalMemorySize :: Word32

    maxTaskTotalMemorySize is the maximum number of bytes that the task shader can use in total for shared and output memory combined.

  • maxTaskOutputCount :: Word32

    maxTaskOutputCount is the maximum number of output tasks a single task shader workgroup can emit.

  • maxMeshWorkGroupInvocations :: Word32

    maxMeshWorkGroupInvocations is the maximum total number of mesh shader invocations in a single local workgroup. The product of the X, Y, and Z sizes, as specified by the LocalSize execution mode in shader modules or by the object decorated by the WorkgroupSize decoration, must be less than or equal to this limit.

  • maxMeshWorkGroupSize :: (Word32, Word32, Word32)

    maxMeshWorkGroupSize[3] is the maximum size of a local mesh workgroup. These three values represent the maximum local workgroup size in the X, Y, and Z dimensions, respectively. The x, y, and z sizes, as specified by the LocalSize execution mode or by the object decorated by the WorkgroupSize decoration in shader modules, must be less than or equal to the corresponding limit.

  • maxMeshTotalMemorySize :: Word32

    maxMeshTotalMemorySize is the maximum number of bytes that the mesh shader can use in total for shared and output memory combined.

  • maxMeshOutputVertices :: Word32

    maxMeshOutputVertices is the maximum number of vertices a mesh shader output can store.

  • maxMeshOutputPrimitives :: Word32

    maxMeshOutputPrimitives is the maximum number of primitives a mesh shader output can store.

  • maxMeshMultiviewViewCount :: Word32

    maxMeshMultiviewViewCount is the maximum number of multi-view views a mesh shader can use.

  • meshOutputPerVertexGranularity :: Word32

    meshOutputPerVertexGranularity is the granularity with which mesh vertex outputs are allocated. The value can be used to compute the memory size used by the mesh shader, which must be less than or equal to maxMeshTotalMemorySize.

  • meshOutputPerPrimitiveGranularity :: Word32

    meshOutputPerPrimitiveGranularity is the granularity with which mesh outputs qualified as per-primitive are allocated. The value can be used to compute the memory size used by the mesh shader, which must be less than or equal to maxMeshTotalMemorySize.

Instances

Instances details
Show PhysicalDeviceMeshShaderPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_mesh_shader

Storable PhysicalDeviceMeshShaderPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_mesh_shader

FromCStruct PhysicalDeviceMeshShaderPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_mesh_shader

ToCStruct PhysicalDeviceMeshShaderPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_mesh_shader

Zero PhysicalDeviceMeshShaderPropertiesNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_mesh_shader

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

cmdDrawMeshTasksIndirectNV

Constructors

DrawMeshTasksIndirectCommandNV 

Fields

Instances

Instances details
Show DrawMeshTasksIndirectCommandNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_mesh_shader

Storable DrawMeshTasksIndirectCommandNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_mesh_shader

FromCStruct DrawMeshTasksIndirectCommandNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_mesh_shader

ToCStruct DrawMeshTasksIndirectCommandNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_mesh_shader

Zero DrawMeshTasksIndirectCommandNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_mesh_shader

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 #