radv: enable VK_EXT_shader_object by default

This has been a long and painful extension to implement but finally
RADV has support for it on all supported generations. It's passing
VKCTS and GLCTS through Zink but the number of application using ESO
is currently very limited.

This adds RADV_DEBUG=noeso to disable it for debugging purposes.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28374>
This commit is contained in:
Samuel Pitoiset 2024-04-08 08:15:25 +02:00 committed by Marge Bot
parent 6bf80841a8
commit 74955dbed7
8 changed files with 9 additions and 27 deletions

View File

@ -1279,6 +1279,8 @@ RADV driver environment variables
disable Delta Color Compression (DCC) on displayable images disable Delta Color Compression (DCC) on displayable images
``nodynamicbounds`` ``nodynamicbounds``
do not check OOB access for dynamic descriptors do not check OOB access for dynamic descriptors
``noeso``
disable VK_EXT_shader_object
``nofastclears`` ``nofastclears``
disable fast color/depthstencil clears disable fast color/depthstencil clears
``nofmask`` ``nofmask``
@ -1378,8 +1380,6 @@ RADV driver environment variables
enable wave64 for ray tracing shaders (GFX10-10.3) enable wave64 for ray tracing shaders (GFX10-10.3)
``sam`` ``sam``
enable optimizations to move more driver internal objects to VRAM. enable optimizations to move more driver internal objects to VRAM.
``shader_object``
enable experimental implementation of VK_EXT_shader_object
``transfer_queue`` ``transfer_queue``
enable experimental transfer queue support (GFX9+, not yet spec compliant) enable experimental transfer queue support (GFX9+, not yet spec compliant)
``video_decode`` ``video_decode``

View File

@ -619,7 +619,7 @@ Khronos extensions that are not part of any Vulkan version:
VK_EXT_shader_atomic_float DONE (anv, hasvk, lvp, radv) VK_EXT_shader_atomic_float DONE (anv, hasvk, lvp, radv)
VK_EXT_shader_atomic_float2 DONE (anv, lvp, radv) VK_EXT_shader_atomic_float2 DONE (anv, lvp, radv)
VK_EXT_shader_image_atomic_int64 DONE (nvk, radv) VK_EXT_shader_image_atomic_int64 DONE (nvk, radv)
VK_EXT_shader_object DONE (lvp, nvk) VK_EXT_shader_object DONE (lvp, nvk, radv)
VK_EXT_shader_stencil_export DONE (anv, lvp, radv, tu, vn) VK_EXT_shader_stencil_export DONE (anv, lvp, radv, tu, vn)
VK_EXT_shader_subgroup_ballot DONE (anv, dzn, hasvk, lvp, nvk, radv, vn) VK_EXT_shader_subgroup_ballot DONE (anv, dzn, hasvk, lvp, nvk, radv, vn)
VK_EXT_shader_subgroup_vote DONE (anv, dzn, hasvk, lvp, nvk, radv) VK_EXT_shader_subgroup_vote DONE (anv, dzn, hasvk, lvp, nvk, radv)

View File

@ -15,3 +15,4 @@ alphaToOne/extendedDynamicState3AlphaToOneEnable on RADV
VK_EXT_device_address_binding_report on RADV VK_EXT_device_address_binding_report on RADV
VK_EXT_external_memory_dma_buf for lavapipe VK_EXT_external_memory_dma_buf for lavapipe
VK_EXT_queue_family_foreign for lavapipe VK_EXT_queue_family_foreign for lavapipe
VK_EXT_shader_object on RADV

View File

