agx: Add agx_tex_dim helper
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>
Sat, 24 Apr 2021 18:00:55 +0000 (14:00 -0400)
committerAlyssa Rosenzweig <none>
Sun, 2 May 2021 21:41:18 +0000 (17:41 -0400)
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Acked-by: Jason Ekstrand <jason@jlekstrand.net>
Acked-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10582>

src/asahi/compiler/agx_compile.c

index 997d7f9..8a354b1 100644 (file)
@@ -491,6 +491,35 @@ agx_emit_alu(agx_builder *b, nir_alu_instr *instr)
    }
 }
 
+static enum agx_dim
+agx_tex_dim(enum glsl_sampler_dim dim, bool array)
+{
+   switch (dim) {
+   case GLSL_SAMPLER_DIM_1D:
+   case GLSL_SAMPLER_DIM_BUF:
+      return array ? AGX_DIM_TEX_1D_ARRAY : AGX_DIM_TEX_1D;
+
+   case GLSL_SAMPLER_DIM_2D:
+   case GLSL_SAMPLER_DIM_RECT:
+   case GLSL_SAMPLER_DIM_EXTERNAL:
+      return array ? AGX_DIM_TEX_2D_ARRAY : AGX_DIM_TEX_2D;
+
+   case GLSL_SAMPLER_DIM_MS:
+      assert(!array && "multisampled arrays unsupported");
+      return AGX_DIM_TEX_2D_MS;
+
+   case GLSL_SAMPLER_DIM_3D:
+      assert(!array && "3D arrays unsupported");
+      return AGX_DIM_TEX_3D;
+
+   case GLSL_SAMPLER_DIM_CUBE:
+      return array ? AGX_DIM_TEX_CUBE_ARRAY : AGX_DIM_TEX_CUBE;
+
+   default:
+      unreachable("Invalid sampler dim\n");
+   }
+}
+
 static void
 agx_emit_tex(agx_builder *b, nir_tex_instr *instr)
 {