diff --git a/src/panfrost/ci/panfrost-t860-fails.txt b/src/panfrost/ci/panfrost-t860-fails.txt index 8190d962540..9c1d19c6744 100644 --- a/src/panfrost/ci/panfrost-t860-fails.txt +++ b/src/panfrost/ci/panfrost-t860-fails.txt @@ -4,11 +4,9 @@ dEQP-GLES3.functional.draw_buffers_indexed.random.max_implementation_draw_buffer dEQP-GLES3.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.3,Fail dEQP-GLES3.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.4,Fail dEQP-GLES3.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.5,Fail -dEQP-GLES3.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.7,Fail dEQP-GLES3.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.8,Fail dEQP-GLES3.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.9,Fail dEQP-GLES3.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.10,Fail -dEQP-GLES3.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.11,Fail dEQP-GLES3.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.12,Fail dEQP-GLES3.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.13,Fail dEQP-GLES3.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.14,Fail @@ -17,7 +15,6 @@ dEQP-GLES3.functional.draw_buffers_indexed.random.max_implementation_draw_buffer dEQP-GLES3.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.17,Fail dEQP-GLES3.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.18,Fail dEQP-GLES3.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.19,Fail -dEQP-GLES3.functional.draw_buffers_indexed.random.max_required_draw_buffers.1,Fail dEQP-GLES3.functional.draw_buffers_indexed.random.max_required_draw_buffers.2,Fail dEQP-GLES3.functional.draw_buffers_indexed.random.max_required_draw_buffers.10,Fail dEQP-GLES3.functional.draw_buffers_indexed.random.max_required_draw_buffers.11,Fail @@ -25,7 +22,6 @@ dEQP-GLES3.functional.draw_buffers_indexed.random.max_required_draw_buffers.12,F dEQP-GLES3.functional.draw_buffers_indexed.random.max_required_draw_buffers.15,Fail dEQP-GLES3.functional.draw_buffers_indexed.random.max_required_draw_buffers.16,Fail dEQP-GLES3.functional.draw_buffers_indexed.random.max_required_draw_buffers.17,Fail -dEQP-GLES3.functional.draw_buffers_indexed.random.max_required_draw_buffers.18,Fail dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag,Fail dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_dst_x,Fail dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_dst_y,Fail diff --git a/src/panfrost/midgard/midgard_compile.c b/src/panfrost/midgard/midgard_compile.c index 436795dbd3c..9ebddce9b69 100644 --- a/src/panfrost/midgard/midgard_compile.c +++ b/src/panfrost/midgard/midgard_compile.c @@ -2650,6 +2650,9 @@ max_bitsize_for_alu(midgard_instruction *ins) unsigned dst_bitsize = nir_alu_type_get_type_size(ins->dest_type); max_bitsize = MAX2(dst_bitsize, max_bitsize); + /* We emulate 8-bit as 16-bit for simplicity of packing */ + max_bitsize = MAX2(max_bitsize, 16); + /* We don't have fp16 LUTs, so we'll want to emit code like: * * vlut.fsinr hr0, hr0 diff --git a/src/panfrost/midgard/midgard_emit.c b/src/panfrost/midgard/midgard_emit.c index 52dd4a85968..45b23db3f72 100644 --- a/src/panfrost/midgard/midgard_emit.c +++ b/src/panfrost/midgard/midgard_emit.c @@ -340,12 +340,6 @@ mir_pack_vector_srcs(midgard_instruction *ins, midgard_vector_alu *alu) unsigned sz = nir_alu_type_get_type_size(ins->src_types[i]); assert((sz == base_size) || (sz == base_size / 2)); - /* Promote 8bit moves to 16bit ones so we can support any swizzles. */ - if (sz == 8 && base_size == 8 && ins->op == midgard_alu_op_imov) { - ins->outmod = midgard_outmod_keeplo; - base_size = 16; - } - midgard_src_expand_mode expand_mode = midgard_src_passthrough; unsigned swizzle = mir_pack_swizzle(ins->mask, ins->swizzle[i], sz, base_size, channeled, diff --git a/src/panfrost/midgard/mir.c b/src/panfrost/midgard/mir.c index 5ff9469bcff..a4ea28fcdc8 100644 --- a/src/panfrost/midgard/mir.c +++ b/src/panfrost/midgard/mir.c @@ -232,20 +232,16 @@ mir_set_bytemask(midgard_instruction *ins, uint16_t bytemask) ins->mask = mir_from_bytemask(bytemask, type_size); } -/* Checks if we should use an upper destination override, rather than the lower - * one in the IR. Returns zero if no, returns the bytes to shift otherwise */ - +/* + * Checks if we should use an upper destination override, rather than the lower + * one in the IR. If yes, returns the bytes to shift by. If no, returns zero + * for a lower override and negative for no override. + */ signed mir_upper_override(midgard_instruction *ins, unsigned inst_size) { unsigned type_size = nir_alu_type_get_type_size(ins->dest_type); - /* 8bit imovs are promoted to 16bit ones with .sext on the source and - * .keeplo on the destination to accomodate with non-identity swizzles. - */ - if (ins->op == midgard_alu_op_imov && type_size == 8) - return 0; - /* If the sizes are the same, there's nothing to override */ if (type_size == inst_size) return -1;