|
|
@@ -819,11 +819,33 @@ _mesa_init_current(GLcontext *ctx) |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* Init vertex/fragment program native limits from logical limits. |
|
|
|
* Init vertex/fragment program limits. |
|
|
|
* Important: drivers should override these with actual limits. |
|
|
|
*/ |
|
|
|
static void |
|
|
|
init_natives(struct gl_program_constants *prog) |
|
|
|
init_program_limits(GLenum type, struct gl_program_constants *prog) |
|
|
|
{ |
|
|
|
prog->MaxInstructions = MAX_PROGRAM_INSTRUCTIONS; |
|
|
|
prog->MaxAluInstructions = MAX_PROGRAM_INSTRUCTIONS; |
|
|
|
prog->MaxTexInstructions = MAX_PROGRAM_INSTRUCTIONS; |
|
|
|
prog->MaxTexIndirections = MAX_PROGRAM_INSTRUCTIONS; |
|
|
|
prog->MaxTemps = MAX_PROGRAM_TEMPS; |
|
|
|
prog->MaxEnvParams = MAX_PROGRAM_ENV_PARAMS; |
|
|
|
prog->MaxLocalParams = MAX_PROGRAM_LOCAL_PARAMS; |
|
|
|
prog->MaxUniformComponents = 4 * MAX_UNIFORMS; |
|
|
|
|
|
|
|
if (type == GL_VERTEX_PROGRAM_ARB) { |
|
|
|
prog->MaxParameters = MAX_NV_VERTEX_PROGRAM_PARAMS; |
|
|
|
prog->MaxAttribs = MAX_NV_VERTEX_PROGRAM_INPUTS; |
|
|
|
prog->MaxAddressRegs = MAX_VERTEX_PROGRAM_ADDRESS_REGS; |
|
|
|
} |
|
|
|
else { |
|
|
|
prog->MaxParameters = MAX_NV_FRAGMENT_PROGRAM_PARAMS; |
|
|
|
prog->MaxAttribs = MAX_NV_FRAGMENT_PROGRAM_INPUTS; |
|
|
|
prog->MaxAddressRegs = MAX_FRAGMENT_PROGRAM_ADDRESS_REGS; |
|
|
|
} |
|
|
|
|
|
|
|
/* copy the above limits to init native limits */ |
|
|
|
prog->MaxNativeInstructions = prog->MaxInstructions; |
|
|
|
prog->MaxNativeAluInstructions = prog->MaxAluInstructions; |
|
|
|
prog->MaxNativeTexInstructions = prog->MaxTexInstructions; |
|
|
@@ -885,33 +907,10 @@ _mesa_init_constants(GLcontext *ctx) |
|
|
|
ctx->Const.MaxViewportWidth = MAX_WIDTH; |
|
|
|
ctx->Const.MaxViewportHeight = MAX_HEIGHT; |
|
|
|
#if FEATURE_ARB_vertex_program |
|
|
|
ctx->Const.VertexProgram.MaxInstructions = MAX_NV_VERTEX_PROGRAM_INSTRUCTIONS; |
|
|
|
ctx->Const.VertexProgram.MaxAluInstructions = 0; |
|
|
|
ctx->Const.VertexProgram.MaxTexInstructions = 0; |
|
|
|
ctx->Const.VertexProgram.MaxTexIndirections = 0; |
|
|
|
ctx->Const.VertexProgram.MaxAttribs = MAX_NV_VERTEX_PROGRAM_INPUTS; |
|
|
|
ctx->Const.VertexProgram.MaxTemps = MAX_PROGRAM_TEMPS; |
|
|
|
ctx->Const.VertexProgram.MaxParameters = MAX_NV_VERTEX_PROGRAM_PARAMS; |
|
|
|
ctx->Const.VertexProgram.MaxLocalParams = MAX_PROGRAM_LOCAL_PARAMS; |
|
|
|
ctx->Const.VertexProgram.MaxEnvParams = MAX_PROGRAM_ENV_PARAMS; |
|
|
|
ctx->Const.VertexProgram.MaxAddressRegs = MAX_VERTEX_PROGRAM_ADDRESS_REGS; |
|
|
|
ctx->Const.VertexProgram.MaxUniformComponents = 4 * MAX_UNIFORMS; |
|
|
|
init_natives(&ctx->Const.VertexProgram); |
|
|
|
init_program_limits(GL_VERTEX_PROGRAM_ARB, &ctx->Const.VertexProgram); |
|
|
|
#endif |
|
|
|
|
|
|
|
#if FEATURE_ARB_fragment_program |
|
|
|
ctx->Const.FragmentProgram.MaxInstructions = MAX_NV_FRAGMENT_PROGRAM_INSTRUCTIONS; |
|
|
|
ctx->Const.FragmentProgram.MaxAluInstructions = MAX_FRAGMENT_PROGRAM_ALU_INSTRUCTIONS; |
|
|
|
ctx->Const.FragmentProgram.MaxTexInstructions = MAX_FRAGMENT_PROGRAM_TEX_INSTRUCTIONS; |
|
|
|
ctx->Const.FragmentProgram.MaxTexIndirections = MAX_FRAGMENT_PROGRAM_TEX_INDIRECTIONS; |
|
|
|
ctx->Const.FragmentProgram.MaxAttribs = MAX_NV_FRAGMENT_PROGRAM_INPUTS; |
|
|
|
ctx->Const.FragmentProgram.MaxTemps = MAX_PROGRAM_TEMPS; |
|
|
|
ctx->Const.FragmentProgram.MaxParameters = MAX_NV_FRAGMENT_PROGRAM_PARAMS; |
|
|
|
ctx->Const.FragmentProgram.MaxLocalParams = MAX_PROGRAM_LOCAL_PARAMS; |
|
|
|
ctx->Const.FragmentProgram.MaxEnvParams = MAX_PROGRAM_ENV_PARAMS; |
|
|
|
ctx->Const.FragmentProgram.MaxAddressRegs = MAX_FRAGMENT_PROGRAM_ADDRESS_REGS; |
|
|
|
ctx->Const.FragmentProgram.MaxUniformComponents = 4 * MAX_UNIFORMS; |
|
|
|
init_natives(&ctx->Const.FragmentProgram); |
|
|
|
init_program_limits(GL_FRAGMENT_PROGRAM_ARB, &ctx->Const.FragmentProgram); |
|
|
|
#endif |
|
|
|
ctx->Const.MaxProgramMatrices = MAX_PROGRAM_MATRICES; |
|
|
|
ctx->Const.MaxProgramMatrixStackDepth = MAX_PROGRAM_MATRIX_STACK_DEPTH; |