asahi: identify ZLS compress load/store bits

obvious in retrospect!

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34585>
This commit is contained in:
Alyssa Rosenzweig 2025-02-25 12:20:10 -05:00 committed by Marge Bot
parent 9757185153
commit 3a560dd32b
3 changed files with 16 additions and 18 deletions

View file

@ -1108,13 +1108,13 @@
<struct name="ZLS Control" size="8">
<field name="Unknown 0" start="0" size="1" type="bool"/>
<field name="Z Load Tiling" start="1" size="1" type="ZLS Tiling"/>
<field name="Z Compress 1" start="2" size="1" type="bool"/>
<field name="Z Load Compress" start="2" size="1" type="bool"/>
<field name="S Load Tiling" start="3" size="1" type="ZLS Tiling"/>
<field name="S Compress 1" start="4" size="1" type="bool"/>
<field name="S Load Compress" start="4" size="1" type="bool"/>
<field name="Z Store Tiling" start="5" size="1" type="ZLS Tiling"/>
<field name="Z Compress 2" start="6" size="1" type="bool"/>
<field name="Z Store Compress" start="6" size="1" type="bool"/>
<field name="S Store Tiling" start="7" size="1" type="ZLS Tiling"/>
<field name="S Compress 2" start="8" size="1" type="bool"/>
<field name="S Store Compress" start="8" size="1" type="bool"/>
<field name="S Load Enable" start="14" size="1" type="bool"/>
<field name="Z Load Enable" start="15" size="1" type="bool"/>
<field name="S Store Enable" start="18" size="1" type="bool"/>

View file

@ -543,10 +543,8 @@ hk_pack_zls_control(struct agx_zls_control_packed *packed,
zls_control.z_load_tiling = zls_control.z_store_tiling =
agx_translate_zls_tiling(z_layout->tiling);
if (z_layout->compressed) {
zls_control.z_compress_1 = true;
zls_control.z_compress_2 = true;
}
zls_control.z_load_compress = zls_control.z_store_compress =
z_layout->compressed;
if (z_layout->format == PIPE_FORMAT_Z16_UNORM) {
zls_control.z_format = AGX_ZLS_FORMAT_16;
@ -574,10 +572,8 @@ hk_pack_zls_control(struct agx_zls_control_packed *packed,
zls_control.s_load_tiling = zls_control.s_store_tiling =
agx_translate_zls_tiling(s_layout->tiling);
if (s_layout->compressed) {
zls_control.s_compress_1 = true;
zls_control.s_compress_2 = true;
}
zls_control.s_load_compress = zls_control.s_store_compress =
s_layout->compressed;
}
}
}

View file

@ -1280,9 +1280,13 @@ agx_cmdbuf(struct agx_device *dev, struct drm_asahi_cmd_render *c,
zls_control.z_store_enable = (batch->resolve & PIPE_CLEAR_DEPTH);
zls_control.z_load_enable = !clear && load;
zls_control.z_load_tiling = zls_control.z_store_tiling =
agx_translate_zls_tiling(zres->layout.tiling);
zls_control.z_load_compress = zls_control.z_store_compress =
zres->layout.compressed;
c->depth.base = agx_map_texture_gpu(zres, first_layer) +
ail_get_level_offset_B(&zres->layout, level);
@ -1308,9 +1312,6 @@ agx_cmdbuf(struct agx_device *dev, struct drm_asahi_cmd_render *c,
unsigned stride_lines =
zres->layout.compression_layer_stride_B / AIL_CACHELINE;
c->depth.comp_stride = (stride_lines - 1) << 14;
zls_control.z_compress_1 = true;
zls_control.z_compress_2 = true;
}
if (zres->base.format == PIPE_FORMAT_Z16_UNORM) {
@ -1331,9 +1332,13 @@ agx_cmdbuf(struct agx_device *dev, struct drm_asahi_cmd_render *c,
zls_control.s_store_enable = (batch->resolve & PIPE_CLEAR_STENCIL);
zls_control.s_load_enable = !clear && load;
zls_control.s_load_tiling = zls_control.s_store_tiling =
agx_translate_zls_tiling(sres->layout.tiling);
zls_control.s_load_compress = zls_control.s_store_compress =
sres->layout.compressed;
c->stencil.base = agx_map_texture_gpu(sres, first_layer) +
ail_get_level_offset_B(&sres->layout, level);
@ -1358,9 +1363,6 @@ agx_cmdbuf(struct agx_device *dev, struct drm_asahi_cmd_render *c,
unsigned stride_lines =
sres->layout.compression_layer_stride_B / AIL_CACHELINE;
c->stencil.comp_stride = (stride_lines - 1) << 14;
zls_control.s_compress_1 = true;
zls_control.s_compress_2 = true;
}
c->isp_bgobjvals |= clear_stencil;