panfrost: Adjust the renderer state definition
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6980>
diff --git a/src/gallium/drivers/panfrost/pan_assemble.c b/src/gallium/drivers/panfrost/pan_assemble.c
index f0559b4..bc65919 100644
--- a/src/gallium/drivers/panfrost/pan_assemble.c
+++ b/src/gallium/drivers/panfrost/pan_assemble.c
@@ -106,10 +106,10 @@
const struct panfrost_device *dev = pan_device(ctx->base.screen);
struct mali_state_packed *out;
- u_upload_alloc(ctx->state_uploader, 0, MALI_STATE_LENGTH, MALI_STATE_LENGTH,
+ u_upload_alloc(ctx->state_uploader, 0, MALI_RENDERER_STATE_LENGTH, MALI_RENDERER_STATE_LENGTH,
&state->upload.offset, &state->upload.rsrc, (void **) &out);
- pan_pack(out, STATE_OPAQUE, cfg) {
+ pan_pack(out, RENDERER_STATE_OPAQUE, cfg) {
cfg.shader = state->shader;
memcpy(&cfg.properties, &state->properties, sizeof(state->properties));
diff --git a/src/gallium/drivers/panfrost/pan_cmdstream.c b/src/gallium/drivers/panfrost/pan_cmdstream.c
index f9dbb3d..96cd269 100644
--- a/src/gallium/drivers/panfrost/pan_cmdstream.c
+++ b/src/gallium/drivers/panfrost/pan_cmdstream.c
@@ -356,8 +356,8 @@
static void
panfrost_emit_frag_shader(struct panfrost_context *ctx,
- struct mali_state_packed *fragmeta,
- struct panfrost_blend_final *blend)
+ struct mali_renderer_state_packed *fragmeta,
+ struct panfrost_blend_final *blend)
{
const struct panfrost_device *dev = pan_device(ctx->base.screen);
struct panfrost_shader_state *fs = panfrost_get_shader_state(ctx, PIPE_SHADER_FRAGMENT);
@@ -456,8 +456,8 @@
MALI_FUNC_ALWAYS;
cfg.depth_write_mask = zsa->base.depth.writemask;
- cfg.near_discard = rast->depth_clip_near;
- cfg.far_discard = rast->depth_clip_far;
+ cfg.fixed_function_near_discard = rast->depth_clip_near;
+ cfg.fixed_function_far_discard = rast->depth_clip_far;
cfg.unknown_2 = true;
}
@@ -500,7 +500,7 @@
}
}
- pan_pack(fragmeta, STATE_OPAQUE, cfg) {
+ pan_pack(fragmeta, RENDERER_STATE_OPAQUE, cfg) {
cfg.shader = fs->shader;
cfg.properties = properties;
cfg.depth_units = rast->offset_units * 2.0f;
@@ -565,8 +565,8 @@
else
rt_size = sizeof(struct midgard_blend_rt);
- unsigned desc_size = MALI_STATE_LENGTH + rt_size * rt_count;
- xfer = panfrost_pool_alloc_aligned(&batch->pool, desc_size, MALI_STATE_LENGTH);
+ unsigned desc_size = MALI_RENDERER_STATE_LENGTH + rt_size * rt_count;
+ xfer = panfrost_pool_alloc_aligned(&batch->pool, desc_size, MALI_RENDERER_STATE_LENGTH);
struct panfrost_blend_final blend[PIPE_MAX_COLOR_BUFS];
unsigned shader_offset = 0;
@@ -575,10 +575,10 @@
for (unsigned c = 0; c < ctx->pipe_framebuffer.nr_cbufs; ++c)
blend[c] = panfrost_get_blend_for_context(ctx, c, &shader_bo,
&shader_offset);
- panfrost_emit_frag_shader(ctx, (struct mali_state_packed *) xfer.cpu, blend);
+ panfrost_emit_frag_shader(ctx, (struct mali_renderer_state_packed *) xfer.cpu, blend);
if (!(dev->quirks & MIDGARD_SFBD))
- panfrost_emit_blend(batch, xfer.cpu + MALI_STATE_LENGTH, blend);
+ panfrost_emit_blend(batch, xfer.cpu + MALI_RENDERER_STATE_LENGTH, blend);
else
batch->draws |= PIPE_CLEAR_COLOR0;
diff --git a/src/panfrost/bifrost/test/bi_submit.c b/src/panfrost/bifrost/test/bi_submit.c
index 99f1ba2..b4f181e 100644
--- a/src/panfrost/bifrost/test/bi_submit.c
+++ b/src/panfrost/bifrost/test/bi_submit.c
@@ -173,7 +173,7 @@
cfg.wls_instances = MALI_LOCAL_STORAGE_NO_WORKGROUP_MEM;
}
- pan_pack(shader_desc->cpu, STATE, cfg) {
+ pan_pack(shader_desc->cpu, RENDERER_STATE, cfg) {
cfg.shader.shader = shader->gpu;
cfg.shader.attribute_count = cfg.shader.varying_count = 1;
cfg.properties = 0x800001;
diff --git a/src/panfrost/lib/decode.c b/src/panfrost/lib/decode.c
index d736511..a0ed755 100644
--- a/src/panfrost/lib/decode.c
+++ b/src/panfrost/lib/decode.c
@@ -1138,7 +1138,7 @@
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_STATE_LENGTH);
+ uint32_t *cl = pandecode_fetch_gpu_mem(smem, p->state, MALI_RENDERER_STATE_LENGTH);
/* Disassemble ahead-of-time to get stats. Initialize with
* stats for the missing-shader case so we get validation
@@ -1155,12 +1155,12 @@
.uniform_buffer_count = 0
};
- pan_unpack(cl, STATE, state);
+ pan_unpack(cl, RENDERER_STATE, state);
if (state.shader.shader & ~0xF)
info = pandecode_shader_disassemble(state.shader.shader & ~0xF, job_no, job_type, is_bifrost, gpu_id);
- DUMP_UNPACKED(STATE, state, "State:\n");
+ DUMP_UNPACKED(RENDERER_STATE, state, "State:\n");
pandecode_indent++;
/* Save for dumps */
@@ -1225,7 +1225,7 @@
if (job_type == MALI_JOB_TYPE_TILER &&
(is_bifrost || p->fbd & MALI_FBD_TAG_IS_MFBD)) {
- void* blend_base = ((void *) cl) + MALI_STATE_LENGTH;
+ void* blend_base = ((void *) cl) + MALI_RENDERER_STATE_LENGTH;
for (unsigned i = 0; i < fbd_info.rt_count; i++) {
mali_ptr shader = 0;
diff --git a/src/panfrost/lib/midgard.xml b/src/panfrost/lib/midgard.xml
index 48e55e8..d0e1ea3 100644
--- a/src/panfrost/lib/midgard.xml
+++ b/src/panfrost/lib/midgard.xml
@@ -516,18 +516,19 @@
<struct name="Multisample, Misc" size="1">
<field name="Sample mask" size="16" start="0" type="uint"/>
<field name="Multisample enable" size="1" start="16" type="bool"/>
- <!-- TODO 17 -->
+ <field name="Multisample late coverage" size="1" start="17" type="bool"/>
<field name="Evaluate per-sample" size="1" start="18" type="bool"/>
<field name="Unknown 1" size="1" start="19" type="bool"/>
<field name="Unknown 2" size="1" start="20" type="bool"/>
<field name="SFBD Load destination" size="1" start="21" type="bool"/>
<field name="SFBD Blend shader" size="1" start="22" type="bool"/>
- <!-- TODO 23 -->
+ <field name="SFBD Blend shader discard" size="1" start="23" type="bool"/>
<field name="Depth function" size="3" start="24" type="Func"/>
<field name="Depth write mask" size="1" start="27" type="bool"/>
- <field name="Near discard" size="1" start="28" type="bool"/>
- <field name="Far discard" size="1" start="29" type="bool"/>
- <!-- TODO: 30-31 -->
+ <field name="Fixed-function near discard" size="1" start="28" type="bool"/>
+ <field name="Fixed-function far discard" size="1" start="29" type="bool"/>
+ <field name="Fragment near discard" size="1" start="30" type="bool"/>
+ <field name="Fragment far discard" size="1" start="31" type="bool"/>
</struct>
<struct name="Stencil Mask, Misc" size="1">
@@ -535,7 +536,8 @@
<field name="Stencil mask back" size="8" start="8" type="uint"/>
<field name="Stencil enable" size="1" start="16" type="bool"/>
<field name="Alpha-to-coverage" size="1" start="17" type="bool"/>
- <!-- TODO 18-19 -->
+ <field name="Alpha-to-coverage Invert" size="1" start="18" type="bool"/>
+ <field name="Alpha to one" size="1" start="19" type="bool"/>
<field name="SFBD Write enable" size="1" start="20" type="bool"/>
<field name="Unknown 1" size="3" start="21" type="uint"/>
<field name="SFBD sRGB" size="1" start="24" type="bool"/>
@@ -544,7 +546,7 @@
<field name="Depth Range 1" size="1" start="28" type="bool"/>
<field name="Depth Range 2" size="1" start="29" type="bool"/>
<field name="Single-sampled lines" size="1" start="30" type="bool"/>
- <!-- TODO: 31 -->
+ <field name="Point snap" size="1" start="31" type="bool"/>
</struct>
<struct name="Stencil">
@@ -556,18 +558,18 @@
<field name="Depth Pass" size="3" start="25" type="Stencil Op"/>
</struct>
- <struct name="State" with_opaque="true">
+ <struct name="Renderer State" with_opaque="true">
<field name="Shader" size="128" start="0:0" type="Shader"/>
<field name="Properties" size="32" start="4:0" type="uint"/>
<field name="Depth units" size="32" start="5:0" type="float"/>
<field name="Depth factor" size="32" start="6:0" type="float"/>
- <!-- TODO: word 7 -->
+ <field name="Depth bias clamp" size="32" start="7:0" type="float"/>
<field name="Multisample, Misc" size="32" start="8:0" type="Multisample, Misc"/>
<field name="Stencil Mask, Misc" size="32" start="9:0" type="Stencil Mask, Misc"/>
<field name="Stencil front" size="32" start="10:0" type="Stencil"/>
<field name="Stencil back" size="32" start="11:0" type="Stencil"/>
<field name="Preload" size="32" start="12:0" type="Preload"/>
- <!--- TODO: word 13 -->
+ <field name="Thread Balancing" size="16" start="13:0" type="uint"/>
<field name="SFBD Blend" size="64" start="14:0" type="uint"/>
</struct>
diff --git a/src/panfrost/lib/pan_blit.c b/src/panfrost/lib/pan_blit.c
index dd77698..0c06c37 100644
--- a/src/panfrost/lib/pan_blit.c
+++ b/src/panfrost/lib/pan_blit.c
@@ -238,7 +238,7 @@
struct mali_midgard_properties_packed properties;
struct panfrost_transfer shader_meta_t = panfrost_pool_alloc_aligned(
- pool, MALI_STATE_LENGTH + 8 * sizeof(struct midgard_blend_rt), 128);
+ pool, MALI_RENDERER_STATE_LENGTH + 8 * sizeof(struct midgard_blend_rt), 128);
pan_pack(&properties, MIDGARD_PROPERTIES, cfg) {
cfg.work_register_count = 4;
@@ -249,7 +249,7 @@
MALI_DEPTH_SOURCE_FIXED_FUNCTION;
}
- pan_pack(shader_meta_t.cpu, STATE, cfg) {
+ pan_pack(shader_meta_t.cpu, RENDERER_STATE, cfg) {
cfg.shader.shader = pool->dev->blit_shaders.loads[loc][T][ms];
cfg.shader.varying_count = 1;
cfg.shader.texture_count = 1;
@@ -318,7 +318,7 @@
cfg.normalized_coordinates = false;
for (unsigned i = 0; i < 8; ++i) {
- void *dest = shader_meta_t.cpu + MALI_STATE_LENGTH + sizeof(struct midgard_blend_rt) * i;
+ void *dest = shader_meta_t.cpu + MALI_RENDERER_STATE_LENGTH + sizeof(struct midgard_blend_rt) * i;
if (loc == (FRAG_RESULT_DATA0 + i)) {
struct midgard_blend_rt blend_rt = {