[v2,4/5] panfrost: Prepare things to support non-native texture ops

Submitted by Boris Brezillon on June 18, 2019, 7:38 a.m.

Details

Message ID 20190618073850.3650-5-boris.brezillon@collabora.com
State New
Headers show
Series "panfrost: Add support for TXS instructions" ( rev: 3 ) in Mesa

Not browsing as part of any series.

Commit Message

Boris Brezillon June 18, 2019, 7:38 a.m.
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 <boris.brezillon@collabora.com>
---
Changes in v2:
* New patch
---
 .../panfrost/midgard/midgard_compile.c        | 35 ++++++++++---------
 1 file changed, 19 insertions(+), 16 deletions(-)

Patch hide | download patch | download mbox

diff --git a/src/gallium/drivers/panfrost/midgard/midgard_compile.c b/src/gallium/drivers/panfrost/midgard/midgard_compile.c
index 492ec69c85ba..235dc7d5430d 100644
--- a/src/gallium/drivers/panfrost/midgard/midgard_compile.c
+++ b/src/gallium/drivers/panfrost/midgard/midgard_compile.c
@@ -1330,22 +1330,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);
@@ -1420,7 +1407,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,
@@ -1478,6 +1465,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)
 {