Mesa (master): st/mesa: consolidate setting MaxTextureImageUnits

Marek Olšák mareko at kemper.freedesktop.org
Sat May 11 21:58:15 UTC 2013


Module: Mesa
Branch: master
Commit: b6d3373442503d95fbba4d376dd721f5b7a8ea61
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=b6d3373442503d95fbba4d376dd721f5b7a8ea61

Author: Marek Olšák <maraeo at gmail.com>
Date:   Thu May  2 02:41:11 2013 +0200

st/mesa: consolidate setting MaxTextureImageUnits

Reviewed-by: Brian Paul <brianp at vmware.com>

---

 src/mesa/state_tracker/st_extensions.c |   26 +++++++++++---------------
 1 files changed, 11 insertions(+), 15 deletions(-)

diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
index d32f50a..0aac086 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -89,25 +89,10 @@ void st_init_limits(struct st_context *st)
    c->MaxArrayTextureLayers
       = screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS);
 
-   c->FragmentProgram.MaxTextureImageUnits
-      = _min(screen->get_shader_param(screen, PIPE_SHADER_FRAGMENT,
-                                      PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS),
-            MAX_TEXTURE_IMAGE_UNITS);
-
-   c->VertexProgram.MaxTextureImageUnits
-      = _min(screen->get_shader_param(screen, PIPE_SHADER_VERTEX,
-                                      PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS),
-             MAX_TEXTURE_IMAGE_UNITS);
-
    c->MaxCombinedTextureImageUnits
       = _min(screen->get_param(screen, PIPE_CAP_MAX_COMBINED_SAMPLERS),
              MAX_COMBINED_TEXTURE_IMAGE_UNITS);
 
-   c->MaxTextureCoordUnits
-      = _min(c->FragmentProgram.MaxTextureImageUnits, MAX_TEXTURE_COORD_UNITS);
-
-   c->MaxTextureUnits = _min(c->FragmentProgram.MaxTextureImageUnits, c->MaxTextureCoordUnits);
-
    /* Define max viewport size and max renderbuffer size in terms of
     * max texture size (note: max tex RECT size = max tex 2D size).
     * If this isn't true for some hardware we'll need new PIPE_CAP_ queries.
@@ -188,6 +173,11 @@ void st_init_limits(struct st_context *st)
          continue;
       }
 
+      pc->MaxTextureImageUnits =
+         _min(screen->get_shader_param(screen, sh,
+                                       PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS),
+              MAX_TEXTURE_IMAGE_UNITS);
+
       pc->MaxInstructions    = pc->MaxNativeInstructions    =
          screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_INSTRUCTIONS);
       pc->MaxAluInstructions = pc->MaxNativeAluInstructions =
@@ -253,6 +243,12 @@ void st_init_limits(struct st_context *st)
       options->LowerClipDistance = true;
    }
 
+   /* This depends on program constants. */
+   c->MaxTextureCoordUnits
+      = _min(c->FragmentProgram.MaxTextureImageUnits, MAX_TEXTURE_COORD_UNITS);
+
+   c->MaxTextureUnits = _min(c->FragmentProgram.MaxTextureImageUnits, c->MaxTextureCoordUnits);
+
    c->VertexProgram.MaxAttribs = MIN2(c->VertexProgram.MaxAttribs, 16);
 
    /* PIPE_SHADER_CAP_MAX_INPUTS for the FS specifies the maximum number




More information about the mesa-commit mailing list