Ano, jsou generovane a navic jsou "evaluated / flattened", takze i kdyz je zdrojova reprezentace kratsi (treba algoritmicka), tak ty headry nejsou tvoreny makry, je to pouhy seznam registru a bitu.
Nevim zda by stalo za to, to zas algoritmicky zkompaktnit - asi je zde dulezitejsi jednoduchost ladeni / grepovani.. takze se pouziva takova de-normalizovana forma.
Neni, binarni blob je anonymni kolekce nul a jednicek.
Generovane headry naopak popsuji registry a bity, ale nerikaji na co je treba nastavit (to dela uz samotny kod ovladace).
Nemyslim si, ze jde o neco zbytecneho, jako by napriklad bylo:
#define REG0_ADDR 0x12345678 #define REG0_DATA 0xABCD writel( REG0_ADDR, REG0_DATA );
Hlavne asi nekdo musel privrit oci, protoze politika jadra byla takova - muze tam byt jen to, co je pouzivano a referencovano. Zadne future-proof alokace (delame do videa a slo o to tam mit standardni pixel formaty v studiove kvalite.. ale kdyz zadny grabber to zatim nepodporuje, tak si je pry nelze definovat), pritom userspace by z toho dost tezil (staci include kernel headeru, a netreba pridavat custom definice)
FYI:
https://github.com/torvalds/linux/tree/master/drivers/gpu/drm/amd/include/asic_reg/nbio
najvacsi subor s tom adresary je "nbio_7_7_0_sh_mask.h".