Make the vertex program source register Index field a signed int since

relative addressing can be negative.
Change some GLuint indexes to GLint in the t_vp_build.c file.
Added PROGRAM_UNDEFINED token for initializing the register File field to
avoid a gcc 4.0 warning.
This commit is contained in:
Brian Paul 2005-07-22 02:53:38 +00:00
parent db251d72c8
commit 61e694f270
4 changed files with 13 additions and 12 deletions

View File

@ -1738,7 +1738,8 @@ enum register_file
PROGRAM_NAMED_PARAM,
PROGRAM_STATE_VAR,
PROGRAM_WRITE_ONLY,
PROGRAM_ADDRESS
PROGRAM_ADDRESS,
PROGRAM_UNDEFINED /* invalid value */
};

View File

@ -1142,10 +1142,10 @@ Parse_InstructionSequence(struct parse_state *parseState,
struct vp_instruction *inst = program + parseState->numInst;
/* Initialize the instruction */
inst->SrcReg[0].File = (enum register_file) -1;
inst->SrcReg[1].File = (enum register_file) -1;
inst->SrcReg[2].File = (enum register_file) -1;
inst->DstReg.File = (enum register_file) -1;
inst->SrcReg[0].File = PROGRAM_UNDEFINED;
inst->SrcReg[1].File = PROGRAM_UNDEFINED;
inst->SrcReg[2].File = PROGRAM_UNDEFINED;
inst->DstReg.File = PROGRAM_UNDEFINED;
inst->Data = NULL;
if (Parse_String(parseState, "MOV")) {

View File

@ -1,8 +1,8 @@
/*
* Mesa 3-D graphics library
* Version: 6.3
* Version: 6.3.1
*
* Copyright (C) 1999-2004 Brian Paul All Rights Reserved.
* Copyright (C) 1999-2005 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"),
@ -76,19 +76,19 @@ enum vp_opcode
/* Instruction source register */
struct vp_src_register
{
GLuint File:4;
GLuint Index:8;
GLuint File:4; /* one of the PROGRAM_* register file values */
GLint Index:9; /* may be negative for relative addressing */
GLuint Swizzle:12;
GLuint Negate:4; /* ARB requires component-wise negation. */
GLuint RelAddr:1;
GLuint pad:3;
GLuint pad:2;
};
/* Instruction destination register */
struct vp_dst_register
{
GLuint File:4;
GLuint File:4; /* one of the PROGRAM_* register file values */
GLuint Index:8;
GLuint WriteMask:4;
GLuint pad:16;

View File

@ -247,7 +247,7 @@ static struct state_key *make_state_key( GLcontext *ctx )
*/
struct ureg {
GLuint file:4;
GLuint idx:8;
GLint idx:8; /* relative addressing may be negative */
GLuint negate:1;
GLuint swz:12;
GLuint pad:7;