From a297624182218b24d5accb975101448b0bf97077 Mon Sep 17 00:00:00 2001 From: Emma Anholt Date: Thu, 27 Jul 2023 16:24:26 -0700 Subject: [PATCH] freedreno/a5xx: Skip emitting unused texture descriptors for images. In that case, we'd emit it to DST_OFF=255+i, angering the hardware mightily. This was missed in the addition of a6xx image support. Fixes: 2e0ea3f09c79 ("freedreno/ir3: add image/ssbo <-> ibo/tex mapping") Part-of: --- src/freedreno/ci/freedreno-a530-fails.txt | 141 +------------------------ src/freedreno/ci/freedreno-a530-flakes.txt | 18 ---- src/gallium/drivers/freedreno/a5xx/fd5_image.c | 3 +- 3 files changed, 4 insertions(+), 158 deletions(-) diff --git a/src/freedreno/ci/freedreno-a530-fails.txt b/src/freedreno/ci/freedreno-a530-fails.txt index 8c5c848..53150bd 100644 --- a/src/freedreno/ci/freedreno-a530-fails.txt +++ b/src/freedreno/ci/freedreno-a530-fails.txt @@ -222,16 +222,6 @@ KHR-GLES31.core.arrays_of_arrays.InteractionFunctionCalls2,Fail KHR-GLES31.core.draw_indirect.advanced-twoPass-transformFeedback-arrays,Fail KHR-GLES31.core.draw_indirect.advanced-twoPass-transformFeedback-elements,Fail - -# Seems to be applying clamp_to_edge at the wrong time? -KHR-GLES31.core.gpu_shader5.texture_gather_offset_color_clamp_to_edge,Fail -KHR-GLES31.core.gpu_shader5.texture_gather_offset_depth_clamp_edge,Fail - -# "drawTestCompute failed expected: RGBA(4, 3, 2, 1) actual: RGBA(0, 255, 0, 255)" -KHR-GLES31.core.layout_binding.sampler2DArray_layout_binding_texture_ComputeShader,Fail -KHR-GLES31.core.layout_binding.sampler2D_layout_binding_texture_ComputeShader,Fail -KHR-GLES31.core.layout_binding.sampler3D_layout_binding_texture_ComputeShader,Fail - KHR-GLES31.core.shader_atomic_counters.advanced-usage-multidim-array-large,Fail @@ -537,62 +527,9 @@ dEQP-GLES31.functional.compute.basic.image_atomic_op_local_size_1,Fail dEQP-GLES31.functional.compute.basic.image_atomic_op_local_size_8,Fail dEQP-GLES31.functional.compute.indirect_dispatch.gen_in_compute.multi_dispatch_reuse_command,Fail -dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.r32f_rgba8_snorm,Fail -dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8_rgba8_snorm,Fail -dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8_snorm_r32f,Fail -dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8_snorm_rgba8,Fail -dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8_snorm_rgba8i,Fail -dEQP-GLES31.functional.image_load_store.2d_array.load_store.rgba16f_single_layer,Fail -dEQP-GLES31.functional.image_load_store.2d_array.load_store.rgba32f_single_layer,Fail -dEQP-GLES31.functional.image_load_store.2d_array.load_store.rgba8_single_layer,Fail -dEQP-GLES31.functional.image_load_store.2d_array.store.rgba8_snorm_single_layer,Fail -dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.r32f_rgba8,Fail -dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.r32f_rgba8ui,Fail -dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba16f_rgba16i,Fail -dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba16f_rgba16ui,Fail -dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8_r32i,Fail -dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8_rgba8i,Fail -dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8_snorm_r32i,Fail -dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8_snorm_rgba8i,Fail -dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8_snorm_rgba8ui,Fail -dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.r32f_rgba8_snorm,Fail -dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba16f_rgba16i,Fail -dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba16f_rgba16ui,Fail -dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8_r32ui,Fail -dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8_snorm_r32i,Fail -dEQP-GLES31.functional.image_load_store.3d.store.r32f_single_layer,Fail -dEQP-GLES31.functional.image_load_store.3d.store.rgba16f_single_layer,Fail -dEQP-GLES31.functional.image_load_store.3d.store.rgba32f_single_layer,Fail -dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.r32f_rgba8_snorm,Fail -dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8_r32f,Fail -dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8_r32i,Fail -dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8_r32ui,Fail -dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8_snorm_r32f,Fail -dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8_snorm_r32i,Fail -dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8_snorm_r32ui,Fail -dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8_snorm_rgba8ui,Fail -dEQP-GLES31.functional.image_load_store.cube.load_store.r32f_single_layer,Fail -dEQP-GLES31.functional.image_load_store.cube.load_store.rgba16f_single_layer,Fail -dEQP-GLES31.functional.image_load_store.cube.load_store.rgba16f,Fail -dEQP-GLES31.functional.image_load_store.cube.load_store.rgba8_single_layer,Fail -dEQP-GLES31.functional.image_load_store.cube.load_store.rgba8_snorm_single_layer,Fail -dEQP-GLES31.functional.image_load_store.cube.qualifiers.volatile_r32f,Fail -dEQP-GLES31.functional.image_load_store.cube.store.r32f,Fail -dEQP-GLES31.functional.image_load_store.cube.store.rgba16f_single_layer,Fail -dEQP-GLES31.functional.image_load_store.cube.store.rgba16f,Fail -dEQP-GLES31.functional.image_load_store.cube.store.rgba32f_single_layer,Fail -dEQP-GLES31.functional.image_load_store.cube.store.rgba32f,Fail -dEQP-GLES31.functional.image_load_store.cube.store.rgba8_snorm_single_layer,Fail -dEQP-GLES31.functional.image_load_store.cube.store.rgba8_snorm,Fail -dEQP-GLES31.functional.image_load_store.cube.store.rgba8,Fail dEQP-GLES31.functional.layout_binding.ssbo.fragment_binding_max,Fail -dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct.sampler2D_samplerCube_both,Fail -dEQP-GLES31.functional.program_uniform.by_value.render.basic_array.sampler2D_fragment,Fail -dEQP-GLES31.functional.program_uniform.by_value.render.basic_struct.sampler2D_samplerCube_fragment,Fail dEQP-GLES31.functional.shaders.opaque_type_indexing.ssbo.const_expression_fragment,Fail dEQP-GLES31.functional.shaders.opaque_type_indexing.ssbo.const_literal_fragment,Fail -dEQP-GLES31.functional.srgb_texture_decode.skip_decode.sr8.skipped,Fail -dEQP-GLES31.functional.srgb_texture_decode.skip_decode.srg8.conversion_gpu,Fail dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.11,Fail dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.19,Fail dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.24,Fail @@ -613,84 +550,10 @@ dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.per_block_buffer.shared_ dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.per_block_buffer.std430_instance_array,Fail dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.single_buffer.packed_instance_array,Fail dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.single_buffer.std140_instance_array,Fail -dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.texture_swizzle.blue_alpha_zero_one,Fail -dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.texture_swizzle.red_green_blue_alpha,Fail -dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.base_level.level_1,Fail -dEQP-GLES31.functional.texture.gather.basic.cube.depth32f.no_corners.size_pot.compare_greater.clamp_to_edge_repeat,Fail -dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.size_npot.clamp_to_edge_repeat,Fail -dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.filter_mode.min_nearest_mipmap_nearest_mag_nearest,Fail - -dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_npot.compare_less.repeat_mirrored_repeat,Fail -dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_npot.clamp_to_edge_repeat,Fail -dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.filter_mode.min_nearest_mipmap_nearest_mag_nearest,Fail -dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.size_npot.mirrored_repeat_clamp_to_edge,Fail -dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.level_2,Fail -dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_npot.compare_greater.mirrored_repeat_clamp_to_edge,Fail -dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.size_pot.repeat_mirrored_repeat,Fail -dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8.size_npot.repeat_mirrored_repeat,Fail -dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8.size_pot.clamp_to_edge_repeat,Fail -dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.size_npot.compare_greater.repeat_mirrored_repeat,Fail -dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.size_pot.compare_greater.repeat_mirrored_repeat,Fail -dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.base_level.level_1,Fail -dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.size_pot.clamp_to_edge_repeat,Fail -dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.filter_mode.min_nearest_mipmap_linear_mag_linear,Fail -dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.size_npot.clamp_to_edge_repeat,Fail -dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.base_level.level_1,Fail -dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.size_npot.mirrored_repeat_clamp_to_edge,Fail -dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.depth32f.size_npot.compare_greater.clamp_to_edge_repeat,Fail -dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.depth32f.size_npot.compare_less.repeat_mirrored_repeat,Fail -dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8.size_pot.repeat_mirrored_repeat,Fail -dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8ui.size_npot.clamp_to_edge_repeat,Fail -dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.depth32f.base_level.level_2,Fail -dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8.texture_swizzle.one_red_green_blue,Fail -dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8i.texture_swizzle.one_red_green_blue,Fail -dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8ui.texture_swizzle.alpha_zero_one_red,Fail -dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.depth32f.size_pot.compare_less.repeat_mirrored_repeat,Fail -dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8ui.texture_swizzle.green_blue_alpha_zero,Fail -dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d_array.depth32f.size_npot.compare_less.mirrored_repeat_clamp_to_edge,Fail -dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.depth32f.size_npot.compare_less.mirrored_repeat_clamp_to_edge,Fail -dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.rgba8i.size_npot.clamp_to_edge_repeat,Fail -dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.rgba8ui.size_pot.mirrored_repeat_clamp_to_edge,Fail -dEQP-GLES31.functional.texture.multisample.samples_1.use_texture_depth_2d,Fail -dEQP-GLES31.functional.texture.multisample.samples_4.use_texture_int_2d_array,Fail -dEQP-GLES31.functional.texture.texture_buffer.modify.mapbuffer_readwrite.buffer_size_513,Fail -dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_index_array_as_fragment_texture.bufferdata,Fail -dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_index_array.mapbuffer_write,Fail -dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_vertex_texture.mapbuffer_readwrite,Fail -dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_index_array_as_fragment_texture.mapbuffer_readwrite,Fail -dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_vertex_texture_as_fragment_texture.offset_7_alignments,Fail -dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_fragment_texture.buffer_size_65537,Fail -dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.rgba8.size_npot.clamp_to_edge_repeat,Fail -dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_fragment_texture.range_size_65537,Fail -dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_vertex_texture_as_fragment_texture.offset_1_alignments,Fail -dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_texture_as_fragment_texture.offset_1_alignments,Fail -dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_texture_as_fragment_texture.offset_7_alignments,Fail -KHR-GLES31.core.compressed_format.format.signed_rg11_eac,Fail -KHR-GLES31.core.compressed_format.format.signed_r11_eac,Fail -KHR-GLES31.core.explicit_uniform_location.uniform-loc-types-samplers,Fail + KHR-GLES31.core.internalformat.copy_tex_image.alpha,Fail -KHR-GLES31.core.internalformat.texture2d.rgb_integer_short_rgb16i,Fail -KHR-GLES31.core.internalformat.texture2d.rgb_integer_unsigned_int_rgb32ui,Fail -KHR-GLES31.core.internalformat.texture2d.rgb_integer_unsigned_short_rgb16ui,Fail -KHR-GLES31.core.internalformat.texture2d.rgba_integer_unsigned_int_2_10_10_10_rev_rgb10_a2ui,Fail -KHR-GLES31.core.internalformat.texture2d.rgba_integer_unsigned_int_rgba32ui,Fail -KHR-GLES31.core.nearest_edge.offset_left,Fail -KHR-GLES31.core.nearest_edge.offset_right,Fail + KHR-GLES31.core.shader_image_load_store.basic-allTargets-loadStoreCS,Fail -KHR-GLES31.core.shader_image_load_store.basic-glsl-earlyFragTests,Fail KHR-GLES31.core.shader_storage_buffer_object.advanced-usage-operators-cs,Fail KHR-GLES31.core.shader_storage_buffer_object.basic-std140Layout-case3-cs,Fail KHR-GLES31.core.shader_storage_buffer_object.basic-std430Layout-case2-cs,Fail -KHR-GLES31.core.texture_buffer.texture_buffer_max_size,Fail -KHR-GLES31.core.texture_buffer.texture_buffer_operations_buffer_load,Fail -KHR-GLES31.core.texture_buffer.texture_buffer_operations_cpu_writes,Fail -KHR-GLES31.core.texture_buffer.texture_buffer_operations_image_store,Fail -KHR-GLES31.shaders.layout_location.sampler_2d,Fail -KHR-GLES31.shaders.layout_location.sampler_2d_array,Fail -KHR-GLES31.shaders.layout_location.sampler_2d_array_shadow,Fail -KHR-GLES31.shaders.layout_location.sampler_2d_shadow,Fail -KHR-GLES31.shaders.layout_location.sampler_cube,Fail -KHR-GLES31.shaders.layout_location.sampler_cube_shadow,Fail -KHR-GLES31.shaders.layout_location.usampler_2d,Fail -KHR-GLES31.shaders.layout_location.usampler_2d_array,Fail -KHR-GLES31.shaders.layout_location.usampler_3d,Fail diff --git a/src/freedreno/ci/freedreno-a530-flakes.txt b/src/freedreno/ci/freedreno-a530-flakes.txt index deef337..8a4e7e0 100644 --- a/src/freedreno/ci/freedreno-a530-flakes.txt +++ b/src/freedreno/ci/freedreno-a530-flakes.txt @@ -51,8 +51,6 @@ KHR-GLES31.core.shader_storage_buffer_object.basic-syntax-cs # (ci-fd-fastboot-nfs) dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.* -dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.filter_mode.min_nearest_mipmap_nearest_mag_linear - glx@glx-swap-event_interval glx@glx_arb_sync_control@swapbuffersmsc-divisor-zero glx@glx_arb_sync_control@waitformsc @@ -77,9 +75,6 @@ spec@arb_copy_buffer@copy_buffer_coherency # Flakes since introduction of piglit testing, possibly increased in frequency # around Apr 16 or more likely Apr 23 spec@arb_texture_gather@texturegather.* -# random unexpected pass of bunnch dEQP-GLES31.functional.texture -# See: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9333 -dEQP-GLES31.functional.texture.gather.* # Flakes since around Apr 30th on a clearly innocent MR. .*texwrap.formats.*bordercolor @@ -112,14 +107,6 @@ spec@ext_polygon_offset_clamp@ext_polygon_offset_clamp-draw_gles2 spec@ext_polygon_offset_clamp@ext_polygon_offset_clamp-draw_gles2@negative clamp dEQP-GLES31.functional.texture.multisample.samples_1.use_texture_depth_2d -dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_fragment_texture.offset_1_alignments -dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_vertex_texture_as_fragment_texture.offset_1_alignments -dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_texture_as_fragment_texture.offset_1_alignments -dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_fragment_texture.mapbuffer_write -dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_index_array.mapbuffer_write -dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_index_array_as_vertex_texture_as_fragment_texture.mapbuffer_readwrite -dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_vertex_texture.mapbuffer_readwrite -dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_index_array_as_fragment_texture.mapbuffer_readwrite # 1/10 run flake dEQP-GLES31.functional.atomic_counter.layout.default_offset_set.inc_dec.8_counters_5_calls_1_thread @@ -129,11 +116,6 @@ KHR-GLES31.core.internalformat.copy_tex_image.alpha KHR-GLES31.core.internalformat.texture2d.red_integer_int_r32i KHR-GLES31.core.internalformat.texture2d.rgb_integer_byte_rgb8i KHR-GLES31.core.internalformat.texture2d.rgb_integer_int_rgb32i -KHR-GLES31.core.texture_buffer.texture_buffer_conv_int_to_float -KHR-GLES31.core.texture_buffer.texture_buffer_operations_transform_feedback -KHR-GLES31.core.texture_buffer.texture_buffer_operations_ssbo_writes -KHR-GLES31.shaders.layout_location.isampler_2d -KHR-GLES31.shaders.layout_location.sampler_2d spec@glsl-1.10@execution@built-in-functions@fs-all-bvec4 spec@glsl-1.10@execution@built-in-functions@fs-op-assign-add-ivec4-int diff --git a/src/gallium/drivers/freedreno/a5xx/fd5_image.c b/src/gallium/drivers/freedreno/a5xx/fd5_image.c index f94a983..4088178 100644 --- a/src/gallium/drivers/freedreno/a5xx/fd5_image.c +++ b/src/gallium/drivers/freedreno/a5xx/fd5_image.c @@ -225,7 +225,8 @@ fd5_emit_images(struct fd_context *ctx, struct fd_ringbuffer *ring, translate_image(&img, &so->si[index]); - emit_image_tex(ring, m->image_to_tex[index] + m->tex_base, &img, shader); + if (m->image_to_tex[index] != IBO_INVALID) + emit_image_tex(ring, m->image_to_tex[index] + m->tex_base, &img, shader); emit_image_ssbo(ring, v->num_ssbos + index, &img, shader); } -- 2.7.4