summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2013-10-15 16:25:13 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2013-10-15 16:25:13 +0200
commitc78f82f36d6256491cfb9f24c02bce04677ed0b4 (patch)
tree0058cefde5ecb0fb47a7d94a128424b38a614299
parent7512ece8a1208d3c4655db333df1b8503c986a0a (diff)
driver: fix cubemaps
Previous tiling changes broke cubemap support. This commit fixes the offsets and makes the cubemap test work again.
-rw-r--r--src/driver/etna_resource.c5
-rw-r--r--src/driver/etna_transfer.c4
2 files changed, 4 insertions, 5 deletions
diff --git a/src/driver/etna_resource.c b/src/driver/etna_resource.c
index 49ef27e..4782804 100644
--- a/src/driver/etna_resource.c
+++ b/src/driver/etna_resource.c
@@ -215,10 +215,9 @@ static struct pipe_resource * etna_screen_resource_create(struct pipe_screen *sc
flags |= DRM_ETNA_GEM_TYPE_IDX;
else if(templat->bind & PIPE_BIND_VERTEX_BUFFER)
flags |= DRM_ETNA_GEM_TYPE_VTX;
-
- DBG_F(ETNA_DBG_RESOURCE_MSGS, "%p: Allocate surface of %ix%i (padded to %ix%i) of format %s, size %08x flags %08x, memtype %i",
+ DBG_F(ETNA_DBG_RESOURCE_MSGS, "%p: Allocate surface of %ix%i (padded to %ix%i), %i layers, of format %s, size %08x flags %08x, memtype %i",
resource,
- templat->width0, templat->height0, resource->levels[0].padded_width, resource->levels[0].padded_height, util_format_name(templat->format),
+ templat->width0, templat->height0, resource->levels[0].padded_width, resource->levels[0].padded_height, templat->array_size, util_format_name(templat->format),
offset, templat->bind, memtype);
struct etna_bo *bo = 0;
diff --git a/src/driver/etna_transfer.c b/src/driver/etna_transfer.c
index 56631d4..4d22e5e 100644
--- a/src/driver/etna_transfer.c
+++ b/src/driver/etna_transfer.c
@@ -140,7 +140,7 @@ static void *etna_pipe_transfer_map(struct pipe_context *pipe,
{
if(resource_priv->layout == ETNA_LAYOUT_TILED && !util_format_is_compressed(resource_priv->base.format))
{
- etna_texture_untile(ptrans->buffer, mapped,
+ etna_texture_untile(ptrans->buffer, mapped + ptrans->base.box.z * res_level->layer_stride,
ptrans->base.box.x, ptrans->base.box.y, res_level->stride,
ptrans->base.box.width, ptrans->base.box.height, ptrans->base.stride,
util_format_get_blocksize(resource_priv->base.format));
@@ -198,7 +198,7 @@ static void etna_pipe_transfer_unmap(struct pipe_context *pipe,
{
if(resource->layout == ETNA_LAYOUT_TILED && !util_format_is_compressed(resource->base.format))
{
- etna_texture_tile(mapped, ptrans->buffer,
+ etna_texture_tile(mapped + ptrans->base.box.z * res_level->layer_stride, ptrans->buffer,
ptrans->base.box.x, ptrans->base.box.y, res_level->stride,
ptrans->base.box.width, ptrans->base.box.height, ptrans->base.stride,
util_format_get_blocksize(resource->base.format));