STRUCT DRM_ASAHI_ZLS_BUFFER(9)
π struct drm_asahi_zls_buffer(9) β the Kernel API Manual moment
okay so this is the manual page for struct drm_asahi_zls_buffer(9), and bestie, it's literally just "describe a depth or stencil buffer." that's the whole vibe. we're in the kernel API manual, no cap. π
β¨ NAME β¨
struct drm_asahi_zls_buffer β describe a depth or stencil buffer. that's it, that's the whole job, and it does it gorgeously. π¦
πΈ SYNOPSIS πΈ
struct drm_asahi_zls_buffer {
__u64 base;
__u64 comp_base;
__u32 stride;
__u32 comp_stride;
};
look at her. four fields. zero notes. absolute main character energy. π
π§ Members π§
okay let's meet the squad, one field at a time:
baseβ the base address of the buffer. like, where it lives. that's her address bestie πcomp_baseβ if the load buffer is compressed, this is the address of the compression metadata section. so: only relevant when compression is on, iykyk. ποΈstrideβ if layered rendering is enabled, this is the number of bytes between each layer of the buffer. step size between layers, exactly what it says π«comp_strideβ if layered rendering is enabled, this is the number of bytes between each layer of the compression metadata. the stride's little sibling, but make it metadata. π«Ά
π Description π
so these fields correspond to hardware registers in the ZLS (Z Load/Store) unit. very real, very hardware, we love to see it π₯
here's the tea though: there are three hardware registers for each field respectively β one for loads, one for stores, and one for partial renders. so like... 4 fields Γ 3 registers, the math is mathing.
in practice, it makes sense to set all of them to the same values, except in exceptional cases not yet implemented in userspace. so we do not duplicate here, for simplicity/efficiency. the struct said "I'm not doing allat" and honestly? valid. π
β οΈ important little fact check: this struct is embedded in other structs and therefore is not extensible. no adding fields later, she's locked in, periodt. π
β SEE ALSO β
the whole friend group, no one left out:
- Kernel file
./include/uapi/drm/asahi_drm.h - Introduction to the Asahi UAPI(9)
enum drm_asahi_ioctl_id(9)struct drm_asahi_params_global(9)enum drm_asahi_feature(9)struct drm_asahi_get_params(9)struct drm_asahi_vm_create(9)struct drm_asahi_vm_destroy(9)enum drm_asahi_gem_flags(9)struct drm_asahi_gem_create(9)struct drm_asahi_gem_mmap_offset(9)enum drm_asahi_bind_flags(9)struct drm_asahi_gem_bind_op(9)struct drm_asahi_vm_bind(9)enum drm_asahi_bind_object_op(9)enum drm_asahi_bind_object_flags(9)struct drm_asahi_gem_bind_object(9)enum drm_asahi_cmd_type(9)enum drm_asahi_priority(9)struct drm_asahi_queue_create(9)struct drm_asahi_queue_destroy(9)enum drm_asahi_sync_type(9)struct drm_asahi_sync(9)DRM_ASAHI_BARRIER_NONE(9)struct drm_asahi_cmd_header(9)struct drm_asahi_submit(9)struct drm_asahi_attachment(9)struct drm_asahi_timestamp(9)struct drm_asahi_timestamps(9)struct drm_asahi_helper_program(9)struct drm_asahi_bg_eot(9)struct drm_asahi_cmd_render(9)struct drm_asahi_cmd_compute(9)struct drm_asahi_get_time(9)DRM_IOCTL_ASAHI(9)
okay that's the whole page bestie, you ate that π
sign-off time π«Ά: this one lives at ./include/uapi/drm, dated October 2026, and it's filed under struct drm_asahi_zls_buffer(9) β and yes, the header up top says struct drm_asahi_zls_buffer(9) / Kernel API Manual too, we just folded it in so it didn't feel like a copy-paste situation. mwah π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms