mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 09:38:07 +02:00
radv: introduce RADV_EXPERIMENTAL envvar for experimental features
Abusing RADV_PERFTEST for experimental features doesn't make real sense, and I think we should stop doing that. The existing RADV_PERFTEST options like RADV_PERFTEST=transfer_queue still exists but they are marked as deprecated, they will be removed in future Mesa releases. Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40646>
This commit is contained in:
parent
83a7357d6a
commit
3324abad06
13 changed files with 91 additions and 35 deletions
|
|
@ -72,4 +72,4 @@ Consider recording a [GFXReconstruct](https://github.com/LunarG/gfxreconstruct/b
|
|||
|
||||
Does the issue reproduce with the LLVM backend (`RADV_DEBUG=llvm`) or on the AMDGPU-PRO drivers?
|
||||
|
||||
Does your environment set any of the variables `ACO_DEBUG`, `RADV_DEBUG`, and `RADV_PERFTEST`?
|
||||
Does your environment set any of the variables `ACO_DEBUG`, `RADV_DEBUG`, `RADV_PERFTEST` and `RADV_EXPERIMENTAL`?
|
||||
|
|
|
|||
|
|
@ -1557,21 +1557,14 @@ RADV driver environment variables
|
|||
|
||||
a comma-separated list of named flags, which do various things:
|
||||
|
||||
``bfloat16``
|
||||
enable bfloat16 cooperative matrix support on GFX11-11.5
|
||||
``cswave32``
|
||||
enable wave32 for compute shaders (GFX10+)
|
||||
``dccmsaa``
|
||||
enable DCC for MSAA images
|
||||
``dmashaders``
|
||||
upload shaders to invisible VRAM (might be useful for non-resizable BAR systems)
|
||||
``emulate_rt``
|
||||
forces ray-tracing to be emulated in software on GFX10_3+ and enables
|
||||
rt extensions with older hardware.
|
||||
``gewave32``
|
||||
enable wave32 for vertex/tess/geometry shaders (GFX10+)
|
||||
``hic``
|
||||
enable experimental implementation of VK_EXT_host_image_copy (GFX10+)
|
||||
``localbos``
|
||||
enable local BOs
|
||||
``lowlatencydec``
|
||||
|
|
@ -1594,6 +1587,22 @@ RADV driver environment variables
|
|||
enable wave64 for ray tracing shaders (GFX10+)
|
||||
``sam``
|
||||
enable optimizations to move more driver internal objects to VRAM.
|
||||
|
||||
Note that bfloat16, emulate_rt, hic, sparse, transfer_queue, video_decode
|
||||
and video_encode are deprecated and RADV_EXPERIMENTAL should be
|
||||
used instead.
|
||||
|
||||
.. envvar:: RADV_EXPERIMENTAL
|
||||
|
||||
a comma-separated list of named flags, which do various things:
|
||||
|
||||
``bfloat16``
|
||||
enable bfloat16 cooperative matrix support on GFX11-11.5
|
||||
``emulate_rt``
|
||||
forces ray-tracing to be emulated in software on GFX10_3+ and enables
|
||||
rt extensions with older hardware.
|
||||
``hic``
|
||||
enable experimental implementation of VK_EXT_host_image_copy (GFX10+)
|
||||
``sparse``
|
||||
enable experimental sparse binding and sparse residency on GPUs where we don't support it by default (pre Polaris)
|
||||
``transfer_queue``
|
||||
|
|
|
|||
|
|
@ -201,7 +201,7 @@ radv-polaris10-vkcts-full:
|
|||
CI_TRON_TIMEOUT__BOOT_CYCLE__RETRIES: 4
|
||||
CI_TRON_TIMEOUT__BOOT_CYCLE__MINUTES: 70
|
||||
CI_TRON_TIMEOUT__OVERALL__MINUTES: 90
|
||||
RADV_PERFTEST: video_decode,video_encode
|
||||
RADV_EXPERIMENTAL: video_decode,video_encode
|
||||
radv_enable_float16_gfx8: true
|
||||
|
||||
radv-vega10-vkcts-full:
|
||||
|
|
@ -212,7 +212,7 @@ radv-vega10-vkcts-full:
|
|||
timeout: 1h 15m
|
||||
variables:
|
||||
CI_TRON_TIMEOUT__OVERALL__MINUTES: 70
|
||||
RADV_PERFTEST: transfer_queue,video_decode,video_encode
|
||||
RADV_EXPERIMENTAL: transfer_queue,video_decode,video_encode
|
||||
|
||||
radv-renoir-vkcts-full:
|
||||
extends:
|
||||
|
|
@ -222,7 +222,7 @@ radv-renoir-vkcts-full:
|
|||
timeout: 2h 15m
|
||||
variables:
|
||||
CI_TRON_TIMEOUT__OVERALL__MINUTES: 130
|
||||
RADV_PERFTEST: transfer_queue
|
||||
RADV_EXPERIMENTAL: transfer_queue
|
||||
FDO_CI_CONCURRENT: 12 # HACK: Reduce the memory pressure
|
||||
|
||||
radv-navi10-vkcts-full:
|
||||
|
|
@ -232,7 +232,7 @@ radv-navi10-vkcts-full:
|
|||
- .navi10-test-valve-kws
|
||||
- .radv-valve-manual-rules
|
||||
variables:
|
||||
RADV_PERFTEST: transfer_queue,hic
|
||||
RADV_EXPERIMENTAL: transfer_queue,hic
|
||||
|
||||
radv-navi21-vkcts:
|
||||
timeout: 35m
|
||||
|
|
@ -243,7 +243,7 @@ radv-navi21-vkcts:
|
|||
- .radv-valve-rules
|
||||
variables:
|
||||
CI_TRON_TIMEOUT__OVERALL__MINUTES: 30
|
||||
RADV_PERFTEST: transfer_queue,hic
|
||||
RADV_EXPERIMENTAL: transfer_queue,hic
|
||||
|
||||
radv-navi21-vkcts-full:
|
||||
timeout: 50m
|
||||
|
|
@ -253,7 +253,7 @@ radv-navi21-vkcts-full:
|
|||
- .radv-valve-manual-rules
|
||||
variables:
|
||||
CI_TRON_TIMEOUT__OVERALL__MINUTES: 45
|
||||
RADV_PERFTEST: transfer_queue,hic
|
||||
RADV_EXPERIMENTAL: transfer_queue,hic
|
||||
|
||||
radv-vangogh-vkcts-full:
|
||||
parallel: 2
|
||||
|
|
@ -263,7 +263,7 @@ radv-vangogh-vkcts-full:
|
|||
- .radv-valve-manual-rules
|
||||
timeout: 90m
|
||||
variables:
|
||||
RADV_PERFTEST: transfer_queue,hic
|
||||
RADV_EXPERIMENTAL: transfer_queue,hic
|
||||
CI_TRON_TIMEOUT__OVERALL__MINUTES: 89
|
||||
|
||||
radeonsi-vangogh-glcts:
|
||||
|
|
@ -297,7 +297,7 @@ radv-raphael-vkcts-full:
|
|||
timeout: 45m
|
||||
variables:
|
||||
CI_TRON_TIMEOUT__OVERALL__MINUTES: 40
|
||||
RADV_PERFTEST: transfer_queue,hic
|
||||
RADV_EXPERIMENTAL: transfer_queue,hic
|
||||
|
||||
radv-navi31-vkcts:
|
||||
timeout: 25m
|
||||
|
|
@ -308,7 +308,7 @@ radv-navi31-vkcts:
|
|||
- .radv-valve-rules
|
||||
variables:
|
||||
RADV_DEBUG: nomeshshader # Disable mesh shaders until task shaders stop hanging
|
||||
RADV_PERFTEST: transfer_queue,hic
|
||||
RADV_EXPERIMENTAL: transfer_queue,hic
|
||||
CI_TRON_TIMEOUT__OVERALL__MINUTES: 20
|
||||
|
||||
radv-navi31-vkcts-full:
|
||||
|
|
@ -318,7 +318,7 @@ radv-navi31-vkcts-full:
|
|||
- .navi31-test-valve
|
||||
- .radv-valve-manual-rules
|
||||
variables:
|
||||
RADV_PERFTEST: transfer_queue,hic
|
||||
RADV_EXPERIMENTAL: transfer_queue,hic
|
||||
CI_TRON_TIMEOUT__OVERALL__MINUTES: 25
|
||||
|
||||
radv-gfx1201-vkcts:
|
||||
|
|
@ -331,7 +331,7 @@ radv-gfx1201-vkcts:
|
|||
variables:
|
||||
# TODO: Verify that task shaders don't hang.
|
||||
RADV_DEBUG: nomeshshader
|
||||
RADV_PERFTEST: transfer_queue,hic
|
||||
RADV_EXPERIMENTAL: transfer_queue,hic
|
||||
CI_TRON_TIMEOUT__OVERALL__MINUTES: 20
|
||||
|
||||
radv-gfx1201-vkcts-full:
|
||||
|
|
@ -341,7 +341,7 @@ radv-gfx1201-vkcts-full:
|
|||
- .gfx1201-test-valve
|
||||
- .radv-valve-manual-rules
|
||||
variables:
|
||||
RADV_PERFTEST: transfer_queue,hic
|
||||
RADV_EXPERIMENTAL: transfer_queue,hic
|
||||
CI_TRON_TIMEOUT__OVERALL__MINUTES: 30
|
||||
|
||||
radv-gfx1201-fluster:
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# RADV_PERFTEST=video_decode,video_encode expected failures.
|
||||
# RADV_EXPERIMENTAL=video_decode,video_encode expected failures.
|
||||
dEQP-VK.video.synchronization.decode_h264.basic.event.device_set_reset,Fail
|
||||
dEQP-VK.video.synchronization.decode_h265.basic.event.device_set_reset,Fail
|
||||
dEQP-VK.video.synchronization2.decode_h264.basic.event.device_set_reset,Fail
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# RADV_PERFTEST=transfer_queue+vk_require_etc2=true regressions since 3d803d7a2e0e7d46c04381896168c344d59d88e4
|
||||
# RADV_EXPERIMENTAL=transfer_queue+vk_require_etc2=true regressions since 3d803d7a2e0e7d46c04381896168c344d59d88e4
|
||||
dEQP-VK.api.copy_and_blit.copy_commands2.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11_snorm_block_64x192,Fail
|
||||
dEQP-VK.api.copy_and_blit.copy_commands2.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11_snorm_block_64x192_2_layers,Fail
|
||||
dEQP-VK.api.copy_and_blit.copy_commands2.image_to_buffer_transfer_queue.2d_images.mip_copies_eac_r11_snorm_block_64x192_5_layers,Fail
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# RADV_PERFTEST=video_decode,video_encode expected failures.
|
||||
# RADV_EXPERIMENTAL=video_decode,video_encode expected failures.
|
||||
dEQP-VK.video.synchronization.decode_h264.basic.event.device_set_reset,Fail
|
||||
dEQP-VK.video.synchronization.decode_h265.basic.event.device_set_reset,Fail
|
||||
dEQP-VK.video.synchronization2.decode_h264.basic.event.device_set_reset,Fail
|
||||
|
|
|
|||
|
|
@ -78,6 +78,9 @@ enum {
|
|||
RADV_DEBUG_DUMP_NIR | RADV_DEBUG_DUMP_ASM | RADV_DEBUG_DUMP_BACKEND_IR,
|
||||
};
|
||||
|
||||
/* emulate_rt, video_decode, transfer_queue, video_encode, hic, sparse and bfloat16 are deprecated,
|
||||
* use RADV_EXPERIMENTAL instead.
|
||||
*/
|
||||
enum {
|
||||
RADV_PERFTEST_LOCAL_BOS = 1u << 0,
|
||||
RADV_PERFTEST_DCC_MSAA = 1u << 1,
|
||||
|
|
@ -103,6 +106,16 @@ enum {
|
|||
RADV_PERFTEST_LOWLATENCYENC = 1u << 21,
|
||||
};
|
||||
|
||||
enum {
|
||||
RADV_EXPERIMENTAL_EMULATE_RT = 1u << 0,
|
||||
RADV_EXPERIMENTAL_VIDEO_DECODE = 1u << 1,
|
||||
RADV_EXPERIMENTAL_TRANSFER_QUEUE = 1u << 2,
|
||||
RADV_EXPERIMENTAL_VIDEO_ENCODE = 1u << 3,
|
||||
RADV_EXPERIMENTAL_HIC = 1u << 4,
|
||||
RADV_EXPERIMENTAL_SPARSE = 1u << 5,
|
||||
RADV_EXPERIMENTAL_BFLOAT16 = 1u << 6,
|
||||
};
|
||||
|
||||
enum {
|
||||
RADV_TRAP_EXCP_MEM_VIOL = 1u << 0,
|
||||
RADV_TRAP_EXCP_FLOAT_DIV_BY_ZERO = 1u << 1,
|
||||
|
|
|
|||
|
|
@ -129,6 +129,17 @@ static const struct debug_control radv_perftest_options[] = {
|
|||
{NULL, 0},
|
||||
};
|
||||
|
||||
static const struct debug_control radv_experimental_options[] = {
|
||||
{"emulate_rt", RADV_EXPERIMENTAL_EMULATE_RT},
|
||||
{"video_decode", RADV_EXPERIMENTAL_VIDEO_DECODE},
|
||||
{"transfer_queue", RADV_EXPERIMENTAL_TRANSFER_QUEUE},
|
||||
{"video_encode", RADV_EXPERIMENTAL_VIDEO_ENCODE},
|
||||
{"hic", RADV_EXPERIMENTAL_HIC},
|
||||
{"sparse", RADV_EXPERIMENTAL_SPARSE},
|
||||
{"bfloat16", RADV_EXPERIMENTAL_BFLOAT16},
|
||||
{NULL, 0},
|
||||
};
|
||||
|
||||
static const struct debug_control radv_trap_excp_options[] = {
|
||||
{"mem_viol", RADV_TRAP_EXCP_MEM_VIOL},
|
||||
{"float_div_by_zero", RADV_TRAP_EXCP_FLOAT_DIV_BY_ZERO},
|
||||
|
|
@ -377,6 +388,27 @@ radv_parse_pstate(const char *str)
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
radv_convert_perftest_to_experimental(struct radv_instance *instance)
|
||||
{
|
||||
#define CONVERT(name, flag) \
|
||||
if (instance->perftest_flags & RADV_PERFTEST_##flag) { \
|
||||
fprintf(stderr, "radv: RADV_PERFTEST=" #name " is deprecated and will be removed in future Mesa releases. " \
|
||||
"Please use RADV_EXPERIMENTAL=" #name " instead.\n"); \
|
||||
instance->experimental_flags |= RADV_EXPERIMENTAL_##flag; \
|
||||
}
|
||||
|
||||
CONVERT(emulate_rt, EMULATE_RT);
|
||||
CONVERT(video_decode, VIDEO_DECODE);
|
||||
CONVERT(video_encode, VIDEO_ENCODE);
|
||||
CONVERT(transfer_queue, TRANSFER_QUEUE);
|
||||
CONVERT(hic, HIC);
|
||||
CONVERT(sparse, SPARSE);
|
||||
CONVERT(bfloat16, BFLOAT16);
|
||||
|
||||
#undef CONVERT
|
||||
}
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL
|
||||
radv_CreateInstance(const VkInstanceCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator,
|
||||
VkInstance *pInstance)
|
||||
|
|
@ -414,6 +446,7 @@ radv_CreateInstance(const VkInstanceCreateInfo *pCreateInfo, const VkAllocationC
|
|||
|
||||
instance->debug_flags = parse_debug_string(os_get_option("RADV_DEBUG"), radv_debug_options);
|
||||
instance->perftest_flags = parse_debug_string(os_get_option("RADV_PERFTEST"), radv_perftest_options);
|
||||
instance->experimental_flags = parse_debug_string(os_get_option("RADV_EXPERIMENTAL"), radv_experimental_options);
|
||||
instance->trap_excp_flags = parse_debug_string(os_get_option("RADV_TRAP_HANDLER_EXCP"), radv_trap_excp_options);
|
||||
instance->profile_pstate = radv_parse_pstate(debug_get_option("RADV_PROFILE_PSTATE", "peak"));
|
||||
|
||||
|
|
@ -452,6 +485,7 @@ radv_CreateInstance(const VkInstanceCreateInfo *pCreateInfo, const VkAllocationC
|
|||
|
||||
VG(VALGRIND_CREATE_MEMPOOL(instance, 0, false));
|
||||
|
||||
radv_convert_perftest_to_experimental(instance);
|
||||
radv_init_dri_options(instance);
|
||||
|
||||
*pInstance = radv_instance_to_handle(instance);
|
||||
|
|
|
|||
|
|
@ -99,6 +99,7 @@ struct radv_instance {
|
|||
|
||||
uint64_t debug_flags;
|
||||
uint64_t perftest_flags;
|
||||
uint64_t experimental_flags;
|
||||
uint64_t trap_excp_flags;
|
||||
enum radeon_ctx_pstate profile_pstate;
|
||||
|
||||
|
|
|
|||
|
|
@ -89,8 +89,7 @@ radv_sparse_enabled(const struct radv_physical_device *pdev)
|
|||
{
|
||||
const struct radv_instance *instance = radv_physical_device_instance(pdev);
|
||||
|
||||
return pdev->info.has_sparse ||
|
||||
(instance->perftest_flags & RADV_PERFTEST_SPARSE);
|
||||
return pdev->info.has_sparse || (instance->experimental_flags & RADV_EXPERIMENTAL_SPARSE);
|
||||
}
|
||||
|
||||
bool
|
||||
|
|
@ -100,7 +99,7 @@ radv_transfer_queue_enabled(const struct radv_physical_device *pdev)
|
|||
|
||||
/* Check if the GPU has SDMA support and transfer queues are allowed. */
|
||||
if (pdev->info.sdma_ip_version == SDMA_UNKNOWN || !pdev->info.ip[AMD_IP_SDMA].num_queues ||
|
||||
!(instance->perftest_flags & RADV_PERFTEST_TRANSFER_QUEUE))
|
||||
!(instance->experimental_flags & RADV_EXPERIMENTAL_TRANSFER_QUEUE))
|
||||
return false;
|
||||
|
||||
if (!pdev->info.has_gang_submit || !radv_compute_queue_enabled(pdev))
|
||||
|
|
@ -187,7 +186,7 @@ radv_bfloat16_enabled(const struct radv_physical_device *pdev)
|
|||
return false;
|
||||
|
||||
/* GFX11-11.5 has precision issues. */
|
||||
return (instance->perftest_flags & RADV_PERFTEST_BFLOAT16) || pdev->info.gfx_level >= GFX12;
|
||||
return (instance->experimental_flags & RADV_EXPERIMENTAL_BFLOAT16) || pdev->info.gfx_level >= GFX12;
|
||||
}
|
||||
|
||||
static bool
|
||||
|
|
@ -206,7 +205,7 @@ bool
|
|||
radv_host_image_copy_enabled(const struct radv_physical_device *pdev)
|
||||
{
|
||||
const struct radv_instance *instance = radv_physical_device_instance(pdev);
|
||||
return pdev->info.gfx_level >= GFX10 && (instance->perftest_flags & RADV_PERFTEST_HIC);
|
||||
return pdev->info.gfx_level >= GFX10 && (instance->experimental_flags & RADV_EXPERIMENTAL_HIC);
|
||||
}
|
||||
|
||||
bool
|
||||
|
|
@ -225,7 +224,7 @@ bool
|
|||
radv_emulate_rt(const struct radv_physical_device *pdev)
|
||||
{
|
||||
const struct radv_instance *instance = radv_physical_device_instance(pdev);
|
||||
if (instance->perftest_flags & RADV_PERFTEST_EMULATE_RT)
|
||||
if (instance->experimental_flags & RADV_EXPERIMENTAL_EMULATE_RT)
|
||||
return true;
|
||||
|
||||
/* Do not force emulated RT on GPUs that have native support. */
|
||||
|
|
|
|||
|
|
@ -240,7 +240,7 @@ radv_probe_video_decode(struct radv_physical_device *pdev)
|
|||
/* WRITE_MEMORY is needed for SetEvent and is required to pass CTS */
|
||||
pdev->video_decode_enabled = radv_video_write_memory_supported(pdev);
|
||||
|
||||
if (instance->perftest_flags & RADV_PERFTEST_VIDEO_DECODE) {
|
||||
if (instance->experimental_flags & RADV_EXPERIMENTAL_VIDEO_DECODE) {
|
||||
pdev->video_decode_enabled = true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ radv_probe_video_encode(struct radv_physical_device *pdev)
|
|||
return;
|
||||
}
|
||||
|
||||
pdev->video_encode_enabled = !!(instance->perftest_flags & RADV_PERFTEST_VIDEO_ENCODE);
|
||||
pdev->video_encode_enabled = !!(instance->experimental_flags & RADV_EXPERIMENTAL_VIDEO_ENCODE);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
|
|
@ -266,7 +266,7 @@ zink-radv-navi10-valve:
|
|||
HWCI_START_WESTON: 1
|
||||
CI_TRON_TIMEOUT__OVERALL__MINUTES: 30
|
||||
GPU_VERSION: zink-radv-navi10
|
||||
RADV_PERFTEST: hic
|
||||
RADV_EXPERIMENTAL: hic
|
||||
|
||||
zink-radv-vangogh-valve:
|
||||
timeout: 35m
|
||||
|
|
@ -283,7 +283,7 @@ zink-radv-vangogh-valve:
|
|||
CI_TRON_TIMEOUT__BOOT_CYCLE__MINUTES: 30
|
||||
CI_TRON_TIMEOUT__OVERALL__MINUTES: 30
|
||||
FDO_CI_CONCURRENT: 6
|
||||
RADV_PERFTEST: hic
|
||||
RADV_EXPERIMENTAL: hic
|
||||
|
||||
zink-radv-vangogh-traces:
|
||||
extends:
|
||||
|
|
@ -307,7 +307,7 @@ zink-radv-navi31-valve:
|
|||
HWCI_START_WESTON: 1
|
||||
GPU_VERSION: zink-radv-navi31
|
||||
CI_TRON_TIMEOUT__OVERALL__MINUTES: 10
|
||||
RADV_PERFTEST: hic
|
||||
RADV_EXPERIMENTAL: hic
|
||||
|
||||
zink-radv-cezanne:
|
||||
extends:
|
||||
|
|
@ -333,7 +333,7 @@ zink-radv-gfx1201-valve:
|
|||
HWCI_START_WESTON: 1
|
||||
GPU_VERSION: zink-radv-gfx1201
|
||||
CI_TRON_TIMEOUT__OVERALL__MINUTES: 10
|
||||
RADV_PERFTEST: hic
|
||||
RADV_EXPERIMENTAL: hic
|
||||
|
||||
zink-radv-gfx1201-traces:
|
||||
extends:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue