gallium/winsys/xlib: Fix stride calculations.
authorMichel Dänzer <daenzer@vmware.com>
Thu, 12 Feb 2009 18:42:22 +0000 (19:42 +0100)
committerMichel Dänzer <daenzer@vmware.com>
Thu, 12 Feb 2009 18:42:22 +0000 (19:42 +0100)
src/gallium/winsys/xlib/xlib_brw_aub.c
src/gallium/winsys/xlib/xlib_softpipe.c

index c63cd51d320b7fde7aa405a8562567bbdd20c386..73d1ac9161ea363f29bb29d4ac253f76ac52da1a 100644 (file)
@@ -36,6 +36,7 @@
 #include "pipe/p_state.h"
 #include "pipe/p_debug.h"
 #include "util/u_memory.h"
+#include "softpipe/sp_texture.h"
 
 
 struct brw_aubfile {
@@ -335,7 +336,8 @@ void brw_aub_dump_bmp( struct brw_aubfile *aubfile,
    db.ymin = 0;
    db.format = format;
    db.bpp = surface->texture->block.size * 8;
-   db.pitch = surface->texture->nblocksx[surface->level];
+   db.pitch = softpipe_texture(surface->texture)->stride[surface->level] /
+      surface->texture->block.size;
    db.xsize = surface->width;
    db.ysize = surface->height;
    db.addr = gtt_offset;
index 52fd7455a5ac5ee92dc3530185ceb7a4a0b77635..846b48b4ffba5cde8b19aeb9c8068a0915be94ce 100644 (file)
@@ -230,8 +230,8 @@ xlib_softpipe_display_surface(struct xmesa_buffer *b,
                               struct pipe_surface *surf)
 {
    XImage *ximage;
-   struct xm_buffer *xm_buf = xm_buffer(
-      softpipe_texture(surf->texture)->buffer);
+   struct softpipe_texture *spt = softpipe_texture(surf->texture);
+   struct xm_buffer *xm_buf = xm_buffer(spt->buffer);
    static boolean no_swap = 0;
    static boolean firsttime = 1;
 
@@ -246,8 +246,8 @@ xlib_softpipe_display_surface(struct xmesa_buffer *b,
    if (XSHM_ENABLED(xm_buf) && (xm_buf->tempImage == NULL)) {
       assert(surf->texture->block.width == 1);
       assert(surf->texture->block.height == 1);
-      alloc_shm_ximage(xm_buf, b, surf->texture->nblocksx[surf->level],
-                       surf->height);
+      alloc_shm_ximage(xm_buf, b, spt->stride[surf->level] /
+                       surf->texture->block.size, surf->height);
    }
 
    ximage = (XSHM_ENABLED(xm_buf)) ? xm_buf->tempImage : b->tempImage;
@@ -265,7 +265,7 @@ xlib_softpipe_display_surface(struct xmesa_buffer *b,
       /* update XImage's fields */
       ximage->width = surf->width;
       ximage->height = surf->height;
-      ximage->bytes_per_line = surf->texture->nblocksx[surf->level];
+      ximage->bytes_per_line = spt->stride[surf->level];
 
       XPutImage(b->xm_visual->display, b->drawable, b->gc,
                 ximage, 0, 0, 0, 0, surf->width, surf->height);