Added a few new ctx->Const. fields for shader-related limits.

This commit is contained in:
Brian Paul
2006-11-01 00:12:41 +00:00
parent 5050b565de
commit 90fcf6ccc3
4 changed files with 30 additions and 16 deletions

View File

@@ -1048,6 +1048,7 @@ _mesa_init_constants( GLcontext *ctx )
ctx->Const.VertexProgram.MaxLocalParams = MAX_PROGRAM_LOCAL_PARAMS; ctx->Const.VertexProgram.MaxLocalParams = MAX_PROGRAM_LOCAL_PARAMS;
ctx->Const.VertexProgram.MaxEnvParams = MAX_NV_VERTEX_PROGRAM_PARAMS; ctx->Const.VertexProgram.MaxEnvParams = MAX_NV_VERTEX_PROGRAM_PARAMS;
ctx->Const.VertexProgram.MaxAddressRegs = MAX_VERTEX_PROGRAM_ADDRESS_REGS; ctx->Const.VertexProgram.MaxAddressRegs = MAX_VERTEX_PROGRAM_ADDRESS_REGS;
ctx->Const.VertexProgram.MaxUniformComponents = MAX_VERTEX_UNIFORM_COMPONENTS;
init_natives(&ctx->Const.VertexProgram); init_natives(&ctx->Const.VertexProgram);
#endif #endif
#if FEATURE_ARB_fragment_program #if FEATURE_ARB_fragment_program
@@ -1061,6 +1062,7 @@ _mesa_init_constants( GLcontext *ctx )
ctx->Const.FragmentProgram.MaxLocalParams = MAX_PROGRAM_LOCAL_PARAMS; ctx->Const.FragmentProgram.MaxLocalParams = MAX_PROGRAM_LOCAL_PARAMS;
ctx->Const.FragmentProgram.MaxEnvParams = MAX_NV_FRAGMENT_PROGRAM_PARAMS; ctx->Const.FragmentProgram.MaxEnvParams = MAX_NV_FRAGMENT_PROGRAM_PARAMS;
ctx->Const.FragmentProgram.MaxAddressRegs = MAX_FRAGMENT_PROGRAM_ADDRESS_REGS; ctx->Const.FragmentProgram.MaxAddressRegs = MAX_FRAGMENT_PROGRAM_ADDRESS_REGS;
ctx->Const.FragmentProgram.MaxUniformComponents = MAX_FRAGMENT_UNIFORM_COMPONENTS;
init_natives(&ctx->Const.FragmentProgram); init_natives(&ctx->Const.FragmentProgram);
#endif #endif
ctx->Const.MaxProgramMatrices = MAX_PROGRAM_MATRICES; ctx->Const.MaxProgramMatrices = MAX_PROGRAM_MATRICES;
@@ -1087,6 +1089,11 @@ _mesa_init_constants( GLcontext *ctx )
ctx->Const.MaxRenderbufferSize = MAX_WIDTH; ctx->Const.MaxRenderbufferSize = MAX_WIDTH;
#endif #endif
#if FEATURE_ARB_vertex_shader
ctx->Const.MaxVertexTextureImageUnits = MAX_VERTEX_TEXTURE_IMAGE_UNITS;
ctx->Const.MaxVaryingFloats = MAX_VARYING_FLOATS;
#endif
/* sanity checks */ /* sanity checks */
ASSERT(ctx->Const.MaxTextureUnits == MIN2(ctx->Const.MaxTextureImageUnits, ASSERT(ctx->Const.MaxTextureUnits == MIN2(ctx->Const.MaxTextureImageUnits,
ctx->Const.MaxTextureCoordUnits)); ctx->Const.MaxTextureCoordUnits));

View File