@ -172,7 +172,6 @@ vkcts-tahiti-valve:
B2C_TIMEOUT_BOOT_MINUTES: 350 B2C_TIMEOUT_BOOT_MINUTES: 350
B2C_TIMEOUT_OVERALL_MINUTES: 350 B2C_TIMEOUT_OVERALL_MINUTES: 350
B2C_TIMEOUT_BOOT_RETRIES: 0 B2C_TIMEOUT_BOOT_RETRIES: 0
RADV_PERFTEST: shader_object
vkcts-polaris10-valve: vkcts-polaris10-valve:
extends: extends:
@ -184,7 +183,6 @@ vkcts-polaris10-valve:
GPU_VERSION: radv-polaris10-aco GPU_VERSION: radv-polaris10-aco
B2C_TIMEOUT_BOOT_MINUTES: 70 B2C_TIMEOUT_BOOT_MINUTES: 70
B2C_TIMEOUT_OVERALL_MINUTES: 70 B2C_TIMEOUT_OVERALL_MINUTES: 70
RADV_PERFTEST: shader_object
vkcts-vega10-valve: vkcts-vega10-valve:
extends: extends:
@ -196,7 +194,6 @@ vkcts-vega10-valve:
GPU_VERSION: radv-vega10-aco GPU_VERSION: radv-vega10-aco
B2C_TIMEOUT_BOOT_MINUTES: 70 B2C_TIMEOUT_BOOT_MINUTES: 70
B2C_TIMEOUT_OVERALL_MINUTES: 70 B2C_TIMEOUT_OVERALL_MINUTES: 70
RADV_PERFTEST: shader_object
vkcts-renoir-valve: vkcts-renoir-valve:
extends: extends:
@ -208,7 +205,6 @@ vkcts-renoir-valve:
GPU_VERSION: radv-renoir-aco GPU_VERSION: radv-renoir-aco
B2C_TIMEOUT_BOOT_MINUTES: 130 B2C_TIMEOUT_BOOT_MINUTES: 130
B2C_TIMEOUT_OVERALL_MINUTES: 130 B2C_TIMEOUT_OVERALL_MINUTES: 130
RADV_PERFTEST: shader_object
vkcts-navi10-valve: vkcts-navi10-valve:
parallel: 2 parallel: 2
@ -218,7 +214,6 @@ vkcts-navi10-valve:
- .radv-valve-manual-rules - .radv-valve-manual-rules
variables: variables:
GPU_VERSION: radv-navi10-aco GPU_VERSION: radv-navi10-aco
RADV_PERFTEST: shader_object
vkcts-navi21-valve: vkcts-navi21-valve:
timeout: 35m timeout: 35m
@ -231,7 +226,6 @@ vkcts-navi21-valve:
GPU_VERSION: radv-navi21-aco GPU_VERSION: radv-navi21-aco
B2C_TIMEOUT_BOOT_MINUTES: 30 B2C_TIMEOUT_BOOT_MINUTES: 30
B2C_TIMEOUT_OVERALL_MINUTES: 30 B2C_TIMEOUT_OVERALL_MINUTES: 30
RADV_PERFTEST: shader_object
# Disabled due to its extremelly-broken nature # Disabled due to its extremelly-broken nature
.vkcts-navi21-llvm-valve: .vkcts-navi21-llvm-valve:
@ -252,7 +246,6 @@ vkcts-vangogh-valve:
timeout: 2h 10m timeout: 2h 10m
variables: variables:
GPU_VERSION: radv-vangogh-aco GPU_VERSION: radv-vangogh-aco
RADV_PERFTEST: shader_object
glcts-vangogh-valve: glcts-vangogh-valve:
extends: extends:
@ -273,7 +266,6 @@ vkcts-navi31-valve:
variables: variables:
GPU_VERSION: radv-navi31-aco GPU_VERSION: radv-navi31-aco
RADV_DEBUG: nomeshshader # Disable mesh shaders until task shaders stop hanging RADV_DEBUG: nomeshshader # Disable mesh shaders until task shaders stop hanging
RADV_PERFTEST: shader_object
############### Fossilize ############### Fossilize
radv-fossils: radv-fossils:

View File

