Module: Mesa Branch: master Commit: 3a86e1e92d92f20775738dbbd0654907212d050b URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=3a86e1e92d92f20775738dbbd0654907212d050b
Author: Alyssa Rosenzweig <alyssa.rosenzw...@collabora.com> Date: Tue Nov 3 08:23:22 2020 -0500 pan/bi: Handle 3D/array coordinates Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzw...@collabora.com> Reviewed-by: Boris Brezillon <boris.brezil...@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7408> --- src/panfrost/bifrost/bifrost_compile.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/panfrost/bifrost/bifrost_compile.c b/src/panfrost/bifrost/bifrost_compile.c index 0313fcf3e52..fc8b959d01e 100644 --- a/src/panfrost/bifrost/bifrost_compile.c +++ b/src/panfrost/bifrost/bifrost_compile.c @@ -1679,7 +1679,7 @@ emit_texc(bi_context *ctx, nir_tex_instr *instr) .op = bi_tex_op(instr->op), .offset_or_bias_disable = false, /* TODO */ .shadow_or_clamp_disable = instr->is_shadow, - .array = false, /* TODO */ + .array = instr->is_array, .dimension = bifrost_tex_format(instr->sampler_dim), .format = bi_texture_format(instr->dest_type, BIFROST_NONE), /* TODO */ .mask = (1 << tex.vector_channels) - 1 @@ -1705,6 +1705,7 @@ emit_texc(bi_context *ctx, nir_tex_instr *instr) unsigned index = pan_src_index(&instr->src[i].src); unsigned sz = nir_src_bit_size(instr->src[i].src); ASSERTED nir_alu_type base = nir_tex_instr_src_type(instr, i); + nir_alu_type T = base | sz; switch (instr->src[i].src_type) { case nir_tex_src_coord: @@ -1716,6 +1717,22 @@ emit_texc(bi_context *ctx, nir_tex_instr *instr) tex.src[2] = index; tex.swizzle[1][0] = 0; tex.swizzle[2][0] = 1; + + unsigned components = nir_src_num_components(instr->src[i].src); + assert(components == 2 || components == 3); + + if (components == 2) { + /* nothing to do */ + } else if (desc.array) { + /* 2D array */ + dregs[BIFROST_TEX_DREG_ARRAY] = + bi_emit_array_index(ctx, index, T, + &dregs_swiz[BIFROST_TEX_DREG_ARRAY]); + } else { + /* 3D */ + dregs[BIFROST_TEX_DREG_Z_COORD] = index; + dregs_swiz[BIFROST_TEX_DREG_Z_COORD] = 2; + } } break; _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit