Move the get/put_tile() functions to pipe_context.
authorBrian <brian.paul@tungstengraphics.com>
Fri, 26 Oct 2007 00:50:15 +0000 (18:50 -0600)
committerBrian <brian.paul@tungstengraphics.com>
Fri, 26 Oct 2007 02:32:45 +0000 (20:32 -0600)
The _rgba versions are temporary until the state tracker is updated.

20 files changed:
src/mesa/drivers/x11/xm_surface.c
src/mesa/pipe/i915simple/i915_surface.c
src/mesa/pipe/p_context.h
src/mesa/pipe/p_state.h
src/mesa/pipe/softpipe/sp_context.c
src/mesa/pipe/softpipe/sp_flush.c
src/mesa/pipe/softpipe/sp_quad_blend.c
src/mesa/pipe/softpipe/sp_quad_colormask.c
src/mesa/pipe/softpipe/sp_quad_depth_test.c
src/mesa/pipe/softpipe/sp_quad_output.c
src/mesa/pipe/softpipe/sp_quad_stencil.c
src/mesa/pipe/softpipe/sp_state_surface.c
src/mesa/pipe/softpipe/sp_surface.c
src/mesa/pipe/softpipe/sp_surface.h
src/mesa/pipe/softpipe/sp_tile_cache.c
src/mesa/pipe/softpipe/sp_tile_cache.h
src/mesa/state_tracker/st_cb_accum.c
src/mesa/state_tracker/st_cb_drawpixels.c
src/mesa/state_tracker/st_cb_readpixels.c
src/mesa/state_tracker/st_cb_texture.c

index f83c7917c4dc9bdfd1f27a8dacd0efb20d9391c7..340f796bc89c6849aa1fae808fa0d23c2a3b729a 100644 (file)
@@ -148,8 +148,8 @@ xmesa_new_color_surface(struct pipe_context *pipe, GLuint pipeFormat)
 
    switch (pipeFormat) {
    case PIPE_FORMAT_U_A8_R8_G8_B8:
-      xms->surface.surface.get_tile = get_tile;
-      xms->surface.surface.put_tile = put_tile;
+      xms->surface.get_tile = get_tile;
+      xms->surface.put_tile = put_tile;
       break;
    case PIPE_FORMAT_S8_Z24:
       break;
index c094cf9ec47965d9e7e6e338837ba6a712e660f5..a07a21c13b1cdfb089d2425fb1ecb3ddeaf60099 100644 (file)
@@ -29,7 +29,6 @@
 #include "i915_state.h"
 #include "pipe/p_defines.h"
 #include "pipe/p_util.h"
-//#include "main/imports.h"
 
 
 struct i915_surface
@@ -44,8 +43,9 @@ struct i915_surface
  * Share it someday.
  */
 static void
-i915_get_tile(struct pipe_surface *ps,
-              unsigned x, unsigned y, unsigned w, unsigned h, float *p)
+i915_get_tile_rgba(struct pipe_context *pipe,
+                   struct pipe_surface *ps,
+                   uint x, uint y, uint w, uint h, float *p)
 {
    const unsigned *src
       = ((const unsigned *) (ps->region->map + ps->offset))
@@ -82,8 +82,9 @@ i915_get_tile(struct pipe_surface *ps,
 
 
 static void
-i915_put_tile(struct pipe_surface *ps,
-              unsigned x, unsigned y, unsigned w, unsigned h, const float *p)
+i915_put_tile_rgba(struct pipe_context *pipe,
+                   struct pipe_surface *ps,
+                   uint x, uint y, uint w, uint h, const float *p)
 {
    /* any need to put tiles into i915 surfaces? */
    assert(0);
@@ -102,8 +103,8 @@ i915_surface_alloc(struct pipe_context *pipe, unsigned format)
    surf->surface.format = format;
    surf->surface.refcount = 1;
 
-   surf->surface.get_tile = i915_get_tile;
-   surf->surface.put_tile = i915_put_tile;
+   //   surf->surface.get_tile = i915_get_tile;
+   //   surf->surface.put_tile = i915_put_tile;
 
    return &surf->surface;
 }
@@ -113,4 +114,6 @@ void
 i915_init_surface_functions(struct i915_context *i915)
 {
    i915->pipe.surface_alloc = i915_surface_alloc;
+   i915->pipe.get_tile_rgba = i915_get_tile_rgba;
+   i915->pipe.put_tile_rgba = i915_put_tile_rgba;
 }
index 2558a6341ce53bc7481c40d8dbd78bb6c3471f57..a22ea3a8a075c2a5a80ef2f087fa27d1773990db 100644 (file)
@@ -188,6 +188,24 @@ struct pipe_context {
                                            unsigned face, unsigned level,
                                            unsigned zslice);
 
+   /** Get a block of raw pixel data from a surface */
+   void (*get_tile)(struct pipe_context *pipe,
+                    struct pipe_surface *ps,
+                    uint x, uint y, uint w, uint h,
+                    void *p, int dst_stride);
+   /** Put a block of raw pixel data into a surface */
+   void (*put_tile)(struct pipe_context *pipe,
+                    struct pipe_surface *ps,
+                    uint x, uint y, uint w, uint h,
+                    const void *p, int src_stride);
+
+   /* XXX temporary here, move these to softpipe */
+   void (*get_tile_rgba)(struct pipe_context *pipe, struct pipe_surface *ps,
+                         uint x, uint y, uint w, uint h, float *p);
+   void (*put_tile_rgba)(struct pipe_context *pipe, struct pipe_surface *ps,
+                         uint x, uint y, uint w, uint h, const float *p);
+
+
    /*
     * Memory region functions
     * Some of these may go away...
index 69b11588e0777db62e8efc527b50a57669e57f37..03045e4213039beef988fa4aaa8038d59c64972f 100644 (file)
@@ -291,27 +291,6 @@ struct pipe_surface
    unsigned width, height;
    unsigned offset;              /**< offset from start of region, in bytes */
    unsigned refcount;
-
-   /**
-    * Get block/tile of pixels from surface as floats
-    * If color surface, return float[4].  If depth surface, return float[1].
-    */
-   void (*get_tile)(struct pipe_surface *ps,
-                    uint x, uint y, uint w, uint h, float *p);
-
-   /**
-    * Put block/tile of pixels into surface as floats
-    * If color surface, data is float[4].  If depth surface, data is float[1].
-    */
-   void (*put_tile)(struct pipe_surface *ps,
-                    uint x, uint y, uint w, uint h, const float *p);
-
-   /** As above, but data is raw pixel data */
-   void (*get_tile_raw)(struct pipe_surface *ps,
-                        uint x, uint y, uint w, uint h, void *p);
-   /** As above, but data is raw pixel data */
-   void (*put_tile_raw)(struct pipe_surface *ps,
-                        uint x, uint y, uint w, uint h, const void *p);
 };
 
 
index bf61019f624b39113494124a44486412bd3519ab..476d4ac01cc667a422b3b5d18fb5f4c92eb36665 100644 (file)
@@ -171,9 +171,9 @@ softpipe_unmap_surfaces(struct softpipe_context *sp)
    uint i;
 
    for (i = 0; i < PIPE_MAX_COLOR_BUFS; i++)
-      sp_flush_tile_cache(sp->cbuf_cache[i]);
-   sp_flush_tile_cache(sp->zbuf_cache);
-   sp_flush_tile_cache(sp->sbuf_cache);
+      sp_flush_tile_cache(sp, sp->cbuf_cache[i]);
+   sp_flush_tile_cache(sp, sp->zbuf_cache);
+   sp_flush_tile_cache(sp, sp->sbuf_cache);
 
    for (i = 0; i < sp->framebuffer.num_cbufs; i++) {
       struct pipe_surface *ps = sp->framebuffer.cbufs[i];
index 2b077c20210dfafcf15b6f6dd57b169b46601a46..1010924bf61a54d362bf7b29a49febd8a1aaa559 100644 (file)
@@ -57,13 +57,13 @@ softpipe_flush( struct pipe_context *pipe,
 
    for (i = 0; i < PIPE_MAX_COLOR_BUFS; i++)
       if (softpipe->cbuf_cache[i])
-         sp_flush_tile_cache(softpipe->cbuf_cache[i]);
+         sp_flush_tile_cache(softpipe, softpipe->cbuf_cache[i]);
 
    if (softpipe->zbuf_cache)
-      sp_flush_tile_cache(softpipe->zbuf_cache);
+      sp_flush_tile_cache(softpipe, softpipe->zbuf_cache);
 
    if (softpipe->sbuf_cache)
-      sp_flush_tile_cache(softpipe->sbuf_cache);
+      sp_flush_tile_cache(softpipe, softpipe->sbuf_cache);
 
    /* Need this call for hardware buffers before swapbuffers.
     *
index b056e477b1da36447d90c36e334020ef113a0a7c..9b7a48669d46eaf5491e397f6f0517b1571ccbbb 100644 (file)
@@ -107,7 +107,8 @@ logicop_quad(struct quad_stage *qs, struct quad_header *quad)
    uint *dst4 = (uint *) dst;
    uint *res4 = (uint *) res;
    struct softpipe_cached_tile *
-      tile = sp_get_cached_tile(softpipe->cbuf_cache[0], quad->x0, quad->y0);
+      tile = sp_get_cached_tile(softpipe, softpipe->cbuf_cache[0],
+                                quad->x0, quad->y0);
    uint i, j;
 
    /* get/swizzle dest colors */
@@ -222,8 +223,9 @@ blend_quad(struct quad_stage *qs, struct quad_header *quad)
    static const float zero[4] = { 0, 0, 0, 0 };
    static const float one[4] = { 1, 1, 1, 1 };
    float source[4][QUAD_SIZE], dest[4][QUAD_SIZE];
-   struct softpipe_cached_tile *
-      tile = sp_get_cached_tile(softpipe->cbuf_cache[0], quad->x0, quad->y0);
+   struct softpipe_cached_tile *tile
+      = sp_get_cached_tile(softpipe, softpipe->cbuf_cache[0],
+                           quad->x0, quad->y0);
    uint i, j;
 
    if (softpipe->blend->logicop_enable) {
index 3c0196dd5dcaf6b3a53c574e39bc48201b49c98a..8872825555e07a099f060a2b75cd356225efbd7d 100644 (file)
@@ -48,8 +48,9 @@ colormask_quad(struct quad_stage *qs, struct quad_header *quad)
 {
    struct softpipe_context *softpipe = qs->softpipe;
    float dest[4][QUAD_SIZE];
-   struct softpipe_cached_tile *
-      tile = sp_get_cached_tile(softpipe->cbuf_cache[0], quad->x0, quad->y0);
+   struct softpipe_cached_tile *tile
+      = sp_get_cached_tile(softpipe,
+                           softpipe->cbuf_cache[0], quad->x0, quad->y0);
    uint i, j;
 
    /* get/swizzle dest colors */
index 29231322b8358b43870499194d14280ff778538a..05dafeca7c07eeb50063d905c317905cc9c8132f 100644 (file)
@@ -57,7 +57,7 @@ sp_depth_test_quad(struct quad_stage *qs, struct quad_header *quad)
    unsigned zmask = 0;
    unsigned j;
    struct softpipe_cached_tile *tile
-      = sp_get_cached_tile(softpipe->zbuf_cache, quad->x0, quad->y0);
+      = sp_get_cached_tile(softpipe, softpipe->zbuf_cache, quad->x0, quad->y0);
 
    assert(sps); /* shouldn't get here if there's no zbuffer */
 
index e86f42be461ee49b8a6abb8d1086ea4dd70254ee..f757a43927994e3107d3c36922067fd27c52cd6b 100644 (file)
@@ -43,7 +43,8 @@ output_quad(struct quad_stage *qs, struct quad_header *quad)
 {
    struct softpipe_context *softpipe = qs->softpipe;
    struct softpipe_cached_tile *tile
-      = sp_get_cached_tile(softpipe->cbuf_cache[0], quad->x0, quad->y0);
+      = sp_get_cached_tile(softpipe, softpipe->cbuf_cache[0],
+                           quad->x0, quad->y0);
    /* in-tile pos: */
    const int itx = quad->x0 % TILE_SIZE;
    const int ity = quad->y0 % TILE_SIZE;
index 4a3823d646861a10af762207130ef0442edbea5b..8475bf3b96c0fb11ef5fb9743a4e9aca36825700 100644 (file)
@@ -206,7 +206,7 @@ stencil_test_quad(struct quad_stage *qs, struct quad_header *quad)
    ubyte ref, wrtMask, valMask;
    ubyte stencilVals[QUAD_SIZE];
    struct softpipe_cached_tile *tile
-      = sp_get_cached_tile(softpipe->sbuf_cache, quad->x0, quad->y0);
+      = sp_get_cached_tile(softpipe, softpipe->sbuf_cache, quad->x0, quad->y0);
    uint j;
 
    /* choose front or back face function, operator, etc */
index cd1e75c563a729e70dea0145177333a5d6a09011..0960fc45ab09a5eb31b5ffa13f3e66feaca3178e 100644 (file)
@@ -51,7 +51,7 @@ softpipe_set_framebuffer_state(struct pipe_context *pipe,
       /* check if changing cbuf */
       if (sp->framebuffer.cbufs[i] != fb->cbufs[i]) {
          /* flush old */
-         sp_flush_tile_cache(sp->cbuf_cache[i]);
+         sp_flush_tile_cache(sp, sp->cbuf_cache[i]);
          /* unmap old */
          sps = softpipe_surface(sp->framebuffer.cbufs[i]);
          if (sps && sps->surface.region)
@@ -73,7 +73,7 @@ softpipe_set_framebuffer_state(struct pipe_context *pipe,
    /* zbuf changing? */
    if (sp->framebuffer.zbuf != fb->zbuf) {
       /* flush old */
-      sp_flush_tile_cache(sp->zbuf_cache);
+      sp_flush_tile_cache(sp, sp->zbuf_cache);
       /* unmap old */
       sps = softpipe_surface(sp->framebuffer.zbuf);
       if (sps && sps->surface.region)
@@ -98,7 +98,7 @@ softpipe_set_framebuffer_state(struct pipe_context *pipe,
    /* sbuf changing? */
    if (sp->framebuffer.sbuf != fb->sbuf) {
       /* flush old */
-      sp_flush_tile_cache(sp->sbuf_cache_sep);
+      sp_flush_tile_cache(sp, sp->sbuf_cache_sep);
       /* unmap old */
       sps = softpipe_surface(sp->framebuffer.sbuf);
       if (sps && sps->surface.region)
index 057a311cd97454b2f24ea21addbf9e3fd0f9efc5..b8af1c561ff619d53d3762e2f1b80b3f9bbe8002 100644 (file)
@@ -632,48 +632,48 @@ softpipe_init_surface_funcs(struct softpipe_surface *sps)
 
    switch (sps->surface.format) {
    case PIPE_FORMAT_U_A8_R8_G8_B8:
-      sps->surface.get_tile = a8r8g8b8_get_tile;
-      sps->surface.put_tile = a8r8g8b8_put_tile;
+      sps->get_tile = a8r8g8b8_get_tile;
+      sps->put_tile = a8r8g8b8_put_tile;
       break;
    case PIPE_FORMAT_U_A1_R5_G5_B5:
-      sps->surface.get_tile = a1r5g5b5_get_tile;
+      sps->get_tile = a1r5g5b5_get_tile;
       break;
    case PIPE_FORMAT_U_L8:
-      sps->surface.get_tile = l8_get_tile;
+      sps->get_tile = l8_get_tile;
       break;
    case PIPE_FORMAT_U_A8:
-      sps->surface.get_tile = a8_get_tile;
+      sps->get_tile = a8_get_tile;
       break;
    case PIPE_FORMAT_U_I8:
-      sps->surface.get_tile = i8_get_tile;
+      sps->get_tile = i8_get_tile;
       break;
    case PIPE_FORMAT_U_A8_L8:
-      sps->surface.get_tile = a8_l8_get_tile;
+      sps->get_tile = a8_l8_get_tile;
       break;
 
    case PIPE_FORMAT_S_R16_G16_B16_A16:
-      sps->surface.get_tile = r16g16b16a16_get_tile;
-      sps->surface.put_tile = r16g16b16a16_put_tile;
+      sps->get_tile = r16g16b16a16_get_tile;
+      sps->put_tile = r16g16b16a16_put_tile;
       break;
 
    case PIPE_FORMAT_U_Z16:
-      sps->surface.get_tile = z16_get_tile;
-      sps->surface.get_tile_raw = get_tile_raw16;
-      sps->surface.put_tile_raw = put_tile_raw16;
+      sps->get_tile = z16_get_tile;
+      sps->get_tile_raw = get_tile_raw16;
+      sps->put_tile_raw = put_tile_raw16;
       break;
    case PIPE_FORMAT_U_Z32:
-      sps->surface.get_tile = z32_get_tile;
-      sps->surface.get_tile_raw = get_tile_raw32;
-      sps->surface.put_tile_raw = put_tile_raw32;
+      sps->get_tile = z32_get_tile;
+      sps->get_tile_raw = get_tile_raw32;
+      sps->put_tile_raw = put_tile_raw32;
       break;
    case PIPE_FORMAT_S8_Z24:
-      sps->surface.get_tile = s8z24_get_tile;
-      sps->surface.get_tile_raw = get_tile_raw32;
-      sps->surface.put_tile_raw = put_tile_raw32;
+      sps->get_tile = s8z24_get_tile;
+      sps->get_tile_raw = get_tile_raw32;
+      sps->put_tile_raw = put_tile_raw32;
       break;
    case PIPE_FORMAT_U_S8:
-      sps->surface.get_tile_raw = get_tile_raw8;
-      sps->surface.put_tile_raw = put_tile_raw8;
+      sps->get_tile_raw = get_tile_raw8;
+      sps->put_tile_raw = put_tile_raw8;
       break;
    default:
       assert(0);
@@ -739,8 +739,59 @@ softpipe_get_tex_surface(struct pipe_context *pipe,
 }
 
 
+static void
+get_tile_generic(struct pipe_context *pipe,
+                 struct pipe_surface *ps,
+                 uint x, uint y, uint w, uint h,
+                 void *p, int dst_stride)
+{
+   struct softpipe_surface *sps = softpipe_surface(ps);
+   sps->get_tile_raw(ps, x, y, w, h, p);
+}
+
+
+static void
+put_tile_generic(struct pipe_context *pipe,
+                 struct pipe_surface *ps,
+                 uint x, uint y, uint w, uint h,
+                 const void *p, int src_stride)
+{
+   struct softpipe_surface *sps = softpipe_surface(ps);
+   sps->put_tile_raw(ps, x, y, w, h, p);
+}
+
+
+static void
+get_tile_rgba_generic(struct pipe_context *pipe,
+                      struct pipe_surface *ps,
+                      uint x, uint y, uint w, uint h,
+                      float *p)
+{
+   struct softpipe_surface *sps = softpipe_surface(ps);
+   sps->get_tile(ps, x, y, w, h, p);
+}
+
+
+static void
+put_tile_rgba_generic(struct pipe_context *pipe,
+                      struct pipe_surface *ps,
+                      uint x, uint y, uint w, uint h,
+                      const float *p)
+{
+   struct softpipe_surface *sps = softpipe_surface(ps);
+   sps->put_tile(ps, x, y, w, h, p);
+}
+
+
+
 void
 sp_init_surface_functions(struct softpipe_context *sp)
 {
    sp->pipe.surface_alloc = softpipe_surface_alloc;
+
+   sp->pipe.get_tile = get_tile_generic;
+   sp->pipe.put_tile = put_tile_generic;
+
+   sp->pipe.get_tile_rgba = get_tile_rgba_generic;
+   sp->pipe.put_tile_rgba = put_tile_rgba_generic;
 }
index 06c0a01aee54ce52cdf3781f09de548e1692b0b7..0c2486a1716e563c58da0a18fe5e3406bfe0824b 100644 (file)
@@ -46,7 +46,14 @@ struct softpipe_tile_cache;
 struct softpipe_surface {
    struct pipe_surface surface;
 
-   /* no softpipe-specific extras now */
+   void (*get_tile)(struct pipe_surface *ps,
+                    uint x, uint y, uint w, uint h, float *p);
+   void (*put_tile)(struct pipe_surface *ps,
+                    uint x, uint y, uint w, uint h, const float *p);
+   void (*get_tile_raw)(struct pipe_surface *ps,
+                        uint x, uint y, uint w, uint h, void *p);
+   void (*put_tile_raw)(struct pipe_surface *ps,
+                        uint x, uint y, uint w, uint h, const void *p);
 };
 
 
index 129785d26da39f8292dcb7e0f584edfcb64e81d4..421d7bdb1a73d1fba46b409acb83fb1d48e3bc5f 100644 (file)
@@ -153,8 +153,10 @@ sp_tile_cache_set_texture(struct softpipe_tile_cache *tc,
 
 
 void
-sp_flush_tile_cache(struct softpipe_tile_cache *tc)
+sp_flush_tile_cache(struct softpipe_context *softpipe,
+                    struct softpipe_tile_cache *tc)
 {
+   struct pipe_context *pipe = &softpipe->pipe;
    struct pipe_surface *ps = &tc->surface->surface;
    boolean is_depth_stencil;
    int inuse = 0, pos;
@@ -171,14 +173,14 @@ sp_flush_tile_cache(struct softpipe_tile_cache *tc)
       struct softpipe_cached_tile *tile = tc->entries + pos;
       if (tile->x >= 0) {
          if (is_depth_stencil) {
-            ps->put_tile_raw(ps,
-                             tile->x, tile->y, TILE_SIZE, TILE_SIZE,
-                             tile->data.depth32);
+            pipe->put_tile(pipe, ps,
+                           tile->x, tile->y, TILE_SIZE, TILE_SIZE,
+                           tile->data.depth32, 0/*STRIDE*/);
          }
          else {
-            ps->put_tile(ps,
-                         tile->x, tile->y, TILE_SIZE, TILE_SIZE,
-                         (float *) tile->data.color);
+            pipe->put_tile_rgba(pipe, ps,
+                                tile->x, tile->y, TILE_SIZE, TILE_SIZE,
+                                (float *) tile->data.color);
          }
 
          tile->x = tile->y = -1;  /* mark as empty */
@@ -193,8 +195,10 @@ sp_flush_tile_cache(struct softpipe_tile_cache *tc)
 
 
 struct softpipe_cached_tile *
-sp_get_cached_tile(struct softpipe_tile_cache *tc, int x, int y)
+sp_get_cached_tile(struct softpipe_context *softpipe,
+                   struct softpipe_tile_cache *tc, int x, int y)
 {
+   struct pipe_context *pipe = &softpipe->pipe;
    struct pipe_surface *ps = &tc->surface->surface;
    boolean is_depth_stencil
       = (ps->format == PIPE_FORMAT_S8_Z24 ||
@@ -216,14 +220,14 @@ sp_get_cached_tile(struct softpipe_tile_cache *tc, int x, int y)
       if (tile->x != -1) {
          /* put dirty tile back in framebuffer */
          if (is_depth_stencil) {
-            ps->put_tile_raw(ps,
-                             tile->x, tile->y, TILE_SIZE, TILE_SIZE,
-                             tile->data.depth32);
+            pipe->put_tile(pipe, ps,
+                           tile->x, tile->y, TILE_SIZE, TILE_SIZE,
+                           tile->data.depth32, 0 /*STRIDE*/);
          }
          else {
-            ps->put_tile(ps,
-                         tile->x, tile->y, TILE_SIZE, TILE_SIZE,
-                         (float *) tile->data.color);
+            pipe->put_tile_rgba(pipe, ps,
+                                tile->x, tile->y, TILE_SIZE, TILE_SIZE,
+                                (float *) tile->data.color);
          }
       }
 
@@ -289,14 +293,14 @@ sp_get_cached_tile(struct softpipe_tile_cache *tc, int x, int y)
       else {
          /* get new tile from framebuffer */
          if (is_depth_stencil) {
-            ps->get_tile_raw(ps,
-                             tile_x, tile_y, TILE_SIZE, TILE_SIZE,
-                             tile->data.depth32);
+            pipe->get_tile(pipe, ps,
+                           tile_x, tile_y, TILE_SIZE, TILE_SIZE,
+                           tile->data.depth32, 0/*STRIDE*/);
          }
          else {
-            ps->get_tile(ps,
-                         tile_x, tile_y, TILE_SIZE, TILE_SIZE,
-                         (float *) tile->data.color);
+            pipe->get_tile_rgba(pipe, ps,
+                                tile_x, tile_y, TILE_SIZE, TILE_SIZE,
+                                (float *) tile->data.color);
          }
       }
 
@@ -349,9 +353,9 @@ sp_get_cached_tile_tex(struct pipe_context *pipe,
       struct pipe_surface *ps
          = pipe->get_tex_surface(pipe, tc->texture, face, level, z);
 
-      ps->get_tile(ps,
-                   tile_x, tile_y, TILE_SIZE, TILE_SIZE,
-                   (float *) tile->data.color);
+      pipe->get_tile_rgba(pipe, ps,
+                          tile_x, tile_y, TILE_SIZE, TILE_SIZE,
+                          (float *) tile->data.color);
 
       pipe_surface_reference(&ps, NULL);
 
index 15245a2efba9e2f550e49a2d1578c319d2fef38a..e122d70d1383d3b7172ec28521899453040920cf 100644 (file)
@@ -74,13 +74,15 @@ sp_tile_cache_set_texture(struct softpipe_tile_cache *tc,
                           struct pipe_mipmap_tree *texture);
 
 extern void
-sp_flush_tile_cache(struct softpipe_tile_cache *tc);
+sp_flush_tile_cache(struct softpipe_context *softpipe,
+                    struct softpipe_tile_cache *tc);
 
 extern void
 sp_tile_cache_clear(struct softpipe_tile_cache *tc, const float value[4]);
 
 extern struct softpipe_cached_tile *
-sp_get_cached_tile(struct softpipe_tile_cache *tc, int x, int y);
+sp_get_cached_tile(struct softpipe_context *softpipe,
+                   struct softpipe_tile_cache *tc, int x, int y);
 
 extern const struct softpipe_cached_tile *
 sp_get_cached_tile_tex(struct pipe_context *pipe,
index 7c154baa15b44f9df46be144d2af4ab8d3c8449a..7a245b0ed6d56dfd17adb719dccf890cc844e411 100644 (file)
@@ -79,7 +79,7 @@ st_clear_accum_buffer(GLcontext *ctx, struct gl_renderbuffer *rb)
       accBuf[i * 4 + 3] = a;
    }
 
-   acc_ps->put_tile(acc_ps, xpos, ypos, width, height, accBuf);
+   pipe->put_tile_rgba(pipe, acc_ps, xpos, ypos, width, height, accBuf);
 
    free(accBuf);
 
@@ -101,13 +101,13 @@ accum_mad(struct pipe_context *pipe, GLfloat scale, GLfloat bias,
 
    (void) pipe->region_map(pipe, acc_ps->region);
 
-   acc_ps->get_tile(acc_ps, xpos, ypos, width, height, accBuf);
+   pipe->get_tile_rgba(pipe, acc_ps, xpos, ypos, width, height, accBuf);
 
    for (i = 0; i < 4 * width * height; i++) {
       accBuf[i] = accBuf[i] * scale + bias;
    }
 
-   acc_ps->put_tile(acc_ps, xpos, ypos, width, height, accBuf);
+   pipe->put_tile_rgba(pipe, acc_ps, xpos, ypos, width, height, accBuf);
 
    free(accBuf);
 
@@ -131,14 +131,14 @@ accum_accum(struct pipe_context *pipe, GLfloat value,
    colorMap = pipe->region_map(pipe, color_ps->region);
    accMap = pipe->region_map(pipe, acc_ps->region);
 
-   color_ps->get_tile(color_ps, xpos, ypos, width, height, colorBuf);
-   acc_ps->get_tile(acc_ps, xpos, ypos, width, height, accBuf);
+   pipe->get_tile_rgba(pipe, color_ps, xpos, ypos, width, height, colorBuf);
+   pipe->get_tile_rgba(pipe, acc_ps, xpos, ypos, width, height, accBuf);
 
    for (i = 0; i < 4 * width * height; i++) {
       accBuf[i] = accBuf[i] + colorBuf[i] * value;
    }
 
-   acc_ps->put_tile(acc_ps, xpos, ypos, width, height, accBuf);
+   pipe->put_tile_rgba(pipe, acc_ps, xpos, ypos, width, height, accBuf);
 
    free(colorBuf);
    free(accBuf);
@@ -162,13 +162,13 @@ accum_load(struct pipe_context *pipe, GLfloat value,
    (void) pipe->region_map(pipe, color_ps->region);
    (void) pipe->region_map(pipe, acc_ps->region);
 
-   color_ps->get_tile(color_ps, xpos, ypos, width, height, buf);
+   pipe->get_tile_rgba(pipe, color_ps, xpos, ypos, width, height, buf);
 
    for (i = 0; i < 4 * width * height; i++) {
       buf[i] = buf[i] * value;
    }
 
-   acc_ps->put_tile(acc_ps, xpos, ypos, width, height, buf);
+   pipe->put_tile_rgba(pipe, acc_ps, xpos, ypos, width, height, buf);
 
    free(buf);
 
@@ -193,11 +193,11 @@ accum_return(GLcontext *ctx, GLfloat value,
    (void) pipe->region_map(pipe, color_ps->region);
    (void) pipe->region_map(pipe, acc_ps->region);
 
-   acc_ps->get_tile(acc_ps, xpos, ypos, width, height, abuf);
+   pipe->get_tile_rgba(pipe, acc_ps, xpos, ypos, width, height, abuf);
 
    if (!colormask[0] || !colormask[1] || !colormask[2] || !colormask[3]) {
       cbuf = (GLfloat *) malloc(width * height * 4 * sizeof(GLfloat));
-      color_ps->get_tile(color_ps, xpos, ypos, width, height, cbuf);
+      pipe->get_tile_rgba(pipe, color_ps, xpos, ypos, width, height, cbuf);
    }
 
    for (i = 0; i < width * height; i++) {
@@ -212,7 +212,7 @@ accum_return(GLcontext *ctx, GLfloat value,
       }
    }
 
-   color_ps->put_tile(color_ps, xpos, ypos, width, height, abuf);
+   pipe->put_tile_rgba(pipe, color_ps, xpos, ypos, width, height, abuf);
 
    free(abuf);
    if (cbuf)
index 4fdf1cef2b6fbb0ee5417ac1682477a866fddce9..c4a954c43d2b218cf13a4617ef881afef2869713 100644 (file)
@@ -1245,8 +1245,8 @@ st_CopyPixels(GLcontext *ctx, GLint srcx, GLint srcy,
       (void) pipe->region_map(pipe, psRead->region);
       (void) pipe->region_map(pipe, psTex->region);
 
-      psRead->get_tile(psRead, srcx, srcy, width, height, buf);
-      psTex->put_tile(psTex, 0, 0, width, height, buf);
+      pipe->get_tile_rgba(pipe, psRead, srcx, srcy, width, height, buf);
+      pipe->put_tile_rgba(pipe, psTex, 0, 0, width, height, buf);
 
       pipe->region_unmap(pipe, psRead->region);
       pipe->region_unmap(pipe, psTex->region);
index 2c6847e372fdccfd03cca09a8ecc636eba075901..c347a0b6888e3ad38d1240430599011503646a93 100644 (file)
@@ -204,7 +204,7 @@ st_readpixels(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height,
 
    /* Do a row at a time to flip image data vertically */
    for (i = 0; i < height; i++) {
-      strb->surface->get_tile(strb->surface, x, y, width, 1, df);
+      pipe->get_tile_rgba(pipe, strb->surface, x, y, width, 1, df);
       y += yStep;
       df += dfStride;
       if (!dfStride) {
index 1621b56336e196238cc8737ee6399fa9f99b4ad0..e1cf4861d024b64cf998d36eb95bde294d1be96a 100644 (file)
@@ -1100,7 +1100,7 @@ fallback_copy_texsubimage(GLcontext *ctx,
 
    /* do copy row by row */
    for (row = 0; row < height; row++) {
-      src_surf->get_tile(src_surf, srcX, srcY + row, width, 1, data);
+      pipe->get_tile_rgba(pipe, src_surf, srcX, srcY + row, width, 1, data);
 
       /* XXX we're ignoring convolution for now */
       if (ctx->_ImageTransferState) {
@@ -1109,7 +1109,7 @@ fallback_copy_texsubimage(GLcontext *ctx,
                             width, (GLfloat (*)[4])data);
       }
 
-      dest_surf->put_tile(dest_surf, destX, destY, width, 1, data);
+      pipe->put_tile_rgba(pipe, dest_surf, destX, destY, width, 1, data);
       destY += yStep;
    }