mesa/st: move st_TexParameter into mesa

Some places this just passes an always true pname, so just call
sampler view invalidate directly

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14632>
diff --git a/src/mesa/main/attrib.c b/src/mesa/main/attrib.c
index eb98cf0..617f953 100644
--- a/src/mesa/main/attrib.c
+++ b/src/mesa/main/attrib.c
@@ -63,6 +63,7 @@
 #include "state_tracker/st_cb_texture.h"
 #include "state_tracker/st_cb_viewport.h"
 #include "state_tracker/st_context.h"
+#include "state_tracker/st_sampler_view.h"
 
 static inline bool
 copy_texture_attribs(struct gl_texture_object *dst,
@@ -595,8 +596,7 @@
          if (!copy_texture_attribs(texObj, savedObj, tgt))
             continue;
 
-         /* GL_ALL_ATTRIB_BITS means all pnames. (internal) */
-         st_TexParameter(ctx, texObj, GL_ALL_ATTRIB_BITS);
+         st_texture_release_all_sampler_views(st_context(ctx), texObj);
       }
    }
 
diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
index c4403a7..62e9d77 100644
--- a/src/mesa/main/teximage.c
+++ b/src/mesa/main/teximage.c
@@ -65,6 +65,7 @@
 #include "state_tracker/st_format.h"
 #include "state_tracker/st_gen_mipmap.h"
 #include "state_tracker/st_cb_eglimage.h"
+#include "state_tracker/st_sampler_view.h"
 
 /**
  * Returns a corresponding internal floating point format for a given base
@@ -6353,13 +6354,13 @@
    _mesa_unlock_texture(ctx, texObj);
 
    if (old_format != format) {
-      st_TexParameter(ctx, texObj, GL_ALL_ATTRIB_BITS);
+      st_texture_release_all_sampler_views(st_context(ctx), texObj);
    } else {
       if (offset != oldOffset) {
-         st_TexParameter(ctx, texObj, GL_TEXTURE_BUFFER_OFFSET);
+         st_texture_release_all_sampler_views(st_context(ctx), texObj);
       }
       if (size != oldSize) {
-         st_TexParameter(ctx, texObj, GL_TEXTURE_BUFFER_SIZE);
+         st_texture_release_all_sampler_views(st_context(ctx), texObj);
       }
    }
 
diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c
index c2514c6..884dd51 100644
--- a/src/mesa/main/texparam.c
+++ b/src/mesa/main/texparam.c
@@ -49,6 +49,7 @@
 #include "api_exec_decl.h"
 
 #include "state_tracker/st_cb_texture.h"
+#include "state_tracker/st_sampler_view.h"
 
 /**
  * Use macro to resolve undefined clamping behaviour when using lroundf
@@ -894,6 +895,41 @@
    return GL_FALSE;
 }
 
+static bool
+texparam_invalidates_sampler_views(GLenum pname)
+{
+   switch (pname) {
+      /*
+       * Changing any of these texture parameters means we must create
+       * new sampler views.
+       */
+   case GL_ALL_ATTRIB_BITS: /* meaning is all pnames, internal */
+   case GL_TEXTURE_BASE_LEVEL:
+   case GL_TEXTURE_MAX_LEVEL:
+   case GL_DEPTH_TEXTURE_MODE:
+   case GL_DEPTH_STENCIL_TEXTURE_MODE:
+   case GL_TEXTURE_SRGB_DECODE_EXT:
+   case GL_TEXTURE_SWIZZLE_R:
+   case GL_TEXTURE_SWIZZLE_G:
+   case GL_TEXTURE_SWIZZLE_B:
+   case GL_TEXTURE_SWIZZLE_A:
+   case GL_TEXTURE_SWIZZLE_RGBA:
+   case GL_TEXTURE_BUFFER_SIZE:
+   case GL_TEXTURE_BUFFER_OFFSET:
+      return true;
+   default:
+      return false;
+   }
+}
+
+static void
+_mesa_texture_parameter_invalidate(struct gl_context *ctx,
+                                   struct gl_texture_object *texObj,
+                                   GLenum pname)
+{
+   if (texparam_invalidates_sampler_views(pname))
+      st_texture_release_all_sampler_views(st_context(ctx), texObj);
+}
 
 void
 _mesa_texture_parameterf(struct gl_context *ctx,
@@ -950,7 +986,7 @@
    }
 
    if (need_update) {
-      st_TexParameter(ctx, texObj, pname);
+      _mesa_texture_parameter_invalidate(ctx, texObj, pname);
    }
 }
 
