summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Paul <brian.paul@tungstengraphics.com>2004-02-04 15:44:53 +0000
committerBrian Paul <brian.paul@tungstengraphics.com>2004-02-04 15:44:53 +0000
commitb19cb627e002ec06dc92ab42c8107a3e34f2d181 (patch)
tree5fc83044b7df9b68908f07483e890bc2c0901e11
parent72aeea4eea1454efcdd78908343bbebd99ebcc01 (diff)
fix stores to vertex state program registers
-rw-r--r--src/mesa/main/nvvertexec.c12
-rw-r--r--src/mesa/main/nvvertparse.c8
2 files changed, 15 insertions, 5 deletions
diff --git a/src/mesa/main/nvvertexec.c b/src/mesa/main/nvvertexec.c
index fd1519e9a8..9663b38157 100644
--- a/src/mesa/main/nvvertexec.c
+++ b/src/mesa/main/nvvertexec.c
@@ -1,6 +1,6 @@
/*
* Mesa 3-D graphics library
- * Version: 6.0
+ * Version: 6.0.1
*
* Copyright (C) 1999-2004 Brian Paul All Rights Reserved.
*
@@ -326,8 +326,16 @@ store_vector4( const struct vp_dst_register *dest,
case PROGRAM_OUTPUT:
dst = state->Outputs[dest->Index];
break;
+ case PROGRAM_ENV_PARAM:
+ {
+ /* a slight hack */
+ GET_CURRENT_CONTEXT(ctx);
+ dst = ctx->VertexProgram.Parameters[dest->Index];
+ }
+ break;
default:
- _mesa_problem(NULL, "Invalid register file in fetch_vector1(vp)");
+ _mesa_problem(NULL, "Invalid register file in store_vector4(file=%d)",
+ dest->File);
return;
}
diff --git a/src/mesa/main/nvvertparse.c b/src/mesa/main/nvvertparse.c
index 15451adc71..bacf5a5af3 100644
--- a/src/mesa/main/nvvertparse.c
+++ b/src/mesa/main/nvvertparse.c
@@ -1,8 +1,8 @@
/*
* Mesa 3-D graphics library
- * Version: 5.1
+ * Version: 6.0.1
*
- * Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
+ * Copyright (C) 1999-2004 Brian Paul All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -578,8 +578,10 @@ Parse_MaskedDstReg(struct parse_state *parseState, struct vp_dst_register *dstRe
if (!Parse_OutputReg(parseState, &dstReg->Index))
RETURN_ERROR;
}
- else if (parseState->isStateProgram && token[0] == 'c') {
+ else if (parseState->isStateProgram && token[0] == 'c' &&
+ parseState->isStateProgram) {
/* absolute program parameter register */
+ /* Only valid for vertex state programs */
dstReg->File = PROGRAM_ENV_PARAM;
if (!Parse_AbsParamReg(parseState, &dstReg->Index))
RETURN_ERROR;