Vulkan-Docs/appendices/VK_AMD_shader_core_properti...

109 lines
3.7 KiB
Plaintext
Raw Normal View History

Change log for March 5, 2018 Vulkan 1.1.72 spec update: * Update release number to 72. Github Issues: * Restructure the repository to put the specification `Makefile` and associated spec source material at the top level, `vk.xml` and associated scripts material in `xml/`, and generated include and source files in `include/vulkan/` and `src/ext_loader/`, respectively (public issue 436). * Add missing bullet point markup to flink:vkCmdCopyImage valid usage statement, so it gets a VUID assigned (public issue 627). * Fix broken links in a couple of extension appendices (public pull request 665). * Add the \<platform> tag to the index in section 4.1 of the registry schema documentation, and add the protect= attribute of \<extension> tags to the comments in `registry.rnc` (public issues 673, 678). * Add missing valid usage statements for sparse image interactions to flink:VkImageCreateInfo (public pull request 675). * Fix improper usage and grammar of "`can: not`" (public pull request 681). * Remove duplicate spec language and NOTE on present layout between the flink:vkAcquireNextImageKHR and flink:vkAcquireNextImage2KHR commands (public pull request 685). * Fix some typos and markup issues (public pull request 689; public issues 642, 667, 687). * Fix typo etext:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT -> ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT in the <<external-semaphore-handle-types-compatibility, External semaphore handle types compatibility>> table (public pull request 691). Internal Issues: * Remove the need for the "`noautovalidity`" attribute on extension structures in `vk.xml`. It is now implied by the "`structextends`" attribute instead (internal issue 942). * Replace uses of "`currently bound`" with "`bound`", since "`currently`" is redundant and distracting, and add a corresponding rule to the style guide (internal issue 993). * Fixed subtle issues with the last updates to flink:vkAcquireNextImageKHR language that had resulted in ambiguities (internal issue 1178). * Make it clear that only one query of a given type is allowed at a time by reordering valid usage statements for flink:vkCmdBeginQuery and flink:vkCmdEndQuery, and removing redundant ones (internal issue 1213). * Swapped OL1 and OL3 in `tessparamUL.svg` to match previous version, and fixed where "`(no edge)`" appears (internal issue 1215). Other Issues: * Fixed a minor problem with the valid usage statement extraction script, and corresponding markup in the spec source. New Extensions: * `VK_AMD_shader_core_properties` * `VK_EXT_descriptor_indexing` * `VK_NV_shader_subgroup_partitioned`
2018-04-05 11:24:56 +00:00
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.