From 0c30e0fa000946e69ff7cc1fb730d04f51526bcb Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Mon, 2 Jan 2023 09:21:32 -0800 Subject: [PATCH] freedreno/a6xx: Expose SSBO/image for all shader stages Now that we've removed the limitation of a single bindful IBO state, we can expose IBO support on all shader stages. Signed-off-by: Rob Clark Part-of: --- src/freedreno/ci/freedreno-a618-fails.txt | 7 ---- src/freedreno/ci/freedreno-a630-fails.txt | 35 ------------------- .../drivers/freedreno/freedreno_screen.c | 8 ++++- 3 files changed, 7 insertions(+), 43 deletions(-) diff --git a/src/freedreno/ci/freedreno-a618-fails.txt b/src/freedreno/ci/freedreno-a618-fails.txt index fa5cb104daf..628985a2461 100644 --- a/src/freedreno/ci/freedreno-a618-fails.txt +++ b/src/freedreno/ci/freedreno-a618-fails.txt @@ -10,7 +10,6 @@ KHR-GL45.shader_image_load_store.basic-allFormats-store,Fail KHR-GL45.shader_image_load_store.basic-allTargets-store,Fail KHR-GL45.shading_language_420pack.binding_images,Fail KHR-GL45.compute_shader.conditional-dispatching,Fail -KHR-GL45.vertex_attrib_binding.advanced-largeStrideAndOffsetsNewAndLegacyAPI,Fail KHR-GL45.buffer_storage.map_persistent_draw,Fail # Lots of errors like "[279] Check failed. Received: [3,0,0,2] instead of: [5,0,0,2]" @@ -35,12 +34,6 @@ KHR-GL45.texture_cube_map_array.color_depth_attachments,Fail # Various limits we cannot or do not support: KHR-GL45.limits.max_vertex_streams,Fail -# Shader compile fails: -KHR-GL45.shader_atomic_counter_ops_tests.ShaderAtomicCounterOpsExchangeTestCase,Fail -KHR-GL45.shader_atomic_counter_ops_tests.ShaderAtomicCounterOpsMinMaxTestCase,Fail -KHR-GL45.shader_atomic_counter_ops_tests.ShaderAtomicCounterOpsAdditionSubstractionTestCase,Fail -KHR-GL45.shader_atomic_counter_ops_tests.ShaderAtomicCounterOpsBitwiseTestCase,Fail - # MESA: warning: sample averaging on fallback z24s8 blit when we shouldn't. KHR-GL45.direct_state_access.renderbuffers_storage_multisample,Fail diff --git a/src/freedreno/ci/freedreno-a630-fails.txt b/src/freedreno/ci/freedreno-a630-fails.txt index 39828776a8a..594449e1832 100644 --- a/src/freedreno/ci/freedreno-a630-fails.txt +++ b/src/freedreno/ci/freedreno-a630-fails.txt @@ -7,10 +7,8 @@ KHR-GL45.gpu_shader_fp64.builtin.mod_dvec3,Fail KHR-GL45.gpu_shader_fp64.builtin.mod_dvec4,Fail KHR-GL45.shader_subroutine.control_flow_and_returned_subroutine_values_used_as_subroutine_input,Fail KHR-GL45.shader_image_load_store.basic-allFormats-store,Fail -KHR-GL45.shader_image_load_store.basic-allTargets-store,Fail KHR-GL45.shading_language_420pack.binding_images,Fail KHR-GL45.compute_shader.conditional-dispatching,Fail -KHR-GL45.vertex_attrib_binding.advanced-largeStrideAndOffsetsNewAndLegacyAPI,Fail KHR-GL45.buffer_storage.map_persistent_draw,Fail # Lots of errors like "[279] Check failed. Received: [3,0,0,2] instead of: [5,0,0,2]" @@ -35,12 +33,6 @@ KHR-GL45.texture_cube_map_array.color_depth_attachments,Fail # Various limits we cannot or do not support: KHR-GL45.limits.max_vertex_streams,Fail -# Shader compile fails: -KHR-GL45.shader_atomic_counter_ops_tests.ShaderAtomicCounterOpsExchangeTestCase,Fail -KHR-GL45.shader_atomic_counter_ops_tests.ShaderAtomicCounterOpsMinMaxTestCase,Fail -KHR-GL45.shader_atomic_counter_ops_tests.ShaderAtomicCounterOpsAdditionSubstractionTestCase,Fail -KHR-GL45.shader_atomic_counter_ops_tests.ShaderAtomicCounterOpsBitwiseTestCase,Fail - # MESA: warning: sample averaging on fallback z24s8 blit when we shouldn't. KHR-GL45.direct_state_access.renderbuffers_storage_multisample,Fail @@ -122,11 +114,6 @@ spec@arb_point_sprite@arb_point_sprite-interactions 1.0,Fail spec@arb_program_interface_query@arb_program_interface_query-getprogramresourceindex,Fail spec@arb_program_interface_query@arb_program_interface_query-getprogramresourceindex@'vs_input2[1][0]' on GL_PROGRAM_INPUT,Fail spec@arb_program_interface_query@arb_program_interface_query-getprogramresourceindex@'vs_input2' on GL_PROGRAM_INPUT,Fail -spec@arb_program_interface_query@arb_program_interface_query-getprogramresourceiv,Fail -spec@arb_program_interface_query@arb_program_interface_query-resource-query,Fail -spec@arb_program_interface_query@arb_program_interface_query-resource-query@GL_ATOMIC_COUNTER_BUFFER,Fail -spec@arb_program_interface_query@arb_program_interface_query-resource-query@GL_BUFFER_VARIABLE,Fail -spec@arb_program_interface_query@arb_program_interface_query-resource-query@GL_SHADER_STORAGE_BLOCK,Fail spec@arb_sample_shading@samplemask 2@0.500000 mask_in_one,Fail spec@arb_sample_shading@samplemask 2@1.000000 mask_in_one,Fail spec@arb_sample_shading@samplemask 2 all@0.500000 mask_in_one,Fail @@ -156,34 +143,12 @@ spec@arb_sample_shading@samplemask 2@noms partition,Fail spec@arb_sample_shading@samplemask 4 all@noms partition,Fail spec@arb_sample_shading@samplemask 4@noms partition,Fail -spec@arb_shader_image_load_store@execution@image-array-out-of-bounds-access-load,Crash - # These 3 fails started to happen after piglit uprev with commit # 0ef03f824d1833a853d1a20b4be121089bb9246c spec@arb_shader_image_load_store@qualifiers,Fail spec@arb_shader_image_load_store@qualifiers@r8/permissive layout qualifiers/permissive access qualifiers/permissive binding test,Fail spec@arb_shader_image_load_store@qualifiers@r8/strict layout qualifiers/permissive access qualifiers/permissive binding test,Fail -spec@arb_shader_storage_buffer_object@array-ssbo-auto-binding,Fail -spec@arb_shader_storage_buffer_object@linker@instance-matching-shader-storage-blocks-member-array-size-mismatch,Fail - -# Test bug: https://gitlab.freedesktop.org/mesa/piglit/-/merge_requests/601#note_1154259 -# "Failed to link: -# error: Too many tessellation control shader atomic counters" -spec@arb_tessellation_shader@execution@invocation-counting-even,Fail -spec@arb_tessellation_shader@execution@invocation-counting-odd,Fail - -# Test bug: https://gitlab.freedesktop.org/mesa/piglit/-/merge_requests/601#note_1154259 -# "Failed to link: -# error: Too many tessellation control shader atomic counters" -spec@arb_tessellation_shader@execution@tcs-output-unmatched,Fail -spec@arb_tessellation_shader@execution@tcs-primitiveid,Fail - -# Test bug: https://gitlab.freedesktop.org/mesa/piglit/-/merge_requests/601#note_1154259 -# "Failed to link: -# error: Too many tessellation control shader atomic counters" -spec@arb_tessellation_shader@execution@tes-primitiveid,Fail - # ir3_nir_lower_tess.c:251: lower_block_to_explicit_output: Assertion `util_is_power_of_two_nonzero(nir_intrinsic_write_mask(intr) + 1)' failed. spec@arb_tessellation_shader@execution@tcs-input-read-mat,Crash diff --git a/src/gallium/drivers/freedreno/freedreno_screen.c b/src/gallium/drivers/freedreno/freedreno_screen.c index 0651840eed7..fafc188eaf9 100644 --- a/src/gallium/drivers/freedreno/freedreno_screen.c +++ b/src/gallium/drivers/freedreno/freedreno_screen.c @@ -719,7 +719,13 @@ fd_screen_get_shader_param(struct pipe_screen *pscreen, (1 << PIPE_SHADER_IR_TGSI)); case PIPE_SHADER_CAP_MAX_SHADER_BUFFERS: case PIPE_SHADER_CAP_MAX_SHADER_IMAGES: - if (is_a4xx(screen) || is_a5xx(screen) || is_a6xx(screen)) { + if (is_a6xx(screen)) { + if (param == PIPE_SHADER_CAP_MAX_SHADER_BUFFERS) { + return IR3_BINDLESS_SSBO_COUNT; + } else { + return IR3_BINDLESS_IMAGE_COUNT; + } + } else if (is_a4xx(screen) || is_a5xx(screen) || is_a6xx(screen)) { /* a5xx (and a4xx for that matter) has one state-block * for compute-shader SSBO's and another that is shared * by VS/HS/DS/GS/FS.. so to simplify things for now