mesa/src/asahi/layout
Asahi Lina 25d185a501 ail: Fix tile size & strides for compressed textures
Compressed textures have two additional quirks that affect the tiling
code (but not the mip offsets): they get extra stride padding in some
cases for the large miptree, and the tile size is based on the POT size
and not the real size for the small miptree.

Signed-off-by: Asahi Lina <lina@asahilina.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26614>
2023-12-09 10:56:45 -04:00
..
tests ail: Add MSAA tests 2023-05-11 23:24:48 +00:00
layout.c ail: Fix tile size & strides for compressed textures 2023-12-09 10:56:45 -04:00
layout.h ail: Add explicit specification of mip level strides 2023-12-09 10:56:45 -04:00
meson.build asahi: decouple layout from gallium 2023-08-03 19:38:56 +00:00
README ail: Handle multisampling 2022-11-19 20:25:41 +00:00
tiling.c ail: Add explicit specification of mip level strides 2023-12-09 10:56:45 -04:00

# ail

ail is a small library for working with the image (and buffer) layouts
encountered with AGX hardware. Its design is inspired by isl. In
particular, ail strives to use isl unit suffixes and to represent
quantities in a canonical, API-agnostic fashion.

ail conventions differ slightly from isl. See the isl documentation in
mesa/docs/isl for the conventions that inspired ail, in particular
mesa/docs/isl/units.rst.

In ail, we have the following units:

**Bytes (B)**: 8-bits.

**Samples (sa)**: An individual sample. The number of bytes per sample depends
on the format.

**Pixels (px)**: The unit everything starts as from the API. A pixel contains a
fixed number of samples, given as the layout's `sample_count_sa`. For twiddled
layouts, these samples are stored together in emmory.

**Elements (el)**: For a block-compressed format, a single compression block
containing multiple pixels. Otherwise, equal to a single pixel.

**Tiles (tiles)**: Defined only for tiled/twiddled layouts. A group of elements
forming the layout-specific tile.

We do not support any multisampled block-compressed layouts, so either pixels
equals either samples or elements.