diff options
author | Samuel Pitoiset <[email protected]> | 2018-04-06 12:40:33 +0200 |
---|---|---|
committer | Samuel Pitoiset <[email protected]> | 2018-04-09 14:28:13 +0200 |
commit | 56a4d03b0cbc4477e8074652919994b3eaac0b94 (patch) | |
tree | 75ce8f912e2a47eda13ddd56cebc4cd12c10a821 /src/amd/vulkan | |
parent | 466aba9fa2fd18ffbd9ca2377a51f18a0b9ed11f (diff) |
radv: implement VK_AMD_shader_core_properties
Simple extension that only returns information for AMD hw.
Signed-off-by: Samuel Pitoiset <[email protected]>
Reviewed-by: Bas Nieuwenhuizen <[email protected]>
Diffstat (limited to 'src/amd/vulkan')
-rw-r--r-- | src/amd/vulkan/radv_device.c | 40 | ||||
-rw-r--r-- | src/amd/vulkan/radv_extensions.py | 1 |
2 files changed, 41 insertions, 0 deletions
diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index de184603eb0..4fc7392e65e 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -961,6 +961,46 @@ 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 = + pdevice->rad_info.num_good_compute_units / + (pdevice->rad_info.max_se * + pdevice->rad_info.max_sh_per_se); + 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 bc63a34896a..a25db637e2b 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), ] |