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
``nodynamicbounds``
do not check OOB access for dynamic descriptors
``noeso``
disable VK_EXT_shader_object
``nofastclears``
disable fast color/depthstencil clears
``nofmask``
@ -1378,8 +1380,6 @@ RADV driver environment variables
enable wave64 for ray tracing shaders (GFX10-10.3)
``sam``
enable optimizations to move more driver internal objects to VRAM.
``shader_object``
enable experimental implementation of VK_EXT_shader_object
``transfer_queue``
enable experimental transfer queue support (GFX9+, not yet spec compliant)
``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_float2 DONE (anv, lvp, 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_subgroup_ballot DONE (anv, dzn, hasvk, lvp, nvk, radv, vn)
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_external_memory_dma_buf 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_OVERALL_MINUTES: 350
B2C_TIMEOUT_BOOT_RETRIES: 0
RADV_PERFTEST: shader_object
vkcts-polaris10-valve:
extends:
@ -184,7 +183,6 @@ vkcts-polaris10-valve:
GPU_VERSION: radv-polaris10-aco
B2C_TIMEOUT_BOOT_MINUTES: 70
B2C_TIMEOUT_OVERALL_MINUTES: 70
RADV_PERFTEST: shader_object
vkcts-vega10-valve:
extends:
@ -196,7 +194,6 @@ vkcts-vega10-valve:
GPU_VERSION: radv-vega10-aco
B2C_TIMEOUT_BOOT_MINUTES: 70
B2C_TIMEOUT_OVERALL_MINUTES: 70
RADV_PERFTEST: shader_object
vkcts-renoir-valve:
extends:
@ -208,7 +205,6 @@ vkcts-renoir-valve:
GPU_VERSION: radv-renoir-aco
B2C_TIMEOUT_BOOT_MINUTES: 130
B2C_TIMEOUT_OVERALL_MINUTES: 130
RADV_PERFTEST: shader_object
vkcts-navi10-valve:
parallel: 2
@ -218,7 +214,6 @@ vkcts-navi10-valve:
- .radv-valve-manual-rules
variables:
GPU_VERSION: radv-navi10-aco
RADV_PERFTEST: shader_object
vkcts-navi21-valve:
timeout: 35m
@ -231,7 +226,6 @@ vkcts-navi21-valve:
GPU_VERSION: radv-navi21-aco
B2C_TIMEOUT_BOOT_MINUTES: 30
B2C_TIMEOUT_OVERALL_MINUTES: 30
RADV_PERFTEST: shader_object
# Disabled due to its extremelly-broken nature
.vkcts-navi21-llvm-valve:
@ -252,7 +246,6 @@ vkcts-vangogh-valve:
timeout: 2h 10m
variables:
GPU_VERSION: radv-vangogh-aco
RADV_PERFTEST: shader_object
glcts-vangogh-valve:
extends:
@ -273,7 +266,6 @@ vkcts-navi31-valve:
variables:
GPU_VERSION: radv-navi31-aco
RADV_DEBUG: nomeshshader # Disable mesh shaders until task shaders stop hanging
RADV_PERFTEST: shader_object
############### Fossilize
radv-fossils:

View File

@ -58,6 +58,7 @@ enum {
RADV_DEBUG_NO_MESH_SHADER = 1ull << 42,
RADV_DEBUG_NO_NGG_GS = 1ull << 43,
RADV_DEBUG_NO_GS_FAST_LAUNCH_2 = 1ull << 44,
RADV_DEBUG_NO_ESO = 1ull << 45,
};
enum {
@ -75,9 +76,8 @@ enum {
RADV_PERFTEST_VIDEO_DECODE = 1u << 11,
RADV_PERFTEST_DMA_SHADERS = 1u << 12,
RADV_PERFTEST_TRANSFER_QUEUE = 1u << 13,
RADV_PERFTEST_SHADER_OBJECT = 1u << 14,
RADV_PERFTEST_NIR_CACHE = 1u << 15,
RADV_PERFTEST_RT_WAVE_32 = 1u << 16,
RADV_PERFTEST_NIR_CACHE = 1u << 14,
RADV_PERFTEST_RT_WAVE_32 = 1u << 15,
};
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},
{"nongg_gs", RADV_DEBUG_NO_NGG_GS},
{"nogsfastlaunch2", RADV_DEBUG_NO_GS_FAST_LAUNCH_2},
{"noeso", RADV_DEBUG_NO_ESO},
{NULL, 0}};
const char *
@ -95,7 +96,6 @@ static const struct debug_control radv_perftest_options[] = {{"localbos", RADV_P
{"video_decode", RADV_PERFTEST_VIDEO_DECODE},
{"dmashaders", RADV_PERFTEST_DMA_SHADERS},
{"transfer_queue", RADV_PERFTEST_TRANSFER_QUEUE},
{"shader_object", RADV_PERFTEST_SHADER_OBJECT},
{"nircache", RADV_PERFTEST_NIR_CACHE},
{"rtwave32", RADV_PERFTEST_RT_WAVE_32},
{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);
}
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
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_image_atomic_int64 = 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_subgroup_ballot = true,
.EXT_shader_subgroup_vote = true,

View File

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