mirror of https://gitlab.freedesktop.org/mesa/mesa
pan/mdg: Fix bound setting in RA for sources
The bound parameter allows us to prevent allocations from crossing particular boundaries (typically 128-bit boundaries). For 16-bit, we don't want to cross 64-bit boundaries, in order to keep swizzles possible to encode. We already handle this for 16-bit destinations, but it _also_ needs to be (redundantly) handled for 16-bit sources, in case types don't match (for example, with a vectorized size conversion instruction). Fixes a few newer dEQP fails. Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8282>
This commit is contained in:
parent
469d74908c
commit
129d390bd8
|
@ -47,11 +47,3 @@ dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.62,Fail
|
|||
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.73,Fail
|
||||
dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.81,Fail
|
||||
dEQP-GLES2.functional.fragment_ops.random.43,Fail
|
||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.float_const_write_dynamic_loop_read_fragment,Crash
|
||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.float_const_write_dynamic_loop_read_vertex,Crash
|
||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.float_const_write_dynamic_read_fragment,Crash
|
||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.float_const_write_dynamic_read_vertex,Crash
|
||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec2_const_write_dynamic_loop_read_fragment,Crash
|
||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec2_const_write_dynamic_loop_read_vertex,Crash
|
||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec2_const_write_dynamic_read_fragment,Crash
|
||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec2_const_write_dynamic_read_vertex,Crash
|
|
@ -1,8 +0,0 @@
|
|||
dEQP-GLES2.functional.shaders.indexing.tmp_array.float_const_write_dynamic_loop_read_fragment,Crash
|
||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.float_const_write_dynamic_loop_read_vertex,Crash
|
||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.float_const_write_dynamic_read_fragment,Crash
|
||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.float_const_write_dynamic_read_vertex,Crash
|
||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec2_const_write_dynamic_loop_read_fragment,Crash
|
||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec2_const_write_dynamic_loop_read_vertex,Crash
|
||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec2_const_write_dynamic_read_fragment,Crash
|
||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec2_const_write_dynamic_read_vertex,Crash
|
|
@ -12,13 +12,5 @@ dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_src_dst_x,Fa
|
|||
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_src_dst_y,Fail
|
||||
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_src_x,Fail
|
||||
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_src_y,Fail
|
||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.float_const_write_dynamic_loop_read_fragment,Crash
|
||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.float_const_write_dynamic_loop_read_vertex,Crash
|
||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.float_const_write_dynamic_read_fragment,Crash
|
||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.float_const_write_dynamic_read_vertex,Crash
|
||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec2_const_write_dynamic_loop_read_fragment,Crash
|
||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec2_const_write_dynamic_loop_read_vertex,Crash
|
||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec2_const_write_dynamic_read_fragment,Crash
|
||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec2_const_write_dynamic_read_vertex,Crash
|
||||
dEQP-GLES3.functional.shaders.matrix.inverse.dynamic.lowp_mat2_float_vertex,Fail
|
||||
dEQP-GLES3.functional.shaders.matrix.inverse.dynamic.mediump_mat2_float_vertex,Fail
|
||||
|
|
|
@ -489,6 +489,12 @@ allocate_registers(compiler_context *ctx, bool *spilled)
|
|||
if (size == 16)
|
||||
min_bound[dest] = 8;
|
||||
|
||||
mir_foreach_src(ins, s) {
|
||||
unsigned src_size = nir_alu_type_get_type_size(ins->src_types[s]);
|
||||
if (src_size == 16 && ins->src[s] < SSA_FIXED_MINIMUM)
|
||||
min_bound[ins->src[s]] = MAX2(min_bound[ins->src[s]], 8);
|
||||
}
|
||||
|
||||
/* We don't have a swizzle for the conditional and we don't
|
||||
* want to muck with the conditional itself, so just force
|
||||
* alignment for now */
|
||||
|
|
Loading…
Reference in New Issue