From 74955dbed74f15d96529195fcd6560b70c6b3cd8 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Mon, 8 Apr 2024 08:15:25 +0200 Subject: [PATCH] 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 Part-of: --- docs/envvars.rst | 4 ++-- docs/features.txt | 2 +- docs/relnotes/new_features.txt | 1 + src/amd/ci/gitlab-ci.yml | 8 -------- src/amd/vulkan/radv_debug.h | 6 +++--- src/amd/vulkan/radv_instance.c | 2 +- src/amd/vulkan/radv_physical_device.c | 9 +-------- src/gallium/drivers/zink/ci/gitlab-ci.yml | 4 ---- 8 files changed, 9 insertions(+), 27 deletions(-) diff --git a/docs/envvars.rst b/docs/envvars.rst index ddcd3515785fa..a68483ae35248 100644 --- a/docs/envvars.rst +++ b/docs/envvars.rst @@ -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`` diff --git a/docs/features.txt b/docs/features.txt index fce30df364a3c..2e0d3d2e11b69 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -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) diff --git a/docs/relnotes/new_features.txt b/docs/relnotes/new_features.txt index cc4df8447198e..228f5e132e303 100644 --- a/docs/relnotes/new_features.txt +++ b/docs/relnotes/new_features.txt @@ -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 diff --git a/src/amd/ci/gitlab-ci.yml b/src/amd/ci/gitlab-ci.yml index dbdbd1e57f47d..d92df6c0fdc2f 100644 --- a/src/amd/ci/gitlab-ci.yml +++ b/src/amd/ci/gitlab-ci.yml @@ -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: diff --git a/src/amd/vulkan/radv_debug.h b/src/amd/vulkan/radv_debug.h index 2e78371d6a733..5eda709af9067 100644 --- a/src/amd/vulkan/radv_debug.h +++ b/src/amd/vulkan/radv_debug.h @@ -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); diff --git a/src/amd/vulkan/radv_instance.c b/src/amd/vulkan/radv_instance.c index f3b03e7fc154b..70525478e3400 100644 --- a/src/amd/vulkan/radv_instance.c +++ b/src/amd/vulkan/radv_instance.c @@ -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}}; diff --git a/src/amd/vulkan/radv_physical_device.c b/src/amd/vulkan/radv_physical_device.c index 0a165bb0a32ae..3654cf5aa141f 100644 --- a/src/amd/vulkan/radv_physical_device.c +++ b/src/amd/vulkan/radv_physical_device.c @@ -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, diff --git a/src/gallium/drivers/zink/ci/gitlab-ci.yml b/src/gallium/drivers/zink/ci/gitlab-ci.yml index 555c51bde8f2c..5713b2ac5ad3d 100644 --- a/src/gallium/drivers/zink/ci/gitlab-ci.yml +++ b/src/gallium/drivers/zink/ci/gitlab-ci.yml @@ -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