panvk: Use push constants for copy shaders

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16916>
This commit is contained in:
Alyssa Rosenzweig 2022-06-07 15:17:02 -04:00 committed by Marge Bot
parent 1a0217e3fb
commit ae77c207e0
1 changed files with 41 additions and 148 deletions

View File

@ -124,13 +124,11 @@ panvk_meta_copy_emit_dcd(struct pan_pool *pool,
mali_ptr src_coords, mali_ptr dst_coords,
mali_ptr texture, mali_ptr sampler,
mali_ptr vpd, mali_ptr tsd, mali_ptr rsd,
mali_ptr ubos, mali_ptr push_constants,
void *out)
mali_ptr push_constants, void *out)
{
pan_pack(out, DRAW, cfg) {
cfg.thread_storage = tsd;
cfg.state = rsd;
cfg.uniform_buffers = ubos;
cfg.push_uniforms = push_constants;
cfg.position = dst_coords;
if (src_coords) {
@ -149,7 +147,7 @@ panvk_meta_copy_emit_tiler_job(struct pan_pool *desc_pool,
struct pan_scoreboard *scoreboard,
mali_ptr src_coords, mali_ptr dst_coords,
mali_ptr texture, mali_ptr sampler,
mali_ptr ubo, mali_ptr push_constants,
mali_ptr push_constants,
mali_ptr vpd, mali_ptr rsd,
mali_ptr tsd, mali_ptr tiler)
{
@ -157,7 +155,7 @@ panvk_meta_copy_emit_tiler_job(struct pan_pool *desc_pool,
pan_pool_alloc_desc(desc_pool, TILER_JOB);
panvk_meta_copy_emit_dcd(desc_pool, src_coords, dst_coords,
texture, sampler, vpd, tsd, rsd, ubo, push_constants,
texture, sampler, vpd, tsd, rsd, push_constants,
pan_section_ptr(job.cpu, TILER_JOB, DRAW));
pan_section_pack(job.cpu, TILER_JOB, PRIMITIVE, cfg) {
@ -194,7 +192,7 @@ panvk_meta_copy_emit_compute_job(struct pan_pool *desc_pool,
const struct pan_compute_dim *num_wg,
const struct pan_compute_dim *wg_sz,
mali_ptr texture, mali_ptr sampler,
mali_ptr ubo, mali_ptr push_constants,
mali_ptr push_constants,
mali_ptr rsd, mali_ptr tsd)
{
struct panfrost_ptr job =
@ -212,7 +210,7 @@ panvk_meta_copy_emit_compute_job(struct pan_pool *desc_pool,
}
panvk_meta_copy_emit_dcd(desc_pool, 0, 0, texture, sampler,
0, tsd, rsd, ubo, push_constants,
0, tsd, rsd, push_constants,
pan_section_ptr(job.cpu, COMPUTE_JOB, DRAW));
panfrost_add_job(desc_pool, scoreboard, MALI_JOB_TYPE_COMPUTE,
@ -327,42 +325,6 @@ panvk_meta_copy_to_img_emit_rsd(struct panfrost_device *pdev,
return rsd_ptr.gpu;
}
static mali_ptr
panvk_meta_copy_emit_ubo(struct panfrost_device *pdev,
struct pan_pool *pool,
void *data, unsigned size)
{
struct panfrost_ptr ubo = pan_pool_alloc_desc(pool, UNIFORM_BUFFER);
pan_pack(ubo.cpu, UNIFORM_BUFFER, cfg) {
cfg.entries = DIV_ROUND_UP(size, 16);
cfg.pointer = pan_pool_upload_aligned(pool, data, size, 16);
}
return ubo.gpu;
}
static mali_ptr
panvk_meta_copy_emit_push_constants(struct panfrost_device *pdev,
const struct panfrost_ubo_push *pushmap,
struct pan_pool *pool,
const void *data, unsigned size)
{
assert(pushmap->count <= (size / 4));
const uint32_t *in = data;
uint32_t pushvals[PAN_MAX_PUSH];
for (unsigned i = 0; i < pushmap->count; i++) {
assert(i < ARRAY_SIZE(pushvals));
assert(pushmap->words[i].ubo == 0);
assert(pushmap->words[i].offset < size);
pushvals[i] = in[pushmap->words[i].offset / 4];
}
return pan_pool_upload_aligned(pool, pushvals, size, 16);
}
static mali_ptr
panvk_meta_copy_to_buf_emit_rsd(struct panfrost_device *pdev,
struct pan_pool *desc_pool,
@ -524,6 +486,7 @@ panvk_meta_copy_img2img_shader(struct panfrost_device *pdev,
struct panfrost_compile_inputs inputs = {
.gpu_id = pdev->gpu_id,
.is_blit = true,
.no_ubo_to_push = true,
};
#if PAN_ARCH >= 6
@ -583,7 +546,7 @@ struct panvk_meta_copy_img2img_format_info {
enum pipe_format srcfmt;
enum pipe_format dstfmt;
unsigned dstmask;
};
} PACKED;
static const struct panvk_meta_copy_img2img_format_info panvk_meta_copy_img2img_fmts[] = {
{ PIPE_FORMAT_R8_UNORM, PIPE_FORMAT_R8_UNORM, 0x1},
@ -792,7 +755,7 @@ panvk_meta_copy_img2img(struct panvk_cmd_buffer *cmdbuf,
job = panvk_meta_copy_emit_tiler_job(&cmdbuf->desc_pool.base,
&batch->scoreboard,
src_coords, dst_coords,
texture, sampler, 0, 0,
texture, sampler, 0,
vpd, rsd, tsd, tiler);
util_dynarray_append(&batch->jobs, void *, job.cpu);
@ -911,7 +874,7 @@ panvk_meta_copy_buf2img_format(enum pipe_format imgfmt)
struct panvk_meta_copy_format_info {
enum pipe_format imgfmt;
unsigned mask;
};
} PACKED;
static const struct panvk_meta_copy_format_info panvk_meta_copy_buf2img_fmts[] = {
{ PIPE_FORMAT_R8_UNORM, 0x1 },
@ -940,16 +903,13 @@ struct panvk_meta_copy_buf2img_info {
unsigned surf;
} stride;
} buf;
};
} PACKED;
#define panvk_meta_copy_buf2img_get_info_field(b, field) \
nir_load_ubo((b), 1, \
nir_load_push_constant((b), 1, \
sizeof(((struct panvk_meta_copy_buf2img_info *)0)->field) * 8, \
nir_imm_int(b, 0), \
nir_imm_int(b, offsetof(struct panvk_meta_copy_buf2img_info, field)), \
.align_mul = 4, \
.align_offset = 0, \
.range_base = 0, \
.base = offsetof(struct panvk_meta_copy_buf2img_info, field), \
.range = ~0)
static mali_ptr
@ -965,8 +925,6 @@ panvk_meta_copy_buf2img_shader(struct panfrost_device *pdev,
util_format_name(key.imgfmt),
key.mask);
b.shader->info.num_ubos = 1;
nir_variable *coord_var =
nir_variable_create(b.shader, nir_var_shader_in,
glsl_vector_type(GLSL_TYPE_FLOAT, 3),
@ -1071,6 +1029,7 @@ panvk_meta_copy_buf2img_shader(struct panfrost_device *pdev,
struct panfrost_compile_inputs inputs = {
.gpu_id = pdev->gpu_id,
.is_blit = true,
.no_ubo_to_push = true,
};
#if PAN_ARCH >= 6
@ -1087,9 +1046,7 @@ panvk_meta_copy_buf2img_shader(struct panfrost_device *pdev,
util_dynarray_init(&binary, NULL);
GENX(pan_shader_compile)(b.shader, &inputs, &binary, shader_info);
/* Make sure UBO words have been upgraded to push constants */
assert(shader_info->ubo_count == 1);
shader_info->push.count = DIV_ROUND_UP(sizeof(struct panvk_meta_copy_buf2img_info), 4);
mali_ptr shader =
pan_pool_upload_aligned(bin_pool, binary.data, binary.size,
@ -1118,7 +1075,6 @@ panvk_meta_copy_buf2img(struct panvk_cmd_buffer *cmdbuf,
const struct panvk_image *img,
const VkBufferImageCopy2 *region)
{
struct panfrost_device *pdev = &cmdbuf->device->physical_device->pdev;
struct pan_fb_info *fbinfo = &cmdbuf->state.fb.info;
unsigned minx = MAX2(region->imageOffset.x, 0);
unsigned miny = MAX2(region->imageOffset.y, 0);
@ -1149,8 +1105,6 @@ panvk_meta_copy_buf2img(struct panvk_cmd_buffer *cmdbuf,
mali_ptr rsd =
cmdbuf->device->physical_device->meta.copy.buf2img[fmtidx].rsd;
const struct panfrost_ubo_push *pushmap =
&cmdbuf->device->physical_device->meta.copy.buf2img[fmtidx].pushmap;
const struct vk_image_buffer_layout buflayout =
vk_image_buffer_copy_layout(&img->vk, region);
@ -1161,10 +1115,7 @@ panvk_meta_copy_buf2img(struct panvk_cmd_buffer *cmdbuf,
};
mali_ptr pushconsts =
panvk_meta_copy_emit_push_constants(pdev, pushmap, &cmdbuf->desc_pool.base,
&info, sizeof(info));
mali_ptr ubo =
panvk_meta_copy_emit_ubo(pdev, &cmdbuf->desc_pool.base, &info, sizeof(info));
pan_pool_upload_aligned(&cmdbuf->desc_pool.base, &info, sizeof(info), 16);
struct pan_image_view view = {
.format = key.imgfmt,
@ -1235,7 +1186,7 @@ panvk_meta_copy_buf2img(struct panvk_cmd_buffer *cmdbuf,
job = panvk_meta_copy_emit_tiler_job(&cmdbuf->desc_pool.base,
&batch->scoreboard,
src_coords, dst_coords,
0, 0, ubo, pushconsts,
0, 0, pushconsts,
vpd, rsd, tsd, tiler);
util_dynarray_append(&batch->jobs, void *, job.cpu);
@ -1254,7 +1205,6 @@ panvk_meta_copy_buf2img_init(struct panvk_physical_device *dev)
panvk_meta_copy_buf2img_shader(&dev->pdev, &dev->meta.bin_pool.base,
panvk_meta_copy_buf2img_fmts[i],
&shader_info);
dev->meta.copy.buf2img[i].pushmap = shader_info.push;
dev->meta.copy.buf2img[i].rsd =
panvk_meta_copy_to_img_emit_rsd(&dev->pdev, &dev->meta.desc_pool.base,
shader, &shader_info,
@ -1334,16 +1284,13 @@ struct panvk_meta_copy_img2buf_info {
unsigned minx, miny, maxx, maxy;
} extent;
} img;
};
} PACKED;
#define panvk_meta_copy_img2buf_get_info_field(b, field) \
nir_load_ubo((b), 1, \
nir_load_push_constant((b), 1, \
sizeof(((struct panvk_meta_copy_img2buf_info *)0)->field) * 8, \
nir_imm_int(b, 0), \
nir_imm_int(b, offsetof(struct panvk_meta_copy_img2buf_info, field)), \
.align_mul = 4, \
.align_offset = 0, \
.range_base = 0, \
.base = offsetof(struct panvk_meta_copy_img2buf_info, field), \
.range = ~0)
static mali_ptr
@ -1367,8 +1314,6 @@ panvk_meta_copy_img2buf_shader(struct panfrost_device *pdev,
util_format_name(key.imgfmt),
key.mask);
b.shader->info.num_ubos = 1;
nir_ssa_def *coord = nir_load_global_invocation_id(&b, 32);
nir_ssa_def *bufptr =
panvk_meta_copy_img2buf_get_info_field(&b, buf.ptr);
@ -1539,6 +1484,7 @@ panvk_meta_copy_img2buf_shader(struct panfrost_device *pdev,
struct panfrost_compile_inputs inputs = {
.gpu_id = pdev->gpu_id,
.is_blit = true,
.no_ubo_to_push = true,
};
struct util_dynarray binary;
@ -1546,11 +1492,7 @@ panvk_meta_copy_img2buf_shader(struct panfrost_device *pdev,
util_dynarray_init(&binary, NULL);
GENX(pan_shader_compile)(b.shader, &inputs, &binary, shader_info);
/* Make sure UBO words have been upgraded to push constants and everything
* is at the right place.
*/
assert(shader_info->ubo_count == 1);
assert(shader_info->push.count <= (sizeof(struct panvk_meta_copy_img2buf_info) / 4));
shader_info->push.count = DIV_ROUND_UP(sizeof(struct panvk_meta_copy_img2buf_info), 4);
mali_ptr shader =
pan_pool_upload_aligned(bin_pool, binary.data, binary.size,
@ -1593,8 +1535,6 @@ panvk_meta_copy_img2buf(struct panvk_cmd_buffer *cmdbuf,
mali_ptr rsd =
cmdbuf->device->physical_device->meta.copy.img2buf[texdimidx][fmtidx].rsd;
const struct panfrost_ubo_push *pushmap =
&cmdbuf->device->physical_device->meta.copy.img2buf[texdimidx][fmtidx].pushmap;
struct panvk_meta_copy_img2buf_info info = {
.buf.ptr = panvk_buffer_gpu_ptr(buf, region->bufferOffset),
@ -1617,10 +1557,7 @@ panvk_meta_copy_img2buf(struct panvk_cmd_buffer *cmdbuf,
info.buf.stride.line;
mali_ptr pushconsts =
panvk_meta_copy_emit_push_constants(pdev, pushmap, &cmdbuf->desc_pool.base,
&info, sizeof(info));
mali_ptr ubo =
panvk_meta_copy_emit_ubo(pdev, &cmdbuf->desc_pool.base, &info, sizeof(info));
pan_pool_upload_aligned(&cmdbuf->desc_pool.base, &info, sizeof(info), 16);
struct pan_image_view view = {
.format = key.imgfmt,
@ -1673,8 +1610,7 @@ panvk_meta_copy_img2buf(struct panvk_cmd_buffer *cmdbuf,
panvk_meta_copy_emit_compute_job(&cmdbuf->desc_pool.base,
&batch->scoreboard, &num_wg, &wg_sz,
texture, sampler,
ubo, pushconsts,
rsd, tsd);
pushconsts, rsd, tsd);
util_dynarray_append(&batch->jobs, void *, job.cpu);
@ -1696,7 +1632,6 @@ panvk_meta_copy_img2buf_init(struct panvk_physical_device *dev)
panvk_meta_copy_img2buf_shader(&dev->pdev, &dev->meta.bin_pool.base,
panvk_meta_copy_img2buf_fmts[i],
texdim, false, &shader_info);
dev->meta.copy.img2buf[texdimidx][i].pushmap = shader_info.push;
dev->meta.copy.img2buf[texdimidx][i].rsd =
panvk_meta_copy_to_buf_emit_rsd(&dev->pdev,
&dev->meta.desc_pool.base,
@ -1712,7 +1647,6 @@ panvk_meta_copy_img2buf_init(struct panvk_physical_device *dev)
panvk_meta_copy_img2buf_shader(&dev->pdev, &dev->meta.bin_pool.base,
panvk_meta_copy_img2buf_fmts[i],
texdim, true, &shader_info);
dev->meta.copy.img2buf[texdimidx][i].pushmap = shader_info.push;
dev->meta.copy.img2buf[texdimidx][i].rsd =
panvk_meta_copy_to_buf_emit_rsd(&dev->pdev,
&dev->meta.desc_pool.base,
@ -1737,16 +1671,13 @@ panvk_per_arch(CmdCopyImageToBuffer2)(VkCommandBuffer commandBuffer,
struct panvk_meta_copy_buf2buf_info {
mali_ptr src;
mali_ptr dst;
};
} PACKED;
#define panvk_meta_copy_buf2buf_get_info_field(b, field) \
nir_load_ubo((b), 1, \
nir_load_push_constant((b), 1, \
sizeof(((struct panvk_meta_copy_buf2buf_info *)0)->field) * 8, \
nir_imm_int(b, 0), \
nir_imm_int(b, offsetof(struct panvk_meta_copy_buf2buf_info, field)), \
.align_mul = 4, \
.align_offset = 0, \
.range_base = 0, \
.base = offsetof(struct panvk_meta_copy_buf2buf_info, field), \
.range = ~0)
static mali_ptr
@ -1764,8 +1695,6 @@ panvk_meta_copy_buf2buf_shader(struct panfrost_device *pdev,
"panvk_meta_copy_buf2buf(blksz=%d)",
blksz);
b.shader->info.num_ubos = 1;
nir_ssa_def *coord = nir_load_global_invocation_id(&b, 32);
nir_ssa_def *offset =
@ -1784,6 +1713,7 @@ panvk_meta_copy_buf2buf_shader(struct panfrost_device *pdev,
struct panfrost_compile_inputs inputs = {
.gpu_id = pdev->gpu_id,
.is_blit = true,
.no_ubo_to_push = true,
};
struct util_dynarray binary;
@ -1791,11 +1721,7 @@ panvk_meta_copy_buf2buf_shader(struct panfrost_device *pdev,
util_dynarray_init(&binary, NULL);
GENX(pan_shader_compile)(b.shader, &inputs, &binary, shader_info);
/* Make sure UBO words have been upgraded to push constants and everything
* is at the right place.
*/
assert(shader_info->ubo_count == 1);
assert(shader_info->push.count == (sizeof(struct panvk_meta_copy_buf2buf_info) / 4));
shader_info->push.count = DIV_ROUND_UP(sizeof(struct panvk_meta_copy_buf2buf_info), 4);
mali_ptr shader =
pan_pool_upload_aligned(bin_pool, binary.data, binary.size,
@ -1815,7 +1741,6 @@ panvk_meta_copy_buf2buf_init(struct panvk_physical_device *dev)
mali_ptr shader =
panvk_meta_copy_buf2buf_shader(&dev->pdev, &dev->meta.bin_pool.base,
1 << i, &shader_info);
dev->meta.copy.buf2buf[i].pushmap = shader_info.push;
dev->meta.copy.buf2buf[i].rsd =
panvk_meta_copy_to_buf_emit_rsd(&dev->pdev, &dev->meta.desc_pool.base,
shader, &shader_info, false);
@ -1828,8 +1753,6 @@ panvk_meta_copy_buf2buf(struct panvk_cmd_buffer *cmdbuf,
const struct panvk_buffer *dst,
const VkBufferCopy2 *region)
{
struct panfrost_device *pdev = &cmdbuf->device->physical_device->pdev;
struct panvk_meta_copy_buf2buf_info info = {
.src = panvk_buffer_gpu_ptr(src, region->srcOffset),
.dst = panvk_buffer_gpu_ptr(dst, region->dstOffset),
@ -1841,14 +1764,9 @@ panvk_meta_copy_buf2buf(struct panvk_cmd_buffer *cmdbuf,
assert(log2blksz < ARRAY_SIZE(cmdbuf->device->physical_device->meta.copy.buf2buf));
mali_ptr rsd =
cmdbuf->device->physical_device->meta.copy.buf2buf[log2blksz].rsd;
const struct panfrost_ubo_push *pushmap =
&cmdbuf->device->physical_device->meta.copy.buf2buf[log2blksz].pushmap;
mali_ptr pushconsts =
panvk_meta_copy_emit_push_constants(pdev, pushmap, &cmdbuf->desc_pool.base,
&info, sizeof(info));
mali_ptr ubo =
panvk_meta_copy_emit_ubo(pdev, &cmdbuf->desc_pool.base, &info, sizeof(info));
pan_pool_upload_aligned(&cmdbuf->desc_pool.base, &info, sizeof(info), 16);
panvk_per_arch(cmd_close_batch)(cmdbuf);
@ -1865,7 +1783,7 @@ panvk_meta_copy_buf2buf(struct panvk_cmd_buffer *cmdbuf,
panvk_meta_copy_emit_compute_job(&cmdbuf->desc_pool.base,
&batch->scoreboard,
&num_wg, &wg_sz,
0, 0, ubo, pushconsts, rsd, tsd);
0, 0, pushconsts, rsd, tsd);
util_dynarray_append(&batch->jobs, void *, job.cpu);
@ -1890,16 +1808,13 @@ panvk_per_arch(CmdCopyBuffer2)(VkCommandBuffer commandBuffer,
struct panvk_meta_fill_buf_info {
mali_ptr start;
uint32_t val;
};
} PACKED;
#define panvk_meta_fill_buf_get_info_field(b, field) \
nir_load_ubo((b), 1, \
nir_load_push_constant((b), 1, \
sizeof(((struct panvk_meta_fill_buf_info *)0)->field) * 8, \
nir_imm_int(b, 0), \
nir_imm_int(b, offsetof(struct panvk_meta_fill_buf_info, field)), \
.align_mul = 4, \
.align_offset = 0, \
.range_base = 0, \
.base = offsetof(struct panvk_meta_fill_buf_info, field), \
.range = ~0)
static mali_ptr
@ -1915,8 +1830,6 @@ panvk_meta_fill_buf_shader(struct panfrost_device *pdev,
GENX(pan_shader_get_compiler_options)(),
"panvk_meta_fill_buf()");
b.shader->info.num_ubos = 1;
nir_ssa_def *coord = nir_load_global_invocation_id(&b, 32);
nir_ssa_def *offset =
@ -1930,6 +1843,7 @@ panvk_meta_fill_buf_shader(struct panfrost_device *pdev,
struct panfrost_compile_inputs inputs = {
.gpu_id = pdev->gpu_id,
.is_blit = true,
.no_ubo_to_push = true,
};
struct util_dynarray binary;
@ -1937,11 +1851,7 @@ panvk_meta_fill_buf_shader(struct panfrost_device *pdev,
util_dynarray_init(&binary, NULL);
GENX(pan_shader_compile)(b.shader, &inputs, &binary, shader_info);
/* Make sure UBO words have been upgraded to push constants and everything
* is at the right place.
*/
assert(shader_info->ubo_count == 1);
assert(shader_info->push.count == 3);
shader_info->push.count = DIV_ROUND_UP(sizeof(struct panvk_meta_fill_buf_info), 4);
mali_ptr shader =
pan_pool_upload_aligned(bin_pool, binary.data, binary.size,
@ -1956,8 +1866,7 @@ panvk_meta_fill_buf_shader(struct panfrost_device *pdev,
static mali_ptr
panvk_meta_fill_buf_emit_rsd(struct panfrost_device *pdev,
struct pan_pool *bin_pool,
struct pan_pool *desc_pool,
struct panfrost_ubo_push *pushmap)
struct pan_pool *desc_pool)
{
struct pan_shader_info shader_info;
@ -1972,7 +1881,6 @@ panvk_meta_fill_buf_emit_rsd(struct panfrost_device *pdev,
pan_shader_prepare_rsd(&shader_info, shader, &cfg);
}
*pushmap = shader_info.push;
return rsd_ptr.gpu;
}
@ -1981,8 +1889,7 @@ panvk_meta_fill_buf_init(struct panvk_physical_device *dev)
{
dev->meta.copy.fillbuf.rsd =
panvk_meta_fill_buf_emit_rsd(&dev->pdev, &dev->meta.bin_pool.base,
&dev->meta.desc_pool.base,
&dev->meta.copy.fillbuf.pushmap);
&dev->meta.desc_pool.base);
}
static void
@ -1991,8 +1898,6 @@ panvk_meta_fill_buf(struct panvk_cmd_buffer *cmdbuf,
VkDeviceSize size, VkDeviceSize offset,
uint32_t val)
{
struct panfrost_device *pdev = &cmdbuf->device->physical_device->pdev;
struct panvk_meta_fill_buf_info info = {
.start = panvk_buffer_gpu_ptr(dst, offset),
.val = val,
@ -2014,14 +1919,9 @@ panvk_meta_fill_buf(struct panvk_cmd_buffer *cmdbuf,
unsigned nwords = size / sizeof(uint32_t);
mali_ptr rsd =
cmdbuf->device->physical_device->meta.copy.fillbuf.rsd;
const struct panfrost_ubo_push *pushmap =
&cmdbuf->device->physical_device->meta.copy.fillbuf.pushmap;
mali_ptr pushconsts =
panvk_meta_copy_emit_push_constants(pdev, pushmap, &cmdbuf->desc_pool.base,
&info, sizeof(info));
mali_ptr ubo =
panvk_meta_copy_emit_ubo(pdev, &cmdbuf->desc_pool.base, &info, sizeof(info));
pan_pool_upload_aligned(&cmdbuf->desc_pool.base, &info, sizeof(info), 16);
panvk_per_arch(cmd_close_batch)(cmdbuf);
@ -2037,7 +1937,7 @@ panvk_meta_fill_buf(struct panvk_cmd_buffer *cmdbuf,
panvk_meta_copy_emit_compute_job(&cmdbuf->desc_pool.base,
&batch->scoreboard,
&num_wg, &wg_sz,
0, 0, ubo, pushconsts, rsd, tsd);
0, 0, pushconsts, rsd, tsd);
util_dynarray_append(&batch->jobs, void *, job.cpu);
@ -2063,8 +1963,6 @@ panvk_meta_update_buf(struct panvk_cmd_buffer *cmdbuf,
const struct panvk_buffer *dst, VkDeviceSize offset,
VkDeviceSize size, const void *data)
{
struct panfrost_device *pdev = &cmdbuf->device->physical_device->pdev;
struct panvk_meta_copy_buf2buf_info info = {
.src = pan_pool_upload_aligned(&cmdbuf->desc_pool.base, data, size, 4),
.dst = panvk_buffer_gpu_ptr(dst, offset),
@ -2074,14 +1972,9 @@ panvk_meta_update_buf(struct panvk_cmd_buffer *cmdbuf,
mali_ptr rsd =
cmdbuf->device->physical_device->meta.copy.buf2buf[log2blksz].rsd;
const struct panfrost_ubo_push *pushmap =
&cmdbuf->device->physical_device->meta.copy.buf2buf[log2blksz].pushmap;
mali_ptr pushconsts =
panvk_meta_copy_emit_push_constants(pdev, pushmap, &cmdbuf->desc_pool.base,
&info, sizeof(info));
mali_ptr ubo =
panvk_meta_copy_emit_ubo(pdev, &cmdbuf->desc_pool.base, &info, sizeof(info));
pan_pool_upload_aligned(&cmdbuf->desc_pool.base, &info, sizeof(info), 16);
panvk_per_arch(cmd_close_batch)(cmdbuf);
@ -2098,7 +1991,7 @@ panvk_meta_update_buf(struct panvk_cmd_buffer *cmdbuf,
panvk_meta_copy_emit_compute_job(&cmdbuf->desc_pool.base,
&batch->scoreboard,
&num_wg, &wg_sz,
0, 0, ubo, pushconsts, rsd, tsd);
0, 0, pushconsts, rsd, tsd);
util_dynarray_append(&batch->jobs, void *, job.cpu);