diff options
-rw-r--r-- | src/driver/etna_pipe.h | 2 | ||||
-rw-r--r-- | src/driver/etna_resource.c | 4 |
2 files changed, 6 insertions, 0 deletions
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); |