nir: Add a new lowering option to lower 3D surfaces from txd to txl.
authorSagar Ghuge <sagar.ghuge@intel.com>
Thu, 13 Dec 2018 19:40:58 +0000 (11:40 -0800)
committerSagar Ghuge <sagar.ghuge@intel.com>
Tue, 18 Dec 2018 21:44:09 +0000 (13:44 -0800)
Tested on gen9.

v2: Rename lower_txd_3d_surafaces flag to lower_txd_3d (Jason Ekstrand)

Signed-off-by: Sagar Ghuge <sagar.ghuge@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/compiler/nir/nir.h
src/compiler/nir/nir_lower_tex.c

index 54f9c64a3a3ccdd24262d66b152e24fa998abb4a..12bbfa3220ee493c8cde8c42da70144b452b688f 100644 (file)
@@ -3008,6 +3008,11 @@ typedef struct nir_lower_tex_options {
     */
    bool lower_txd_cube_map;
 
+   /**
+    * If true, lower nir_texop_txd on 3D surfaces with nir_texop_txl.
+    */
+   bool lower_txd_3d;
+
    /**
     * If true, lower nir_texop_txd on shadow samplers (except cube maps)
     * with nir_texop_txl. Notice that cube map shadow samplers are lowered
index 6a6b6c41a7ba37f68a18a677695f8f8a040fd097..43094d5174d992b428abc59e4958c7fb77a4cf47 100644 (file)
@@ -905,7 +905,9 @@ nir_lower_tex_block(nir_block *block, nir_builder *b,
            (options->lower_txd_shadow_clamp && tex->is_shadow && has_min_lod) ||
            (options->lower_txd_offset_clamp && has_offset && has_min_lod) ||
            (options->lower_txd_cube_map &&
-            tex->sampler_dim == GLSL_SAMPLER_DIM_CUBE))) {
+            tex->sampler_dim == GLSL_SAMPLER_DIM_CUBE) ||
+           (options->lower_txd_3d &&
+            tex->sampler_dim == GLSL_SAMPLER_DIM_3D))) {
          lower_gradient(b, tex);
          progress = true;
          continue;