panfrost: Add a pool to sampler_view

So we can allocate temporary sampler views for writeable images on Valhall.

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15797>
This commit is contained in:
Alyssa Rosenzweig 2022-04-07 10:26:24 -04:00 committed by Marge Bot
parent 0299565f72
commit 0795f3d7e4
1 changed files with 8 additions and 1 deletions

View File

@ -87,6 +87,12 @@ struct panfrost_sampler_view {
struct mali_texture_packed bifrost_descriptor;
mali_ptr texture_bo;
uint64_t modifier;
/* Pool used to allocate the descriptor. If NULL, defaults to the global
* descriptor pool. Can be set for short lived descriptors, useful for
* shader images on Valhall.
*/
struct panfrost_pool *pool;
};
/* Statically assert that PIPE_* enums match the hardware enums.
@ -1345,7 +1351,8 @@ panfrost_create_sampler_view_bo(struct panfrost_sampler_view *so,
(PAN_ARCH <= 5 ? pan_size(TEXTURE) : 0) +
GENX(panfrost_estimate_texture_payload_size)(&iview);
struct panfrost_ptr payload = pan_pool_alloc_aligned(&ctx->descs.base, size, 64);
struct panfrost_pool *pool = so->pool ?: &ctx->descs;
struct panfrost_ptr payload = pan_pool_alloc_aligned(&pool->base, size, 64);
so->state = panfrost_pool_take_ref(&ctx->descs, payload.gpu);
void *tex = (PAN_ARCH >= 6) ? &so->bifrost_descriptor : payload.cpu;