freedreno: Fix attempts to push UBO contents past the constlen on pre-a6xx.

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>
This commit is contained in:
Eric Anholt
2020-05-13 10:34:25 -07:00
committed by Marge Bot
parent 7336caa52d
commit 3111cee2f6
3 changed files with 6 additions and 7 deletions
-1
View 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
-6
View 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
@@ -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:
*/