STRUCT XE_OA_BUFFER(9)
β¨ NAME β¨
okay so this is struct xe_oa_buffer β the state of the stream OA buffer π that's it, that's the whole personality. it's the struct that keeps track of where your OA buffer is at. lowkey important, highkey iconic.
so real quick, the manual name for this one is struct xe_oa_buffer(9) from the Kernel API Manual β writing it down so you don't forget bestie π
πΈ SYNOPSIS πΈ
here's the whole vibe, copy-pasted exactly because we do not touch the code:
struct xe_oa_buffer {
const struct xe_oa_format *format;
struct xe_bo *bo;
void *bounce;
spinlock_t ptr_lock;
u32 head;
u32 tail;
u32 circ_size;
};
π¦ Members π¦
okay now the good part β meet the members, they're all main characters in their own way π«Ά
formatβ the data format. that's it, that's her whole job β¨boβ thexe_bothat's backing the OA buffer. the literal foundation, no cap πbounceβ a bounce buffer that gets used with thexe_maplayer. yes it's called bounce. yes we love her πptr_lockβ aspinlock_tguarding the reads and writes to thehead/tailpointers. tiny lock, huge responsibility π₯headβ the cached head you read from. that's where you're at, bestie βtailβ the last verified cached tail, i.e. where the HW has actually finished writing. note the "verified" β this one's been checked, fr fr πcirc_sizeβ the effective circular buffer size, for Xe2+. so like, newer hardware energy π
π SEE ALSO π
go read these next, they're all in the kernel file ./drivers/gpu/drm/xe/xe_oa_types.h and they're all linked together like one big friend group π
struct xe_oa_format(9)struct xe_oa_unit(9)struct xe_oa_gt(9)struct xe_oa(9)struct xe_oa_stream(9)
aaaaand that's the whole page bestie π this little gem lives over in ./drivers/gpu/drm/xe and it's dated October 2026 β so yeah, she's from the future, periodt πβ¨π§
π¦ 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