[Mesa-dev] [PATCH 4/4] radv: implement VK_AMD_shader_core_properties
Samuel Pitoiset
samuel.pitoiset at gmail.com
Fri Apr 6 13:14:28 UTC 2018
On 04/06/2018 03:01 PM, Nils Wallménius wrote:
> Hi Samuel, a question below
>
> Den fre 6 apr. 2018 14:28Samuel Pitoiset <samuel.pitoiset at gmail.com
> <mailto:samuel.pitoiset at gmail.com>> skrev:
>
> Simple extension that only returns information for AMD hw.
>
> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com
> <mailto:samuel.pitoiset at gmail.com>>
> ---
> src/amd/vulkan/radv_device.c | 71
> +++++++++++++++++++++++++++++++++++++++
> src/amd/vulkan/radv_extensions.py | 1 +
> 2 files changed, 72 insertions(+)
>
> diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
> index 41f8242754..fba0b5c586 100644
> --- a/src/amd/vulkan/radv_device.c
> +++ b/src/amd/vulkan/radv_device.c
> @@ -888,6 +888,39 @@ void radv_GetPhysicalDeviceProperties(
> memcpy(pProperties->pipelineCacheUUID, pdevice->cache_uuid,
> VK_UUID_SIZE);
> }
>
> +static uint32_t
> +radv_get_max_cu_per_sh(struct radv_physical_device *device)
> +{
> + /* This should be queried from the KMD, like the number of
> SEs. */
> + switch (device->rad_info.family) {
>
>
> Isn't Polaris missing from this switch?
You are right. I did try this too quickly.
>
> BR
> Nils
>
> + case CHIP_TAHITI:
> + return 8;
> + case CHIP_HAINAN:
> + return 5;
> + case CHIP_BONAIRE:
> + return 7;
> + case CHIP_HAWAII:
> + return 11;
> + case CHIP_ICELAND:
> + return 6;
> + case CHIP_CARRIZO:
> + return 8;
> + case CHIP_TONGA:
> + return 8;
> + case CHIP_FIJI:
> + return 16;
> + case CHIP_STONEY:
> + return 3;
> + case CHIP_VEGA10:
> + return 16;
> + case CHIP_RAVEN:
> + return 11;
> + default:
> + fprintf(stderr, "Number of CUs per SH unknown!\n");
> + return 0;
> + }
> +}
> +
> void radv_GetPhysicalDeviceProperties2(
> VkPhysicalDevice physicalDevice,
> VkPhysicalDeviceProperties2KHR *pProperties)
> @@ -961,6 +994,44 @@ void radv_GetPhysicalDeviceProperties2(
>
> properties->filterMinmaxSingleComponentFormats = true;
> break;
> }
> + case
> VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD: {
> + VkPhysicalDeviceShaderCorePropertiesAMD
> *properties =
> +
> (VkPhysicalDeviceShaderCorePropertiesAMD *)ext;
> +
> + /* Shader engines. */
> + properties->shaderEngineCount =
> + pdevice->rad_info.max_se;
> + properties->shaderArraysPerEngineCount =
> + pdevice->rad_info.max_sh_per_se;
> + properties->computeUnitsPerShaderArray =
> + radv_get_max_cu_per_sh(pdevice);
> + properties->simdPerComputeUnit = 4;
> + properties->wavefrontsPerSimd =
> + pdevice->rad_info.family ==
> CHIP_TONGA ||
> + pdevice->rad_info.family ==
> CHIP_ICELAND ||
> + pdevice->rad_info.family ==
> CHIP_POLARIS10 ||
> + pdevice->rad_info.family ==
> CHIP_POLARIS11 ||
> + pdevice->rad_info.family ==
> CHIP_POLARIS12 ? 8 : 10;
> + properties->wavefrontSize = 64;
> +
> + /* SGPR. */
> + properties->sgprsPerSimd =
> + radv_get_num_physical_sgprs(pdevice);
> + properties->minSgprAllocation =
> + pdevice->rad_info.chip_class >= VI ?
> 16 : 8;
> + properties->maxSgprAllocation =
> + pdevice->rad_info.family ==
> CHIP_TONGA ||
> + pdevice->rad_info.family ==
> CHIP_ICELAND ? 96 : 104;
> + properties->sgprAllocationGranularity =
> + pdevice->rad_info.chip_class >= VI ?
> 16 : 8;
> +
> + /* VGPR. */
> + properties->vgprsPerSimd =
> RADV_NUM_PHYSICAL_VGPRS;
> + properties->minVgprAllocation = 4;
> + properties->maxVgprAllocation = 256;
> + properties->vgprAllocationGranularity = 4;
> + break;
> + }
> default:
> break;
> }
> diff --git a/src/amd/vulkan/radv_extensions.py
> b/src/amd/vulkan/radv_extensions.py
> index bc63a34896..a25db637e2 100644
> --- a/src/amd/vulkan/radv_extensions.py
> +++ b/src/amd/vulkan/radv_extensions.py
> @@ -96,6 +96,7 @@ EXTENSIONS = [
> Extension('VK_AMD_draw_indirect_count', 1, True),
> Extension('VK_AMD_gcn_shader', 1, True),
> Extension('VK_AMD_rasterization_order', 1,
> 'device->has_out_of_order_rast'),
> + Extension('VK_AMD_shader_core_properties', 1, True),
> Extension('VK_AMD_shader_info', 1, True),
> Extension('VK_AMD_shader_trinary_minmax', 1, True),
> ]
> --
> 2.16.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org <mailto:mesa-dev at lists.freedesktop.org>
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
More information about the mesa-dev
mailing list