i965g: add data type tags to aid dumping/decoding
authorKeith Whitwell <keithw@vmware.com>
Thu, 5 Nov 2009 10:59:02 +0000 (10:59 +0000)
committerKeith Whitwell <keithw@vmware.com>
Thu, 5 Nov 2009 10:59:02 +0000 (10:59 +0000)
src/gallium/drivers/i965/brw_batchbuffer.c
src/gallium/drivers/i965/brw_context.h
src/gallium/drivers/i965/brw_curbe.c
src/gallium/drivers/i965/brw_pipe_query.c
src/gallium/drivers/i965/brw_screen_buffers.c
src/gallium/drivers/i965/brw_screen_texture.c
src/gallium/drivers/i965/brw_state_cache.c
src/gallium/drivers/i965/brw_state_dump.c
src/gallium/drivers/i965/brw_winsys.h
src/gallium/winsys/drm/i965/xlib/xlib_i965.c

index 673bd1ed44d9898317fc53f914bdd2d6d3eaa85d..ca612e5ed0b86a7659471f017024c17fd8302135 100644 (file)
@@ -53,7 +53,9 @@ brw_batchbuffer_reset(struct brw_batchbuffer *batch)
    if (batch->malloc_buffer)
       batch->map = batch->malloc_buffer;
    else 
-      batch->map = batch->sws->bo_map(batch->buf, GL_TRUE);
+      batch->map = batch->sws->bo_map(batch->buf,
+                                      BRW_DATA_OTHER,
+                                      GL_TRUE);
 
    batch->size = BRW_BATCH_SIZE;
    batch->ptr = batch->map;
