panvk: Don't use UBOs for meta_clear

It must always be pushed, so constructing a uniform remap table is
useless.

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14913>
This commit is contained in:
Alyssa Rosenzweig 2022-02-07 14:40:14 -05:00 committed by Marge Bot
parent 030dadb5f4
commit 239d59ecdd
1 changed files with 5 additions and 28 deletions

View File

@ -165,6 +165,7 @@ panvk_meta_clear_attachments_emit_rsd(struct panfrost_device *pdev,
pan_pack(rsd_ptr.cpu, RENDERER_STATE, cfg) {
pan_shader_prepare_rsd(shader_info, shader, &cfg);
cfg.properties.uniform_buffer_count = 0;
cfg.properties.depth_source =
z ?
MALI_DEPTH_SOURCE_SHADER :
@ -276,26 +277,9 @@ panvk_meta_clear_attachment_emit_push_constants(struct panfrost_device *pdev,
return pan_pool_upload_aligned(pool, pushvals, sizeof(pushvals), 16);
}
static mali_ptr
panvk_meta_clear_attachment_emit_ubo(struct panfrost_device *pdev,
const struct panfrost_ubo_push *pushmap,
struct pan_pool *pool,
const VkClearValue *clear_value)
{
struct panfrost_ptr ubo = pan_pool_alloc_desc(pool, UNIFORM_BUFFER);
pan_pack(ubo.cpu, UNIFORM_BUFFER, cfg) {
cfg.entries = DIV_ROUND_UP(sizeof(*clear_value), 16);
cfg.pointer = pan_pool_upload_aligned(pool, clear_value, sizeof(*clear_value), 16);
}
return ubo.gpu;
}
static void
panvk_meta_clear_attachment_emit_dcd(struct pan_pool *pool,
mali_ptr coords,
mali_ptr ubo, mali_ptr push_constants,
mali_ptr coords, mali_ptr push_constants,
mali_ptr vpd, mali_ptr tsd, mali_ptr rsd,
void *out)
{
@ -304,7 +288,6 @@ panvk_meta_clear_attachment_emit_dcd(struct pan_pool *pool,
cfg.draw_descriptor_is_64b = true;
cfg.thread_storage = tsd;
cfg.state = rsd;
cfg.uniform_buffers = ubo;
cfg.push_uniforms = push_constants;
cfg.position = coords;
cfg.viewport = vpd;
@ -315,7 +298,7 @@ static struct panfrost_ptr
panvk_meta_clear_attachment_emit_tiler_job(struct pan_pool *desc_pool,
struct pan_scoreboard *scoreboard,
mali_ptr coords,
mali_ptr ubo, mali_ptr push_constants,
mali_ptr push_constants,
mali_ptr vpd, mali_ptr rsd,
mali_ptr tsd, mali_ptr tiler)
{
@ -324,7 +307,7 @@ panvk_meta_clear_attachment_emit_tiler_job(struct pan_pool *desc_pool,
panvk_meta_clear_attachment_emit_dcd(desc_pool,
coords,
ubo, push_constants,
push_constants,
vpd, tsd, rsd,
pan_section_ptr(job.cpu, TILER_JOB, DRAW));
@ -460,11 +443,6 @@ panvk_meta_clear_attachment(struct panvk_cmd_buffer *cmdbuf,
panvk_meta_clear_attachment_emit_push_constants(pdev, &shader_info->push,
&cmdbuf->desc_pool.base,
clear_value);
mali_ptr ubo =
panvk_meta_clear_attachment_emit_ubo(pdev, &shader_info->push,
&cmdbuf->desc_pool.base,
clear_value);
mali_ptr tsd = PAN_ARCH >= 6 ? batch->tls.gpu : batch->fb.desc.gpu;
mali_ptr tiler = PAN_ARCH >= 6 ? batch->tiler.descs.gpu : 0;
@ -472,8 +450,7 @@ panvk_meta_clear_attachment(struct panvk_cmd_buffer *cmdbuf,
job = panvk_meta_clear_attachment_emit_tiler_job(&cmdbuf->desc_pool.base,
&batch->scoreboard,
coordinates,
ubo, pushconsts,
coordinates, pushconsts,
vpd, rsd, tsd, tiler);
util_dynarray_append(&batch->jobs, void *, job.cpu);