summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Fonseca <[email protected]>2009-08-30 12:10:24 +0100
committerJosé Fonseca <[email protected]>2009-08-30 12:37:03 +0100
commit62b586fce43ac117dcb553baa1fe884053fdef12 (patch)
treebad4d12f3c1b1c1d4d96076e5978482dfa1fb7fd
parentffe1b7bad82726da44bf91bd61ca62e5cf6645de (diff)
llvmpipe: Use util_format_read_4f to read texture tiles.
-rw-r--r--src/gallium/drivers/llvmpipe/lp_tex_cache.c23
1 files changed, 17 insertions, 6 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_tex_cache.c b/src/gallium/drivers/llvmpipe/lp_tex_cache.c
index 3069c765aef..e5a6ab825c3 100644
--- a/src/gallium/drivers/llvmpipe/lp_tex_cache.c
+++ b/src/gallium/drivers/llvmpipe/lp_tex_cache.c
@@ -35,6 +35,7 @@
#include "pipe/p_inlines.h"
#include "util/u_memory.h"
#include "util/u_tile.h"
+#include "util/u_format.h"
#include "lp_context.h"
#include "lp_surface.h"
#include "lp_texture.h"
@@ -279,12 +280,22 @@ lp_find_cached_tex_tile(struct llvmpipe_tex_tile_cache *tc,
tc->tex_z = addr.bits.z;
}
- /* get tile from the transfer (view into texture) */
- pipe_get_tile_rgba(tc->tex_trans,
- addr.bits.x * TEX_TILE_SIZE,
- addr.bits.y * TEX_TILE_SIZE,
- TEX_TILE_SIZE, TEX_TILE_SIZE,
- (float *) tile->color);
+ {
+ unsigned x = addr.bits.x * TEX_TILE_SIZE;
+ unsigned y = addr.bits.y * TEX_TILE_SIZE;
+ unsigned w = TEX_TILE_SIZE;
+ unsigned h = TEX_TILE_SIZE;
+
+ if (pipe_clip_tile(x, y, &w, &h, tc->tex_trans)) {
+ assert(0);
+ }
+
+ util_format_read_4f(tc->tex_trans->format,
+ (float *)tile->color, sizeof tile->color[0],
+ tc->tex_trans_map, tc->tex_trans->stride,
+ x, y, w, h);
+ }
+
tile->addr = addr;
}