vulkan-3.8.1: Bindings to the Vulkan graphics API.
Safe HaskellNone
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
Extension and Version Dependencies
  • Requires Vulkan 1.0
  • Requires 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

Members

The members of the PhysicalDeviceShaderCorePropertiesAMD structure describe the following implementation-dependent limits:

Description

If the PhysicalDeviceShaderCorePropertiesAMD structure is included in the pNext chain of PhysicalDeviceProperties2, it is filled with the implementation-dependent limits.

Valid Usage (Implicit)

See Also

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 buffers). 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
Eq 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

Storable 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 #