Use generic program limits instead of NV-specific ones to init program constants.
authorBrian <brian@yutani.localnet.net>
Mon, 16 Apr 2007 16:36:28 +0000 (10:36 -0600)
committerBrian <brian@yutani.localnet.net>
Mon, 16 Apr 2007 16:36:28 +0000 (10:36 -0600)
Previously, this limited us to 12 temp regs for vertex programs.  Many vertex
shaders could exceed that.  This forces us to stop using t_vb_arbprogram.c
for now because of its particular register indexing scheme.  Need to increase
bits allocated for register indexing, etc.

src/mesa/main/context.c
src/mesa/tnl/t_vb_arbprogram.c

index 2041d26299ed5f49e33048e19311adcbd36d3d3f..93442b91aaabd363b1b92d3190632693a8e989a3 100644 (file)
@@ -805,10 +805,10 @@ _mesa_init_constants(GLcontext *ctx)
    ctx->Const.VertexProgram.MaxTexInstructions = 0;
    ctx->Const.VertexProgram.MaxTexIndirections = 0;
    ctx->Const.VertexProgram.MaxAttribs = MAX_NV_VERTEX_PROGRAM_INPUTS;
-   ctx->Const.VertexProgram.MaxTemps = MAX_NV_VERTEX_PROGRAM_TEMPS;
+   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_NV_VERTEX_PROGRAM_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);
@@ -820,10 +820,10 @@ _mesa_init_constants(GLcontext *ctx)
    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_NV_FRAGMENT_PROGRAM_TEMPS;
+   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_NV_FRAGMENT_PROGRAM_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);
index 2edb1c5ac4cd0ad47631fd22740d798c2d5eb74c..58c82cf715a53922cdb844ad5f466dd023cbdb56 100644 (file)
@@ -1477,8 +1477,11 @@ validate_vertex_program( GLcontext *ctx, struct tnl_pipeline_stage *stage )
    struct arb_vp_machine *m = ARB_VP_MACHINE(stage);
    struct gl_vertex_program *program = ctx->VertexProgram._Current;
 
+   /* don't use this module since it only handles 12 temp regs */
+   /* Need to allocate more bits for register indexes, etc. */
+#define  FORCE_OLD 1
 #if FORCE_OLD
-   if (0 &&program) {
+   if (0) {
 #else
    if (program) {
 #endif