summaryrefslogtreecommitdiffstats
path: root/src/VBox/GuestHost/OpenGL/include/state/cr_current.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/VBox/GuestHost/OpenGL/include/state/cr_current.h')
-rw-r--r--src/VBox/GuestHost/OpenGL/include/state/cr_current.h107
1 files changed, 107 insertions, 0 deletions
diff --git a/src/VBox/GuestHost/OpenGL/include/state/cr_current.h b/src/VBox/GuestHost/OpenGL/include/state/cr_current.h
new file mode 100644
index 00000000..d4a05708
--- /dev/null
+++ b/src/VBox/GuestHost/OpenGL/include/state/cr_current.h
@@ -0,0 +1,107 @@
+/* Copyright (c) 2001, Stanford University
+ * All rights reserved.
+ *
+ * See the file LICENSE.txt for information on redistributing this software.
+ */
+
+#ifndef CR_STATE_CURRENT_H
+#define CR_STATE_CURRENT_H
+
+#include "state/cr_currentpointers.h"
+
+#include <iprt/cdefs.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#define VERT_ATTRIB_POS 0
+#define VERT_ATTRIB_WEIGHT 1
+#define VERT_ATTRIB_NORMAL 2
+#define VERT_ATTRIB_COLOR0 3
+#define VERT_ATTRIB_COLOR1 4
+#define VERT_ATTRIB_FOG 5
+#define VERT_ATTRIB_SIX 6
+#define VERT_ATTRIB_SEVEN 7
+#define VERT_ATTRIB_TEX0 8
+#define VERT_ATTRIB_TEX1 9
+#define VERT_ATTRIB_TEX2 10
+#define VERT_ATTRIB_TEX3 11
+#define VERT_ATTRIB_TEX4 12
+#define VERT_ATTRIB_TEX5 13
+#define VERT_ATTRIB_TEX6 14
+#define VERT_ATTRIB_TEX7 15
+#define VERT_ATTRIB_MAX 16
+
+
+typedef struct {
+ CRbitvalue dirty[CR_MAX_BITARRAY];
+ /* Regardless of NV_vertex_program, we use this array */
+ CRbitvalue vertexAttrib[CR_MAX_VERTEX_ATTRIBS][CR_MAX_BITARRAY];
+ CRbitvalue edgeFlag[CR_MAX_BITARRAY];
+ CRbitvalue colorIndex[CR_MAX_BITARRAY];
+ CRbitvalue rasterPos[CR_MAX_BITARRAY];
+} CRCurrentBits;
+
+
+typedef struct {
+ /* Pre-transform values */
+ /* Regardless of NV_vertex_program, we use this array */
+ GLfloat attrib[CR_MAX_VERTEX_ATTRIBS][4];
+ GLboolean edgeFlag;
+ GLfloat colorIndex;
+ /* Post-transform values */
+ GLvectorf eyePos;
+ GLvectorf clipPos;
+ GLvectorf winPos;
+} CRVertex;
+
+
+typedef struct {
+ /* Regardless of NV_vertex_program, we use this array */
+ GLfloat vertexAttrib[CR_MAX_VERTEX_ATTRIBS][4];
+ GLfloat vertexAttribPre[CR_MAX_VERTEX_ATTRIBS][4];
+
+ CRCurrentStatePointers *current;
+
+ GLboolean rasterValid;
+ GLfloat rasterAttrib[CR_MAX_VERTEX_ATTRIBS][4];
+ GLfloat rasterAttribPre[CR_MAX_VERTEX_ATTRIBS][4];
+
+ GLdouble rasterIndex;
+ GLboolean edgeFlag;
+ GLboolean edgeFlagPre;
+ GLfloat colorIndex;
+ GLfloat colorIndexPre;
+
+ /* XXX this isn't really "current" state - move someday */
+ GLuint attribsUsedMask; /* for ARB_vertex_program */
+ GLboolean inBeginEnd;
+ GLenum mode;
+ GLuint beginEndMax;
+ GLuint beginEndNum;
+ GLuint flushOnEnd;
+
+} CRCurrentState;
+
+DECLEXPORT(void) crStateCurrentInit( CRContext *ctx );
+
+DECLEXPORT(void) crStateCurrentRecover( void );
+
+DECLEXPORT(void) crStateCurrentRecoverNew(CRContext *g, CRCurrentStatePointers *current);
+
+DECLEXPORT(void) crStateCurrentDiff(CRCurrentBits *bb, CRbitvalue *bitID,
+ CRContext *fromCtx, CRContext *toCtx);
+DECLEXPORT(void) crStateCurrentSwitch(CRCurrentBits *bb, CRbitvalue *bitID,
+ CRContext *fromCtx, CRContext *toCtx);
+
+DECLEXPORT(void) crStateRasterPosUpdate(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+
+DECLEXPORT(GLuint) crStateNeedDummyZeroVertexArray(CRContext *g, CRCurrentStatePointers *current, GLfloat *pZva);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* CR_STATE_CURRENT_H */