From f449edb6c1a93e0e11b3eeb99f8d4e151cf3c709 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: (cherry picked from commit a297624182218b24d5accb975101448b0bf97077) --- .pick_status.json | 2 +- src/freedreno/ci/freedreno-a530-fails.txt | 119 ------------------ src/freedreno/ci/freedreno-a530-flakes.txt | 2 - .../drivers/freedreno/a5xx/fd5_image.c | 3 +- 4 files changed, 3 insertions(+), 123 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 567448d720d..3a2286a0ff8 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1057,7 +1057,7 @@ "description": "freedreno/a5xx: Skip emitting unused texture descriptors for images.", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "2e0ea3f09c79c657116cbc9cbc68377e364dfe28" }, diff --git a/src/freedreno/ci/freedreno-a530-fails.txt b/src/freedreno/ci/freedreno-a530-fails.txt index 2cb627a93b2..879fbc4887a 100644 --- a/src/freedreno/ci/freedreno-a530-fails.txt +++ b/src/freedreno/ci/freedreno-a530-fails.txt @@ -323,16 +323,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 @@ -653,62 +643,9 @@ dEQP-GLES31.functional.compute.basic.copy_ssbo_to_image_large,Fail dEQP-GLES31.functional.compute.basic.copy_ssbo_to_image_small,Fail 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.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 @@ -729,58 +666,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.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.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.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.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.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.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.compute_shader.resource-texture,Fail -KHR-GLES31.core.explicit_uniform_location.uniform-loc-types-samplers,Fail KHR-GLES31.core.internalformat.texture2d.red_integer_int_r32i,Fail KHR-GLES31.core.internalformat.texture2d.rgb_integer_byte_rgb8i,Fail KHR-GLES31.core.internalformat.texture2d.rgb_integer_int_rgb32i,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.nearest_edge.offset_left,Fail -KHR-GLES31.core.nearest_edge.offset_right,Fail KHR-GLES31.core.pixelstoragemodes.teximage2d.r11g11b10f.1_1,Fail KHR-GLES31.core.pixelstoragemodes.teximage2d.r11g11b10f.16_1,Fail KHR-GLES31.core.pixelstoragemodes.teximage2d.r16i.1_0,Fail @@ -1191,22 +1080,14 @@ KHR-GLES31.core.pixelstoragemodes.teximage3d.rgba8ui.16_16_0,Fail KHR-GLES31.core.pixelstoragemodes.teximage3d.rgba8ui.16_16_1,Fail KHR-GLES31.core.polygon_offset_clamp.PolygonOffsetClampMinMax,Fail KHR-GLES31.core.polygon_offset_clamp.PolygonOffsetClampZeroInfinity,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_conv_int_to_float,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_ssbo_writes,Fail KHR-GLES31.shaders.layout_location.isampler_2d_array,Fail KHR-GLES31.shaders.layout_location.isampler_2d,Fail KHR-GLES31.shaders.layout_location.isampler_3d,Fail KHR-GLES31.shaders.layout_location.isampler_cube,Fail -KHR-GLES31.shaders.layout_location.sampler_2d_array,Fail -KHR-GLES31.shaders.layout_location.sampler_2d,Fail KHR-GLES31.shaders.layout_location.sampler_3d,Fail -KHR-GLES31.shaders.layout_location.sampler_cube_shadow,Fail -KHR-GLES31.shaders.layout_location.usampler_2d_array,Fail -KHR-GLES31.shaders.layout_location.usampler_3d,Fail KHR-GLES31.shaders.layout_location.usampler_cube,Fail diff --git a/src/freedreno/ci/freedreno-a530-flakes.txt b/src/freedreno/ci/freedreno-a530-flakes.txt index 7e92987081f..23175e1a0fa 100644 --- a/src/freedreno/ci/freedreno-a530-flakes.txt +++ b/src/freedreno/ci/freedreno-a530-flakes.txt @@ -56,8 +56,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 diff --git a/src/gallium/drivers/freedreno/a5xx/fd5_image.c b/src/gallium/drivers/freedreno/a5xx/fd5_image.c index f94a98370d7..4088178a094 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); }