@@ -1863,7 +1863,7 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
break; break;
case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB: case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
CHECK_EXT1(ARB_fragment_shader, "GetBooleanv"); CHECK_EXT1(ARB_fragment_shader, "GetBooleanv");
params[0] = INT_TO_BOOLEAN(MAX_FRAGMENT_UNIFORM_COMPONENTS); params[0] = INT_TO_BOOLEAN(ctx->Const.FragmentProgram.MaxUniformComponents);
break; break;
case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB: case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
CHECK_EXT1(ARB_fragment_shader, "GetBooleanv"); CHECK_EXT1(ARB_fragment_shader, "GetBooleanv");
@@ -1871,15 +1871,15 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
break; break;
case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB: case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
CHECK_EXT1(ARB_vertex_shader, "GetBooleanv"); CHECK_EXT1(ARB_vertex_shader, "GetBooleanv");
params[0] = INT_TO_BOOLEAN(MAX_VERTEX_UNIFORM_COMPONENTS); params[0] = INT_TO_BOOLEAN(ctx->Const.VertexProgram.MaxUniformComponents);
break; break;
case GL_MAX_VARYING_FLOATS_ARB: case GL_MAX_VARYING_FLOATS_ARB:
CHECK_EXT1(ARB_vertex_shader, "GetBooleanv"); CHECK_EXT1(ARB_vertex_shader, "GetBooleanv");
params[0] = INT_TO_BOOLEAN(MAX_VARYING_FLOATS); params[0] = INT_TO_BOOLEAN(ctx->Const.MaxVaryingFloats);
break; break;
case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB: case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
CHECK_EXT1(ARB_vertex_shader, "GetBooleanv"); CHECK_EXT1(ARB_vertex_shader, "GetBooleanv");
params[0] = INT_TO_BOOLEAN(MAX_VERTEX_TEXTURE_IMAGE_UNITS); params[0] = INT_TO_BOOLEAN(ctx->Const.MaxVertexTextureImageUnits);
break; break;
case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB: case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
CHECK_EXT1(ARB_vertex_shader, "GetBooleanv"); CHECK_EXT1(ARB_vertex_shader, "GetBooleanv");
@@ -3687,7 +3687,7 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
break; break;
case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB: case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
CHECK_EXT1(ARB_fragment_shader, "GetFloatv"); CHECK_EXT1(ARB_fragment_shader, "GetFloatv");
params[0] = (GLfloat)(MAX_FRAGMENT_UNIFORM_COMPONENTS); params[0] = (GLfloat)(ctx->Const.FragmentProgram.MaxUniformComponents);
break; break;
case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB: case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
CHECK_EXT1(ARB_fragment_shader, "GetFloatv"); CHECK_EXT1(ARB_fragment_shader, "GetFloatv");
@@ -3695,15 +3695,15 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
break; break;
case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB: case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
CHECK_EXT1(ARB_vertex_shader, "GetFloatv"); CHECK_EXT1(ARB_vertex_shader, "GetFloatv");
params[0] = (GLfloat)(MAX_VERTEX_UNIFORM_COMPONENTS); params[0] = (GLfloat)(ctx->Const.VertexProgram.MaxUniformComponents);
break; break;
case GL_MAX_VARYING_FLOATS_ARB: case GL_MAX_VARYING_FLOATS_ARB:
CHECK_EXT1(ARB_vertex_shader, "GetFloatv"); CHECK_EXT1(ARB_vertex_shader, "GetFloatv");
params[0] = (GLfloat)(MAX_VARYING_FLOATS); params[0] = (GLfloat)(ctx->Const.MaxVaryingFloats);
break; break;
case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB: case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
CHECK_EXT1(ARB_vertex_shader, "GetFloatv"); CHECK_EXT1(ARB_vertex_shader, "GetFloatv");
params[0] = (GLfloat)(MAX_VERTEX_TEXTURE_IMAGE_UNITS); params[0] = (GLfloat)(ctx->Const.MaxVertexTextureImageUnits);
break; break;
case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB: case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
CHECK_EXT1(ARB_vertex_shader, "GetFloatv"); CHECK_EXT1(ARB_vertex_shader, "GetFloatv");
@@ -5511,7 +5511,7 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
break; break;
case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB: case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
CHECK_EXT1(ARB_fragment_shader, "GetIntegerv"); CHECK_EXT1(ARB_fragment_shader, "GetIntegerv");
params[0] = MAX_FRAGMENT_UNIFORM_COMPONENTS; params[0] = ctx->Const.FragmentProgram.MaxUniformComponents;
break; break;
case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB: case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
CHECK_EXT1(ARB_fragment_shader, "GetIntegerv"); CHECK_EXT1(ARB_fragment_shader, "GetIntegerv");
@@ -5519,15 +5519,15 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
break; break;
case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB: case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
CHECK_EXT1(ARB_vertex_shader, "GetIntegerv"); CHECK_EXT1(ARB_vertex_shader, "GetIntegerv");
params[0] = MAX_VERTEX_UNIFORM_COMPONENTS; params[0] = ctx->Const.VertexProgram.MaxUniformComponents;
break; break;
case GL_MAX_VARYING_FLOATS_ARB: case GL_MAX_VARYING_FLOATS_ARB:
CHECK_EXT1(ARB_vertex_shader, "GetIntegerv"); CHECK_EXT1(ARB_vertex_shader, "GetIntegerv");
params[0] = MAX_VARYING_FLOATS; params[0] = ctx->Const.MaxVaryingFloats;
break; break;
case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB: case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
CHECK_EXT1(ARB_vertex_shader, "GetIntegerv"); CHECK_EXT1(ARB_vertex_shader, "GetIntegerv");
params[0] = MAX_VERTEX_TEXTURE_IMAGE_UNITS; params[0] = ctx->Const.MaxVertexTextureImageUnits;
break; break;
case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB: case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
CHECK_EXT1(ARB_vertex_shader, "GetIntegerv"); CHECK_EXT1(ARB_vertex_shader, "GetIntegerv");

