summaryrefslogtreecommitdiffstats
path: root/src/VBox/GuestHost/OpenGL/include/state/cr_client.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/VBox/GuestHost/OpenGL/include/state/cr_client.h')
-rw-r--r--src/VBox/GuestHost/OpenGL/include/state/cr_client.h143
1 files changed, 143 insertions, 0 deletions
diff --git a/src/VBox/GuestHost/OpenGL/include/state/cr_client.h b/src/VBox/GuestHost/OpenGL/include/state/cr_client.h
new file mode 100644
index 00000000..a727f260
--- /dev/null
+++ b/src/VBox/GuestHost/OpenGL/include/state/cr_client.h
@@ -0,0 +1,143 @@
+/* Copyright (c) 2001, Stanford University
+ * All rights reserved.
+ *
+ * See the file LICENSE.txt for information on redistributing this software.
+ */
+
+#ifndef CR_STATE_CLIENT_H
+#define CR_STATE_CLIENT_H
+
+#include "state/cr_statetypes.h"
+#include "state/cr_limits.h"
+#include "state/cr_bufferobject.h"
+#include "cr_bits.h"
+
+#include <iprt/cdefs.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct {
+ CRbitvalue dirty[CR_MAX_BITARRAY];
+ /* pixel pack/unpack */
+ CRbitvalue pack[CR_MAX_BITARRAY];
+ CRbitvalue unpack[CR_MAX_BITARRAY];
+ /* vertex array */
+ CRbitvalue enableClientState[CR_MAX_BITARRAY];
+ CRbitvalue clientPointer[CR_MAX_BITARRAY];
+ CRbitvalue *v; /* vertex */
+ CRbitvalue *n; /* normal */
+ CRbitvalue *c; /* color */
+ CRbitvalue *i; /* index */
+ CRbitvalue *t[CR_MAX_TEXTURE_UNITS]; /* texcoord */
+ CRbitvalue *e; /* edgeflag */
+ CRbitvalue *s; /* secondary color */
+ CRbitvalue *f; /* fog coord */
+#ifdef CR_NV_vertex_program
+ CRbitvalue *a[CR_MAX_VERTEX_ATTRIBS]; /* NV_vertex_program */
+#endif
+} CRClientBits;
+
+/*
+ * NOTE!!!! If you change this structure, search through the code for
+ * occurrences of 'defaultPacking' and fix the static initializations!!!!
+ */
+typedef struct {
+ GLint rowLength;
+ GLint skipRows;
+ GLint skipPixels;
+ GLint alignment;
+ GLint imageHeight;
+ GLint skipImages;
+ GLboolean swapBytes;
+ GLboolean psLSBFirst; /* don't conflict with crap from Xlib.h */
+} CRPixelPackState;
+
+typedef struct {
+ unsigned char *p;
+ GLint size;
+ GLint type;
+ GLint stride;
+ GLboolean enabled;
+ GLboolean normalized; /* Added with GL_ARB_vertex_program */
+ int bytesPerIndex;
+#ifdef CR_ARB_vertex_buffer_object
+ CRBufferObject *buffer;
+#endif
+#ifdef CR_EXT_compiled_vertex_array
+ GLboolean locked;
+ unsigned char *prevPtr;
+ GLint prevStride;
+#endif
+} CRClientPointer;
+
+typedef struct {
+ CRClientPointer v; /* vertex */
+ CRClientPointer n; /* normal */
+ CRClientPointer c; /* color */
+ CRClientPointer i; /* color index */
+ CRClientPointer t[CR_MAX_TEXTURE_UNITS]; /* texcoords */
+ CRClientPointer e; /* edge flags */
+ CRClientPointer s; /* secondary color */
+ CRClientPointer f; /* fog coord */
+#ifdef CR_NV_vertex_program
+ CRClientPointer a[CR_MAX_VERTEX_ATTRIBS]; /* vertex attribs */
+#endif
+#ifdef CR_NV_vertex_array_range
+ GLboolean arrayRange;
+ GLboolean arrayRangeValid;
+ void *arrayRangePointer;
+ GLuint arrayRangeLength;
+#endif
+#ifdef CR_EXT_compiled_vertex_array
+ GLint lockFirst;
+ GLint lockCount;
+ GLboolean locked;
+# ifdef IN_GUEST
+ GLboolean synced;
+# endif
+#endif
+} CRVertexArrays;
+
+#define CRSTATECLIENT_MAX_VERTEXARRAYS (7+CR_MAX_TEXTURE_UNITS+CR_MAX_VERTEX_ATTRIBS)
+
+typedef struct {
+ /* pixel pack/unpack */
+ CRPixelPackState pack;
+ CRPixelPackState unpack;
+
+ CRVertexArrays array;
+
+ GLint curClientTextureUnit;
+
+ /* state stacks (glPush/PopClientState) */
+ GLint attribStackDepth;
+ CRbitvalue pushMaskStack[CR_MAX_CLIENT_ATTRIB_STACK_DEPTH];
+
+ GLint pixelStoreStackDepth;
+ CRPixelPackState pixelPackStoreStack[CR_MAX_CLIENT_ATTRIB_STACK_DEPTH];
+ CRPixelPackState pixelUnpackStoreStack[CR_MAX_CLIENT_ATTRIB_STACK_DEPTH];
+
+ GLint vertexArrayStackDepth;
+ CRVertexArrays vertexArrayStack[CR_MAX_CLIENT_ATTRIB_STACK_DEPTH];
+} CRClientState;
+
+extern const CRPixelPackState crStateNativePixelPacking;
+
+struct CRContext;
+
+DECLEXPORT(void) crStateClientInitBits(CRClientBits *c);
+DECLEXPORT(void) crStateClientDestroyBits(CRClientBits *c);
+DECLEXPORT(void) crStateClientInit(struct CRContext *g);
+DECLEXPORT(void) crStateClientDestroy(struct CRContext *g);
+
+DECLEXPORT(GLboolean) crStateUseServerArrays(void);
+DECLEXPORT(GLboolean) crStateUseServerArrayElements(void);
+DECLEXPORT(CRClientPointer*) crStateGetClientPointerByIndex(int index, CRVertexArrays *array);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* CR_CLIENT_H */