2
* Mesa 3-D graphics library
5
* Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
7
* Permission is hereby granted, free of charge, to any person obtaining a
8
* copy of this software and associated documentation files (the "Software"),
9
* to deal in the Software without restriction, including without limitation
10
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
11
* and/or sell copies of the Software, and to permit persons to whom the
12
* Software is furnished to do so, subject to the following conditions:
14
* The above copyright notice and this permission notice shall be included
15
* in all copies or substantial portions of the Software.
17
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
20
* BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
21
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
#ifndef PROG_EXECUTE_H
26
#define PROG_EXECUTE_H
28
#include "main/config.h"
29
#include "main/mtypes.h"
32
typedef void (*FetchTexelLodFunc)(GLcontext *ctx, const GLfloat texcoord[4],
33
GLfloat lambda, GLuint unit, GLfloat color[4]);
35
typedef void (*FetchTexelDerivFunc)(GLcontext *ctx, const GLfloat texcoord[4],
36
const GLfloat texdx[4],
37
const GLfloat texdy[4],
39
GLuint unit, GLfloat color[4]);
43
* Virtual machine state used during execution of vertex/fragment programs.
45
struct gl_program_machine
47
const struct gl_program *CurProgram;
49
/** Fragment Input attributes */
50
GLfloat (*Attribs)[MAX_WIDTH][4];
53
GLuint NumDeriv; /**< Max index into DerivX/Y arrays */
54
GLuint CurElement; /**< Index into Attribs arrays */
56
/** Vertex Input attribs */
57
GLfloat VertAttribs[VERT_ATTRIB_MAX][4];
59
GLfloat Temporaries[MAX_PROGRAM_TEMPS][4];
60
GLfloat Outputs[MAX_PROGRAM_OUTPUTS][4];
61
GLfloat (*EnvParams)[4]; /**< Vertex or Fragment env parameters */
62
GLuint CondCodes[4]; /**< COND_* value for x/y/z/w */
63
GLint AddressReg[MAX_PROGRAM_ADDRESS_REGS][4];
65
const GLubyte *Samplers; /** Array mapping sampler var to tex unit */
67
GLuint CallStack[MAX_PROGRAM_CALL_DEPTH]; /**< For CAL/RET instructions */
68
GLuint StackDepth; /**< Index/ptr to top of CallStack[] */
70
/** Texture fetch functions */
71
FetchTexelLodFunc FetchTexelLod;
72
FetchTexelDerivFunc FetchTexelDeriv;
77
_mesa_get_program_register(GLcontext *ctx, gl_register_file file,
78
GLuint index, GLfloat val[4]);
81
_mesa_execute_program(GLcontext *ctx,
82
const struct gl_program *program,
83
struct gl_program_machine *machine);
86
#endif /* PROG_EXECUTE_H */