From 19b260119a8ef78bbe1815d8011ff64a22208b3d Mon Sep 17 00:00:00 2001 From: Vladimir Dergachev Date: Thu, 3 Feb 2005 06:33:44 +0000 Subject: Since high bits can be used for flags, mask them out. This stops arbvpwarpmesh from segfaulting and it actually works - with immediate mode rendering. --- src/mesa/drivers/dri/r300/r300_vertexprog.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/mesa/drivers/dri/r300') diff --git a/src/mesa/drivers/dri/r300/r300_vertexprog.c b/src/mesa/drivers/dri/r300/r300_vertexprog.c index 6f1cd9fcac..f4b0d4109a 100644 --- a/src/mesa/drivers/dri/r300/r300_vertexprog.c +++ b/src/mesa/drivers/dri/r300/r300_vertexprog.c @@ -39,6 +39,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #define SCALAR_FLAG (1<<31) #define FLAG_MASK (1<<31) +#define OP_MASK (0xf) /* we are unlikely to have more than 15 */ #define OPN(operator, ip, op) {#operator, VP_OPCODE_##operator, ip, op} struct{ @@ -430,7 +431,7 @@ static unsigned long op_operands(enum vp_opcode opcode) /* Can we trust mesas opcodes to be in order ? */ for(i=0; i < sizeof(op_names) / sizeof(*op_names); i++) if(op_names[i].opcode == opcode) - return op_names[i].ip; + return op_names[i].ip & OP_MASK; fprintf(stderr, "op %d not found in op_names\n", opcode); exit(-1); -- cgit v1.2.3