From: Boris Brezillon Date: Mon, 17 Jun 2019 19:47:46 +0000 (+0200) Subject: panfrost: Prepare things to support non-native texture ops X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5c17f84ae22ce2770f6b81eba3360d1ce693787b;p=mesa.git panfrost: Prepare things to support non-native texture ops We are about to add support for the TXS (texture size) op which is not implemented using a midgard texture instruction. Let's rename emit_tex() into emit_texop_native() and repurpose emit_tex() as a dispatcher. Signed-off-by: Boris Brezillon Reviewed-by: Alyssa Rosenzweig --- diff --git a/src/gallium/drivers/panfrost/midgard/midgard_compile.c b/src/gallium/drivers/panfrost/midgard/midgard_compile.c index 0abecb90f3c..2d2d69a98ac 100644 --- a/src/gallium/drivers/panfrost/midgard/midgard_compile.c +++ b/src/gallium/drivers/panfrost/midgard/midgard_compile.c @@ -1366,22 +1366,9 @@ midgard_tex_format(enum glsl_sampler_dim dim) } } -static unsigned -midgard_tex_op(nir_texop op) -{ - switch (op) { - case nir_texop_tex: - case nir_texop_txb: - return TEXTURE_OP_NORMAL; - case nir_texop_txl: - return TEXTURE_OP_LOD; - default: - unreachable("Unhanlded texture op"); - } -} - static void -emit_tex(compiler_context *ctx, nir_tex_instr *instr) +emit_texop_native(compiler_context *ctx, nir_tex_instr *instr, + unsigned midgard_texop) { /* TODO */ //assert (!instr->sampler); @@ -1467,7 +1454,7 @@ emit_tex(compiler_context *ctx, nir_tex_instr *instr) midgard_instruction ins = { .type = TAG_TEXTURE_4, .texture = { - .op = midgard_tex_op(instr->op), + .op = midgard_texop, .format = midgard_tex_format(instr->sampler_dim), .texture_handle = texture_index, .sampler_handle = sampler_index, @@ -1525,6 +1512,22 @@ emit_tex(compiler_context *ctx, nir_tex_instr *instr) ctx->texture_op_count++; } +static void +emit_tex(compiler_context *ctx, nir_tex_instr *instr) +{ + switch (instr->op) { + case nir_texop_tex: + case nir_texop_txb: + emit_texop_native(ctx, instr, TEXTURE_OP_NORMAL); + break; + case nir_texop_txl: + emit_texop_native(ctx, instr, TEXTURE_OP_LOD); + break; + default: + unreachable("Unhanlded texture op"); + } +} + static void emit_jump(compiler_context *ctx, nir_jump_instr *instr) {