panfrost: Use better packs for blits

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6326>
This commit is contained in:
Alyssa Rosenzweig 2020-08-13 16:06:12 -04:00 committed by Marge Bot
parent 3e7fd2a034
commit 4fc90f7c3c
1 changed files with 10 additions and 9 deletions

View File

@ -188,20 +188,21 @@ panfrost_load_midg(
struct panfrost_transfer viewport = panfrost_pool_alloc(pool, MALI_VIEWPORT_LENGTH); struct panfrost_transfer viewport = panfrost_pool_alloc(pool, MALI_VIEWPORT_LENGTH);
struct panfrost_transfer sampler = panfrost_pool_alloc(pool, MALI_MIDGARD_SAMPLER_LENGTH); struct panfrost_transfer sampler = panfrost_pool_alloc(pool, MALI_MIDGARD_SAMPLER_LENGTH);
struct panfrost_transfer varying_buf = panfrost_pool_alloc(pool, MALI_ATTRIBUTE_LENGTH); struct panfrost_transfer varying = panfrost_pool_alloc(pool, MALI_ATTRIBUTE_LENGTH);
struct panfrost_transfer varying_buffer = panfrost_pool_alloc(pool, MALI_ATTRIBUTE_BUFFER_LENGTH);
pan_pack(viewport.cpu, VIEWPORT, cfg) { pan_pack(viewport.cpu, VIEWPORT, cfg) {
cfg.scissor_maximum_x = width - 1; /* Inclusive */ cfg.scissor_maximum_x = width - 1; /* Inclusive */
cfg.scissor_maximum_y = height - 1; cfg.scissor_maximum_y = height - 1;
} }
union mali_attr varying = { pan_pack(varying_buffer.cpu, ATTRIBUTE_BUFFER, cfg) {
.elements = coordinates | MALI_ATTR_LINEAR, cfg.pointer = coordinates;
.stride = 4 * sizeof(float), cfg.stride = 4 * sizeof(float);
.size = 4 * sizeof(float) * vertex_count, cfg.size = cfg.stride * vertex_count;
}; }
pan_pack(varying_buf.cpu, ATTRIBUTE, cfg) { pan_pack(varying.cpu, ATTRIBUTE, cfg) {
cfg.buffer_index = 0; cfg.buffer_index = 0;
cfg.format = (MALI_CHANNEL_R << 0) | (MALI_CHANNEL_G << 3) | (MALI_RGBA32F << 12); cfg.format = (MALI_CHANNEL_R << 0) | (MALI_CHANNEL_G << 3) | (MALI_RGBA32F << 12);
} }
@ -347,8 +348,8 @@ panfrost_load_midg(
.textures = panfrost_pool_upload(pool, &texture_t.gpu, sizeof(texture_t.gpu)), .textures = panfrost_pool_upload(pool, &texture_t.gpu, sizeof(texture_t.gpu)),
.sampler_descriptor = sampler.gpu, .sampler_descriptor = sampler.gpu,
.shader = shader_meta_t.gpu, .shader = shader_meta_t.gpu,
.varyings = panfrost_pool_upload(pool, &varying, sizeof(varying)), .varyings = varying_buffer.gpu,
.varying_meta = varying_buf.gpu, .varying_meta = varying.gpu,
.viewport = viewport.gpu, .viewport = viewport.gpu,
.shared_memory = fbd .shared_memory = fbd
} }