170
170
#if FEATURE_NV_vertex_program || FEATURE_ARB_vertex_program
171
171
_mesa_reference_vertprog(ctx, &ctx->VertexProgram.Current,
172
(struct gl_vertex_program *)
173
172
ctx->Shared->DefaultVertexProgram);
174
173
assert(ctx->VertexProgram.Current);
177
176
#if FEATURE_NV_fragment_program || FEATURE_ARB_fragment_program
178
177
_mesa_reference_fragprog(ctx, &ctx->FragmentProgram.Current,
179
(struct gl_fragment_program *)
180
178
ctx->Shared->DefaultFragmentProgram);
181
179
assert(ctx->FragmentProgram.Current);
184
182
#if FEATURE_ARB_geometry_shader4
185
183
_mesa_reference_geomprog(ctx, &ctx->GeometryProgram.Current,
186
(struct gl_geometry_program *)
187
ctx->Shared->DefaultGeometryProgram);
184
ctx->Shared->DefaultGeometryProgram);
190
187
/* XXX probably move this stuff */
538
535
switch (prog->Target) {
539
536
case GL_VERTEX_PROGRAM_ARB:
541
const struct gl_vertex_program *vp
542
= (const struct gl_vertex_program *) prog;
543
struct gl_vertex_program *vpc = (struct gl_vertex_program *) clone;
538
const struct gl_vertex_program *vp = gl_vertex_program_const(prog);
539
struct gl_vertex_program *vpc = gl_vertex_program(clone);
544
540
vpc->IsPositionInvariant = vp->IsPositionInvariant;
545
541
vpc->IsNVProgram = vp->IsNVProgram;
548
544
case GL_FRAGMENT_PROGRAM_ARB:
550
const struct gl_fragment_program *fp
551
= (const struct gl_fragment_program *) prog;
552
struct gl_fragment_program *fpc = (struct gl_fragment_program *) clone;
546
const struct gl_fragment_program *fp = gl_fragment_program_const(prog);
547
struct gl_fragment_program *fpc = gl_fragment_program(clone);
553
548
fpc->UsesKill = fp->UsesKill;
549
fpc->UsesDFdy = fp->UsesDFdy;
554
550
fpc->OriginUpperLeft = fp->OriginUpperLeft;
555
551
fpc->PixelCenterInteger = fp->PixelCenterInteger;
558
554
case MESA_GEOMETRY_PROGRAM:
560
const struct gl_geometry_program *gp
561
= (const struct gl_geometry_program *) prog;
562
struct gl_geometry_program *gpc = (struct gl_geometry_program *) clone;
556
const struct gl_geometry_program *gp = gl_geometry_program_const(prog);
557
struct gl_geometry_program *gpc = gl_geometry_program(clone);
563
558
gpc->VerticesOut = gp->VerticesOut;
564
559
gpc->InputType = gp->InputType;
565
560
gpc->OutputType = gp->OutputType;
763
758
usedTemps, MAX_PROGRAM_TEMPS);
765
760
if (newProg->Target == GL_FRAGMENT_PROGRAM_ARB) {
766
struct gl_fragment_program *fprogA, *fprogB, *newFprog;
761
const struct gl_fragment_program *fprogA, *fprogB;
762
struct gl_fragment_program *newFprog;
767
763
GLbitfield progB_inputsRead = progB->InputsRead;
768
764
GLint progB_colorFile, progB_colorIndex;
770
fprogA = (struct gl_fragment_program *) progA;
771
fprogB = (struct gl_fragment_program *) progB;
772
newFprog = (struct gl_fragment_program *) newProg;
766
fprogA = gl_fragment_program_const(progA);
767
fprogB = gl_fragment_program_const(progB);
768
newFprog = gl_fragment_program(newProg);
774
770
newFprog->UsesKill = fprogA->UsesKill || fprogB->UsesKill;
771
newFprog->UsesDFdy = fprogA->UsesDFdy || fprogB->UsesDFdy;
776
773
/* We'll do a search and replace for instances
777
774
* of progB_colorFile/progB_colorIndex below...