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:
parent
db251d72c8
commit
61e694f270
|
@ -1738,7 +1738,8 @@ enum register_file
|
|||
PROGRAM_NAMED_PARAM,
|
||||
PROGRAM_STATE_VAR,
|
||||
PROGRAM_WRITE_ONLY,
|
||||
PROGRAM_ADDRESS
|
||||
PROGRAM_ADDRESS,
|
||||
PROGRAM_UNDEFINED /* invalid value */
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -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")) {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue