mirror of
https://github.com/status-im/Vulkan-Docs.git
synced 2025-01-11 06:25:59 +00:00
dd9919749a
* Update release number to 83. Public Issues: * Use [%inline] directive for all SVGs to reduce file size (public pull request 734). * Convert XML `value` aliases into \<alias> tags (public pull request 747). * Fix metadoc script showing non-selected extensions (public pull request 748). * Reapply public pull request 742 to make ename:VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT part of the graphices pipeline (public pull request 749). * Fix numerous typos related to accidental duplication of words (public pull request 760). * Fix `vk.xml` contact typos (public pull request 761). Internal Issues: * Add images to the <<Standard sample locations>> table (internal issue 1115). * Add a definition of "`Inherited from`" precision in the <<spirvenv-precision-operation, Precision and Operation of SPIR-V Instructions>> section (internal issue 1314). * Clarify that both built-in and user-defined variables count against the location limits for shader interfaces in the <<interfaces-iointerfaces-locations, Location Assignment>> section (internal issue 1316). * Merge "`required`" capabilities into the <<spirvenv-capabilities-table, list of optional: SPIR-V capabilities>> (internal issue 1320). * Relax the layout matching rules of descriptors referring to only a single aspect of a depth/stencil image, by reference to the new <<resources-image-layouts-matching-rule, Image Layout Matching Rules>> section (internal issue 1346). * Revert extension metadoc generator warning about name mismatches to a diagnostic, due to annoying warnings in build output for conscious choices we've made (internal issue 1351). Other Issues: * Reserve bits for pending vendor extensions. * Make Vulkan consistent with SPIR-V regarding code:DepthReplacing and code:FragDepth in the <<interfaces-builtin-variables, Built-In Variables>> section. * Add missing ChangeLog entries for the previous three spec updates.
109 lines
3.7 KiB
Plaintext
109 lines
3.7 KiB
Plaintext
include::meta/VK_AMD_shader_core_properties.txt[]
|
|
|
|
*Last Modified Date*::
|
|
2018-02-15
|
|
*IP Status*::
|
|
No known IP claims.
|
|
*Contributors*::
|
|
- Martin Dinkov, AMD
|
|
- Matthaeus Chajdas, AMD
|
|
|
|
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 Object Types
|
|
|
|
None.
|
|
|
|
=== New Enum Constants
|
|
|
|
* Extending ename:VkStructureType:
|
|
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD
|
|
|
|
=== New Enums
|
|
|
|
None.
|
|
|
|
=== New Structures
|
|
|
|
* slink:VkPhysicalDeviceShaderCorePropertiesAMD
|
|
|
|
=== New Functions
|
|
|
|
None.
|
|
|
|
=== Examples
|
|
|
|
This example retrieves the shader core properties for a physical device.
|
|
|
|
[source,c++]
|
|
----------------------------------------
|
|
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 1, 2018-02-15 (Martin Dinkov)
|
|
- Initial draft.
|