View File

@@ -978,17 +978,19 @@ StateVars = [
# GL_ARB_fragment_shader # GL_ARB_fragment_shader
( "GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB", GLint, ( "GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB", GLint,
["MAX_FRAGMENT_UNIFORM_COMPONENTS"], "", ["ARB_fragment_shader"] ), ["ctx->Const.FragmentProgram.MaxUniformComponents"], "",
["ARB_fragment_shader"] ),
( "GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB", GLenum, ( "GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB", GLenum,
["ctx->Hint.FragmentShaderDerivative"], "", ["ARB_fragment_shader"] ), ["ctx->Hint.FragmentShaderDerivative"], "", ["ARB_fragment_shader"] ),
# GL_ARB_vertex_shader # GL_ARB_vertex_shader
( "GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB", GLint, ( "GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB", GLint,
["MAX_VERTEX_UNIFORM_COMPONENTS"], "", ["ARB_vertex_shader"] ), ["ctx->Const.VertexProgram.MaxUniformComponents"], "",
["ARB_vertex_shader"] ),
( "GL_MAX_VARYING_FLOATS_ARB", GLint, ( "GL_MAX_VARYING_FLOATS_ARB", GLint,
["MAX_VARYING_FLOATS"], "", ["ARB_vertex_shader"] ), ["ctx->Const.MaxVaryingFloats"], "", ["ARB_vertex_shader"] ),
( "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB", GLint, ( "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB", GLint,
["MAX_VERTEX_TEXTURE_IMAGE_UNITS"], "", ["ARB_vertex_shader"] ), ["ctx->Const.MaxVertexTextureImageUnits"], "", ["ARB_vertex_shader"] ),
( "GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB", GLint, ( "GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB", GLint,
["MAX_COMBINED_TEXTURE_IMAGE_UNITS"], "", ["ARB_vertex_shader"] ) ["MAX_COMBINED_TEXTURE_IMAGE_UNITS"], "", ["ARB_vertex_shader"] )
] ]

View File

@@ -2311,6 +2311,8 @@ struct gl_program_constants
GLuint MaxNativeTemps; GLuint MaxNativeTemps;
GLuint MaxNativeAddressRegs; /* vertex program only, for now */ GLuint MaxNativeAddressRegs; /* vertex program only, for now */
GLuint MaxNativeParameters; GLuint MaxNativeParameters;
/* For shaders */
GLuint MaxUniformComponents;
}; };
@@ -2360,6 +2362,9 @@ struct gl_constants
/* GL_EXT_framebuffer_object */ /* GL_EXT_framebuffer_object */
GLuint MaxColorAttachments; GLuint MaxColorAttachments;
GLuint MaxRenderbufferSize; GLuint MaxRenderbufferSize;
/* GL_ARB_vertex_shader */
GLuint MaxVertexTextureImageUnits;
GLuint MaxVaryingFloats;
}; };