diff options
author | Samuel Pitoiset <[email protected]> | 2018-02-16 11:00:14 +0100 |
---|---|---|
committer | Samuel Pitoiset <[email protected]> | 2018-02-20 10:44:47 +0100 |
commit | b5d111ae763b672c141266760db55e83716d77f9 (patch) | |
tree | 51e10d77475366aa88d4f9d45725a6d657d192ff /src/amd/vulkan | |
parent | f386776ea55f86d0288c955cf4cf877a1b4a027d (diff) |
radv: allow to force family using RADV_FORCE_FAMILY
Useful for pipeline-db.
Signed-off-by: Samuel Pitoiset <[email protected]>
Reviewed-by: Dave Airlie <[email protected]>
Diffstat (limited to 'src/amd/vulkan')
-rw-r--r-- | src/amd/vulkan/radv_device.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index 09bb382eeb8..98cfd9b58a9 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -183,6 +183,37 @@ radv_physical_device_init_mem_types(struct radv_physical_device *device) device->memory_properties.memoryTypeCount = type_count; } +static void +radv_handle_env_var_force_family(struct radv_physical_device *device) +{ + const char *family = getenv("RADV_FORCE_FAMILY"); + unsigned i; + + if (!family) + return; + + for (i = CHIP_TAHITI; i < CHIP_LAST; i++) { + if (!strcmp(family, ac_get_llvm_processor_name(i))) { + /* Override family and chip_class. */ + device->rad_info.family = i; + + if (i >= CHIP_VEGA10) + device->rad_info.chip_class = GFX9; + else if (i >= CHIP_TONGA) + device->rad_info.chip_class = VI; + else if (i >= CHIP_BONAIRE) + device->rad_info.chip_class = CIK; + else + device->rad_info.chip_class = SI; + + return; + } + } + + fprintf(stderr, "radv: Unknown family: %s\n", family); + exit(1); +} + static VkResult radv_physical_device_init(struct radv_physical_device *device, struct radv_instance *instance, @@ -226,6 +257,8 @@ radv_physical_device_init(struct radv_physical_device *device, device->local_fd = fd; device->ws->query_info(device->ws, &device->rad_info); + radv_handle_env_var_force_family(device); + radv_get_device_name(device->rad_info.family, device->name, sizeof(device->name)); if (radv_device_get_cache_uuid(device->rad_info.family, device->cache_uuid)) { |