aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/lima
diff options
context:
space:
mode:
authorAlyssa Rosenzweig <[email protected]>2020-01-15 13:15:01 -0500
committerAlyssa Rosenzweig <[email protected]>2020-01-21 08:35:19 -0500
commit2091d311c9d063138d5c84bbf4afe99ca864e597 (patch)
tree18617a10f291bf006810930d2967705538da27db /src/gallium/drivers/lima
parentf2d876b2b2335397661d2bd7663a7b353a1b839e (diff)
panfrost: Rework linear<--->tiled conversions
There's a lot going on here (it's a ton of commits squashed together since otherwise this would be impossible to review...) 1. We have a fast path for linear->tiled for whole (aligned) tiles, but we have to use a slow path for unaligned accesses. We can get a pretty major win for partial updates by using this slow path simply on the borders of the update region, and then hit the fast path for the tile-aligned interior. This does require some shuffling. 2. Mark the LUTs constant, which allows the compiler to inline them, which pairs well with loop unrolling (eliminating the memory accesses and just becoming some immediates.. which are not as immediate on aarch64 as I'd like..) 3. Add fast path for bpp1/2/8/16. These use the same algorithm and we have native types for them, so may as well get the fast path. 4. Drop generic path for bpp != 1/2/8/16, since these formats are generally awful and there's no way to tile them efficienctly and honestly there's not a good reason too either. Lima doesn't support any of these formats; Panfrost can make the opinionated choice to make them linear. 5. Specialize the unaligned routines. They don't have to be fully generic, they just can't assume alignment. So now they should be nearly as fast as the aligned versions (which get some extra tricks to be even faster but the difference might be neglible on some workloads). 6. Specialize also for the size of the tile, to allow 4x4 tiling as well as 16x16 tiling. This allows compressed textures to be efficiently tiled with the same routines (so we add support for tiling ASTC/ETC textures while we're at it) Signed-off-by: Alyssa Rosenzweig <[email protected]> Reviewed-by: Vasily Khoruzhick <[email protected]> Tested-by: Vasily Khoruzhick <[email protected]> #lima on Mali400 Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3414>
Diffstat (limited to 'src/gallium/drivers/lima')
-rw-r--r--src/gallium/drivers/lima/lima_resource.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/gallium/drivers/lima/lima_resource.c b/src/gallium/drivers/lima/lima_resource.c
index 2b86466101e..a0edbe92e01 100644
--- a/src/gallium/drivers/lima/lima_resource.c
+++ b/src/gallium/drivers/lima/lima_resource.c
@@ -636,7 +636,7 @@ lima_transfer_map(struct pipe_context *pctx,
ptrans->box.width, ptrans->box.height,
ptrans->stride,
res->levels[level].stride,
- util_format_get_blocksize(pres->format));
+ pres->format);
}
return trans->staging;
@@ -682,7 +682,7 @@ lima_transfer_unmap(struct pipe_context *pctx,
ptrans->box.width, ptrans->box.height,
res->levels[ptrans->level].stride,
ptrans->stride,
- util_format_get_blocksize(pres->format));
+ pres->format);
}
free(trans->staging);
}