Merge branch 'llvm-cliptest-viewport'
[mesa.git] / src / mesa / drivers / dri / savage / savagecontext.h
index b2d47a469398201c2935985b241e2b8d444c5e27..75bec62fa84204a8db3310d1888b7df72a33e4e0 100644 (file)
@@ -31,15 +31,14 @@ typedef struct savage_context_t savageContext;
 typedef struct savage_context_t *savageContextPtr;
 typedef struct savage_texture_object_t *savageTextureObjectPtr;
 
-#include <X11/Xlibint.h>
 #include "dri_util.h"
-#include "mtypes.h"
+#include "main/mtypes.h"
 #include "xf86drm.h"
 #include "drm.h"
 #include "savage_drm.h"
 #include "savage_init.h"
 #include "savage_3d_reg.h"
-#include "mm.h"
+#include "main/mm.h"
 #include "tnl/t_vertex.h"
 
 #include "texmem.h"
@@ -79,7 +78,6 @@ typedef struct savage_texture_object_t *savageTextureObjectPtr;
 #define SAVAGE_UPLOAD_FOGTBL   0x8  /* fog table */
 #define SAVAGE_UPLOAD_GLOBAL   0x10 /* most global regs */
 #define SAVAGE_UPLOAD_TEXGLOBAL 0x20 /* TexBlendColor (S4 only) */
-#define SAVAGE_UPLOAD_CLIPRECTS 0x1000 /* FIXME: get rid of this */
 
 /*define the max numer of vertex in vertex buf*/
 #define SAVAGE_MAX_VERTEXS 0x10000
@@ -87,7 +85,6 @@ typedef struct savage_texture_object_t *savageTextureObjectPtr;
 /* Don't make it too big. We don't want to buffer up a whole frame
  * that would force the application to wait later. */
 #define SAVAGE_CMDBUF_SIZE 1024
-#define SAVAGE_MAX_VERTS_PENDING 1024
 
 /* Use the templated vertex formats:
  */
@@ -132,7 +129,7 @@ typedef void (*savage_point_func)( savageContextPtr, savageVertex * );
 struct savage_vtxbuf_t {
     GLuint total, used, flushed; /* in 32 bit units */
     GLuint idx;                /* for DMA buffers */
-    u_int32_t *buf;
+    uint32_t *buf;
 };
 
 struct savage_cmdbuf_t {
@@ -151,7 +148,7 @@ struct savage_elt_t {
 struct savage_context_t {
     GLint refcount;
 
-    GLcontext *glCtx;
+    struct gl_context *glCtx;
 
     int lastTexHeap;
     driTexHeap *textureHeaps[SAVAGE_NR_TEX_HEAPS];
@@ -181,7 +178,7 @@ struct savage_context_t {
     struct savage_vtxbuf_t *vtxBuf;
 
     /* aperture base */
-    GLuint apertureBase[5];
+    GLubyte *apertureBase[5];
     GLuint aperturePitch;
     /* Manage hardware state */
     GLuint dirty;
@@ -191,6 +188,7 @@ struct savage_context_t {
      * completely on the fly:
      */
     GLuint LcsCullMode;
+    GLuint texEnvColor;
 
    /* Vertex state 
     */
@@ -227,9 +225,8 @@ struct savage_context_t {
     GLfloat hw_viewport[16];
     /* DRI stuff */
     GLuint bufferSize;
-    GLuint vertsPending;
 
-    GLframebuffer *glBuffer;
+    struct gl_framebuffer *glBuffer;
    
     /* Two flags to keep track of fallbacks. */
     GLuint Fallback;
@@ -238,8 +235,6 @@ struct savage_context_t {
 
     /* These refer to the current draw (front vs. back) buffer:
      */
-    char *drawMap;             /* draw buffer address in virtual mem */
-    char *readMap;     
     int drawX;                 /* origin of drawable in draw buffer */
     int drawY;
     GLuint numClipRects;               /* cliprects for that buffer */
@@ -263,26 +258,23 @@ struct savage_context_t {
     GLuint dirtyAge;
     GLuint any_contend;                /* throttle me harder */
 
-    GLuint scissor;
-    GLboolean scissorChanged;
-    drm_clip_rect_t draw_rect;
-    drm_clip_rect_t scissor_rect;
+    /* Scissor state needs to be mirrored so buffered commands can be
+     * emitted with the old scissor state when scissor state changes.
+     */
+    struct {
+       GLboolean enabled;
+       GLint x, y;
+       GLsizei w, h;
+    } scissor;
 
     drm_context_t hHWContext;
     drm_hw_lock_t *driHwLock;
     GLuint driFd;
 
-    __DRIdrawablePrivate *driDrawable;
-    __DRIdrawablePrivate *driReadable;
-
-    /**
-     * Drawable used by Mesa for software fallbacks for reading and
-     * writing.  It is set by Mesa's \c SetBuffer callback, and will always be
-     * either \c mga_context_t::driDrawable or \c mga_context_t::driReadable.
-     */
-    __DRIdrawablePrivate *mesa_drawable;
+    __DRIdrawable *driDrawable;
+    __DRIdrawable *driReadable;
 
-    __DRIscreenPrivate *driScreen;
+    __DRIscreen *driScreen;
     savageScreenPrivate *savageScreen; 
     drm_savage_sarea_t *sarea;
 
@@ -300,6 +292,7 @@ struct savage_context_t {
     GLboolean float_depth;
     GLboolean enable_fastpath;
     GLboolean enable_vdma;
+    GLboolean sync_frames;
 };
 
 #define SAVAGE_CONTEXT(ctx) ((savageContextPtr)(ctx->DriverCtx))