freedreno: Fix attempts to push UBO contents past the constlen on pre-a6xx.
authorEric Anholt <eric@anholt.net>
Wed, 13 May 2020 17:34:25 +0000 (10:34 -0700)
committerMarge Bot <eric+marge@anholt.net>
Thu, 14 May 2020 01:30:31 +0000 (01:30 +0000)
The binning variant likely won't have any UBO load code in it, so we were
writing past constlen (and sometimes asserting about it) when loading more
than one ubo block.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5027>

.gitlab-ci/deqp-freedreno-a307-fails.txt
.gitlab-ci/deqp-freedreno-a530-fails.txt
src/gallium/drivers/freedreno/ir3/ir3_const.h

index 7cf581dc204d84e9acfe3e94705b1d3024214047..c0e53542372afb95ff749d5665dd08fac60cd112 100644 (file)
@@ -2466,7 +2466,6 @@ dEQP-GLES3.functional.ubo.random.nested_structs_arrays.16
 dEQP-GLES3.functional.ubo.random.nested_structs_arrays.17
 dEQP-GLES3.functional.ubo.random.nested_structs_arrays.18
 dEQP-GLES3.functional.ubo.random.nested_structs_arrays.19
-dEQP-GLES3.functional.ubo.random.nested_structs_arrays.2
 dEQP-GLES3.functional.ubo.random.nested_structs_arrays.20
 dEQP-GLES3.functional.ubo.random.nested_structs_arrays.21
 dEQP-GLES3.functional.ubo.random.nested_structs_arrays.22
index 6eedfc5587e0380daab546a1690f068e702fa274..9a56f168dd3c2bd9ba8d70b79498327e69622b1b 100644 (file)
@@ -1510,7 +1510,6 @@ dEQP-GLES3.functional.ubo.instance_array_basic_type.std140.column_major_mat3x4_b
 dEQP-GLES3.functional.ubo.instance_array_basic_type.std140.column_major_mat3x4_vertex
 dEQP-GLES3.functional.ubo.instance_array_basic_type.std140.column_major_mat4_both
 dEQP-GLES3.functional.ubo.instance_array_basic_type.std140.column_major_mat4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140.column_major_mat4x2_both
 dEQP-GLES3.functional.ubo.instance_array_basic_type.std140.column_major_mat4x2_vertex
 dEQP-GLES3.functional.ubo.instance_array_basic_type.std140.column_major_mat4x3_both
 dEQP-GLES3.functional.ubo.instance_array_basic_type.std140.column_major_mat4x3_vertex
@@ -1695,7 +1694,6 @@ dEQP-GLES3.functional.ubo.random.all_shared_buffer.23
 dEQP-GLES3.functional.ubo.random.all_shared_buffer.24
 dEQP-GLES3.functional.ubo.random.all_shared_buffer.25
 dEQP-GLES3.functional.ubo.random.all_shared_buffer.26
-dEQP-GLES3.functional.ubo.random.all_shared_buffer.27
 dEQP-GLES3.functional.ubo.random.all_shared_buffer.28
 dEQP-GLES3.functional.ubo.random.all_shared_buffer.29
 dEQP-GLES3.functional.ubo.random.all_shared_buffer.2
@@ -1768,7 +1766,6 @@ dEQP-GLES3.functional.ubo.random.basic_instance_arrays.21
 dEQP-GLES3.functional.ubo.random.basic_instance_arrays.22
 dEQP-GLES3.functional.ubo.random.basic_instance_arrays.23
 dEQP-GLES3.functional.ubo.random.basic_instance_arrays.24
-dEQP-GLES3.functional.ubo.random.basic_instance_arrays.2
 dEQP-GLES3.functional.ubo.random.basic_instance_arrays.3
 dEQP-GLES3.functional.ubo.random.basic_instance_arrays.4
 dEQP-GLES3.functional.ubo.random.basic_instance_arrays.5
@@ -1868,7 +1865,6 @@ dEQP-GLES3.functional.ubo.random.nested_structs_arrays_instance_arrays.21
 dEQP-GLES3.functional.ubo.random.nested_structs_arrays_instance_arrays.22
 dEQP-GLES3.functional.ubo.random.nested_structs_arrays_instance_arrays.23
 dEQP-GLES3.functional.ubo.random.nested_structs_arrays_instance_arrays.24
-dEQP-GLES3.functional.ubo.random.nested_structs_arrays_instance_arrays.2
 dEQP-GLES3.functional.ubo.random.nested_structs_arrays_instance_arrays.3
 dEQP-GLES3.functional.ubo.random.nested_structs_arrays_instance_arrays.4
 dEQP-GLES3.functional.ubo.random.nested_structs_arrays_instance_arrays.5
@@ -1918,7 +1914,6 @@ dEQP-GLES3.functional.ubo.random.scalar_types.21
 dEQP-GLES3.functional.ubo.random.scalar_types.22
 dEQP-GLES3.functional.ubo.random.scalar_types.23
 dEQP-GLES3.functional.ubo.random.scalar_types.24
-dEQP-GLES3.functional.ubo.random.scalar_types.2
 dEQP-GLES3.functional.ubo.random.scalar_types.3
 dEQP-GLES3.functional.ubo.random.scalar_types.4
 dEQP-GLES3.functional.ubo.random.scalar_types.5
@@ -1997,4 +1992,3 @@ dEQP-GLES31.functional.image_load_store.cube.load_store.rgba32i_single_layer
 dEQP-GLES31.functional.separate_shader.random.99
 dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_fragment_texture.offset_7_alignments
 dEQP-GLES31.functional.ubo.random.all_per_block_buffers.21
-dEQP-GLES31.functional.ubo.random.all_shared_buffer.22
index 157bc273bde90751b041b9c94162bd6d891e1c2a..a0076991b86e4ebd2b391cac0868b730119c6625 100644 (file)
@@ -106,6 +106,12 @@ ir3_emit_user_consts(struct fd_screen *screen, const struct ir3_shader_variant *
                uint32_t size = state->range[i].end - state->range[i].start;
                uint32_t offset = cb->buffer_offset + state->range[i].start;
 
+               /* Pre-a6xx, we might have ranges enabled in the shader that aren't
+                * used in the binning variant.
+                */
+               if (16 * v->constlen <= state->range[i].offset)
+                       continue;
+
                /* and even if the start of the const buffer is before
                 * first_immediate, the end may not be:
                 */