Mesa (main): pan/gen_pack: Add pan_size() and pan_align() macros
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Aug 26 08:52:45 UTC 2021
Module: Mesa
Branch: main
Commit: 423f67c1bdb49fda3afc6aa4a655825c9b090ac1
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=423f67c1bdb49fda3afc6aa4a655825c9b090ac1
Author: Boris Brezillon <boris.brezillon at collabora.com>
Date: Wed Jul 28 11:03:13 2021 +0200
pan/gen_pack: Add pan_size() and pan_align() macros
And replace all references to MALI_xxx_{LENGTH,ALIGN} by
pan_{size,alignment}(xxx) calls so we can give generic alias to
midgard/bifrost specific descriptors.
Signed-off-by: Boris Brezillon <boris.brezillon at collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12551>
---
src/gallium/drivers/panfrost/pan_cmdstream.c | 28 ++++++++++----------
src/panfrost/lib/decode.c | 38 ++++++++++++++--------------
src/panfrost/lib/gen_pack.py | 3 +++
src/panfrost/lib/pan_blitter.c | 18 ++++++-------
src/panfrost/lib/pan_cs.c | 8 +++---
src/panfrost/lib/pan_indirect_dispatch.c | 8 +++---
src/panfrost/lib/pan_indirect_draw.c | 22 ++++++++--------
src/panfrost/lib/pan_pool.h | 4 +--
src/panfrost/lib/pan_texture.c | 4 +--
src/panfrost/vulkan/panvk_cmd_buffer.c | 4 +--
src/panfrost/vulkan/panvk_cs.c | 8 +++---
src/panfrost/vulkan/panvk_image.c | 4 +--
src/panfrost/vulkan/panvk_meta.c | 2 +-
src/panfrost/vulkan/panvk_pipeline.c | 14 +++++-----
14 files changed, 84 insertions(+), 81 deletions(-)
diff --git a/src/gallium/drivers/panfrost/pan_cmdstream.c b/src/gallium/drivers/panfrost/pan_cmdstream.c
index b444a2d88b8..2f8a95742d4 100644
--- a/src/gallium/drivers/panfrost/pan_cmdstream.c
+++ b/src/gallium/drivers/panfrost/pan_cmdstream.c
@@ -239,11 +239,11 @@ panfrost_emit_blend(struct panfrost_batch *batch, void *rts, mali_ptr *blend_sha
/* Always have at least one render target for depth-only passes */
for (unsigned i = 0; i < MAX2(rt_count, 1); ++i) {
- struct mali_blend_packed *packed = rts + (i * MALI_BLEND_LENGTH);
+ struct mali_blend_packed *packed = rts + (i * pan_size(BLEND));
/* Disable blending for unbacked render targets */
if (rt_count == 0 || !batch->key.cbufs[i] || so->info[i].no_colour) {
- pan_pack(rts + i * MALI_BLEND_LENGTH, BLEND, cfg) {
+ pan_pack(rts + i * pan_size(BLEND), BLEND, cfg) {
cfg.enable = false;
#if PAN_ARCH >= 6
cfg.bifrost.internal.mode = MALI_BIFROST_BLEND_MODE_OFF;
@@ -278,7 +278,7 @@ panfrost_emit_blend(struct panfrost_batch *batch, void *rts, mali_ptr *blend_sha
if (!blend_shaders[i]) {
/* Word 1: Blend Equation */
- STATIC_ASSERT(MALI_BLEND_EQUATION_LENGTH == 4);
+ STATIC_ASSERT(pan_size(BLEND_EQUATION) == 4);
packed->opaque[PAN_ARCH >= 6 ? 1 : 2] = so->equation[i];
}
@@ -499,7 +499,7 @@ panfrost_emit_frag_shader(struct panfrost_context *ctx,
#if PAN_ARCH == 4
if (ctx->pipe_framebuffer.nr_cbufs > 0 && !blend_shaders[0]) {
/* Word 14: SFBD Blend Equation */
- STATIC_ASSERT(MALI_BLEND_EQUATION_LENGTH == 4);
+ STATIC_ASSERT(pan_size(BLEND_EQUATION) == 4);
rsd.opaque[14] = ctx->blend->equation[0];
}
#endif
@@ -569,7 +569,7 @@ panfrost_emit_frag_shader_meta(struct panfrost_batch *batch)
panfrost_emit_frag_shader(ctx, (struct mali_renderer_state_packed *) xfer.cpu, blend_shaders);
#if PAN_ARCH >= 5
- panfrost_emit_blend(batch, xfer.cpu + MALI_RENDERER_STATE_LENGTH, blend_shaders);
+ panfrost_emit_blend(batch, xfer.cpu + pan_size(RENDERER_STATE), blend_shaders);
#else
batch->draws |= PIPE_CLEAR_COLOR0;
batch->resolve |= PIPE_CLEAR_COLOR0;
@@ -1276,7 +1276,7 @@ panfrost_create_sampler_view_bo(struct panfrost_sampler_view *so,
};
unsigned size =
- (PAN_ARCH <= 5 ? MALI_MIDGARD_TEXTURE_LENGTH : 0) +
+ (PAN_ARCH <= 5 ? pan_size(MIDGARD_TEXTURE) : 0) +
panfrost_estimate_texture_payload_size(device, &iview);
struct panfrost_ptr payload = pan_pool_alloc_aligned(&ctx->descs.base, size, 64);
@@ -1285,8 +1285,8 @@ panfrost_create_sampler_view_bo(struct panfrost_sampler_view *so,
void *tex = (PAN_ARCH >= 6) ? &so->bifrost_descriptor : payload.cpu;
if (PAN_ARCH <= 5) {
- payload.cpu += MALI_MIDGARD_TEXTURE_LENGTH;
- payload.gpu += MALI_MIDGARD_TEXTURE_LENGTH;
+ payload.cpu += pan_size(MIDGARD_TEXTURE);
+ payload.gpu += pan_size(MIDGARD_TEXTURE);
}
panfrost_new_texture(device, &iview, tex, &payload);
@@ -1361,8 +1361,8 @@ panfrost_emit_sampler_descriptors(struct panfrost_batch *batch,
if (!ctx->sampler_count[stage])
return 0;
- assert(MALI_BIFROST_SAMPLER_LENGTH == MALI_MIDGARD_SAMPLER_LENGTH);
- assert(MALI_BIFROST_SAMPLER_ALIGN == MALI_MIDGARD_SAMPLER_ALIGN);
+ assert(pan_size(BIFROST_SAMPLER) == pan_size(MIDGARD_SAMPLER));
+ assert(pan_alignment(BIFROST_SAMPLER) == pan_alignment(MIDGARD_SAMPLER));
struct panfrost_ptr T =
pan_pool_alloc_desc_array(&batch->pool.base,
@@ -1524,7 +1524,7 @@ panfrost_emit_image_attribs(struct panfrost_batch *batch,
/* We need an empty attrib buf to stop the prefetching on Bifrost */
#if PAN_ARCH >= 6
- pan_pack(bufs.cpu + ((buf_count - 1) * MALI_ATTRIBUTE_BUFFER_LENGTH),
+ pan_pack(bufs.cpu + ((buf_count - 1) * pan_size(ATTRIBUTE_BUFFER)),
ATTRIBUTE_BUFFER, cfg);
#endif
@@ -2083,7 +2083,7 @@ panfrost_emit_varying_descs(
struct mali_attribute_packed *descs = T.cpu;
out->producer = producer_count ? T.gpu : 0;
out->consumer = consumer_count ? T.gpu +
- (MALI_ATTRIBUTE_LENGTH * producer_count) : 0;
+ (pan_size(ATTRIBUTE) * producer_count) : 0;
/* Lay out the varyings. Must use producer to lay out, in order to
* respect transform feedback precisions. */
@@ -2481,7 +2481,7 @@ panfrost_draw_emit_vertex(struct panfrost_batch *batch,
{
void *section =
pan_section_ptr(job, COMPUTE_JOB, INVOCATION);
- memcpy(section, invocation_template, MALI_INVOCATION_LENGTH);
+ memcpy(section, invocation_template, pan_size(INVOCATION));
pan_section_pack(job, COMPUTE_JOB, PARAMETERS, cfg) {
cfg.job_task_split = 5;
@@ -2642,7 +2642,7 @@ panfrost_draw_emit_tiler(struct panfrost_batch *batch,
struct pipe_rasterizer_state *rast = &ctx->rasterizer->base;
void *section = pan_section_ptr(job, TILER_JOB, INVOCATION);
- memcpy(section, invocation_template, MALI_INVOCATION_LENGTH);
+ memcpy(section, invocation_template, pan_size(INVOCATION));
section = pan_section_ptr(job, TILER_JOB, PRIMITIVE);
pan_pack(section, PRIMITIVE, cfg) {
diff --git a/src/panfrost/lib/decode.c b/src/panfrost/lib/decode.c
index 7a67121a91b..b813138957f 100644
--- a/src/panfrost/lib/decode.c
+++ b/src/panfrost/lib/decode.c
@@ -56,7 +56,7 @@
const uint8_t *cl = 0; \
{ \
struct pandecode_mapped_memory *mapped_mem = pandecode_find_mapped_gpu_mem_containing(addr); \
- cl = pandecode_fetch_gpu_mem(mapped_mem, addr, MALI_ ## T ## _LENGTH); \
+ cl = pandecode_fetch_gpu_mem(mapped_mem, addr, pan_size(T)); \
}
#define DUMP_ADDR(T, addr, ...) {\
@@ -243,7 +243,7 @@ pandecode_render_target(uint64_t gpu_va, unsigned job_no, bool is_bifrost, unsig
pandecode_indent++;
for (int i = 0; i < (fb->render_target_count); i++) {
- mali_ptr rt_va = gpu_va + i * MALI_RENDER_TARGET_LENGTH;
+ mali_ptr rt_va = gpu_va + i * pan_size(RENDER_TARGET);
struct pandecode_mapped_memory *mem =
pandecode_find_mapped_gpu_mem_containing(rt_va);
const struct mali_render_target_packed *PANDECODE_PTR_VAR(rtp, mem, (mali_ptr) rt_va);
@@ -290,7 +290,7 @@ pandecode_mfbd_bfr(uint64_t gpu_va, int job_no, bool is_fragment, bool is_bifros
pandecode_sample_locations(fb, job_no);
pan_section_unpack(fb, MULTI_TARGET_FRAMEBUFFER, BIFROST_PARAMETERS, bparams);
- unsigned dcd_size = MALI_DRAW_LENGTH + MALI_DRAW_PADDING_LENGTH;
+ unsigned dcd_size = pan_size(DRAW) + pan_size(DRAW_PADDING);
struct pandecode_mapped_memory *dcdmem =
pandecode_find_mapped_gpu_mem_containing(bparams.frame_shader_dcds);
@@ -342,7 +342,7 @@ pandecode_mfbd_bfr(uint64_t gpu_va, int job_no, bool is_fragment, bool is_bifros
pandecode_indent--;
pandecode_log("\n");
- gpu_va += MALI_MULTI_TARGET_FRAMEBUFFER_LENGTH;
+ gpu_va += pan_size(MULTI_TARGET_FRAMEBUFFER);
info.has_extra = params.has_zs_crc_extension;
@@ -353,7 +353,7 @@ pandecode_mfbd_bfr(uint64_t gpu_va, int job_no, bool is_fragment, bool is_bifros
DUMP_CL(ZS_CRC_EXTENSION, zs_crc, "ZS CRC Extension:\n");
pandecode_log("\n");
- gpu_va += MALI_ZS_CRC_EXTENSION_LENGTH;
+ gpu_va += pan_size(ZS_CRC_EXTENSION);
}
if (is_fragment)
@@ -378,13 +378,13 @@ pandecode_attributes(const struct pandecode_mapped_memory *mem,
MAP_ADDR(ATTRIBUTE_BUFFER, addr, cl);
for (int i = 0; i < count; ++i) {
- pan_unpack(cl + i * MALI_ATTRIBUTE_BUFFER_LENGTH, ATTRIBUTE_BUFFER, temp);
+ pan_unpack(cl + i * pan_size(ATTRIBUTE_BUFFER), ATTRIBUTE_BUFFER, temp);
DUMP_UNPACKED(ATTRIBUTE_BUFFER, temp, "%s:\n", prefix);
switch (temp.type) {
case MALI_ATTRIBUTE_TYPE_1D_NPOT_DIVISOR_WRITE_REDUCTION:
case MALI_ATTRIBUTE_TYPE_1D_NPOT_DIVISOR: {
- pan_unpack(cl + (i + 1) * MALI_ATTRIBUTE_BUFFER_LENGTH,
+ pan_unpack(cl + (i + 1) * pan_size(ATTRIBUTE_BUFFER),
ATTRIBUTE_BUFFER_CONTINUATION_NPOT, temp2);
pan_print(pandecode_dump_stream, ATTRIBUTE_BUFFER_CONTINUATION_NPOT,
temp2, (pandecode_indent + 1) * 2);
@@ -393,7 +393,7 @@ pandecode_attributes(const struct pandecode_mapped_memory *mem,
}
case MALI_ATTRIBUTE_TYPE_3D_LINEAR:
case MALI_ATTRIBUTE_TYPE_3D_INTERLEAVED: {
- pan_unpack(cl + (i + 1) * MALI_ATTRIBUTE_BUFFER_CONTINUATION_3D_LENGTH,
+ pan_unpack(cl + (i + 1) * pan_size(ATTRIBUTE_BUFFER_CONTINUATION_3D),
ATTRIBUTE_BUFFER_CONTINUATION_3D, temp2);
pan_print(pandecode_dump_stream, ATTRIBUTE_BUFFER_CONTINUATION_3D,
temp2, (pandecode_indent + 1) * 2);
@@ -412,7 +412,7 @@ pandecode_attributes(const struct pandecode_mapped_memory *mem,
static mali_ptr
pandecode_bifrost_blend(void *descs, int job_no, int rt_no, mali_ptr frag_shader)
{
- pan_unpack(descs + (rt_no * MALI_BLEND_LENGTH), BLEND, b);
+ pan_unpack(descs + (rt_no * pan_size(BLEND)), BLEND, b);
DUMP_UNPACKED(BLEND, b, "Blend RT %d:\n", rt_no);
if (b.bifrost.internal.mode != MALI_BIFROST_BLEND_MODE_SHADER)
return 0;
@@ -423,7 +423,7 @@ pandecode_bifrost_blend(void *descs, int job_no, int rt_no, mali_ptr frag_shader
static mali_ptr
pandecode_midgard_blend_mrt(void *descs, int job_no, int rt_no)
{
- pan_unpack(descs + (rt_no * MALI_BLEND_LENGTH), BLEND, b);
+ pan_unpack(descs + (rt_no * pan_size(BLEND)), BLEND, b);
DUMP_UNPACKED(BLEND, b, "Blend RT %d:\n", rt_no);
return b.midgard.blend_shader ? (b.midgard.shader_pc & ~0xf) : 0;
}
@@ -433,7 +433,7 @@ pandecode_attribute_meta(int count, mali_ptr attribute, bool varying)
{
unsigned max = 0;
- for (int i = 0; i < count; ++i, attribute += MALI_ATTRIBUTE_LENGTH) {
+ for (int i = 0; i < count; ++i, attribute += pan_size(ATTRIBUTE)) {
MAP_ADDR(ATTRIBUTE, attribute, cl);
pan_unpack(cl, ATTRIBUTE, a);
DUMP_UNPACKED(ATTRIBUTE, a, "%s:\n", varying ? "Varying" : "Attribute");
@@ -669,7 +669,7 @@ pandecode_texture(mali_ptr u,
unsigned job_no, unsigned tex)
{
struct pandecode_mapped_memory *mapped_mem = pandecode_find_mapped_gpu_mem_containing(u);
- const uint8_t *cl = pandecode_fetch_gpu_mem(mapped_mem, u, MALI_MIDGARD_TEXTURE_LENGTH);
+ const uint8_t *cl = pandecode_fetch_gpu_mem(mapped_mem, u, pan_size(MIDGARD_TEXTURE));
pan_unpack(cl, MIDGARD_TEXTURE, temp);
DUMP_UNPACKED(MIDGARD_TEXTURE, temp, "Texture:\n")
@@ -677,7 +677,7 @@ pandecode_texture(mali_ptr u,
pandecode_indent++;
unsigned nr_samples = temp.dimension == MALI_TEXTURE_DIMENSION_3D ?
1 : temp.sample_count;
- pandecode_texture_payload(u + MALI_MIDGARD_TEXTURE_LENGTH,
+ pandecode_texture_payload(u + pan_size(MIDGARD_TEXTURE),
temp.dimension, temp.texel_ordering, temp.manual_stride,
temp.levels, nr_samples, temp.array_size, mapped_mem);
pandecode_indent--;
@@ -738,12 +738,12 @@ pandecode_textures(mali_ptr textures, unsigned texture_count, int job_no, bool i
if (is_bifrost) {
const void *cl = pandecode_fetch_gpu_mem(mmem,
- textures, MALI_BIFROST_TEXTURE_LENGTH *
+ textures, pan_size(BIFROST_TEXTURE) *
texture_count);
for (unsigned tex = 0; tex < texture_count; ++tex) {
pandecode_bifrost_texture(cl +
- MALI_BIFROST_TEXTURE_LENGTH * tex,
+ pan_size(BIFROST_TEXTURE) * tex,
job_no, tex);
}
} else {
@@ -776,9 +776,9 @@ pandecode_samplers(mali_ptr samplers, unsigned sampler_count, int job_no, bool i
for (int i = 0; i < sampler_count; ++i) {
if (is_bifrost) {
- DUMP_ADDR(BIFROST_SAMPLER, samplers + (MALI_BIFROST_SAMPLER_LENGTH * i), "Sampler %d:\n", i);
+ DUMP_ADDR(BIFROST_SAMPLER, samplers + (pan_size(BIFROST_SAMPLER) * i), "Sampler %d:\n", i);
} else {
- DUMP_ADDR(MIDGARD_SAMPLER, samplers + (MALI_MIDGARD_SAMPLER_LENGTH * i), "Sampler %d:\n", i);
+ DUMP_ADDR(MIDGARD_SAMPLER, samplers + (pan_size(MIDGARD_SAMPLER) * i), "Sampler %d:\n", i);
}
}
@@ -813,7 +813,7 @@ pandecode_dcd(const struct MALI_DRAW *p,
if (p->state) {
struct pandecode_mapped_memory *smem = pandecode_find_mapped_gpu_mem_containing(p->state);
- uint32_t *cl = pandecode_fetch_gpu_mem(smem, p->state, MALI_RENDERER_STATE_LENGTH);
+ uint32_t *cl = pandecode_fetch_gpu_mem(smem, p->state, pan_size(RENDERER_STATE));
pan_unpack(cl, RENDERER_STATE, state);
@@ -853,7 +853,7 @@ pandecode_dcd(const struct MALI_DRAW *p,
if ((job_type == MALI_JOB_TYPE_TILER || job_type == MALI_JOB_TYPE_FRAGMENT) &&
(is_bifrost || p->fbd & MALI_FBD_TAG_IS_MFBD)) {
- void* blend_base = ((void *) cl) + MALI_RENDERER_STATE_LENGTH;
+ void* blend_base = ((void *) cl) + pan_size(RENDERER_STATE);
for (unsigned i = 0; i < fbd_info.rt_count; i++) {
mali_ptr shader = 0;
diff --git a/src/panfrost/lib/gen_pack.py b/src/panfrost/lib/gen_pack.py
index d0b204e91bc..c9b1edddd2d 100644
--- a/src/panfrost/lib/gen_pack.py
+++ b/src/panfrost/lib/gen_pack.py
@@ -153,6 +153,9 @@ __gen_unpack_padded(const uint8_t *restrict cl, uint32_t start, uint32_t end)
#define pan_print(fp, T, var, indent) \\
PREFIX2(T, print)(fp, &(var), indent)
+#define pan_size(T) PREFIX2(T, LENGTH)
+#define pan_alignment(T) PREFIX2(T, ALIGN)
+
#define pan_section_offset(A, S) \\
PREFIX4(A, SECTION, S, OFFSET)
diff --git a/src/panfrost/lib/pan_blitter.c b/src/panfrost/lib/pan_blitter.c
index 4ecdf760492..e96c96604e3 100644
--- a/src/panfrost/lib/pan_blitter.c
+++ b/src/panfrost/lib/pan_blitter.c
@@ -346,7 +346,7 @@ pan_blitter_emit_rsd(const struct panfrost_device *dev,
return;
for (unsigned i = 0; i < MAX2(rt_count, 1); ++i) {
- void *dest = out + MALI_RENDERER_STATE_LENGTH + MALI_BLEND_LENGTH * i;
+ void *dest = out + pan_size(RENDERER_STATE) + pan_size(BLEND) * i;
const struct pan_image_view *rt_view = rts ? rts[i] : NULL;
mali_ptr blend_shader = blend_shaders ? blend_shaders[i] : 0;
@@ -883,7 +883,7 @@ pan_blitter_emit_varying(struct pan_pool *pool,
}
if (padding_buffer) {
- pan_pack(varying_buffer.cpu + MALI_ATTRIBUTE_BUFFER_LENGTH,
+ pan_pack(varying_buffer.cpu + pan_size(ATTRIBUTE_BUFFER),
ATTRIBUTE_BUFFER, cfg);
}
@@ -939,12 +939,12 @@ pan_blitter_emit_bifrost_textures(struct pan_pool *pool,
pan_pool_alloc_desc_array(pool, tex_count, BIFROST_TEXTURE);
for (unsigned i = 0; i < tex_count; i++) {
- void *texture = textures.cpu + (MALI_BIFROST_TEXTURE_LENGTH * i);
+ void *texture = textures.cpu + (pan_size(BIFROST_TEXTURE) * i);
size_t payload_size =
panfrost_estimate_texture_payload_size(pool->dev, views[i]);
struct panfrost_ptr surfaces =
pan_pool_alloc_aligned(pool, payload_size,
- MALI_SURFACE_WITH_STRIDE_ALIGN);
+ pan_alignment(SURFACE_WITH_STRIDE));
panfrost_new_texture(pool->dev, views[i], texture, &surfaces);
}
@@ -960,13 +960,13 @@ pan_blitter_emit_midgard_textures(struct pan_pool *pool,
mali_ptr textures[8] = { 0 };
for (unsigned i = 0; i < tex_count; i++) {
- size_t sz = MALI_MIDGARD_TEXTURE_LENGTH +
+ size_t sz = pan_size(MIDGARD_TEXTURE) +
panfrost_estimate_texture_payload_size(pool->dev, views[i]);
struct panfrost_ptr texture =
- pan_pool_alloc_aligned(pool, sz, MALI_MIDGARD_TEXTURE_ALIGN);
+ pan_pool_alloc_aligned(pool, sz, pan_alignment(MIDGARD_TEXTURE));
struct panfrost_ptr surfaces = {
- .cpu = texture.cpu + MALI_MIDGARD_TEXTURE_LENGTH,
- .gpu = texture.gpu + MALI_MIDGARD_TEXTURE_LENGTH,
+ .cpu = texture.cpu + pan_size(MIDGARD_TEXTURE),
+ .gpu = texture.gpu + pan_size(MIDGARD_TEXTURE),
};
panfrost_new_texture(pool->dev, views[i], texture.cpu, &surfaces);
@@ -1247,7 +1247,7 @@ pan_preload_emit_bifrost_pre_frame_dcd(struct pan_pool *desc_pool,
pan_preload_fb_bifrost_alloc_pre_post_dcds(desc_pool, fb);
assert(fb->bifrost.pre_post.dcds.cpu);
void *dcd = fb->bifrost.pre_post.dcds.cpu +
- (dcd_idx * (MALI_DRAW_LENGTH + MALI_DRAW_PADDING_LENGTH));
+ (dcd_idx * (pan_size(DRAW) + pan_size(DRAW_PADDING)));
int crc_rt = pan_select_crc_rt(dev, fb);
diff --git a/src/panfrost/lib/pan_cs.c b/src/panfrost/lib/pan_cs.c
index 34adaf2bd47..b6cf93e825c 100644
--- a/src/panfrost/lib/pan_cs.c
+++ b/src/panfrost/lib/pan_cs.c
@@ -674,7 +674,7 @@ pan_emit_mfbd(const struct panfrost_device *dev,
{
unsigned tags = MALI_FBD_TAG_IS_MFBD;
void *fbd = out;
- void *rtd = out + MALI_MULTI_TARGET_FRAMEBUFFER_LENGTH;
+ void *rtd = out + pan_size(MULTI_TARGET_FRAMEBUFFER);
if (pan_is_bifrost(dev)) {
pan_emit_bifrost_mfbd_params(dev, fb, fbd);
@@ -738,8 +738,8 @@ pan_emit_mfbd(const struct panfrost_device *dev,
if (has_zs_crc_ext) {
pan_emit_zs_crc_ext(dev, fb, crc_rt,
- out + MALI_MULTI_TARGET_FRAMEBUFFER_LENGTH);
- rtd += MALI_ZS_CRC_EXTENSION_LENGTH;
+ out + pan_size(MULTI_TARGET_FRAMEBUFFER));
+ rtd += pan_size(ZS_CRC_EXTENSION);
tags |= MALI_FBD_TAG_HAS_ZS_RT;
}
@@ -747,7 +747,7 @@ pan_emit_mfbd(const struct panfrost_device *dev,
unsigned cbuf_offset = 0;
for (unsigned i = 0; i < rt_count; i++) {
pan_emit_rt(dev, fb, i, cbuf_offset, rtd);
- rtd += MALI_RENDER_TARGET_LENGTH;
+ rtd += pan_size(RENDER_TARGET);
if (!fb->rts[i].view)
continue;
diff --git a/src/panfrost/lib/pan_indirect_dispatch.c b/src/panfrost/lib/pan_indirect_dispatch.c
index 79e055bece8..590ae548f1b 100644
--- a/src/panfrost/lib/pan_indirect_dispatch.c
+++ b/src/panfrost/lib/pan_indirect_dispatch.c
@@ -70,7 +70,7 @@ static mali_ptr
get_tls(const struct panfrost_device *dev)
{
return dev->indirect_dispatch.descs->ptr.gpu +
- MALI_RENDERER_STATE_LENGTH;
+ pan_size(RENDERER_STATE);
}
static mali_ptr
@@ -244,8 +244,8 @@ pan_indirect_dispatch_init(struct panfrost_device *dev)
dev->indirect_dispatch.push = shader_info.push;
dev->indirect_dispatch.descs =
panfrost_bo_create(dev,
- MALI_RENDERER_STATE_LENGTH +
- MALI_LOCAL_STORAGE_LENGTH,
+ pan_size(RENDERER_STATE) +
+ pan_size(LOCAL_STORAGE),
0, "Indirect dispatch descriptors");
mali_ptr address = dev->indirect_dispatch.bin->ptr.gpu;
@@ -258,7 +258,7 @@ pan_indirect_dispatch_init(struct panfrost_device *dev)
}
void *tsd = dev->indirect_dispatch.descs->ptr.cpu +
- MALI_RENDERER_STATE_LENGTH;
+ pan_size(RENDERER_STATE);
pan_pack(tsd, LOCAL_STORAGE, ls) {
ls.wls_instances = MALI_LOCAL_STORAGE_NO_WORKGROUP_MEM;
};
diff --git a/src/panfrost/lib/pan_indirect_draw.c b/src/panfrost/lib/pan_indirect_draw.c
index 39eef07b057..2e9c49ff870 100644
--- a/src/panfrost/lib/pan_indirect_draw.c
+++ b/src/panfrost/lib/pan_indirect_draw.c
@@ -598,11 +598,11 @@ update_vertex_attribs(struct indirect_draw_shader_builder *builder)
nir_ssa_def *attrib_buf_ptr =
get_address(b, builder->attribs.attrib_bufs,
nir_imul_imm(b, attrib_idx,
- 2 * MALI_ATTRIBUTE_BUFFER_LENGTH));
+ 2 * pan_size(ATTRIBUTE_BUFFER)));
nir_ssa_def *attrib_ptr =
get_address(b, builder->attribs.attribs,
nir_imul_imm(b, attrib_idx,
- MALI_ATTRIBUTE_LENGTH));
+ pan_size(ATTRIBUTE)));
nir_ssa_def *r_e, *d;
@@ -723,19 +723,19 @@ update_varyings(struct indirect_draw_shader_builder *builder)
nir_ssa_def *buf_ptr =
get_address_imm(b, builder->varyings.varying_bufs,
PAN_VARY_GENERAL *
- MALI_ATTRIBUTE_BUFFER_LENGTH);
+ pan_size(ATTRIBUTE_BUFFER));
update_varying_buf(builder, buf_ptr, vertex_count);
buf_ptr = get_address_imm(b, builder->varyings.varying_bufs,
PAN_VARY_POSITION *
- MALI_ATTRIBUTE_BUFFER_LENGTH);
+ pan_size(ATTRIBUTE_BUFFER));
builder->varyings.pos_ptr =
update_varying_buf(builder, buf_ptr, vertex_count);
if (builder->flags & PAN_INDIRECT_DRAW_HAS_PSIZ) {
buf_ptr = get_address_imm(b, builder->varyings.varying_bufs,
PAN_VARY_PSIZ *
- MALI_ATTRIBUTE_BUFFER_LENGTH);
+ pan_size(ATTRIBUTE_BUFFER));
builder->varyings.psiz_ptr =
update_varying_buf(builder, buf_ptr, vertex_count);
}
@@ -1091,7 +1091,7 @@ create_indirect_draw_shader(struct panfrost_device *dev,
struct pan_indirect_draw_shader *draw_shader =
&dev->indirect_draw_shaders.shaders[shader_id];
void *state = dev->indirect_draw_shaders.states->ptr.cpu +
- (shader_id * MALI_RENDERER_STATE_LENGTH);
+ (shader_id * pan_size(RENDERER_STATE));
pthread_mutex_lock(&dev->indirect_draw_shaders.lock);
if (!draw_shader->rsd) {
@@ -1111,7 +1111,7 @@ create_indirect_draw_shader(struct panfrost_device *dev,
draw_shader->push = shader_info.push;
draw_shader->rsd = dev->indirect_draw_shaders.states->ptr.gpu +
- (shader_id * MALI_RENDERER_STATE_LENGTH);
+ (shader_id * pan_size(RENDERER_STATE));
}
pthread_mutex_unlock(&dev->indirect_draw_shaders.lock);
@@ -1139,7 +1139,7 @@ static mali_ptr
get_tls(const struct panfrost_device *dev)
{
return dev->indirect_draw_shaders.states->ptr.gpu +
- (PAN_INDIRECT_DRAW_NUM_SHADERS * MALI_RENDERER_STATE_LENGTH);
+ (PAN_INDIRECT_DRAW_NUM_SHADERS * pan_size(RENDERER_STATE));
}
static mali_ptr
@@ -1189,15 +1189,15 @@ panfrost_indirect_draw_alloc_deps(struct panfrost_device *dev)
goto out;
unsigned state_bo_size = (PAN_INDIRECT_DRAW_NUM_SHADERS *
- MALI_RENDERER_STATE_LENGTH) +
- MALI_LOCAL_STORAGE_LENGTH;
+ pan_size(RENDERER_STATE)) +
+ pan_size(LOCAL_STORAGE);
dev->indirect_draw_shaders.states =
panfrost_bo_create(dev, state_bo_size, 0, "Indirect draw states");
/* Prepare the thread storage descriptor now since it's invariant. */
void *tsd = dev->indirect_draw_shaders.states->ptr.cpu +
- (PAN_INDIRECT_DRAW_NUM_SHADERS * MALI_RENDERER_STATE_LENGTH);
+ (PAN_INDIRECT_DRAW_NUM_SHADERS * pan_size(RENDERER_STATE));
pan_pack(tsd, LOCAL_STORAGE, ls) {
ls.wls_instances = MALI_LOCAL_STORAGE_NO_WORKGROUP_MEM;
};
diff --git a/src/panfrost/lib/pan_pool.h b/src/panfrost/lib/pan_pool.h
index 1717dca6f8c..9336080e2f6 100644
--- a/src/panfrost/lib/pan_pool.h
+++ b/src/panfrost/lib/pan_pool.h
@@ -93,8 +93,8 @@ struct pan_desc_alloc_info {
#define PAN_DESC_ARRAY(count, name) \
{ \
- .size = MALI_ ## name ## _LENGTH, \
- .align = MALI_ ## name ## _ALIGN, \
+ .size = pan_size(name), \
+ .align = pan_alignment(name), \
.nelems = count, \
}
diff --git a/src/panfrost/lib/pan_texture.c b/src/panfrost/lib/pan_texture.c
index 23a9475a9df..06d68c82845 100644
--- a/src/panfrost/lib/pan_texture.c
+++ b/src/panfrost/lib/pan_texture.c
@@ -391,7 +391,7 @@ panfrost_emit_texture_payload(const struct panfrost_device *dev,
pan_pack(payload, SURFACE, cfg) {
cfg.pointer = pointer;
}
- payload += MALI_SURFACE_LENGTH;
+ payload += pan_size(SURFACE);
} else {
pan_pack(payload, SURFACE_WITH_STRIDE, cfg) {
cfg.pointer = pointer;
@@ -399,7 +399,7 @@ panfrost_emit_texture_payload(const struct panfrost_device *dev,
&cfg.row_stride,
&cfg.surface_stride);
}
- payload += MALI_SURFACE_WITH_STRIDE_LENGTH;
+ payload += pan_size(SURFACE_WITH_STRIDE);
}
}
}
diff --git a/src/panfrost/vulkan/panvk_cmd_buffer.c b/src/panfrost/vulkan/panvk_cmd_buffer.c
index c753c688db5..c505db6c87c 100644
--- a/src/panfrost/vulkan/panvk_cmd_buffer.c
+++ b/src/panfrost/vulkan/panvk_cmd_buffer.c
@@ -1035,7 +1035,7 @@ panvk_draw_prepare_fs_rsd(struct panvk_cmd_buffer *cmdbuf,
pan_merge(rsd_dyn, pipeline->fs.rsd_template, RENDERER_STATE);
memcpy(rsd.cpu, &rsd_dyn, sizeof(rsd_dyn));
- void *bd = rsd.cpu + MALI_RENDERER_STATE_LENGTH;
+ void *bd = rsd.cpu + pan_size(RENDERER_STATE);
for (unsigned i = 0; i < pipeline->blend.state.rt_count; i++) {
if (pipeline->blend.constant[i].index != ~0) {
struct mali_blend_packed bd_dyn;
@@ -1046,7 +1046,7 @@ panvk_draw_prepare_fs_rsd(struct panvk_cmd_buffer *cmdbuf,
pan_merge(bd_dyn, pipeline->blend.bd_template[i], BLEND);
memcpy(bd, &bd_dyn, sizeof(bd_dyn));
}
- bd += MALI_BLEND_LENGTH;
+ bd += pan_size(BLEND);
}
cmdbuf->state.fs_rsd = rsd.gpu;
diff --git a/src/panfrost/vulkan/panvk_cs.c b/src/panfrost/vulkan/panvk_cs.c
index 0623d748bd6..8ab9d8d767c 100644
--- a/src/panfrost/vulkan/panvk_cs.c
+++ b/src/panfrost/vulkan/panvk_cs.c
@@ -282,7 +282,7 @@ panvk_emit_vertex_job(const struct panvk_device *dev,
const struct panfrost_device *pdev = &dev->physical_device->pdev;
void *section = pan_section_ptr(job, COMPUTE_JOB, INVOCATION);
- memcpy(section, &draw->invocation, MALI_INVOCATION_LENGTH);
+ memcpy(section, &draw->invocation, pan_size(INVOCATION));
pan_section_pack(job, COMPUTE_JOB, PARAMETERS, cfg) {
cfg.job_task_split = 5;
@@ -321,7 +321,7 @@ panvk_emit_tiler_job(const struct panvk_device *dev,
pan_section_ptr(job, BIFROST_TILER_JOB, INVOCATION) :
pan_section_ptr(job, MIDGARD_TILER_JOB, INVOCATION);
- memcpy(section, &draw->invocation, MALI_INVOCATION_LENGTH);
+ memcpy(section, &draw->invocation, pan_size(INVOCATION));
section = pan_is_bifrost(pdev) ?
pan_section_ptr(job, BIFROST_TILER_JOB, PRIMITIVE) :
@@ -770,7 +770,7 @@ panvk_emit_bifrost_tiler_context(const struct panvk_device *dev,
{
const struct panfrost_device *pdev = &dev->physical_device->pdev;
- pan_pack(descs->cpu + MALI_BIFROST_TILER_LENGTH, BIFROST_TILER_HEAP, cfg) {
+ pan_pack(descs->cpu + pan_size(BIFROST_TILER), BIFROST_TILER_HEAP, cfg) {
cfg.size = pdev->tiler_heap->size;
cfg.base = pdev->tiler_heap->ptr.gpu;
cfg.bottom = pdev->tiler_heap->ptr.gpu;
@@ -781,7 +781,7 @@ panvk_emit_bifrost_tiler_context(const struct panvk_device *dev,
cfg.hierarchy_mask = 0x28;
cfg.fb_width = width;
cfg.fb_height = height;
- cfg.heap = descs->gpu + MALI_BIFROST_TILER_LENGTH;
+ cfg.heap = descs->gpu + pan_size(BIFROST_TILER);
}
}
diff --git a/src/panfrost/vulkan/panvk_image.c b/src/panfrost/vulkan/panvk_image.c
index 52a984dfda0..35cba69b399 100644
--- a/src/panfrost/vulkan/panvk_image.c
+++ b/src/panfrost/vulkan/panvk_image.c
@@ -372,8 +372,8 @@ panvk_CreateImageView(VkDevice _device,
unsigned surf_descs_offset = 0;
if (!pan_is_bifrost(pdev)) {
- bo_size += MALI_MIDGARD_TEXTURE_LENGTH;
- surf_descs_offset = MALI_MIDGARD_TEXTURE_LENGTH;
+ bo_size += pan_size(MIDGARD_TEXTURE);
+ surf_descs_offset = pan_size(MIDGARD_TEXTURE);
}
view->bo = panfrost_bo_create(pdev, bo_size, 0, "Texture descriptor");
diff --git a/src/panfrost/vulkan/panvk_meta.c b/src/panfrost/vulkan/panvk_meta.c
index dfe692dd622..672414abf80 100644
--- a/src/panfrost/vulkan/panvk_meta.c
+++ b/src/panfrost/vulkan/panvk_meta.c
@@ -258,7 +258,7 @@ panvk_meta_clear_attachments_emit_rsd(struct panfrost_device *pdev,
}
}
- pan_pack(rsd_ptr.cpu + MALI_RENDERER_STATE_LENGTH, BLEND, cfg) {
+ pan_pack(rsd_ptr.cpu + pan_size(RENDERER_STATE), BLEND, cfg) {
cfg.round_to_fb_precision = true;
cfg.load_destination = false;
if (pan_is_bifrost(pdev)) {
diff --git a/src/panfrost/vulkan/panvk_pipeline.c b/src/panfrost/vulkan/panvk_pipeline.c
index 8dbe76070a5..f2e6484d5b7 100644
--- a/src/panfrost/vulkan/panvk_pipeline.c
+++ b/src/panfrost/vulkan/panvk_pipeline.c
@@ -203,18 +203,18 @@ panvk_pipeline_builder_alloc_static_state_bo(struct panvk_pipeline_builder *buil
if (pipeline->fs.dynamic_rsd && i == MESA_SHADER_FRAGMENT)
continue;
- bo_size = ALIGN_POT(bo_size, MALI_RENDERER_STATE_ALIGN);
+ bo_size = ALIGN_POT(bo_size, pan_alignment(RENDERER_STATE));
builder->stages[i].rsd_offset = bo_size;
- bo_size += MALI_RENDERER_STATE_LENGTH;
+ bo_size += pan_size(RENDERER_STATE);
if (i == MESA_SHADER_FRAGMENT)
- bo_size += MALI_BLEND_LENGTH * pipeline->blend.state.rt_count;
+ bo_size += pan_size(BLEND) * pipeline->blend.state.rt_count;
}
if (panvk_pipeline_static_state(pipeline, VK_DYNAMIC_STATE_VIEWPORT) &&
panvk_pipeline_static_state(pipeline, VK_DYNAMIC_STATE_SCISSOR)) {
- bo_size = ALIGN_POT(bo_size, MALI_VIEWPORT_ALIGN);
+ bo_size = ALIGN_POT(bo_size, pan_alignment(VIEWPORT));
builder->vpd_offset = bo_size;
- bo_size += MALI_VIEWPORT_LENGTH;
+ bo_size += pan_size(VIEWPORT);
}
for (uint32_t i = 0; i < MESA_SHADER_STAGES; i++) {
@@ -325,12 +325,12 @@ panvk_pipeline_builder_init_shaders(struct panvk_pipeline_builder *builder,
if (i != MESA_SHADER_FRAGMENT) {
panvk_emit_non_fs_rsd(builder->device, &shader->info, shader_ptr, rsd);
} else if (!pipeline->fs.dynamic_rsd) {
- void *bd = rsd + MALI_RENDERER_STATE_LENGTH;
+ void *bd = rsd + pan_size(RENDERER_STATE);
panvk_emit_base_fs_rsd(builder->device, pipeline, rsd);
for (unsigned rt = 0; rt < MAX2(pipeline->blend.state.rt_count, 1); rt++) {
panvk_emit_blend(builder->device, pipeline, rt, bd);
- bd += MALI_BLEND_LENGTH;
+ bd += pan_size(BLEND);
}
} else {
gpu_rsd = 0;
More information about the mesa-commit
mailing list