diff options
author | Brian Paul <brianp@vmware.com> | 2010-04-08 14:47:28 -0600 |
---|---|---|
committer | Brian Paul <brianp@vmware.com> | 2010-04-08 14:47:30 -0600 |
commit | a8aa763e8a717533f2b13bb6ea53cbccbede68c9 (patch) | |
tree | c66ece1316a09f968b9cb6cf9cf51494a0a7f3b7 /src/gallium/drivers | |
parent | 463bc64af266194acbea71cd52e26a79b8c8a260 (diff) | |
download | mesa-a8aa763e8a717533f2b13bb6ea53cbccbede68c9.tar.gz |
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).
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r-- | 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 73770d8e989..f3ac77a7092 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 { |