st/mesa: Drop the TGSI paths for drawpixels and use nir-to-tgsi if needed.

Now that we have a NIR translator in gallium, we can drop this duplicated
code in the API implementation.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6477>
diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c b/src/mesa/state_tracker/st_cb_drawpixels.c
index 8470e50..0fad2fb 100644
--- a/src/mesa/state_tracker/st_cb_drawpixels.c
+++ b/src/mesa/state_tracker/st_cb_drawpixels.c
@@ -150,7 +150,7 @@
 {
    struct nir_builder b;
    const nir_shader_compiler_options *options =
-      st->ctx->Const.ShaderCompilerOptions[MESA_SHADER_FRAGMENT].NirOptions;
+      st_get_nir_compiler_options(st, MESA_SHADER_FRAGMENT);
 
    nir_builder_init_simple_shader(&b, NULL, MESA_SHADER_FRAGMENT, options);
 
@@ -204,7 +204,7 @@
 {
    struct nir_builder b;
    const nir_shader_compiler_options *options =
-      st->ctx->Const.ShaderCompilerOptions[MESA_SHADER_FRAGMENT].NirOptions;
+      st_get_nir_compiler_options(st, MESA_SHADER_FRAGMENT);
 
    nir_builder_init_simple_shader(&b, NULL, MESA_SHADER_FRAGMENT, options);
 
@@ -257,66 +257,6 @@
    return st_nir_finish_builtin_shader(st, b.shader, name);
 }
 
-static void *
-make_drawpix_z_stencil_program_tgsi(struct st_context *st,
-                                    bool write_depth,
-                                    bool write_stencil)
-{
-   struct ureg_program *ureg;
-   struct ureg_src depth_sampler, stencil_sampler;
-   struct ureg_src texcoord, color;
-   struct ureg_dst out_color, out_depth, out_stencil;
-
-   ureg = ureg_create(PIPE_SHADER_FRAGMENT);
-   if (ureg == NULL)
-      return NULL;
-
-   ureg_property(ureg, TGSI_PROPERTY_FS_COLOR0_WRITES_ALL_CBUFS, TRUE);
-
-   if (write_depth) {
-      color = ureg_DECL_fs_input(ureg, TGSI_SEMANTIC_COLOR, 0,
-                                 TGSI_INTERPOLATE_COLOR);
-      out_color = ureg_DECL_output(ureg, TGSI_SEMANTIC_COLOR, 0);
-
-      depth_sampler = ureg_DECL_sampler(ureg, 0);
-      ureg_DECL_sampler_view(ureg, 0, TGSI_TEXTURE_2D,
-                             TGSI_RETURN_TYPE_FLOAT,
-                             TGSI_RETURN_TYPE_FLOAT,
-                             TGSI_RETURN_TYPE_FLOAT,
-                             TGSI_RETURN_TYPE_FLOAT);
-      out_depth = ureg_DECL_output(ureg, TGSI_SEMANTIC_POSITION, 0);
-   }
-
-   if (write_stencil) {
-      stencil_sampler = ureg_DECL_sampler(ureg, 1);
-      ureg_DECL_sampler_view(ureg, 1, TGSI_TEXTURE_2D,
-                             TGSI_RETURN_TYPE_UINT,
-                             TGSI_RETURN_TYPE_UINT,
-                             TGSI_RETURN_TYPE_UINT,
-                             TGSI_RETURN_TYPE_UINT);
-      out_stencil = ureg_DECL_output(ureg, TGSI_SEMANTIC_STENCIL, 0);
-   }
-
-   texcoord = ureg_DECL_fs_input(ureg,
-                                 st->needs_texcoord_semantic ?
-                                    TGSI_SEMANTIC_TEXCOORD :
-                                    TGSI_SEMANTIC_GENERIC,
-                                 0, TGSI_INTERPOLATE_LINEAR);
-
-   if (write_depth) {
-      ureg_TEX(ureg, ureg_writemask(out_depth, TGSI_WRITEMASK_Z),
-               TGSI_TEXTURE_2D, texcoord, depth_sampler);
-      ureg_MOV(ureg, out_color, color);
-   }
-
-   if (write_stencil)
-      ureg_TEX(ureg, ureg_writemask(out_stencil, TGSI_WRITEMASK_Y),
-               TGSI_TEXTURE_2D, texcoord, stencil_sampler);
-
-   ureg_END(ureg);
-   return ureg_create_shader_and_destroy(ureg, st->pipe);
-}
-
 
 /**
  * Create fragment program that does a TEX() instruction to get a Z and/or
@@ -331,7 +271,6 @@
                               bool write_depth,
                               bool write_stencil)
 {
-   struct pipe_screen *pscreen = st->pipe->screen;
    const GLuint shaderIndex = write_depth * 2 + write_stencil;
    void *cso;
 
@@ -342,14 +281,7 @@
       return st->drawpix.zs_shaders[shaderIndex];
    }
 
-   enum pipe_shader_ir preferred_ir =
-      pscreen->get_shader_param(pscreen, PIPE_SHADER_FRAGMENT,
-                                PIPE_SHADER_CAP_PREFERRED_IR);
-
-   if (preferred_ir == PIPE_SHADER_IR_NIR)
-      cso = make_drawpix_z_stencil_program_nir(st, write_depth, write_stencil);
-   else
-      cso = make_drawpix_z_stencil_program_tgsi(st, write_depth, write_stencil);
+   cso = make_drawpix_z_stencil_program_nir(st, write_depth, write_stencil);
 
    /* save the new shader */
    st->drawpix.zs_shaders[shaderIndex] = cso;
@@ -367,7 +299,6 @@
 get_drawpix_zs_to_color_program(struct st_context *st,
                               bool rgba)
 {
-   struct pipe_screen *pscreen = st->pipe->screen;
    void *cso;
    GLuint shaderIndex;
 
@@ -383,14 +314,7 @@
       return st->drawpix.zs_shaders[shaderIndex];
    }
 
-   enum pipe_shader_ir preferred_ir =
-      pscreen->get_shader_param(pscreen, PIPE_SHADER_FRAGMENT,
-                                PIPE_SHADER_CAP_PREFERRED_IR);
-
-   if (preferred_ir == PIPE_SHADER_IR_NIR)
-      cso = make_drawpix_zs_to_color_program_nir(st, rgba);
-   else
-      return NULL;
+   cso = make_drawpix_zs_to_color_program_nir(st, rgba);
 
    /* save the new shader */
    st->drawpix.zs_shaders[shaderIndex] = cso;
@@ -404,39 +328,18 @@
 void
 st_make_passthrough_vertex_shader(struct st_context *st)
 {
-   struct pipe_context *pipe = st->pipe;
-   struct pipe_screen *screen = pipe->screen;
-
    if (st->passthrough_vs)
       return;
 
-   enum pipe_shader_ir preferred_ir =
-      screen->get_shader_param(screen, PIPE_SHADER_VERTEX,
-                               PIPE_SHADER_CAP_PREFERRED_IR);
+   unsigned inputs[] =
+      {  VERT_ATTRIB_POS, VERT_ATTRIB_COLOR0, VERT_ATTRIB_GENERIC0 };
+   unsigned outputs[] =
+      { VARYING_SLOT_POS,  VARYING_SLOT_COL0,    VARYING_SLOT_TEX0 };
 
-   if (preferred_ir == PIPE_SHADER_IR_NIR) {
-      unsigned inputs[] =
-         {  VERT_ATTRIB_POS, VERT_ATTRIB_COLOR0, VERT_ATTRIB_GENERIC0 };
-      unsigned outputs[] =
-         { VARYING_SLOT_POS,  VARYING_SLOT_COL0,    VARYING_SLOT_TEX0 };
-
-      st->passthrough_vs =
-         st_nir_make_passthrough_shader(st, "drawpixels VS",
-                                        MESA_SHADER_VERTEX, 3,
-                                        inputs, outputs, NULL, 0);
-   } else {
-      const enum tgsi_semantic semantic_names[] = {
-         TGSI_SEMANTIC_POSITION,
-         TGSI_SEMANTIC_COLOR,
-         st->needs_texcoord_semantic ? TGSI_SEMANTIC_TEXCOORD :
-                                       TGSI_SEMANTIC_GENERIC
-      };
-      const uint semantic_indexes[] = { 0, 0, 0 };
-
-      st->passthrough_vs =
-         util_make_vertex_passthrough_shader(st->pipe, 3, semantic_names,
-                                             semantic_indexes, false);
-   }
+   st->passthrough_vs =
+      st_nir_make_passthrough_shader(st, "drawpixels VS",
+                                     MESA_SHADER_VERTEX, 3,
+                                     inputs, outputs, NULL, 0);
 }