summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRoland Scheidegger <sroland@tungstengraphics.com>2007-04-17 14:01:42 +0200
committerRoland Scheidegger <sroland@tungstengraphics.com>2007-04-17 14:01:42 +0200
commit36949abec763e56a5356b65e2f2570cfed11d853 (patch)
treeddc824878cb8cff7eba2cd300038e84467e2f1ab /src
parent6459adf79b0a3622515d5f2197a791538ca2f342 (diff)
cleanups for t_vb_program.c
use VertexProgram._Current instead of VertexProgram.Current in a few more places. Only fixup fogc and psiz in case this is really a nv program (others are fine if undefined), and fix this case up so the values actually get written.
Diffstat (limited to 'src')
-rw-r--r--src/mesa/tnl/t_vb_program.c32
1 files changed, 19 insertions, 13 deletions
diff --git a/src/mesa/tnl/t_vb_program.c b/src/mesa/tnl/t_vb_program.c
index 260f9d7b1a..3d7ea3a06a 100644
--- a/src/mesa/tnl/t_vb_program.c
+++ b/src/mesa/tnl/t_vb_program.c
@@ -84,7 +84,7 @@ init_machine(GLcontext *ctx, struct gl_program_machine *machine)
MEMCPY(machine->VertAttribs, ctx->Current.Attrib,
MAX_VERTEX_PROGRAM_ATTRIBS * 4 * sizeof(GLfloat));
- if (ctx->VertexProgram.Current->IsNVProgram) {
+ if (ctx->VertexProgram._Current->IsNVProgram) {
GLuint i;
/* Output/result regs are initialized to [0,0,0,1] */
for (i = 0; i < MAX_NV_VERTEX_PROGRAM_OUTPUTS; i++) {
@@ -225,7 +225,7 @@ run_vp( GLcontext *ctx, struct tnl_pipeline_stage *stage )
return GL_TRUE;
#endif
- if (ctx->VertexProgram.Current->IsNVProgram) {
+ if (program->IsNVProgram) {
_mesa_load_tracked_matrices(ctx);
}
else {
@@ -276,17 +276,6 @@ run_vp( GLcontext *ctx, struct tnl_pipeline_stage *stage )
/* execute the program */
_mesa_execute_program(ctx, &program->Base, &machine);
- /* Fixup fog an point size results if needed */
- if (ctx->Fog.Enabled &&
- (program->Base.OutputsWritten & (1 << VERT_RESULT_FOGC)) == 0) {
- machine.Outputs[VERT_RESULT_FOGC][0] = 1.0;
- }
-
- if (ctx->VertexProgram.PointSizeEnabled &&
- (program->Base.OutputsWritten & (1 << VERT_RESULT_PSIZ)) == 0) {
- machine.Outputs[VERT_RESULT_PSIZ][0] = ctx->Point.Size;
- }
-
/* copy the output registers into the VB->attribs arrays */
for (j = 0; j < numOutputs; j++) {
const GLuint attr = outputs[j];
@@ -301,6 +290,23 @@ run_vp( GLcontext *ctx, struct tnl_pipeline_stage *stage )
#endif
}
+ /* Fixup fog and point size results if needed */
+ if (program->IsNVProgram) {
+ if (ctx->Fog.Enabled &&
+ (program->Base.OutputsWritten & (1 << VERT_RESULT_FOGC)) == 0) {
+ for (i = 0; i < VB->Count; i++) {
+ store->results[VERT_RESULT_FOGC].data[i][0] = 1.0;
+ }
+ }
+
+ if (ctx->VertexProgram.PointSizeEnabled &&
+ (program->Base.OutputsWritten & (1 << VERT_RESULT_PSIZ)) == 0) {
+ for (i = 0; i < VB->Count; i++) {
+ store->results[VERT_RESULT_PSIZ].data[i][0] = ctx->Point.Size;
+ }
+ }
+ }
+
/* Setup the VB pointers so that the next pipeline stages get
* their data from the right place (the program output arrays).
*/