radeon/r200: move state atom to common header
authorDave Airlie <airlied@redhat.com>
Tue, 13 Jan 2009 20:28:43 +0000 (06:28 +1000)
committerDave Airlie <airlied@redhat.com>
Tue, 13 Jan 2009 20:28:43 +0000 (06:28 +1000)
src/mesa/drivers/dri/r200/r200_cmdbuf.c
src/mesa/drivers/dri/r200/r200_context.h
src/mesa/drivers/dri/r200/r200_ioctl.h
src/mesa/drivers/dri/r200/r200_state_init.c
src/mesa/drivers/dri/r300/r300_texstate.c
src/mesa/drivers/dri/radeon/common_context.h
src/mesa/drivers/dri/radeon/radeon_context.h
src/mesa/drivers/dri/radeon/radeon_ioctl.c
src/mesa/drivers/dri/radeon/radeon_state_init.c

index b7f025ca5ffc1cbb9fbb587643b4f3d4c70ba61a..a426e7ad3fa8bbecef5ae529a9ec33518d75c55f 100644 (file)
@@ -45,7 +45,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "r200_sanity.h"
 #include "radeon_reg.h"
 
-static void print_state_atom( struct r200_state_atom *state )
+static void print_state_atom( struct radeon_state_atom *state )
 {
    int i;
 
@@ -118,7 +118,7 @@ void r200SetUpAtomList( r200ContextPtr rmesa )
 
 static void r200SaveHwState( r200ContextPtr rmesa )
 {
-   struct r200_state_atom *atom;
+   struct radeon_state_atom *atom;
    char * dest = rmesa->backup_store.cmd_buf;
 
    if (R200_DEBUG & DEBUG_STATE)
@@ -146,7 +146,7 @@ void r200EmitState( r200ContextPtr rmesa )
 {
    char *dest;
    int mtu;
-   struct r200_state_atom *atom;
+   struct radeon_state_atom *atom;
 
    if (R200_DEBUG & (DEBUG_STATE|DEBUG_PRIMS))
       fprintf(stderr, "%s\n", __FUNCTION__);
index dd9944173ae707f891d3233ce3cdddcaf4b644c9..4349730bfd572a2b4c91e68cdfd98f1f23dc878d 100644 (file)
@@ -106,18 +106,6 @@ struct r200_texture_state {
 };
 
 
-struct r200_state_atom {
-   struct r200_state_atom *next, *prev;
-   const char *name;                    /* for debug */
-   int cmd_size;                        /* size in bytes */
-   GLuint is_tcl;
-   GLuint idx;
-   int *cmd;                            /* one or more cmd's */
-   int *lastcmd;                        /* one or more cmd's */
-   GLboolean dirty;
-   GLboolean (*check)( GLcontext *, int );    /* is this state active? */
-};
-
 /* Trying to keep these relatively short as the variables are becoming
  * extravagently long.  Drop the driver name prefix off the front of
  * everything - I think we know which driver we're in by now, and keep the
@@ -493,48 +481,48 @@ struct r200_state_atom {
 
 struct r200_hw_state {
    /* Head of the linked list of state atoms. */
-   struct r200_state_atom atomlist;
+   struct radeon_state_atom atomlist;
 
    /* Hardware state, stored as cmdbuf commands:  
     *   -- Need to doublebuffer for
     *           - reviving state after loss of context
     *           - eliding noop statechange loops? (except line stipple count)
     */
-   struct r200_state_atom ctx;
-   struct r200_state_atom set;
-   struct r200_state_atom vte;
-   struct r200_state_atom lin;
-   struct r200_state_atom msk;
-   struct r200_state_atom vpt;
-   struct r200_state_atom vap;
-   struct r200_state_atom vtx;
-   struct r200_state_atom tcl;
-   struct r200_state_atom msl;
-   struct r200_state_atom tcg;
-   struct r200_state_atom msc;
-   struct r200_state_atom cst;
-   struct r200_state_atom tam;
-   struct r200_state_atom tf;
-   struct r200_state_atom tex[6];
-   struct r200_state_atom cube[6];
-   struct r200_state_atom zbs;
-   struct r200_state_atom mtl[2];
-   struct r200_state_atom mat[9];
-   struct r200_state_atom lit[8]; /* includes vec, scl commands */
-   struct r200_state_atom ucp[6];
-   struct r200_state_atom pix[6]; /* pixshader stages */
-   struct r200_state_atom eye; /* eye pos */
-   struct r200_state_atom grd; /* guard band clipping */
-   struct r200_state_atom fog;
-   struct r200_state_atom glt;
-   struct r200_state_atom prf;
-   struct r200_state_atom afs[2];
-   struct r200_state_atom pvs;
-   struct r200_state_atom vpi[2];
-   struct r200_state_atom vpp[2];
-   struct r200_state_atom atf;
-   struct r200_state_atom spr;
-   struct r200_state_atom ptp;
+   struct radeon_state_atom ctx;
+   struct radeon_state_atom set;
+   struct radeon_state_atom vte;
+   struct radeon_state_atom lin;
+   struct radeon_state_atom msk;
+   struct radeon_state_atom vpt;
+   struct radeon_state_atom vap;
+   struct radeon_state_atom vtx;
+   struct radeon_state_atom tcl;
+   struct radeon_state_atom msl;
+   struct radeon_state_atom tcg;
+   struct radeon_state_atom msc;
+   struct radeon_state_atom cst;
+   struct radeon_state_atom tam;
+   struct radeon_state_atom tf;
+   struct radeon_state_atom tex[6];
+   struct radeon_state_atom cube[6];
+   struct radeon_state_atom zbs;
+   struct radeon_state_atom mtl[2];
+   struct radeon_state_atom mat[9];
+   struct radeon_state_atom lit[8]; /* includes vec, scl commands */
+   struct radeon_state_atom ucp[6];
+   struct radeon_state_atom pix[6]; /* pixshader stages */
+   struct radeon_state_atom eye; /* eye pos */
+   struct radeon_state_atom grd; /* guard band clipping */
+   struct radeon_state_atom fog;
+   struct radeon_state_atom glt;
+   struct radeon_state_atom prf;
+   struct radeon_state_atom afs[2];
+   struct radeon_state_atom pvs;
+   struct radeon_state_atom vpi[2];
+   struct radeon_state_atom vpp[2];
+   struct radeon_state_atom atf;
+   struct radeon_state_atom spr;
+   struct radeon_state_atom ptp;
 
    int max_state_size; /* Number of bytes necessary for a full state emit. */
    GLboolean is_dirty, all_dirty;
@@ -545,9 +533,6 @@ struct r200_state {
     */
    struct radeon_colorbuffer_state color;
    struct radeon_depthbuffer_state depth;
-#if 00
-   struct r200_pixel_state pixel;
-#endif
    struct radeon_scissor_state scissor;
    struct radeon_stencilbuffer_state stencil;
    struct radeon_stipple_state stipple;
@@ -559,19 +544,6 @@ struct r200_state {
                        (rvb)->address - rmesa->dma.buf0_address +      \
                        (rvb)->start)
 
-struct r200_dri_mirror {
-   __DRIcontextPrivate *context;       /* DRI context */
-   __DRIscreenPrivate  *screen;        /* DRI screen */
-   __DRIdrawablePrivate        *drawable;      /* DRI drawable bound to this ctx */
-   __DRIdrawablePrivate        *readable;      /* DRI readable bound to this ctx */
-
-   drm_context_t hwContext;
-   drm_hw_lock_t *hwLock;
-   int fd;
-   int drmMinor;
-};
-
-
 #define R200_CMD_BUF_SZ  (16*1024) 
 
 struct r200_store {
@@ -760,7 +732,7 @@ struct r200_context {
 
    /* Mirrors of some DRI state
     */
-   struct r200_dri_mirror dri;
+   struct radeon_dri_mirror dri;
 
    /* Configuration cache
     */
@@ -798,20 +770,6 @@ extern int R200_DEBUG;
 #define R200_DEBUG             0
 #endif
 
-#define DEBUG_TEXTURE  0x001
-#define DEBUG_STATE    0x002
-#define DEBUG_IOCTL    0x004
-#define DEBUG_PRIMS    0x008
-#define DEBUG_VERTS    0x010
-#define DEBUG_FALLBACKS        0x020
-#define DEBUG_VFMT     0x040
-#define DEBUG_CODEGEN  0x080
-#define DEBUG_VERBOSE  0x100
-#define DEBUG_DRI       0x200
-#define DEBUG_DMA       0x400
-#define DEBUG_SANITY    0x800
-#define DEBUG_SYNC      0x1000
-#define DEBUG_PIXEL     0x2000
-#define DEBUG_MEMORY    0x4000
+
 
 #endif /* __R200_CONTEXT_H__ */
index b760dd6eeca47dbe32a60d280e9d249acaf7ba30..d37efddaef70966d5966be5e8a683e961debd52e 100644 (file)
@@ -139,7 +139,7 @@ do {                                                                \
 
 static INLINE int R200_DB_STATECHANGE( 
    r200ContextPtr rmesa,
-   struct r200_state_atom *atom )
+   struct radeon_state_atom *atom )
 {
    if (memcmp(atom->cmd, atom->lastcmd, atom->cmd_size*4)) {
       int *tmp;
index 9e4677eda404ca60363390c2ab03c6fa253589a1..21b61243fd1c1d68015a91dd00d82b54e812ba01 100644 (file)
@@ -58,7 +58,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 void r200PrintDirty( r200ContextPtr rmesa, const char *msg )
 {
-   struct r200_state_atom *l;
+   struct radeon_state_atom *l;
 
    fprintf(stderr, msg);
    fprintf(stderr, ": ");
index 4fea82289106d564aff25c98a1dcf26a16f4f254..ed75bdd2c96ecaff0ca7f0cafd760e7bc2ba1e3c 100644 (file)
@@ -461,8 +461,8 @@ void r300SetTexOffset(__DRIcontext * pDRICtx, GLint texname,
 
 void r300SetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv)
 {
-    struct gl_texture_unit *texUnit;
-    struct gl_texture_object *texObj;
+       struct gl_texture_unit *texUnit;
+       struct gl_texture_object *texObj;
     struct gl_texture_image *texImage;
        struct radeon_renderbuffer *rb;
        r300_texture_image *rImage;
@@ -472,18 +472,21 @@ void r300SetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv)
        r300TexObjPtr t;
        uint32_t pitch_val;
 
-    target = GL_TEXTURE_RECTANGLE_ARB;
+       target = GL_TEXTURE_RECTANGLE_ARB;
+
        radeon = pDRICtx->driverPrivate;
        rmesa = pDRICtx->driverPrivate;
+
        fb = dPriv->driverPrivate;
-    texUnit = &radeon->glCtx->Texture.Unit[radeon->glCtx->Texture.CurrentUnit];
-    texObj = _mesa_select_tex_object(radeon->glCtx, texUnit, target);
-    texImage = _mesa_get_tex_image(radeon->glCtx, texObj, target, 0);
+        texUnit = &radeon->glCtx->Texture.Unit[radeon->glCtx->Texture.CurrentUnit];
+       texObj = _mesa_select_tex_object(radeon->glCtx, texUnit, target);
+        texImage = _mesa_get_tex_image(radeon->glCtx, texObj, target, 0);
+
        rImage = get_r300_texture_image(texImage);
        t = r300_tex_obj(texObj);
-    if (t == NULL) {
-        return;
-    }
+        if (t == NULL) {
+           return;
+       }
 
     radeon_update_renderbuffers(pDRICtx, dPriv);
     /* back & depth buffer are useless free them right away */
@@ -514,8 +517,9 @@ void r300SetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv)
         r300_miptree_unreference(rImage->mt);
         rImage->mt = NULL;
     }
+       fprintf(stderr,"settexbuf %dx%d@%d\n", rb->width, rb->height, rb->cpp);
     _mesa_init_teximage_fields(radeon->glCtx, target, texImage,
-                               rb->width, rb->height, rb->cpp, 0, rb->cpp);
+                               rb->width, rb->height, 1, 0, rb->cpp);
        texImage->TexFormat = &_mesa_texformat_rgba8888_rev;
     rImage->bo = rb->bo;
 
index e9bf4137864c68e7beca6106cc8a9d7af314d10d..d8539df6df0ee4608a2757b0bcec0e796ef26803 100644 (file)
@@ -74,11 +74,12 @@ struct radeon_state_atom {
        struct radeon_state_atom *next, *prev;
        const char *name;       /* for debug */
        int cmd_size;           /* size in bytes */
+        GLuint idx;
        GLuint is_tcl;
        int *cmd;               /* one or more cmd's */
        int *lastcmd;           /* one or more cmd's */
        GLboolean dirty;        /* dirty-mark in emit_state_list */
-       GLboolean(*check) (GLcontext *);        /* is this state active? */
+        GLboolean(*check) (GLcontext *, int idx);      /* is this state active? */
 };
 
 typedef struct radeon_tex_obj radeonTexObj, *radeonTexObjPtr;
@@ -176,3 +177,39 @@ static INLINE GLuint radeonPackColor(GLuint cpp,
                return 0;
        }
 }
+
+struct radeon_dri_mirror {
+       __DRIcontextPrivate *context;   /* DRI context */
+       __DRIscreenPrivate *screen;     /* DRI screen */
+
+   /**
+    * DRI drawable bound to this context for drawing.
+    */
+       __DRIdrawablePrivate *drawable;
+
+   /**
+    * DRI drawable bound to this context for reading.
+    */
+       __DRIdrawablePrivate *readable;
+
+       drm_context_t hwContext;
+       drm_hw_lock_t *hwLock;
+       int fd;
+       int drmMinor;
+};
+
+#define DEBUG_TEXTURE  0x001
+#define DEBUG_STATE    0x002
+#define DEBUG_IOCTL    0x004
+#define DEBUG_PRIMS    0x008
+#define DEBUG_VERTS    0x010
+#define DEBUG_FALLBACKS        0x020
+#define DEBUG_VFMT     0x040
+#define DEBUG_CODEGEN  0x080
+#define DEBUG_VERBOSE  0x100
+#define DEBUG_DRI       0x200
+#define DEBUG_DMA       0x400
+#define DEBUG_SANITY    0x800
+#define DEBUG_SYNC      0x1000
+#define DEBUG_PIXEL     0x2000
+#define DEBUG_MEMORY    0x4000
index 75ec2d15dd8f0b87520b78fde30d0e278e03e295..bdd4a476098787a4d6b5c1dadb0ffb7e11897e6b 100644 (file)
@@ -351,25 +351,6 @@ struct radeon_state {
                        (rvb)->address - rmesa->dma.buf0_address +      \
                        (rvb)->start)
 
-struct radeon_dri_mirror {
-       __DRIcontextPrivate *context;   /* DRI context */
-       __DRIscreenPrivate *screen;     /* DRI screen */
-
-   /**
-    * DRI drawable bound to this context for drawing.
-    */
-       __DRIdrawablePrivate *drawable;
-
-   /**
-    * DRI drawable bound to this context for reading.
-    */
-       __DRIdrawablePrivate *readable;
-
-       drm_context_t hwContext;
-       drm_hw_lock_t *hwLock;
-       int fd;
-       int drmMinor;
-};
 
 #define RADEON_CMD_BUF_SZ  (8*1024)
 
@@ -585,18 +566,4 @@ extern int RADEON_DEBUG;
 #define RADEON_DEBUG           0
 #endif
 
-#define DEBUG_TEXTURE  0x0001
-#define DEBUG_STATE    0x0002
-#define DEBUG_IOCTL    0x0004
-#define DEBUG_PRIMS    0x0008
-#define DEBUG_VERTS    0x0010
-#define DEBUG_FALLBACKS        0x0020
-#define DEBUG_VFMT     0x0040
-#define DEBUG_CODEGEN  0x0080
-#define DEBUG_VERBOSE  0x0100
-#define DEBUG_DRI       0x0200
-#define DEBUG_DMA       0x0400
-#define DEBUG_SANITY    0x0800
-#define DEBUG_SYNC      0x1000
-
 #endif                         /* __RADEON_CONTEXT_H__ */
index 09acf6b4f85d9c31931928b2e488281cc49ff632..9858dacc1369135439055cb9f55dd331288ee951 100644 (file)
@@ -85,7 +85,7 @@ static void radeonSaveHwState( radeonContextPtr rmesa )
    rmesa->backup_store.cmd_used = 0;
 
    foreach( atom, &rmesa->hw.atomlist ) {
-      if ( atom->check( rmesa->glCtx ) ) {
+      if ( atom->check( rmesa->glCtx, 0 ) ) {
         int size = atom->cmd_size * 4;
         memcpy( dest, atom->cmd, size);
         dest += size;
@@ -198,7 +198,7 @@ void radeonEmitState( radeonContextPtr rmesa )
    if (RADEON_DEBUG & DEBUG_STATE) {
       foreach(atom, &rmesa->hw.atomlist) {
         if (atom->dirty || rmesa->hw.all_dirty) {
-           if (atom->check(rmesa->glCtx))
+           if (atom->check(rmesa->glCtx, 0))
               print_state_atom(atom);
            else
               fprintf(stderr, "skip state %s\n", atom->name);
@@ -213,7 +213,7 @@ void radeonEmitState( radeonContextPtr rmesa )
           atom->is_tcl)
         atom->dirty = GL_FALSE;
       if (atom->dirty) {
-        if (atom->check(rmesa->glCtx)) {
+       if (atom->check(rmesa->glCtx, 0)) {
            int size = atom->cmd_size * 4;
            memcpy(dest, atom->cmd, size);
            dest += size;
index 57dc3800501a08610d2cc0a361f9e23332cdff41..5b1e79bad248052258b1cff81212cdb6592b3024 100644 (file)
@@ -96,14 +96,14 @@ static int cmdscl( int offset, int stride, int count )
    return h.i;
 }
 
-#define CHECK( NM, FLAG )                      \
-static GLboolean check_##NM( GLcontext *ctx )  \
-{                                              \
-   return FLAG;                                        \
+#define CHECK( NM, FLAG )                              \
+static GLboolean check_##NM( GLcontext *ctx, int idx ) \
+{                                                      \
+   return FLAG;                                                \
 }
 
 #define TCL_CHECK( NM, FLAG )                          \
-static GLboolean check_##NM( GLcontext *ctx )          \
+static GLboolean check_##NM( GLcontext *ctx, int idx ) \
 {                                                      \
    radeonContextPtr rmesa = RADEON_CONTEXT(ctx);       \
    return !rmesa->TclFallback && (FLAG);               \