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

Vulkan.Extensions.VK_EXT_subgroup_size_control

Description

Name

VK_EXT_subgroup_size_control - device extension

VK_EXT_subgroup_size_control

Name String
VK_EXT_subgroup_size_control
Extension Type
Device extension
Registered Extension Number
226
Revision
2
Extension and Version Dependencies
  • Requires Vulkan 1.1
Contact

Other Extension Metadata

Last Modified Date
2019-03-05
Contributors
  • Jeff Bolz, NVIDIA
  • Jason Ekstrand, Intel
  • Sławek Grajewski, Intel
  • Jesse Hall, Google
  • Neil Henning, AMD
  • Daniel Koch, NVIDIA
  • Jeff Leger, Qualcomm
  • Graeme Leese, Broadcom
  • Allan MacKinnon, Google
  • Mariusz Merecki, Intel
  • Graham Wihlidal, Electronic Arts

Description

This extension enables an implementation to control the subgroup size by allowing a varying subgroup size and also specifying a required subgroup size.

It extends the subgroup support in Vulkan 1.1 to allow an implementation to expose a varying subgroup size. Previously Vulkan exposed a single subgroup size per physical device, with the expectation that implementations will behave as if all subgroups have the same size. Some implementations may dispatch shaders with a varying subgroup size for different subgroups. As a result they could implicitly split a large subgroup into smaller subgroups or represent a small subgroup as a larger subgroup, some of whose invocations were inactive on launch.

To aid developers in understanding the performance characteristics of their programs, this extension exposes a minimum and maximum subgroup size that a physical device supports and a pipeline create flag to enable that pipeline to vary its subgroup size. If enabled, any SubgroupSize decorated variables in the SPIR-V shader modules provided to pipeline creation may vary between the minimum and maximum subgroup sizes.

An implementation is also optionally allowed to support specifying a required subgroup size for a given pipeline stage. Implementations advertise which stages support a required subgroup size, and any pipeline of a supported stage can be passed a PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT structure to set the subgroup size for that shader stage of the pipeline. For compute shaders, this requires the developer to query the maxComputeWorkgroupSubgroups and ensure that:

\[s = { WorkGroupSize.x \times WorkGroupSize.y \times WorkgroupSize.z \leq SubgroupSize \times maxComputeWorkgroupSubgroups }\]

Developers can also specify a new pipeline shader stage create flag that requires the implementation to have fully populated subgroups within local workgroups. This requires the workgroup size in the X dimension to be a multiple of the subgroup size.

New Structures

New Enum Constants

Version History

  • Revision 1, 2019-03-05 (Neil Henning)

    • Initial draft

See Also

PhysicalDeviceSubgroupSizeControlFeaturesEXT, PhysicalDeviceSubgroupSizeControlPropertiesEXT, PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT

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

Documentation

data PhysicalDeviceSubgroupSizeControlFeaturesEXT Source #

VkPhysicalDeviceSubgroupSizeControlFeaturesEXT - Structure describing the subgroup size control features that can be supported by an implementation

Members

This structure describes the following features:

Description

If the PhysicalDeviceSubgroupSizeControlFeaturesEXT structure is included in the pNext chain of the PhysicalDeviceFeatures2 structure passed to getPhysicalDeviceFeatures2, it is filled in to indicate whether each corresponding feature is supported. PhysicalDeviceSubgroupSizeControlFeaturesEXT can also be used in the pNext chain of DeviceCreateInfo to selectively enable these features.

Note

The PhysicalDeviceSubgroupSizeControlFeaturesEXT structure was added in version 2 of the VK_EXT_subgroup_size_control extension. Version 1 implementations of this extension will not fill out the features structure but applications may assume that both subgroupSizeControl and computeFullSubgroups are supported if the extension is supported. (See also the Feature Requirements section.) Applications are advised to add a PhysicalDeviceSubgroupSizeControlFeaturesEXT structure to the pNext chain of DeviceCreateInfo to enable the features regardless of the version of the extension supported by the implementation. If the implementation only supports version 1, it will safely ignore the PhysicalDeviceSubgroupSizeControlFeaturesEXT structure.

Valid Usage (Implicit)

See Also

VK_EXT_subgroup_size_control, Bool32, StructureType

Constructors

PhysicalDeviceSubgroupSizeControlFeaturesEXT 

Fields

Instances

Instances details
Eq PhysicalDeviceSubgroupSizeControlFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_subgroup_size_control

Show PhysicalDeviceSubgroupSizeControlFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_subgroup_size_control

Storable PhysicalDeviceSubgroupSizeControlFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_subgroup_size_control

FromCStruct PhysicalDeviceSubgroupSizeControlFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_subgroup_size_control

ToCStruct PhysicalDeviceSubgroupSizeControlFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_subgroup_size_control

Zero PhysicalDeviceSubgroupSizeControlFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_subgroup_size_control

data PhysicalDeviceSubgroupSizeControlPropertiesEXT Source #

VkPhysicalDeviceSubgroupSizeControlPropertiesEXT - Structure describing the control subgroup size properties of an implementation

Description

If the PhysicalDeviceSubgroupSizeControlPropertiesEXT structure is included in the pNext chain of the PhysicalDeviceProperties2 structure passed to getPhysicalDeviceProperties2, it is filled in with each corresponding implementation-dependent property.

If PhysicalDeviceSubgroupProperties::supportedOperations includes https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subgroup-quad, minSubgroupSize must be greater than or equal to 4.

Valid Usage (Implicit)

See Also

VK_EXT_subgroup_size_control, ShaderStageFlags, StructureType

Constructors

PhysicalDeviceSubgroupSizeControlPropertiesEXT 

Fields

Instances

Instances details
Eq PhysicalDeviceSubgroupSizeControlPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_subgroup_size_control

Show PhysicalDeviceSubgroupSizeControlPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_subgroup_size_control

Storable PhysicalDeviceSubgroupSizeControlPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_subgroup_size_control

FromCStruct PhysicalDeviceSubgroupSizeControlPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_subgroup_size_control

ToCStruct PhysicalDeviceSubgroupSizeControlPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_subgroup_size_control

Zero PhysicalDeviceSubgroupSizeControlPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_subgroup_size_control

data PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT Source #

VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT - Structure specifying the required subgroup size of a newly created pipeline shader stage

Valid Usage

Description

If a PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT structure is included in the pNext chain of PipelineShaderStageCreateInfo, it specifies that the pipeline shader stage being compiled has a required subgroup size.

Valid Usage (Implicit)

See Also

VK_EXT_subgroup_size_control, StructureType

Constructors

PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT 

Fields

Instances

Instances details
Eq PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_subgroup_size_control

Show PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_subgroup_size_control

Storable PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_subgroup_size_control

FromCStruct PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_subgroup_size_control

ToCStruct PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_subgroup_size_control

Zero PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_subgroup_size_control

type EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" Source #