vulkan-3.26.1: Bindings to the Vulkan graphics API.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Vulkan.Extensions.VK_AMD_shader_core_properties

Description

Name

VK_AMD_shader_core_properties - device extension

VK_AMD_shader_core_properties

Name String
VK_AMD_shader_core_properties
Extension Type
Device extension
Registered Extension Number
186
Revision
2
Ratification Status
Not ratified
Extension and Version Dependencies
VK_KHR_get_physical_device_properties2
Contact

Other Extension Metadata

Last Modified Date
2019-06-25
IP Status
No known IP claims.
Contributors
  • Martin Dinkov, AMD
  • Matthaeus G. Chajdas, AMD

Description

This extension exposes shader core properties for a target physical device through the VK_KHR_get_physical_device_properties2 extension. Please refer to the example below for proper usage.

New Structures

New Enum Constants

Examples

This example retrieves the shader core properties for a physical device.

extern VkInstance       instance;

PFN_vkGetPhysicalDeviceProperties2 pfnVkGetPhysicalDeviceProperties2 =
    reinterpret_cast<PFN_vkGetPhysicalDeviceProperties2>
    (vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceProperties2") );

VkPhysicalDeviceProperties2             general_props;
VkPhysicalDeviceShaderCorePropertiesAMD shader_core_properties;

shader_core_properties.pNext = nullptr;
shader_core_properties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD;

general_props.pNext = &shader_core_properties;
general_props.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;

// After this call, shader_core_properties has been populated
pfnVkGetPhysicalDeviceProperties2(device, &general_props);

printf("Number of shader engines: %d\n",
    m_shader_core_properties.shader_engine_count =
    shader_core_properties.shaderEngineCount;
printf("Number of shader arrays: %d\n",
    m_shader_core_properties.shader_arrays_per_engine_count =
    shader_core_properties.shaderArraysPerEngineCount;
printf("Number of CUs per shader array: %d\n",
    m_shader_core_properties.compute_units_per_shader_array =
    shader_core_properties.computeUnitsPerShaderArray;
printf("Number of SIMDs per compute unit: %d\n",
    m_shader_core_properties.simd_per_compute_unit =
    shader_core_properties.simdPerComputeUnit;
printf("Number of wavefront slots in each SIMD: %d\n",
    m_shader_core_properties.wavefronts_per_simd =
    shader_core_properties.wavefrontsPerSimd;
printf("Number of threads per wavefront: %d\n",
    m_shader_core_properties.wavefront_size =
    shader_core_properties.wavefrontSize;
printf("Number of physical SGPRs per SIMD: %d\n",
    m_shader_core_properties.sgprs_per_simd =
    shader_core_properties.sgprsPerSimd;
printf("Minimum number of SGPRs that can be allocated by a wave: %d\n",
    m_shader_core_properties.min_sgpr_allocation =
    shader_core_properties.minSgprAllocation;
printf("Number of available SGPRs: %d\n",
    m_shader_core_properties.max_sgpr_allocation =
    shader_core_properties.maxSgprAllocation;
printf("SGPRs are allocated in groups of this size: %d\n",
    m_shader_core_properties.sgpr_allocation_granularity =
    shader_core_properties.sgprAllocationGranularity;
printf("Number of physical VGPRs per SIMD: %d\n",
    m_shader_core_properties.vgprs_per_simd =
    shader_core_properties.vgprsPerSimd;
printf("Minimum number of VGPRs that can be allocated by a wave: %d\n",
    m_shader_core_properties.min_vgpr_allocation =
    shader_core_properties.minVgprAllocation;
printf("Number of available VGPRs: %d\n",
    m_shader_core_properties.max_vgpr_allocation =
    shader_core_properties.maxVgprAllocation;
printf("VGPRs are allocated in groups of this size: %d\n",
    m_shader_core_properties.vgpr_allocation_granularity =
    shader_core_properties.vgprAllocationGranularity;

Version History

  • Revision 2, 2019-06-25 (Matthaeus G. Chajdas)

    • Clarified the meaning of a few fields.
  • Revision 1, 2018-02-15 (Martin Dinkov)

    • Initial draft.

See Also

PhysicalDeviceShaderCorePropertiesAMD

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 PhysicalDeviceShaderCorePropertiesAMD Source #

VkPhysicalDeviceShaderCorePropertiesAMD - Structure describing shader core properties that can be supported by an implementation

Description

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

Valid Usage (Implicit)

See Also

VK_AMD_shader_core_properties, StructureType

Constructors

PhysicalDeviceShaderCorePropertiesAMD 

Fields

  • shaderEngineCount :: Word32

    shaderEngineCount is an unsigned integer value indicating the number of shader engines found inside the shader core of the physical device.

  • shaderArraysPerEngineCount :: Word32

    shaderArraysPerEngineCount is an unsigned integer value indicating the number of shader arrays inside a shader engine. Each shader array has its own scan converter, set of compute units, and a render back end (color and depth attachments). Shader arrays within a shader engine share shader processor input (wave launcher) and shader export (export buffer) units. Currently, a shader engine can have one or two shader arrays.

  • computeUnitsPerShaderArray :: Word32

    computeUnitsPerShaderArray is an unsigned integer value indicating the physical number of compute units within a shader array. The active number of compute units in a shader array may be lower. A compute unit houses a set of SIMDs along with a sequencer module and a local data store.

  • simdPerComputeUnit :: Word32

    simdPerComputeUnit is an unsigned integer value indicating the number of SIMDs inside a compute unit. Each SIMD processes a single instruction at a time.

  • wavefrontsPerSimd :: Word32
     
  • wavefrontSize :: Word32

    wavefrontSize is an unsigned integer value indicating the maximum size of a subgroup.

  • sgprsPerSimd :: Word32

    sgprsPerSimd is an unsigned integer value indicating the number of physical Scalar General-Purpose Registers (SGPRs) per SIMD.

  • minSgprAllocation :: Word32

    minSgprAllocation is an unsigned integer value indicating the minimum number of SGPRs allocated for a wave.

  • maxSgprAllocation :: Word32

    maxSgprAllocation is an unsigned integer value indicating the maximum number of SGPRs allocated for a wave.

  • sgprAllocationGranularity :: Word32

    sgprAllocationGranularity is an unsigned integer value indicating the granularity of SGPR allocation for a wave.

  • vgprsPerSimd :: Word32

    vgprsPerSimd is an unsigned integer value indicating the number of physical Vector General-Purpose Registers (VGPRs) per SIMD.

  • minVgprAllocation :: Word32

    minVgprAllocation is an unsigned integer value indicating the minimum number of VGPRs allocated for a wave.

  • maxVgprAllocation :: Word32

    maxVgprAllocation is an unsigned integer value indicating the maximum number of VGPRs allocated for a wave.

  • vgprAllocationGranularity :: Word32

    vgprAllocationGranularity is an unsigned integer value indicating the granularity of VGPR allocation for a wave.

Instances

Instances details
Storable PhysicalDeviceShaderCorePropertiesAMD Source # 
Instance details

Defined in Vulkan.Extensions.VK_AMD_shader_core_properties

Show PhysicalDeviceShaderCorePropertiesAMD Source # 
Instance details

Defined in Vulkan.Extensions.VK_AMD_shader_core_properties

Eq PhysicalDeviceShaderCorePropertiesAMD Source # 
Instance details

Defined in Vulkan.Extensions.VK_AMD_shader_core_properties

FromCStruct PhysicalDeviceShaderCorePropertiesAMD Source # 
Instance details

Defined in Vulkan.Extensions.VK_AMD_shader_core_properties

ToCStruct PhysicalDeviceShaderCorePropertiesAMD Source # 
Instance details

Defined in Vulkan.Extensions.VK_AMD_shader_core_properties

Zero PhysicalDeviceShaderCorePropertiesAMD Source # 
Instance details

Defined in Vulkan.Extensions.VK_AMD_shader_core_properties

type AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" Source #