@@ -132,7 +134,10 @@ _brw_batchbuffer_flush(struct brw_batchbuffer *batch,
    used = batch->ptr - batch->map;
 
    if (batch->use_malloc_buffer) {
-      batch->sws->bo_subdata(batch->buf, 0, used, batch->map );
+      batch->sws->bo_subdata(batch->buf, 
+                             BRW_DATA_OTHER,
+                             0, used,
+                             batch->map );
       batch->map = NULL;
    }
    else {
@@ -145,7 +150,9 @@ _brw_batchbuffer_flush(struct brw_batchbuffer *batch,
    batch->sws->bo_exec(batch->buf, used );
 
    if (1 /*BRW_DEBUG & DEBUG_BATCH*/) {
-      void *ptr = batch->sws->bo_map(batch->buf, GL_FALSE);
+      void *ptr = batch->sws->bo_map(batch->buf,
+                                     BRW_DATA_OTHER,
+                                     GL_FALSE);
 
       intel_decode(ptr,
                   used / 4, 
@@ -162,7 +169,9 @@ _brw_batchbuffer_flush(struct brw_batchbuffer *batch,
        * interface.
        */
       debug_printf("waiting for idle\n");
-      batch->sws->bo_map(batch->buf, GL_TRUE);
+      batch->sws->bo_map(batch->buf,
+                         BRW_DATA_OTHER,
+                         GL_TRUE);
       batch->sws->bo_unmap(batch->buf);
    }
 
index 0c1dcf8a1472717bbf7a6452963db14e32e7722f..09d34615c745c679a32a1f487d6a502219d15f83 100644 (file)
@@ -347,25 +347,27 @@ struct brw_vs_ouput_sizes {
 #define SURF_INDEX_VERT_CONST_BUFFER 0
 
 
+/* Bit of a hack to align these with the winsys buffer_data_type enum.
+ */
 enum brw_cache_id {
-   BRW_CC_VP,
-   BRW_CC_UNIT,
-   BRW_WM_PROG,
-   BRW_SAMPLER_DEFAULT_COLOR,
-   BRW_SAMPLER,
-   BRW_WM_UNIT,
-   BRW_SF_PROG,
-   BRW_SF_VP,
-   BRW_SF_UNIT,
-   BRW_VS_UNIT,
-   BRW_VS_PROG,
-   BRW_GS_UNIT,
-   BRW_GS_PROG,
-   BRW_CLIP_VP,
-   BRW_CLIP_UNIT,
-   BRW_CLIP_PROG,
-   BRW_SS_SURFACE,
-   BRW_SS_SURF_BIND,
+   BRW_CC_VP         = BRW_DATA_GS_CC_VP,
+   BRW_CC_UNIT       = BRW_DATA_GS_CC_UNIT,
+   BRW_WM_PROG       = BRW_DATA_GS_WM_PROG,
+   BRW_SAMPLER_DEFAULT_COLOR    = BRW_DATA_GS_SAMPLER_DEFAULT_COLOR,
+   BRW_SAMPLER       = BRW_DATA_GS_SAMPLER,
+   BRW_WM_UNIT       = BRW_DATA_GS_WM_UNIT,
+   BRW_SF_PROG       = BRW_DATA_GS_SF_PROG,
+   BRW_SF_VP         = BRW_DATA_GS_SF_VP,
+   BRW_SF_UNIT       = BRW_DATA_GS_SF_UNIT,
+   BRW_VS_UNIT       = BRW_DATA_GS_VS_UNIT,
+   BRW_VS_PROG       = BRW_DATA_GS_VS_PROG,
+   BRW_GS_UNIT       = BRW_DATA_GS_GS_UNIT,
+   BRW_GS_PROG       = BRW_DATA_GS_GS_PROG,
+   BRW_CLIP_VP       = BRW_DATA_GS_CLIP_VP,
+   BRW_CLIP_UNIT     = BRW_DATA_GS_CLIP_UNIT,
+   BRW_CLIP_PROG     = BRW_DATA_GS_CLIP_PROG,
+   BRW_SS_SURFACE    = BRW_DATA_SS_SURFACE,
+   BRW_SS_SURF_BIND  = BRW_DATA_SS_SURF_BIND,
 
    BRW_MAX_CACHE
 };
@@ -399,6 +401,8 @@ struct brw_cache {
    struct brw_cache_item **items;
    GLuint size, n_items;
 
+   enum brw_buffer_type buffer_type;
+
    GLuint key_size[BRW_MAX_CACHE];             /* for fixed-size keys */
    GLuint aux_size[BRW_MAX_CACHE];
    char *name[BRW_MAX_CACHE];
index f62b0b0d5e23933460cd90a5b2baf3edd8389f16..1e2e232204e73efbad34a9ebd86795e187d047f7 100644 (file)
@@ -289,6 +289,7 @@ static int prepare_curbe_buffer(struct brw_context *brw)
        */
       brw->sws->bo_subdata(brw->curbe.curbe_bo,
                           brw->curbe.curbe_offset,
+                           BRW_DATA_OTHER,
                           bufsz,
                           buf);
    }
index d3e173f5ecf9f3c013d7cbe94998539d104061d0..3370ebd2626f5611c8c323a624286c5e9a6f27d5 100644 (file)
@@ -63,7 +63,7 @@ brw_query_get_result(struct pipe_context *pipe,
       if (brw->sws->bo_is_busy(query->bo) && !wait)
         return FALSE;
       
-      map = brw->sws->bo_map(query->bo, GL_FALSE);
+      map = brw->sws->bo_map(query->bo, BRW_DATA_OTHER, GL_FALSE);
       if (map == NULL)
         return FALSE;
       
index c0f19d64aad7d03ec6d681e92a03ddc230ada329..ba54740225cd538710181d3f4d729e0b13a99ea1 100644 (file)
@@ -24,6 +24,7 @@ brw_buffer_map( struct pipe_screen *screen,
       return buf->user_buffer;
 
    return sws->bo_map( buf->bo, 
+                       BRW_DATA_OTHER,
                        (usage & PIPE_BUFFER_USAGE_CPU_WRITE) ? TRUE : FALSE );
 }
 
@@ -64,7 +65,7 @@ brw_buffer_create(struct pipe_screen *screen,
    struct brw_screen *bscreen = brw_screen(screen);
    struct brw_winsys_screen *sws = bscreen->sws;
    struct brw_buffer *buf;
-   unsigned usage_type;
+   unsigned buffer_type;
    
    buf = CALLOC_STRUCT(brw_buffer);
    if (!buf)
@@ -84,24 +85,24 @@ brw_buffer_create(struct pipe_screen *screen,
    case PIPE_BUFFER_USAGE_VERTEX:
    case PIPE_BUFFER_USAGE_INDEX:
    case (PIPE_BUFFER_USAGE_VERTEX|PIPE_BUFFER_USAGE_INDEX):
-      usage_type = BRW_BUFFER_TYPE_VERTEX;
+      buffer_type = BRW_BUFFER_TYPE_VERTEX;
       break;
       
    case PIPE_BUFFER_USAGE_PIXEL:
-      usage_type = BRW_BUFFER_TYPE_PIXEL;
+      buffer_type = BRW_BUFFER_TYPE_PIXEL;
       break;
 
    case PIPE_BUFFER_USAGE_CONSTANT:
-      usage_type = BRW_BUFFER_TYPE_SHADER_CONSTANTS;
+      buffer_type = BRW_BUFFER_TYPE_SHADER_CONSTANTS;
       break;
 
    default:
-      usage_type = BRW_BUFFER_TYPE_GENERIC;
+      buffer_type = BRW_BUFFER_TYPE_GENERIC;
       break;
    }
    
    buf->bo = sws->bo_alloc( sws,
-                            usage_type,
+                            buffer_type,
                             size,
                             alignment );
       
index c318b07f97a693d08832b4252170914636da8095..ba6dc7dfdee2aacf0865a25339b27b3e5a768b80 100644 (file)
@@ -186,6 +186,7 @@ static struct pipe_texture *brw_texture_create( struct pipe_screen *screen,
 {  
    struct brw_screen *bscreen = brw_screen(screen);
    struct brw_texture *tex;
+   enum brw_buffer_type buffer_type;
    
    tex = CALLOC_STRUCT(brw_texture);
    if (tex == NULL)
@@ -226,21 +227,16 @@ static struct pipe_texture *brw_texture_create( struct pipe_screen *screen,
       goto fail;
 
    
-   if (templ->tex_usage & PIPE_TEXTURE_USAGE_RENDER_TARGET) {
-   } 
-   else if (templ->tex_usage & (PIPE_TEXTURE_USAGE_DISPLAY_TARGET |
-                            PIPE_TEXTURE_USAGE_PRIMARY)) {
-   }
-   else if (templ->tex_usage & PIPE_TEXTURE_USAGE_DEPTH_STENCIL) {
-   }
-   else if (templ->tex_usage & PIPE_TEXTURE_USAGE_SAMPLER) {
+   if (templ->tex_usage & (PIPE_TEXTURE_USAGE_DISPLAY_TARGET |
+                           PIPE_TEXTURE_USAGE_PRIMARY)) {
+      buffer_type = BRW_BUFFER_TYPE_SCANOUT;
    }
-   
-   if (templ->tex_usage & PIPE_TEXTURE_USAGE_DYNAMIC) {
+   else {
+      buffer_type = BRW_BUFFER_TYPE_TEXTURE;
    }
 
    tex->bo = bscreen->sws->bo_alloc( bscreen->sws,
-                                     BRW_USAGE_SAMPLER,
+                                     buffer_type,
                                      tex->pitch * tex->total_height * tex->cpp,
                                      64 );
 
index 071a942e5ca2e6f2350d59c894ee47c66b8d1ad1..cbd1f02d77d4df3e05945e1e47a47f9f40e7b709 100644 (file)
@@ -228,7 +228,7 @@ brw_upload_cache( struct brw_cache *cache,
     * these various entities.
     */
    bo = cache->sws->bo_alloc(cache->sws,
-                            BRW_BUFFER_TYPE_STATE_CACHE, 
+                             cache->buffer_type,
                             data_size, 1 << 6);
 
 
@@ -273,7 +273,9 @@ brw_upload_cache( struct brw_cache *cache,
                   data_size, cache_id);
 
    /* Copy data to the buffer */
-   cache->sws->bo_subdata(bo, 0, data_size, data);
+   cache->sws->bo_subdata(bo, 
+                          cache_id,
+                          0, data_size, data);
 
    update_cache_last(cache, cache_id, bo);
 
@@ -332,11 +334,6 @@ brw_cache_data(struct brw_cache *cache,
                            reloc_bufs, nr_reloc_bufs);
 }
 
-enum pool_type {
-   DW_SURFACE_STATE,
-   DW_GENERAL_STATE
-};
-
 
 static void
 brw_init_cache_id(struct brw_cache *cache,
@@ -352,13 +349,15 @@ brw_init_cache_id(struct brw_cache *cache,
 
 
 static void
-brw_init_non_surface_cache(struct brw_context *brw)
+brw_init_general_state_cache(struct brw_context *brw)
 {
    struct brw_cache *cache = &brw->cache;
 
    cache->brw = brw;
    cache->sws = brw->sws;
 
+   cache->buffer_type = BRW_BUFFER_TYPE_GENERAL_STATE;
+
    cache->size = 7;
    cache->n_items = 0;
    cache->items = (struct brw_cache_item **)
@@ -457,13 +456,15 @@ brw_init_non_surface_cache(struct brw_context *brw)
 
 
 static void
-brw_init_surface_cache(struct brw_context *brw)
+brw_init_surface_state_cache(struct brw_context *brw)
 {
    struct brw_cache *cache = &brw->surface_cache;
 
    cache->brw = brw;
    cache->sws = brw->sws;
 
+   cache->buffer_type = BRW_BUFFER_TYPE_SURFACE_STATE;
+
    cache->size = 7;
    cache->n_items = 0;
    cache->items = (struct brw_cache_item **)
@@ -486,8 +487,8 @@ brw_init_surface_cache(struct brw_context *brw)
 void
 brw_init_caches(struct brw_context *brw)
 {
-   brw_init_non_surface_cache(brw);
-   brw_init_surface_cache(brw);
+   brw_init_general_state_cache(brw);
+   brw_init_surface_state_cache(brw);
 }
 
 
index 345e42a6b208f60c14603bf0fad8366ee0d7f65e..388331ee626b8fda67af959832b5df8b868f5092 100644 (file)
@@ -65,7 +65,7 @@ state_struct_out(struct brw_winsys_screen *sws,
    if (buffer == NULL)
       return;
 
-   data = sws->bo_map(buffer, GL_FALSE);
+   data = sws->bo_map(buffer, BRW_DATA_OTHER, GL_FALSE);
    for (i = 0; i < state_size / 4; i++) {
       state_out(name, data, buffer->offset[0], i,
                "dword %d\n", i);
@@ -114,7 +114,9 @@ static void dump_wm_surface_state(struct brw_context *brw)
         debug_printf("  WM SS%d: NULL\n", i);
         continue;
       }
-      surf = (struct brw_surface_state *)brw->sws->bo_map(surf_bo, GL_FALSE);
+      surf = (struct brw_surface_state *)brw->sws->bo_map(surf_bo, 
+                                                          BRW_DATA_OTHER,
+                                                          GL_FALSE);
       surfoff = surf_bo->offset[0];
 
       sprintf(name, "WM SS%d", i);
@@ -144,7 +146,9 @@ static void dump_sf_viewport_state(struct brw_context *brw)
    if (brw->sf.vp_bo == NULL)
       return;
 
-   vp = (struct brw_sf_viewport *)brw->sws->bo_map(brw->sf.vp_bo, GL_FALSE);
+   vp = (struct brw_sf_viewport *)brw->sws->bo_map(brw->sf.vp_bo,
+                                                   BRW_DATA_OTHER,
+                                                   GL_FALSE);
    vp_off = brw->sf.vp_bo->offset[0];
 
    state_out(name, vp, vp_off, 0, "m00 = %f\n", vp->viewport.m00);
@@ -172,7 +176,9 @@ static void brw_debug_prog(struct brw_winsys_screen *sws,
    if (prog == NULL)
       return;
 
-   data = (uint32_t *)sws->bo_map(prog, GL_FALSE);
+   data = (uint32_t *)sws->bo_map(prog,
+                                  BRW_DATA_OTHER,
+                                  GL_FALSE);
 
    for (i = 0; i < prog->size / 4 / 4; i++) {
       debug_printf("%8s: 0x%08x: 0x%08x 0x%08x 0x%08x 0x%08x\n",
index f5ce9d13d737f4a259186e4618720b1e2607324a..d941fbcebee87735a1e45eb2eb424aef8da276f1 100644 (file)
@@ -44,21 +44,6 @@ struct brw_winsys_buffer {
    unsigned size;
 };
 
-/* Describe the usage of a particular buffer in a relocation.  The DRM
- * winsys will translate these back to GEM read/write domain flags.
- */
-enum brw_buffer_usage {
-   BRW_USAGE_STATE,            /* INSTRUCTION, 0 */
-   BRW_USAGE_QUERY_RESULT,     /* INSTRUCTION, INSTRUCTION */
-   BRW_USAGE_RENDER_TARGET,    /* RENDER,      0 */
-   BRW_USAGE_DEPTH_BUFFER,     /* RENDER,      RENDER */
-   BRW_USAGE_BLIT_SOURCE,      /* RENDER,      0 */
-   BRW_USAGE_BLIT_DEST,         /* RENDER,      RENDER */
-   BRW_USAGE_SAMPLER,          /* SAMPLER,     0 */
-   BRW_USAGE_VERTEX,           /* VERTEX,      0 */
-   BRW_USAGE_SCRATCH,          /* 0,           0 */
-   BRW_USAGE_MAX
-};
 
 /* Should be possible to validate usages above against buffer creation
  * types, below:
@@ -73,12 +58,53 @@ enum brw_buffer_type
    BRW_BUFFER_TYPE_SHADER_CONSTANTS,
    BRW_BUFFER_TYPE_SHADER_SCRATCH,
    BRW_BUFFER_TYPE_BATCH,
-   BRW_BUFFER_TYPE_STATE_CACHE,
+   BRW_BUFFER_TYPE_GENERAL_STATE,
+   BRW_BUFFER_TYPE_SURFACE_STATE,
    BRW_BUFFER_TYPE_PIXEL,       /* image uploads, pbo's, etc */
    BRW_BUFFER_TYPE_GENERIC,     /* unknown */
    BRW_BUFFER_TYPE_MAX         /* Count of possible values */
 };
 
+
+/* Describe the usage of a particular buffer in a relocation.  The DRM
+ * winsys will translate these back to GEM read/write domain flags.
+ */
+enum brw_buffer_usage {
+   BRW_USAGE_STATE,         /* INSTRUCTION, 0 */
+   BRW_USAGE_QUERY_RESULT,      /* INSTRUCTION, INSTRUCTION */
+   BRW_USAGE_RENDER_TARGET, /* RENDER,      0 */
+   BRW_USAGE_DEPTH_BUFFER,      /* RENDER,      RENDER */
+   BRW_USAGE_BLIT_SOURCE,       /* RENDER,      0 */
+   BRW_USAGE_BLIT_DEST,     /* RENDER,      RENDER */
+   BRW_USAGE_SAMPLER,   /* SAMPLER,     0 */
+   BRW_USAGE_VERTEX,    /* VERTEX,      0 */
+   BRW_USAGE_SCRATCH,   /* 0,           0 */
+   BRW_USAGE_MAX
+};
+
+enum brw_buffer_data_type {
+   BRW_DATA_GS_CC_VP,
+   BRW_DATA_GS_CC_UNIT,
+   BRW_DATA_GS_WM_PROG,
+   BRW_DATA_GS_SAMPLER_DEFAULT_COLOR,
+   BRW_DATA_GS_SAMPLER,
+   BRW_DATA_GS_WM_UNIT,
+   BRW_DATA_GS_SF_PROG,
+   BRW_DATA_GS_SF_VP,
+   BRW_DATA_GS_SF_UNIT,
+   BRW_DATA_GS_VS_UNIT,
+   BRW_DATA_GS_VS_PROG,
+   BRW_DATA_GS_GS_UNIT,
+   BRW_DATA_GS_GS_PROG,
+   BRW_DATA_GS_CLIP_VP,
+   BRW_DATA_GS_CLIP_UNIT,
+   BRW_DATA_GS_CLIP_PROG,
+   BRW_DATA_SS_SURFACE,
+   BRW_DATA_SS_SURF_BIND,
+   BRW_DATA_OTHER,
+   BRW_DATA_MAX
+};
+
 struct brw_winsys_screen {
 
 
@@ -113,9 +139,10 @@ struct brw_winsys_screen {
                   unsigned bytes_used );
 
    int (*bo_subdata)(struct brw_winsys_buffer *buffer,
-                     size_t offset,
-                     size_t size,
-                     const void *data);
+                     enum brw_buffer_data_type data_type,
+                     size_t offset,
+                     size_t size,
+                     const void *data);
 
    boolean (*bo_is_busy)(struct brw_winsys_buffer *buffer);
    boolean (*bo_references)(struct brw_winsys_buffer *a,
@@ -132,6 +159,7 @@ struct brw_winsys_screen {
     * Map a buffer.
     */
    void *(*bo_map)(struct brw_winsys_buffer *buffer,
+                   enum brw_buffer_data_type data_type,
                   boolean write);
 
    /**
@@ -140,9 +168,6 @@ struct brw_winsys_screen {
    void (*bo_unmap)(struct brw_winsys_buffer *buffer);
    /*@}*/
 
-
-
-
    /**
     * Destroy the winsys.
     */
index 71d8f4bafc8d3ec348bd5acf27cb3756defcd441..4fe5db403304e8d03e7084ba8deff992ebed2eea 100644 (file)
@@ -82,31 +82,57 @@ xlib_brw_buffer( struct brw_winsys_buffer *buffer )
 
 
 const char *names[BRW_BUFFER_TYPE_MAX] = {
-   "texture",
-   "scanout",
-   "vertex",
-   "curbe",
-   "query",
-   "shader_constants",
-   "wm_scratch",
-   "batch",
-   "state_cache",
-   "pixel",
-   "generic",
+   "TEXTURE",
+   "SCANOUT",
+   "VERTEX",
+   "CURBE",
+   "QUERY",
+   "SHADER_CONSTANTS",
+   "WM_SCRATCH",
+   "BATCH",
+   "GENERAL_STATE",
+   "SURFACE_STATE",
+   "PIXEL",
+   "GENERIC",
 };
 
 const char *usages[BRW_USAGE_MAX] = {
-   "state",
-   "query_result",
-   "render_target",
-   "depth_buffer",
-   "blit_source",
-   "blit_dest",
-   "sampler",
-   "vertex",
-   "scratch"
+   "STATE",
+   "QUERY_RESULT",
+   "RENDER_TARGET",
+   "DEPTH_BUFFER",
+   "BLIT_SOURCE",
+   "BLIT_DEST",
+   "SAMPLER",
+   "VERTEX",
+   "SCRATCH"
 };
 
+
+const char *data_types[BRW_DATA_MAX] =
+{
+   "GS: CC_VP",
+   "GS: CC_UNIT",
+   "GS: WM_PROG",
+   "GS: SAMPLER_DEFAULT_COLOR",
+   "GS: SAMPLER",
+   "GS: WM_UNIT",
+   "GS: SF_PROG",
+   "GS: SF_VP",
+   "GS: SF_UNIT",
+   "GS: VS_UNIT",
+   "GS: VS_PROG",
+   "GS: GS_UNIT",
+   "GS: GS_PROG",
+   "GS: CLIP_VP",
+   "GS: CLIP_UNIT",
+   "GS: CLIP_PROG",
+   "SS: SURFACE",
+   "SS: SURF_BIND",
+   "(untyped)"
+};
+
+
 static struct brw_winsys_buffer *
 xlib_brw_bo_alloc( struct brw_winsys_screen *sws,
                      enum brw_buffer_type type,
@@ -116,8 +142,8 @@ xlib_brw_bo_alloc( struct brw_winsys_screen *sws,
    struct xlib_brw_winsys *xbw = xlib_brw_winsys(sws);
    struct xlib_brw_buffer *buf;
 
-   debug_printf("%s type %d sz %d align %d\n",
-                __FUNCTION__, type, size, alignment );
+   debug_printf("%s type %s sz %d align %d\n",
+                __FUNCTION__, names[type], size, alignment );
 
    buf = CALLOC_STRUCT(xlib_brw_buffer);
    if (!buf)
@@ -168,10 +194,10 @@ xlib_brw_bo_unreference( struct brw_winsys_buffer *buffer )
 
 static int 
 xlib_brw_bo_emit_reloc( struct brw_winsys_buffer *buffer,
-                          enum brw_buffer_usage usage,
-                          unsigned delta,
-                          unsigned offset,
-                          struct brw_winsys_buffer *buffer2)
+                        enum brw_buffer_usage usage,
+                        unsigned delta,
+                        unsigned offset,
+                        struct brw_winsys_buffer *buffer2)
 {
    struct xlib_brw_buffer *buf = xlib_brw_buffer(buffer);
    struct xlib_brw_buffer *buf2 = xlib_brw_buffer(buffer2);
@@ -197,15 +223,16 @@ xlib_brw_bo_exec( struct brw_winsys_buffer *buffer,
 
 static int
 xlib_brw_bo_subdata(struct brw_winsys_buffer *buffer,
-                      size_t offset,
-                      size_t size,
-                      const void *data)
+                    enum brw_buffer_data_type data_type,
+                    size_t offset,
+                    size_t size,
+                    const void *data)
 {
    struct xlib_brw_buffer *buf = xlib_brw_buffer(buffer);
 
-   debug_printf("%s buf %p off %d sz %d data %p\n", 
+   debug_printf("%s buf %p off %d sz %d data %p %s\n", 
                 __FUNCTION__, 
-                (void *)buffer, offset, size, data);
+                (void *)buffer, offset, size, data, data_types[data_type]);
 
    memcpy(buf->virtual + offset, data, size);
    return 0;
@@ -247,12 +274,14 @@ xlib_brw_check_aperture_space( struct brw_winsys_screen *iws,
 
 static void *
 xlib_brw_bo_map(struct brw_winsys_buffer *buffer,
+                enum brw_buffer_data_type data_type,
                   boolean write)
 {
    struct xlib_brw_buffer *buf = xlib_brw_buffer(buffer);
 
-   debug_printf("%s %p %s\n", __FUNCTION__, (void *)buffer, 
-                write ? "read/write" : "read");
+   debug_printf("%s %p %s %s\n", __FUNCTION__, (void *)buffer, 
+                write ? "read/write" : "read",
+                write ? data_types[data_type] : "");
 
    buf->map_count++;
    return buf->virtual;