@ -58,6 +58,7 @@ enum {
RADV_DEBUG_NO_MESH_SHADER = 1ull << 42, RADV_DEBUG_NO_MESH_SHADER = 1ull << 42,
RADV_DEBUG_NO_NGG_GS = 1ull << 43, RADV_DEBUG_NO_NGG_GS = 1ull << 43,
RADV_DEBUG_NO_GS_FAST_LAUNCH_2 = 1ull << 44, RADV_DEBUG_NO_GS_FAST_LAUNCH_2 = 1ull << 44,
RADV_DEBUG_NO_ESO = 1ull << 45,
}; };
enum { enum {
@ -75,9 +76,8 @@ enum {
RADV_PERFTEST_VIDEO_DECODE = 1u << 11, RADV_PERFTEST_VIDEO_DECODE = 1u << 11,
RADV_PERFTEST_DMA_SHADERS = 1u << 12, RADV_PERFTEST_DMA_SHADERS = 1u << 12,
RADV_PERFTEST_TRANSFER_QUEUE = 1u << 13, RADV_PERFTEST_TRANSFER_QUEUE = 1u << 13,
RADV_PERFTEST_SHADER_OBJECT = 1u << 14, RADV_PERFTEST_NIR_CACHE = 1u << 14,
RADV_PERFTEST_NIR_CACHE = 1u << 15, RADV_PERFTEST_RT_WAVE_32 = 1u << 15,
RADV_PERFTEST_RT_WAVE_32 = 1u << 16,
}; };
bool radv_init_trace(struct radv_device *device); bool radv_init_trace(struct radv_device *device);

View File

@ -72,6 +72,7 @@ static const struct debug_control radv_debug_options[] = {{"nofastclears", RADV_
{"nomeshshader", RADV_DEBUG_NO_MESH_SHADER}, {"nomeshshader", RADV_DEBUG_NO_MESH_SHADER},
{"nongg_gs", RADV_DEBUG_NO_NGG_GS}, {"nongg_gs", RADV_DEBUG_NO_NGG_GS},
{"nogsfastlaunch2", RADV_DEBUG_NO_GS_FAST_LAUNCH_2}, {"nogsfastlaunch2", RADV_DEBUG_NO_GS_FAST_LAUNCH_2},
{"noeso", RADV_DEBUG_NO_ESO},
{NULL, 0}}; {NULL, 0}};
const char * const char *
@ -95,7 +96,6 @@ static const struct debug_control radv_perftest_options[] = {{"localbos", RADV_P
{"video_decode", RADV_PERFTEST_VIDEO_DECODE}, {"video_decode", RADV_PERFTEST_VIDEO_DECODE},
{"dmashaders", RADV_PERFTEST_DMA_SHADERS}, {"dmashaders", RADV_PERFTEST_DMA_SHADERS},
{"transfer_queue", RADV_PERFTEST_TRANSFER_QUEUE}, {"transfer_queue", RADV_PERFTEST_TRANSFER_QUEUE},
{"shader_object", RADV_PERFTEST_SHADER_OBJECT},
{"nircache", RADV_PERFTEST_NIR_CACHE}, {"nircache", RADV_PERFTEST_NIR_CACHE},
{"rtwave32", RADV_PERFTEST_RT_WAVE_32}, {"rtwave32", RADV_PERFTEST_RT_WAVE_32},
{NULL, 0}}; {NULL, 0}};

View File

@ -99,13 +99,6 @@ radv_calibrated_timestamps_enabled(const struct radv_physical_device *pdev)
return RADV_SUPPORT_CALIBRATED_TIMESTAMPS && !(pdev->info.family == CHIP_RAVEN || pdev->info.family == CHIP_RAVEN2); return RADV_SUPPORT_CALIBRATED_TIMESTAMPS && !(pdev->info.family == CHIP_RAVEN || pdev->info.family == CHIP_RAVEN2);
} }
static bool
radv_shader_object_enabled(const struct radv_physical_device *pdev)
{
const struct radv_instance *instance = radv_physical_device_instance(pdev);
return !pdev->use_llvm && instance->perftest_flags & RADV_PERFTEST_SHADER_OBJECT;
}
bool bool
radv_enable_rt(const struct radv_physical_device *pdev, bool rt_pipelines) radv_enable_rt(const struct radv_physical_device *pdev, bool rt_pipelines)
{ {
@ -655,7 +648,7 @@ radv_physical_device_get_supported_extensions(const struct radv_physical_device
.EXT_shader_demote_to_helper_invocation = true, .EXT_shader_demote_to_helper_invocation = true,
.EXT_shader_image_atomic_int64 = true, .EXT_shader_image_atomic_int64 = true,
.EXT_shader_module_identifier = true, .EXT_shader_module_identifier = true,
.EXT_shader_object = radv_shader_object_enabled(pdev), .EXT_shader_object = !pdev->use_llvm && !(instance->debug_flags & RADV_DEBUG_NO_ESO),
.EXT_shader_stencil_export = true, .EXT_shader_stencil_export = true,
.EXT_shader_subgroup_ballot = true, .EXT_shader_subgroup_ballot = true,
.EXT_shader_subgroup_vote = true, .EXT_shader_subgroup_vote = true,

View File

@ -110,7 +110,6 @@ zink-radv-polaris10-valve:
variables: variables:
GPU_VERSION: zink-radv-polaris10 GPU_VERSION: zink-radv-polaris10
ZINK_DEBUG: quiet ZINK_DEBUG: quiet
RADV_PERFTEST: shader_object
zink-radv-navi10-valve: zink-radv-navi10-valve:
extends: extends:
@ -121,7 +120,6 @@ zink-radv-navi10-valve:
variables: variables:
B2C_TIMEOUT_OVERALL_MINUTES: 30 B2C_TIMEOUT_OVERALL_MINUTES: 30
GPU_VERSION: zink-radv-navi10 GPU_VERSION: zink-radv-navi10
RADV_PERFTEST: shader_object
zink-radv-vangogh-valve: zink-radv-vangogh-valve:
timeout: 35m timeout: 35m
@ -137,7 +135,6 @@ zink-radv-vangogh-valve:
B2C_TIMEOUT_BOOT_MINUTES: 30 B2C_TIMEOUT_BOOT_MINUTES: 30
B2C_TIMEOUT_OVERALL_MINUTES: 30 B2C_TIMEOUT_OVERALL_MINUTES: 30
FDO_CI_CONCURRENT: 6 FDO_CI_CONCURRENT: 6
RADV_PERFTEST: shader_object
# Override the list of tags to drop `priority:low` # Override the list of tags to drop `priority:low`
tags: tags:
- farm:$RUNNER_FARM_LOCATION - farm:$RUNNER_FARM_LOCATION
@ -153,4 +150,3 @@ zink-radv-navi31-valve:
GPU_VERSION: zink-radv-navi31 GPU_VERSION: zink-radv-navi31
B2C_TIMEOUT_BOOT_MINUTES: 75 B2C_TIMEOUT_BOOT_MINUTES: 75
B2C_TIMEOUT_OVERALL_MINUTES: 75 B2C_TIMEOUT_OVERALL_MINUTES: 75
RADV_PERFTEST: shader_object