Merge commit 'origin/master' into gallium-0.2
[mesa.git] / src / gallium / winsys / xlib / xm_winsys_aub.c
index dbfd37bda29e96904c9a9631c16bb24950209c7e..b7c10b6bcae6eb8f88df00611454fc43c2cac263 100644 (file)
 #include "xmesaP.h"
 
 #include "pipe/p_winsys.h"
-#include "pipe/p_util.h"
 #include "pipe/p_inlines.h"
+#include "util/u_math.h"
+#include "util/u_memory.h"
 #include "i965simple/brw_winsys.h"
+#include "i965simple/brw_screen.h"
 #include "brw_aub.h"
 #include "xm_winsys_aub.h"
 
@@ -275,24 +277,28 @@ aub_i915_surface_alloc_storage(struct pipe_winsys *winsys,
                                struct pipe_surface *surf,
                                unsigned width, unsigned height,
                                enum pipe_format format,
-                               unsigned flags)
+                               unsigned flags,
+                               unsigned tex_usage)
 {
-    const unsigned alignment = 64;
-
-    surf->width = width;
-    surf->height = height;
-    surf->format = format;
-    surf->cpp = pf_get_size(format);
-    surf->pitch = round_up(width, alignment / surf->cpp);
-
-    assert(!surf->buffer);
-    surf->buffer = winsys->buffer_create(winsys, alignment,
-                                         PIPE_BUFFER_USAGE_PIXEL,
-                                         surf->pitch * surf->cpp * height);
+   const unsigned alignment = 64;
+
+   surf->width = width;
+   surf->height = height;
+   surf->format = format;
+   pf_get_block(format, &surf->block);
+   surf->nblocksx = pf_get_nblocksx(&surf->block, width);
+   surf->nblocksy = pf_get_nblocksy(&surf->block, height);
+   surf->stride = round_up(surf->nblocksx * surf->block.size, alignment);
+   surf->usage = flags;
+
+   assert(!surf->buffer);
+   surf->buffer = winsys->buffer_create(winsys, alignment,
+                                        PIPE_BUFFER_USAGE_PIXEL,
+                                        surf->stride * surf->nblocksy);
     if(!surf->buffer)
-        return -1;
+       return -1;
 
-    return 0;
+   return 0;
 }
 
 static void
@@ -302,7 +308,7 @@ aub_i915_surface_release(struct pipe_winsys *winsys, struct pipe_surface **s)
    surf->refcount--;
    if (surf->refcount == 0) {
       if (surf->buffer)
-         pipe_buffer_reference(winsys, &surf->buffer, NULL);
+         winsys_buffer_reference(winsys, &surf->buffer, NULL);
       free(surf);
    }
    *s = NULL;
@@ -310,15 +316,6 @@ aub_i915_surface_release(struct pipe_winsys *winsys, struct pipe_surface **s)
 
 
 
-static void
-aub_printf( struct pipe_winsys *winsys, const char *fmtString, ... )
-{
-   va_list args;
-   va_start( args, fmtString );  
-   vfprintf(stderr, fmtString, args);
-   va_end( args );
-}
-
 static const char *
 aub_get_name( struct pipe_winsys *winsys )
 {
@@ -343,7 +340,6 @@ xmesa_create_pipe_winsys_aub( void )
    iws->winsys.buffer_unmap = aub_buffer_unmap;
    iws->winsys.buffer_destroy = aub_buffer_destroy;
    iws->winsys.flush_frontbuffer = aub_flush_frontbuffer;
-   iws->winsys.printf = aub_printf;
    iws->winsys.get_name = aub_get_name;
 
    iws->winsys.surface_alloc = aub_i915_surface_alloc;
@@ -565,6 +561,7 @@ struct pipe_context *
 xmesa_create_i965simple( struct pipe_winsys *winsys )
 {
    struct aub_brw_winsys *iws = CALLOC_STRUCT( aub_brw_winsys );
+   struct pipe_screen *screen = brw_create_screen(winsys, 0/* XXX pci_id */);
    
    /* Fill in this struct with callbacks that i965simple will need to
     * communicate with the window system, buffer manager, etc. 
@@ -583,7 +580,7 @@ xmesa_create_i965simple( struct pipe_winsys *winsys )
 
    /* Create the i965simple context:
     */
-   return brw_create( winsys,
+   return brw_create( screen,
                      &iws->winsys,
                      0 );
 }