From 34ebe5c57c1677e7394c0f747af43b941e6c6281 Mon Sep 17 00:00:00 2001 From: Christian Gmeiner Date: Thu, 6 Feb 2014 18:23:32 +0000 Subject: driver: store calculated pipe addresses in struct etna_resource Signed-off-by: Christian Gmeiner --- src/driver/etna_pipe.h | 2 ++ src/driver/etna_resource.c | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/src/driver/etna_pipe.h b/src/driver/etna_pipe.h index 54a113a..c9d59b1 100644 --- a/src/driver/etna_pipe.h +++ b/src/driver/etna_pipe.h @@ -87,6 +87,8 @@ struct etna_resource struct etna_resource_level levels[ETNA_NUM_LOD]; struct etna_pipe_context *last_ctx; /* Last bound context */ + + uint32_t pipe_addr[2]; }; struct etna_surface diff --git a/src/driver/etna_resource.c b/src/driver/etna_resource.c index 31c15d3..4389a2f 100644 --- a/src/driver/etna_resource.c +++ b/src/driver/etna_resource.c @@ -245,6 +245,10 @@ static struct pipe_resource * etna_screen_resource_create(struct pipe_screen *sc resource->ts_bo = 0; /* TS is only created when first bound to surface */ pipe_reference_init(&resource->base.reference, 1); + /* calculate pipe addresses */ + resource->pipe_addr[0] = etna_bo_gpu_address(resource->bo) + resource->levels[0].offset; + resource->pipe_addr[1] = etna_bo_gpu_address(resource->bo) + resource->levels[0].offset + (resource->levels[0].size / 2); + if(DBG_ENABLED(ETNA_DBG_ZERO)) { void *map = etna_bo_map(bo); -- cgit