main: Change init_program_limits() to use gl_shader_stage.
This allows the caller to execute it in a loop rather than hand-rolling a separate call for each stage. Reviewed-by: Brian Paul <brianp@vmware.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
@@ -461,7 +461,7 @@ _mesa_init_current(struct gl_context *ctx)
|
|||||||
* Important: drivers should override these with actual limits.
|
* Important: drivers should override these with actual limits.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
init_program_limits(struct gl_context *ctx, GLenum type,
|
init_program_limits(struct gl_context *ctx, gl_shader_stage stage,
|
||||||
struct gl_program_constants *prog)
|
struct gl_program_constants *prog)
|
||||||
{
|
{
|
||||||
prog->MaxInstructions = MAX_PROGRAM_INSTRUCTIONS;
|
prog->MaxInstructions = MAX_PROGRAM_INSTRUCTIONS;
|
||||||
@@ -473,8 +473,8 @@ init_program_limits(struct gl_context *ctx, GLenum type,
|
|||||||
prog->MaxLocalParams = MAX_PROGRAM_LOCAL_PARAMS;
|
prog->MaxLocalParams = MAX_PROGRAM_LOCAL_PARAMS;
|
||||||
prog->MaxAddressOffset = MAX_PROGRAM_LOCAL_PARAMS;
|
prog->MaxAddressOffset = MAX_PROGRAM_LOCAL_PARAMS;
|
||||||
|
|
||||||
switch (type) {
|
switch (stage) {
|
||||||
case GL_VERTEX_PROGRAM_ARB:
|
case MESA_SHADER_VERTEX:
|
||||||
prog->MaxParameters = MAX_VERTEX_PROGRAM_PARAMS;
|
prog->MaxParameters = MAX_VERTEX_PROGRAM_PARAMS;
|
||||||
prog->MaxAttribs = MAX_VERTEX_GENERIC_ATTRIBS;
|
prog->MaxAttribs = MAX_VERTEX_GENERIC_ATTRIBS;
|
||||||
prog->MaxAddressRegs = MAX_VERTEX_PROGRAM_ADDRESS_REGS;
|
prog->MaxAddressRegs = MAX_VERTEX_PROGRAM_ADDRESS_REGS;
|
||||||
@@ -482,7 +482,7 @@ init_program_limits(struct gl_context *ctx, GLenum type,
|
|||||||
prog->MaxInputComponents = 0; /* value not used */
|
prog->MaxInputComponents = 0; /* value not used */
|
||||||
prog->MaxOutputComponents = 16 * 4; /* old limit not to break tnl and swrast */
|
prog->MaxOutputComponents = 16 * 4; /* old limit not to break tnl and swrast */
|
||||||
break;
|
break;
|
||||||
case GL_FRAGMENT_PROGRAM_ARB:
|
case MESA_SHADER_FRAGMENT:
|
||||||
prog->MaxParameters = MAX_NV_FRAGMENT_PROGRAM_PARAMS;
|
prog->MaxParameters = MAX_NV_FRAGMENT_PROGRAM_PARAMS;
|
||||||
prog->MaxAttribs = MAX_NV_FRAGMENT_PROGRAM_INPUTS;
|
prog->MaxAttribs = MAX_NV_FRAGMENT_PROGRAM_INPUTS;
|
||||||
prog->MaxAddressRegs = MAX_FRAGMENT_PROGRAM_ADDRESS_REGS;
|
prog->MaxAddressRegs = MAX_FRAGMENT_PROGRAM_ADDRESS_REGS;
|
||||||
@@ -490,7 +490,7 @@ init_program_limits(struct gl_context *ctx, GLenum type,
|
|||||||
prog->MaxInputComponents = 16 * 4; /* old limit not to break tnl and swrast */
|
prog->MaxInputComponents = 16 * 4; /* old limit not to break tnl and swrast */
|
||||||
prog->MaxOutputComponents = 0; /* value not used */
|
prog->MaxOutputComponents = 0; /* value not used */
|
||||||
break;
|
break;
|
||||||
case MESA_GEOMETRY_PROGRAM:
|
case MESA_SHADER_GEOMETRY:
|
||||||
prog->MaxParameters = MAX_VERTEX_PROGRAM_PARAMS;
|
prog->MaxParameters = MAX_VERTEX_PROGRAM_PARAMS;
|
||||||
prog->MaxAttribs = MAX_VERTEX_GENERIC_ATTRIBS;
|
prog->MaxAttribs = MAX_VERTEX_GENERIC_ATTRIBS;
|
||||||
prog->MaxAddressRegs = MAX_VERTEX_PROGRAM_ADDRESS_REGS;
|
prog->MaxAddressRegs = MAX_VERTEX_PROGRAM_ADDRESS_REGS;
|
||||||
@@ -499,7 +499,7 @@ init_program_limits(struct gl_context *ctx, GLenum type,
|
|||||||
prog->MaxOutputComponents = 16 * 4; /* old limit not to break tnl and swrast */
|
prog->MaxOutputComponents = 16 * 4; /* old limit not to break tnl and swrast */
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
assert(0 && "Bad program type in init_program_limits()");
|
assert(0 && "Bad shader stage in init_program_limits()");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set the native limits to zero. This implies that there is no native
|
/* Set the native limits to zero. This implies that there is no native
|
||||||
@@ -551,6 +551,7 @@ init_program_limits(struct gl_context *ctx, GLenum type,
|
|||||||
static void
|
static void
|
||||||
_mesa_init_constants(struct gl_context *ctx)
|
_mesa_init_constants(struct gl_context *ctx)
|
||||||
{
|
{
|
||||||
|
int i;
|
||||||
assert(ctx);
|
assert(ctx);
|
||||||
|
|
||||||
/* Constants, may be overriden (usually only reduced) by device drivers */
|
/* Constants, may be overriden (usually only reduced) by device drivers */
|
||||||
@@ -593,9 +594,8 @@ _mesa_init_constants(struct gl_context *ctx)
|
|||||||
ctx->Const.MaxUniformBlockSize = 16384;
|
ctx->Const.MaxUniformBlockSize = 16384;
|
||||||
ctx->Const.UniformBufferOffsetAlignment = 1;
|
ctx->Const.UniformBufferOffsetAlignment = 1;
|
||||||
|
|
||||||
init_program_limits(ctx, GL_VERTEX_PROGRAM_ARB, &ctx->Const.Program[MESA_SHADER_VERTEX]);
|
for (i = 0; i < MESA_SHADER_STAGES; i++)
|
||||||
init_program_limits(ctx, GL_FRAGMENT_PROGRAM_ARB, &ctx->Const.Program[MESA_SHADER_FRAGMENT]);
|
init_program_limits(ctx, i, &ctx->Const.Program[i]);
|
||||||
init_program_limits(ctx, MESA_GEOMETRY_PROGRAM, &ctx->Const.Program[MESA_SHADER_GEOMETRY]);
|
|
||||||
|
|
||||||
ctx->Const.MaxProgramMatrices = MAX_PROGRAM_MATRICES;
|
ctx->Const.MaxProgramMatrices = MAX_PROGRAM_MATRICES;
|
||||||
ctx->Const.MaxProgramMatrixStackDepth = MAX_PROGRAM_MATRIX_STACK_DEPTH;
|
ctx->Const.MaxProgramMatrixStackDepth = MAX_PROGRAM_MATRIX_STACK_DEPTH;
|
||||||
|
Reference in New Issue
Block a user