st/mesa: don't generate VS TGSI if NIR is enabled
authorMarek Olšák <marek.olsak@amd.com>
Thu, 28 Nov 2019 03:47:56 +0000 (22:47 -0500)
committerMarek Olšák <marek.olsak@amd.com>
Tue, 10 Dec 2019 02:09:28 +0000 (21:09 -0500)
it's no longer needed

Reviewed-by: Dave Airlie <airlied@redhat.com>
src/mesa/state_tracker/st_program.c

index 81d6e16fefa4dd93e0c33fb52ab062949d97cad2..1beba6317b6f7d9a0b54e842214fd5925fb23554 100644 (file)
@@ -450,7 +450,20 @@ st_translate_vertex_program(struct st_context *st,
       if (stp->Base.Parameters->NumParameters)
          stp->affected_states |= ST_NEW_VS_CONSTANTS;
 
-      /* No samplers are allowed in ARB_vp. */
+      /* Translate to NIR if preferred. */
+      if (st->pipe->screen->get_shader_param(st->pipe->screen,
+                                             PIPE_SHADER_VERTEX,
+                                             PIPE_SHADER_CAP_PREFERRED_IR)) {
+         assert(!stp->glsl_to_tgsi);
+
+         if (stp->Base.nir)
+            ralloc_free(stp->Base.nir);
+
+         stp->state.type = PIPE_SHADER_IR_NIR;
+         stp->Base.nir = st_translate_prog_to_nir(st, &stp->Base,
+                                                  MESA_SHADER_VERTEX);
+         return true;
+      }
    }
 
    /* Get semantic names and indices. */
@@ -541,27 +554,6 @@ st_translate_vertex_program(struct st_context *st,
       st_store_ir_in_disk_cache(st, &stp->Base, false);
    }
 
-   /* Translate to NIR.
-    *
-    * This must be done after the translation to TGSI is done, because
-    * we'll pass the NIR shader to the driver and the TGSI version to
-    * the draw module for the select/feedback/rasterpos code.
-    */
-   if (st->pipe->screen->get_shader_param(st->pipe->screen,
-                                          PIPE_SHADER_VERTEX,
-                                          PIPE_SHADER_CAP_PREFERRED_IR)) {
-      assert(!stp->glsl_to_tgsi);
-
-      nir_shader *nir =
-         st_translate_prog_to_nir(st, &stp->Base, MESA_SHADER_VERTEX);
-
-      if (stp->Base.nir)
-         ralloc_free(stp->Base.nir);
-      stp->state.type = PIPE_SHADER_IR_NIR;
-      stp->Base.nir = nir;
-      return true;
-   }
-
    return stp->state.tokens != NULL;
 }