@@ -1020,7 +1056,7 @@
    }
 
    if (need_update) {
-      st_TexParameter(ctx, texObj, pname);
+      _mesa_texture_parameter_invalidate(ctx, texObj, pname);
    }
 }
 
@@ -1064,7 +1100,7 @@
    }
 
    if (need_update) {
-      st_TexParameter(ctx, texObj, pname);
+      _mesa_texture_parameter_invalidate(ctx, texObj, pname);
    }
 }
 
@@ -1107,7 +1143,7 @@
    }
 
    if (need_update) {
-      st_TexParameter(ctx, texObj, pname);
+      _mesa_texture_parameter_invalidate(ctx, texObj, pname);
    }
 }
 
diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c
index 044d08b..0c1454c 100644
--- a/src/mesa/state_tracker/st_cb_texture.c
+++ b/src/mesa/state_tracker/st_cb_texture.c
@@ -3516,40 +3516,6 @@
 }
 
 
-/**
- * Called via the glTexParam*() function, but only when some texture object
- * state has actually changed.
- */
-void
-st_TexParameter(struct gl_context *ctx,
-                struct gl_texture_object *texObj, GLenum pname)
-{
-   struct st_context *st = st_context(ctx);
-
-   switch (pname) {
-   case GL_ALL_ATTRIB_BITS: /* meaning is all pnames, internal */
-   case GL_TEXTURE_BASE_LEVEL:
-   case GL_TEXTURE_MAX_LEVEL:
-   case GL_DEPTH_TEXTURE_MODE:
-   case GL_DEPTH_STENCIL_TEXTURE_MODE:
-   case GL_TEXTURE_SRGB_DECODE_EXT:
-   case GL_TEXTURE_SWIZZLE_R:
-   case GL_TEXTURE_SWIZZLE_G:
-   case GL_TEXTURE_SWIZZLE_B:
-   case GL_TEXTURE_SWIZZLE_A:
-   case GL_TEXTURE_SWIZZLE_RGBA:
-   case GL_TEXTURE_BUFFER_SIZE:
-   case GL_TEXTURE_BUFFER_OFFSET:
-      /* changing any of these texture parameters means we must create
-       * new sampler views.
-       */
-      st_texture_release_all_sampler_views(st, texObj);
-      break;
-   default:
-      ; /* nothing */
-   }
-}
-
 GLboolean
 st_SetTextureStorageForMemoryObject(struct gl_context *ctx,
                                     struct gl_texture_object *texObj,
diff --git a/src/mesa/state_tracker/st_cb_texture.h b/src/mesa/state_tracker/st_cb_texture.h
index 672f61d..8691e6f 100644
--- a/src/mesa/state_tracker/st_cb_texture.h
+++ b/src/mesa/state_tracker/st_cb_texture.h
@@ -113,8 +113,6 @@
                          GLint xoffset, GLint yoffset, GLint zoffset,
                          GLsizei width, GLsizei height, GLsizei depth,
                          const void *clearValue);
-void st_TexParameter(struct gl_context *ctx,
-                     struct gl_texture_object *texObj, GLenum pname);
 GLboolean st_SetTextureStorageForMemoryObject(struct gl_context *ctx,
                                               struct gl_texture_object *texObj,
                                               struct gl_memory_object *memObj,