xref: /aosp_15_r20/external/libdrm/include/drm/README (revision 7688df22e49036ff52a766b7101da3a49edadb8c)
1*7688df22SAndroid Build Coastguard WorkerWhat are these headers ?
2*7688df22SAndroid Build Coastguard Worker------------------------
3*7688df22SAndroid Build Coastguard WorkerThis is the canonical source of drm headers that user space should use for
4*7688df22SAndroid Build Coastguard Workercommunicating with the kernel DRM subsystem.
5*7688df22SAndroid Build Coastguard Worker
6*7688df22SAndroid Build Coastguard WorkerThey flow from the kernel, thus any changes must be merged there first.
7*7688df22SAndroid Build Coastguard WorkerDo _not_ attempt to "fix" these by deviating from the kernel ones !
8*7688df22SAndroid Build Coastguard Worker
9*7688df22SAndroid Build Coastguard Worker
10*7688df22SAndroid Build Coastguard WorkerNon-linux platforms - changes/patches
11*7688df22SAndroid Build Coastguard Worker-------------------------------------
12*7688df22SAndroid Build Coastguard WorkerIf your platform has local changes, please send them upstream for inclusion.
13*7688df22SAndroid Build Coastguard WorkerEven if your patches don't get accepted in their current form, devs will
14*7688df22SAndroid Build Coastguard Workergive you feedback on how to address things properly.
15*7688df22SAndroid Build Coastguard Worker
16*7688df22SAndroid Build Coastguard Workergit send-email --subject-prefix="PATCH libdrm" your patches to dri-devel
17*7688df22SAndroid Build Coastguard Workermailing list.
18*7688df22SAndroid Build Coastguard Worker
19*7688df22SAndroid Build Coastguard WorkerBefore doing so, please consider the following:
20*7688df22SAndroid Build Coastguard Worker - Have the [libdrm vs kernel] headers on your platform deviated ?
21*7688df22SAndroid Build Coastguard WorkerConsider unifying them first.
22*7688df22SAndroid Build Coastguard Worker
23*7688df22SAndroid Build Coastguard Worker - Have you introduced additional ABI that's not available in Linux ?
24*7688df22SAndroid Build Coastguard WorkerPropose it for [Linux kernel] upstream inclusion.
25*7688df22SAndroid Build Coastguard WorkerIf that doesn't work out (hopefully it never does), move it to another header
26*7688df22SAndroid Build Coastguard Workerand/or keep the change(s) local ?
27*7688df22SAndroid Build Coastguard Worker
28*7688df22SAndroid Build Coastguard Worker - Are your changes DRI1/UMS specific ?
29*7688df22SAndroid Build Coastguard WorkerThere is virtually no interest/power in keeping those legacy interfaces. They
30*7688df22SAndroid Build Coastguard Workerare around due to the kernel "thou shalt not break existing user space" rule.
31*7688df22SAndroid Build Coastguard Worker
32*7688df22SAndroid Build Coastguard WorkerConsider porting the driver to DRI2/KMS - all (almost?) sensible hardware is
33*7688df22SAndroid Build Coastguard Workercapable of supporting those.
34*7688df22SAndroid Build Coastguard Worker
35*7688df22SAndroid Build Coastguard Worker
36*7688df22SAndroid Build Coastguard WorkerWhich headers go where ?
37*7688df22SAndroid Build Coastguard Worker------------------------
38*7688df22SAndroid Build Coastguard WorkerA snipped from the, now removed, Makefile.am used to state:
39*7688df22SAndroid Build Coastguard Worker
40*7688df22SAndroid Build Coastguard Worker  XXX airlied says, nothing besides *_drm.h and drm*.h should be necessary.
41*7688df22SAndroid Build Coastguard Worker  however, r300 and via need their reg headers installed in order to build.
42*7688df22SAndroid Build Coastguard Worker  better solutions are welcome.
43*7688df22SAndroid Build Coastguard Worker
44*7688df22SAndroid Build Coastguard WorkerObviously the r300 and via headers are no longer around ;-)
45*7688df22SAndroid Build Coastguard Worker
46*7688df22SAndroid Build Coastguard WorkerReason behind is that the drm headers can be used as a basic communications
47*7688df22SAndroid Build Coastguard Workerchannel with the respective kernel modules. If more advanced functionality is
48*7688df22SAndroid Build Coastguard Workerrequired one can pull the specific libdrm_$driver which is free to pull
49*7688df22SAndroid Build Coastguard Workeradditional files from the kernel.
50*7688df22SAndroid Build Coastguard Worker
51*7688df22SAndroid Build Coastguard WorkerFor example: nouveau has nouveau/nvif/*.h while vc4 has vc4/*.h
52*7688df22SAndroid Build Coastguard Worker
53*7688df22SAndroid Build Coastguard WorkerIf your driver is still in prototyping/staging state, consider moving the
54*7688df22SAndroid Build Coastguard Worker$driver_drm.h into $driver and _not_ installing it. An header providing opaque
55*7688df22SAndroid Build Coastguard Workerdefinitions and access [via $driver_drmif.h or similar] would be better fit.
56*7688df22SAndroid Build Coastguard Worker
57*7688df22SAndroid Build Coastguard Worker
58*7688df22SAndroid Build Coastguard WorkerWhen and which headers to update
59*7688df22SAndroid Build Coastguard Worker--------------------------------
60*7688df22SAndroid Build Coastguard WorkerIdeally all files will be synced (updated) with the latest released kernel on
61*7688df22SAndroid Build Coastguard Workereach libdrm release. Sadly that's not yet possible since quite a few headers
62*7688df22SAndroid Build Coastguard Workerdiffer significantly - see Outdated or Broken Headers section below.
63*7688df22SAndroid Build Coastguard Worker
64*7688df22SAndroid Build Coastguard WorkerThat said, it's up-to the individual developers to sync with newer version
65*7688df22SAndroid Build Coastguard Worker(from drm-next) as they see fit.
66*7688df22SAndroid Build Coastguard Worker
67*7688df22SAndroid Build Coastguard Worker
68*7688df22SAndroid Build Coastguard WorkerWhen and how to update these files
69*7688df22SAndroid Build Coastguard Worker----------------------------------
70*7688df22SAndroid Build Coastguard WorkerNote: One should not do _any_ changes to the files apart from the steps below.
71*7688df22SAndroid Build Coastguard Worker
72*7688df22SAndroid Build Coastguard WorkerIn order to update the files do the following:
73*7688df22SAndroid Build Coastguard Worker - Switch to a Linux kernel tree/branch which is not rebased.
74*7688df22SAndroid Build Coastguard Worker   For example: drm-next (https://gitlab.freedesktop.org/drm/kernel/)
75*7688df22SAndroid Build Coastguard Worker - Install the headers via `make headers_install' to a separate location.
76*7688df22SAndroid Build Coastguard Worker - Copy the drm header[s] + git add + git commit.
77*7688df22SAndroid Build Coastguard Worker - Note: Your commit message must include:
78*7688df22SAndroid Build Coastguard Worker   a) Brief summary on the delta. If there's any change that looks like an
79*7688df22SAndroid Build Coastguard WorkerAPI/ABI break one _must_ explicitly state why it's safe to do so.
80*7688df22SAndroid Build Coastguard Worker   b) "Generated using make headers_install."
81*7688df22SAndroid Build Coastguard Worker   c) "Generated from $tree/branch commit $sha"
82*7688df22SAndroid Build Coastguard Worker
83*7688df22SAndroid Build Coastguard Worker
84*7688df22SAndroid Build Coastguard WorkerOutdated or Broken Headers
85*7688df22SAndroid Build Coastguard Worker--------------------------
86*7688df22SAndroid Build Coastguard WorkerThis section contains a list of headers and the respective "issues" they might
87*7688df22SAndroid Build Coastguard Workerhave relative to their kernel equivalent.
88*7688df22SAndroid Build Coastguard Worker
89*7688df22SAndroid Build Coastguard WorkerMost UMS headers:
90*7688df22SAndroid Build Coastguard Worker - Not using fixed size integers - compat ioctls are broken.
91*7688df22SAndroid Build Coastguard WorkerStatus: ?
92*7688df22SAndroid Build Coastguard WorkerPromote to fixed size ints, which match the current (32bit) ones.
93*7688df22SAndroid Build Coastguard Worker
94*7688df22SAndroid Build Coastguard Workernouveau_drm.h
95*7688df22SAndroid Build Coastguard Worker - Missing macros NOUVEAU_GETPARAM*, NOUVEAU_DRM_HEADER_PATCHLEVEL, structs,
96*7688df22SAndroid Build Coastguard Workerenums
97*7688df22SAndroid Build Coastguard WorkerStatus: Deliberate UABI choice; nouveau hides the exact kernel ABI behind libdrm
98*7688df22SAndroid Build Coastguard Worker
99*7688df22SAndroid Build Coastguard Workerr128_drm.h
100*7688df22SAndroid Build Coastguard Worker - Broken compat ioctls.
101*7688df22SAndroid Build Coastguard Worker
102*7688df22SAndroid Build Coastguard Workerradeon_drm.h
103*7688df22SAndroid Build Coastguard Worker - Missing RADEON_TILING_R600_NO_SCANOUT, CIK_TILE_MODE_*, broken UMS ioctls
104*7688df22SAndroid Build Coastguard Worker - Both kernel and libdrm: missing padding -
105*7688df22SAndroid Build Coastguard Workerdrm_radeon_gem_{create,{g,s}et_tiling,set_domain} others ?
106*7688df22SAndroid Build Coastguard WorkerStatus: ?
107*7688df22SAndroid Build Coastguard Worker
108*7688df22SAndroid Build Coastguard Workersavage_drm.h
109*7688df22SAndroid Build Coastguard Worker - Renamed ioctls - DRM_IOCTL_SAVAGE_{,BCI}_EVENT_EMIT, compat ioctls are broken.
110*7688df22SAndroid Build Coastguard WorkerStatus: ?
111*7688df22SAndroid Build Coastguard Worker
112*7688df22SAndroid Build Coastguard Workersis_drm.h
113*7688df22SAndroid Build Coastguard Worker - Borken ioctls + libdrm uses int vs kernel long
114*7688df22SAndroid Build Coastguard WorkerStatus: ?
115*7688df22SAndroid Build Coastguard Worker
116*7688df22SAndroid Build Coastguard Workervia_drm.h
117*7688df22SAndroid Build Coastguard Worker - Borken ioctls - libdrm int vs kernel long
118*7688df22SAndroid Build Coastguard WorkerStatus: ?
119*7688df22SAndroid Build Coastguard Worker
120*7688df22SAndroid Build Coastguard Worker
121*7688df22SAndroid Build Coastguard Workeromap_drm.h (living in $TOP/omap)
122*7688df22SAndroid Build Coastguard Worker - License mismatch, missing DRM_IOCTL_OMAP_GEM_NEW and related struct
123*7688df22SAndroid Build Coastguard WorkerStatus: ?
124*7688df22SAndroid Build Coastguard Worker
125*7688df22SAndroid Build Coastguard Workerexynos_drm.h (living in $TOP/exynos)
126*7688df22SAndroid Build Coastguard Worker - License mismatch, now using fixed size ints (but not everywhere). Lots of
127*7688df22SAndroid Build Coastguard Workernew stuff.
128*7688df22SAndroid Build Coastguard WorkerStatus: ?
129