summaryrefslogtreecommitdiff
path: root/src/i830.h
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2006-10-26 15:47:49 -0700
committerEric Anholt <eric@anholt.net>2006-10-26 15:47:49 -0700
commit25e6e497824a23eb231fc6fd6e483f601d612cee (patch)
tree85f317aff96c3ac817932fc70313c1c8ac01f4ce /src/i830.h
parent0bdcce2e4541c6e441c44aad49254ad3093cedb2 (diff)
Major cleanup of 3D invariant state, fixing hangs with rotation and render.exa
Now, the generic invariant state is always set while the X Server is active, and happens automatically when the X Server grabs the DRI lock. More 3D state is moved to the generic code. Then, the 3D consumers (video, rotation, render) set last_3d to their enum entry, and can update their own invariant state when another consumer was active.
Diffstat (limited to 'src/i830.h')
-rw-r--r--src/i830.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/i830.h b/src/i830.h
index df1c171a..9c37068e 100644
--- a/src/i830.h
+++ b/src/i830.h
@@ -192,6 +192,13 @@ typedef struct _region {
int x0,x1,y0,y1;
} region;
+/** enumeration of 3d consumers so some can maintain invariant state. */
+enum last_3d {
+ LAST_3D_OTHER,
+ LAST_3D_VIDEO,
+ LAST_3D_RENDER,
+ LAST_3D_ROTATION
+};
typedef struct _I830Rec {
unsigned char *MMIOBase;
@@ -453,6 +460,8 @@ typedef struct _I830Rec {
CARD32 savedAsurf;
CARD32 savedBsurf;
+
+ enum last_3d last_3d;
} I830Rec;
#define I830PTR(p) ((I830Ptr)((p)->driverPrivate))