STRUCT DRM_ASAHI_BG_EOT(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct drm_asahi_bg_eot(9) β€” from the Kernel API Manual, bestie

okay so this is a page straight out of the Kernel API Manual, and it's all about struct drm_asahi_bg_eot β€” the little struct that describes a background program or an end-of-tile program. two tiny fields, one big job. let's get into it 🫢

✨ NAME ✨

struct drm_asahi_bg_eot β€” literally just here to describe a background or end-of-tile program. that's the whole vibe. πŸŽ€

🌸 SYNOPSIS 🌸

struct drm_asahi_bg_eot {
    __u32 usc;
    __u32 rsrc_spec;
};

like, that's it. two __u32s. she's compact. she's iconic. πŸ‘‘

πŸ¦‹ Members πŸ¦‹

  • usc β€” the USC address of the hardware USC words that bind the resources (images and uniforms included!!) and the program itself. note that this is an additional layer of indirection compared to the helper program, and the whole point is avoiding the need for a sideband for data. also important: this is a tagged pointer with extra configuration tucked into the bottom bits. the bottom bits!! sneaky but slay πŸ’…
  • rsrc_spec β€” the resource specifier for the program. it's a packed hardware data structure, and it describes the required number of registers, uniforms, bound textures, and bound samplers. basically a little manifest of what the program needs. πŸ“‹βœ¨

πŸ’œ Description πŸ’œ

so here's the lore: the background and end-of-tile programs get dispatched by the hardware at the beginning and end of rendering. and since the hardware "tilebuffer" is simply local memory, these programs are necessary to implement API-level render targets β€” no cap, that's just how it is.

breaking it down: the fragment-like background program is responsible for loading either the clear colour or the existing render target contents, while the compute-like end-of-tile program stores the tilebuffer contents to memory. two little programs, one huge glow-up for your render targets. πŸ”₯

⚠️ real talk: this struct is embedded in other structs, and therefore it is not extensible. no growing, no adding fields later. it is what it is, periodt. πŸ’€

🌈 SEE ALSO 🌈

  • 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_zls_buffer(9)
  • struct drm_asahi_timestamp(9)
  • struct drm_asahi_timestamps(9)
  • struct drm_asahi_helper_program(9)
  • struct drm_asahi_cmd_render(9)
  • struct drm_asahi_cmd_compute(9)
  • struct drm_asahi_get_time(9)
  • DRM_IOCTL_ASAHI(9)

like, that's the whole friend group. go read them too, iykyk 🧚


and that's the page!! this one lives in ./include/uapi/drm, dated October 2026, and the page itself is struct drm_asahi_bg_eot(9). mwah, bye bestie πŸ’–βœ¨πŸ“

πŸ“¦ where this page comes from