Mesa (lp-surface-tiling): llvmpipe: call llvmpipe_get_texture_tile() for depth/stencil

Brian Paul brianp at kemper.freedesktop.org
Thu Apr 8 21:25:42 UTC 2010


Module: Mesa
Branch: lp-surface-tiling
Commit: a8aa763e8a717533f2b13bb6ea53cbccbede68c9
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a8aa763e8a717533f2b13bb6ea53cbccbede68c9

Author: Brian Paul <brianp at vmware.com>
Date:   Thu Apr  8 14:47:28 2010 -0600

llvmpipe: call llvmpipe_get_texture_tile() for depth/stencil

The returned pointer isn't used, but the tile status/layout info
gets updated.  Helps to fix glReadPixels(DEPTH / STENCIL).

---

 src/gallium/drivers/llvmpipe/lp_rast.c |   14 ++++++++++++++
 1 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/src/gallium/drivers/llvmpipe/lp_rast.c b/src/gallium/drivers/llvmpipe/lp_rast.c
index 73770d8..f3ac77a 100644
--- a/src/gallium/drivers/llvmpipe/lp_rast.c
+++ b/src/gallium/drivers/llvmpipe/lp_rast.c
@@ -175,12 +175,26 @@ lp_rast_tile_begin(struct lp_rasterizer_task *task,
    {
       struct pipe_surface *zsbuf = rast->curr_scene->fb.zsbuf;
       if (zsbuf) {
+         struct llvmpipe_texture *lpt = llvmpipe_texture(zsbuf->texture);
+
          if (scene->has_depth_clear)
             usage = LP_TEX_USAGE_WRITE_ALL;
          else
             usage = LP_TEX_USAGE_READ_WRITE;
 
+         /* "prime" the tile: convert data from linear to tiled if necessary
+          * and update the tile's layout info.
+          */
+         (void) llvmpipe_get_texture_tile(lpt,
+                                          zsbuf->face,
+                                          zsbuf->level,
+                                          usage,
+                                          x, y);
+         /* Get actual pointer to the tile data.  Note that depth/stencil
+          * data is tiled differently than color data.
+          */
          task->depth_tile = lp_rast_get_depth_block_pointer(rast, x, y);
+
          assert(task->depth_tile);
       }
       else {




More information about the mesa-commit mailing list