Mesa (master): mesa/st: Expose pipe driver's shader limits.

Jose Fonseca jrfonseca at kemper.freedesktop.org
Wed May 12 13:18:35 UTC 2010


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

Author: José Fonseca <jfonseca at vmware.com>
Date:   Wed May 12 14:09:14 2010 +0100

mesa/st: Expose pipe driver's shader limits.

---

 src/mesa/state_tracker/st_extensions.c |  108 ++++++--------------------------
 1 files changed, 19 insertions(+), 89 deletions(-)

diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
index 5b2e49c..0cd80fa 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -142,95 +142,25 @@ void st_init_limits(struct st_context *st)
    /* Quads always follow GL provoking rules. */
    c->QuadsFollowProvokingVertexConvention = GL_FALSE;
 
-   if (screen->get_param(screen, PIPE_CAP_GLSL)) {
-      /*
-       * In the lack of more fine grained capabilities, if the pipe driver supports
-       * GLSL then assume native limits match Mesa software limits.
-       */
-
-      pc = &c->FragmentProgram;
-      pc->MaxNativeInstructions      = pc->MaxInstructions;
-      pc->MaxNativeAluInstructions   = pc->MaxAluInstructions;
-      pc->MaxNativeTexInstructions   = pc->MaxTexInstructions;
-      pc->MaxNativeTexIndirections   = pc->MaxTexIndirections;
-      pc->MaxNativeAttribs           = pc->MaxAttribs;
-      pc->MaxNativeTemps             = pc->MaxTemps;
-      pc->MaxNativeAddressRegs       = pc->MaxAddressRegs;
-      pc->MaxNativeParameters        = pc->MaxParameters;
-
-      pc = &c->VertexProgram;
-      pc->MaxNativeInstructions      = pc->MaxInstructions;
-      pc->MaxNativeAluInstructions   = pc->MaxAluInstructions;
-      pc->MaxNativeTexInstructions   = pc->MaxTexInstructions;
-      pc->MaxNativeTexIndirections   = pc->MaxTexIndirections;
-      pc->MaxNativeAttribs           = pc->MaxAttribs;
-      pc->MaxNativeTemps             = pc->MaxTemps;
-      pc->MaxNativeAddressRegs       = pc->MaxAddressRegs;
-      pc->MaxNativeParameters        = pc->MaxParameters;
-   } else if (screen->get_param(screen, PIPE_CAP_SM3)) {
-      /*
-       * Assume the hardware meets the minimum requirements
-       * for Shader Model 3.
-       *
-       * See also:
-       * - http://msdn.microsoft.com/en-us/library/bb172920(VS.85).aspx
-       * - http://msdn.microsoft.com/en-us/library/bb172963(VS.85).aspx
-       */
-
-      pc = &c->FragmentProgram;
-      pc->MaxNativeInstructions      = 512; /* D3DMIN30SHADERINSTRUCTIONS */
-      pc->MaxNativeAluInstructions   = pc->MaxNativeInstructions;
-      pc->MaxNativeTexInstructions   = pc->MaxNativeInstructions;
-      pc->MaxNativeTexIndirections   = pc->MaxNativeTexInstructions;
-      pc->MaxNativeAttribs           = 10;
-      pc->MaxNativeTemps             = 32;
-      pc->MaxNativeAddressRegs       = 1; /* aL */
-      pc->MaxNativeParameters        = 224;
-
-      pc = &c->VertexProgram;
-      pc->MaxNativeInstructions      = 512; /* D3DMIN30SHADERINSTRUCTIONS */
-      pc->MaxNativeAluInstructions   = pc->MaxNativeInstructions;
-      pc->MaxNativeTexInstructions   = pc->MaxNativeInstructions;
-      pc->MaxNativeTexIndirections   = pc->MaxNativeTexInstructions;
-      pc->MaxNativeAttribs           = 16;
-      pc->MaxNativeTemps             = 32;
-      pc->MaxNativeAddressRegs       = 2; /* a0 and aL */
-      pc->MaxNativeParameters        = 256;
-   } else {
-      /*
-       * Assume the hardware meets the minimum requirements
-       * for Shader Model 2.
-       *
-       * See also:
-       * - http://msdn.microsoft.com/en-us/library/bb172918(VS.85).aspx
-       * - http://msdn.microsoft.com/en-us/library/bb172961(VS.85).aspx
-       */
-
-      pc = &c->FragmentProgram;
-      pc->MaxNativeInstructions      = 96; /* D3DPS20_MIN_NUMINSTRUCTIONSLOTS */
-      pc->MaxNativeAluInstructions   = 64;
-      pc->MaxNativeTexInstructions   = 32;
-      pc->MaxNativeTexIndirections   = pc->MaxNativeTexInstructions;
-      pc->MaxNativeAttribs           = 10; /* 2 color + 8 texture coord */
-      pc->MaxNativeTemps             = 12; /* D3DPS20_MIN_NUMTEMPS */
-      pc->MaxNativeAddressRegs       = 0;
-      pc->MaxNativeParameters        = 16;
-
-      pc = &c->VertexProgram;
-      pc->MaxNativeInstructions      = 256;
-      pc->MaxNativeAluInstructions   = 256;
-      pc->MaxNativeTexInstructions   = 0;
-      pc->MaxNativeTexIndirections   = 0;
-      pc->MaxNativeAttribs           = 16;
-      pc->MaxNativeTemps             = 12; /* D3DVS20_MIN_NUMTEMPS */
-      pc->MaxNativeAddressRegs       = 2; /* a0 and aL */
-      pc->MaxNativeParameters        = 256;
-   }
-
-   if (!screen->get_param(screen, PIPE_CAP_MAX_VERTEX_TEXTURE_UNITS)) {
-      c->VertexProgram.MaxNativeTexInstructions = 0;
-      c->VertexProgram.MaxNativeTexIndirections = 0;
-   }
+   pc = &c->FragmentProgram;
+   pc->MaxNativeInstructions    = screen->get_param(screen, PIPE_CAP_MAX_FS_INSTRUCTIONS);
+   pc->MaxNativeAluInstructions = screen->get_param(screen, PIPE_CAP_MAX_FS_ALU_INSTRUCTIONS);
+   pc->MaxNativeTexInstructions = screen->get_param(screen, PIPE_CAP_MAX_FS_TEX_INSTRUCTIONS);
+   pc->MaxNativeTexIndirections = screen->get_param(screen, PIPE_CAP_MAX_FS_TEX_INDIRECTIONS);
+   pc->MaxNativeAttribs         = screen->get_param(screen, PIPE_CAP_MAX_FS_INPUTS);
+   pc->MaxNativeTemps           = screen->get_param(screen, PIPE_CAP_MAX_FS_TEMPS);
+   pc->MaxNativeAddressRegs     = screen->get_param(screen, PIPE_CAP_MAX_FS_ADDRS);
+   pc->MaxNativeParameters      = screen->get_param(screen, PIPE_CAP_MAX_FS_CONSTS);
+
+   pc = &c->VertexProgram;
+   pc->MaxNativeInstructions    = screen->get_param(screen, PIPE_CAP_MAX_VS_INSTRUCTIONS);
+   pc->MaxNativeAluInstructions = screen->get_param(screen, PIPE_CAP_MAX_VS_ALU_INSTRUCTIONS);
+   pc->MaxNativeTexInstructions = screen->get_param(screen, PIPE_CAP_MAX_VS_TEX_INSTRUCTIONS);
+   pc->MaxNativeTexIndirections = screen->get_param(screen, PIPE_CAP_MAX_VS_TEX_INDIRECTIONS);
+   pc->MaxNativeAttribs         = screen->get_param(screen, PIPE_CAP_MAX_VS_INPUTS);
+   pc->MaxNativeTemps           = screen->get_param(screen, PIPE_CAP_MAX_VS_TEMPS);
+   pc->MaxNativeAddressRegs     = screen->get_param(screen, PIPE_CAP_MAX_VS_ADDRS);
+   pc->MaxNativeParameters      = screen->get_param(screen, PIPE_CAP_MAX_VS_CONSTS);
 }
 
 




More information about the mesa-commit mailing list