summaryrefslogtreecommitdiff
path: root/xf86drm.h
AgeCommit message (Collapse)AuthorFilesLines
2024-04-11xf86drm: document drmDevicesEqual()Simon Ser1-0/+5
I always need to double-check what the return value means when using that function (since it's not a bool). Signed-off-by: Simon Ser <contact@emersion.fr>
2023-11-20xf86drm: add drmGetNodeTypeFromDevIdSimon Ser1-0/+7
This is useful to figure out whether the dev_t refers to a primary node or a render node. Indeed, drmGetDeviceFromDevId returns a drmDevice, which holds both the primary and render nodes. Signed-off-by: Simon Ser <contact@emersion.fr>
2023-09-19xf86drm: mark DRM_MAX_MINOR as deprecatedSimon Ser1-1/+1
With the work in [1], libdrm users should no longer rely on the minor numbering scheme we've used so far. Instead, they should use drmGetDevices2(). [1]: https://lore.kernel.org/lkml/20230724211428.3831636-1-michal.winiarski@intel.com/ Signed-off-by: Simon Ser <contact@emersion.fr> Reviewed-by: Marek Olšák <marek.olsak@amd.com> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
2023-08-16xf86drm: update DRM_NODE_NAME_MAX supporting more nodesJames Zhu1-1/+1
Current DRM_NODE_NAME_MAX only can support up to 999 nodes, Update to support up to 2^MINORBITS nodes. Signed-off-by: James Zhu <James.Zhu@amd.com> Reviewed-by: Simon Ser <contact@emersion.fr>
2023-07-27xf86drm: add drmSyncobjEventfdSimon Ser1-0/+2
This is a wrapper for DRM_IOCTL_SYNCOBJ_EVENTFD. Signed-off-by: Simon Ser <contact@emersion.fr>
2023-07-26xf86drm: drop control nodes implementationSimon Ser1-6/+6
Drop support for control nodes. The kernel never returns such nodes. Stop trying to detect and handle them, and always return an error when a caller tries to open them. The header is left untouched to avoid breaking libdrm's API. Signed-off-by: Simon Ser <contact@emersion.fr>
2023-07-26xf86drm: bump DRM_MAX_MINOR to 64Simon Ser1-1/+1
This is what the kernel uses (see drm_minor_alloc). Signed-off-by: Simon Ser <contact@emersion.fr>
2022-08-31xf86drm: add drmGetFormatName()Simon Ser1-0/+3
Same as drmGetFormatModifierName() but for formats. Signed-off-by: Simon Ser <contact@emersion.fr> Reviewed-by: Marius Vlad <marius.vlad@collabora.com> Reviewed-by: Eric Engestrom <eric@igalia.com>
2021-11-19xf86drm: add drmGetDeviceFromDevIdSimon Ser1-0/+2
This adds a function to get a drmDevicePtr from a dev_t identifier of a device. This is useful for Wayland that uses these to identify devices over the protocol. This is done by taking the implementation of drmGetDevice2, and removing the call to fstat to find the dev_t. Signed-off-by: Scott Anderson <scott.anderson@collabora.com> Signed-off-by: Simon Ser <contact@emersion.fr> Reviewed-by: Daniel Stone <daniels@collabora.com>
2021-09-27xf86drm: add GEM_CLOSE ioctl wrapperSimon Ser1-0/+2
We have wrappers for PRIME_HANDLE_TO_FD and PRIME_FD_TO_HANDLE, but not for GEM_CLOSE. Add it so that callers don't need to manually call drmIoctl. Signed-off-by: Simon Ser <contact@emersion.fr> Reviewed-by: Emil Velikov <emil.velikov@collabora.com> Acked-by: Daniel Stone <daniels@collabora.com>
2021-06-22xf86drm: Add a human readable representation for format modifiersMarius Vlad1-0/+11
Introduces two new methods to retrieve a human readable representation of a format modifier: drmGetFormatModifierName() - returns a format modifier as a string, from a token modifier drmGetFormatModifierVendor() - returns the vendor as a string, from a token modifier and the fourcc_mod_get_vendor macro that returns the vendor. New format modifiers added in drm_fourcc.h uapi kernel header should be sync'ed up with libdrm and should include a human readable representation for that format modifier, in order to display it correctly as a string. That happens with the help of a python script that reads up drm_fourcc header file and outputs a static table comprised of token modifiers alongside a vendor table (Suggested-by Simon Ser <contact@emersion.fr>). The reason for doing it in libdrm is to have a unified place instead of each user of libdrm having a way to keep track of the format modifiers. With this patch, modetest has also been modified to make use of it. Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
2021-02-26xf86drm: warn about GEM handle reference countingSimon Ser1-0/+18
Users need to be careful when using drmPrimeHandleToFD or drmPrimeFDToHandle directly. Mention GBM as a solution. See [1] for an example mistake. [1]: https://gitlab.freedesktop.org/drm/nouveau/-/issues/43#note_772661 Signed-off-by: Simon Ser <contact@emersion.fr> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2019-12-05Add ARM support into xf86drm.hLauren Post1-0/+23
This provides support for Xorg interface. Without this the vivante samples will hang during close requiring a reboot [Adapted from yocto project] Upstream-Status: Pending Signed-off-by: Lauren Post <lauren.post@freescale.com> Signed-off-by: Evan Kotara <evan.kotara@freescale.com> [Thomas: change CAS code to only be used on ARMv6/ARMv7, and not ARMv4/ARMv5, which don't support ldrex/strex. If no CAS implementation is provided libdrm falls back to a system call for locking/unlocking.] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Seiderer <ps.report@gmx.net> Acked-by: Eric Engestrom <eric.engestrom@intel.com> --- Changes v1 -> v2: - add comment explaining exclusion of ARMv4/ARMv5 and lower
2019-10-26libdrm: wrap new flexible syncobj query interface v2Chunming Zhou1-0/+2
v2: nit-picks fix Signed-off-by: Chunming Zhou <david1.zhou@amd.com> Cc: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Cc: Christian König <Christian.Koenig@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com> For the xf86drm.[ch] part : Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
2019-07-03xf86drm: use max size of drm node name instead of arbitrary sizeEric Engestrom1-0/+8
Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
2019-07-03xf86drm: dedupe `#define`sEric Engestrom1-6/+10
Adapted from a local patch carried by DragonFlyBSD: https://github.com/DragonFlyBSD/DPorts/blob/bc056f88f7e4d468d8c9751f831a47b5ae1326e3/graphics/libdrm/files/patch-xf86drm.h Patch is sadly uncredited (a bot authored the commit), so I can't credit the author here either. Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
2019-05-16add timeline signal/transfer ioctls v2Chunming Zhou1-0/+6
v2: use one transfer ioctl Signed-off-by: Chunming Zhou <david1.zhou@amd.com> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
2019-05-16add timeline wait/query ioctl v2Chunming Zhou1-0/+6
v2: drop export/import Signed-off-by: Chunming Zhou <david1.zhou@amd.com> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
2019-02-08xf86drm: fix return type for drmIsMaster()Eric Engestrom1-2/+1
Xserver has struct members named `bool`, which means the last commit breaks its build with errors like this: error: two or more data types in declaration specifiers Bool bool; ^ Fix this by making it return a 0/1 integer, with the same semantic as the boolean it was before. Bug: https://bugs.freedesktop.org/show_bug.cgi?id=109587 Fixes: 17dfe3ac93217b43f93b "xf86drm: Add drmIsMaster()" Cc: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com> Signed-off-by: Eric Engestrom <eric.engestrom@intel.com> Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
2019-02-07xf86drm: Add drmIsMaster()Christopher James Halse Rogers1-0/+2
We can't use drmSetMaster to query whether or not a drm fd is master because it requires CAP_SYS_ADMIN, even if the fd *is* a master fd. Pick DRM_IOCTL_MODE_ATTACHMODE as a long-deprecated ioctl that is DRM_MASTER but not DRM_ROOT_ONLY as the probe by which we can detect whether or not the fd is master. This is useful for code that might get master by open()ing the drm device while no other master exists, but can't call drmSetMaster itself because it's not running as root or is in a container, where container-root isn't real-root. v2: Use the AUTH_MAGIC request rather than MODE_ATTACHMODE, as it's more clearly related to master status. v3: [Emil] Don't expose internals, check for -EACCES. Signed-off-by: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> (v2) Signed-off-by: Emil Velikov <emil.velikov@collabora.com> Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
2017-12-18drm: Add CrtcGetSequence and CrtcQueueSequence IOCTLs [v2]Keith Packard1-1/+11
These provide a crtc-id based interface to get the current sequence (frame) number and to queue an event to be delivered at a specific sequence. v2: Remove FIRST_PIXEL_OUT flag. This has been removed from the proposed kernel API Signed-off-by: Keith Packard <keithp@keithp.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
2017-12-18drm: Add drmSyncobjReset & drmSyncobjSignal wrappers.Bas Nieuwenhuizen1-0/+2
anv already uses the ioctls but does not use libdrm, so these were not wrapped yet. Signed-off-by: Dave Airlie <airlied@redhat.com>
2017-10-12drm: add drmSyncobjWait wrapperMarek Olšák1-0/+3
Reviewed-by: Chunming Zhou <david1.zhou@amd.com>
2017-06-29libdrm: add drm syncobj create/destroy/import/exportDave Airlie1-0/+8
These ioctls are now in drm next so add the first set of libdrm APIs. Reviewed-by: Eric Anholt <eric@anholt.net> Signed-off-by: Dave Airlie <airlied@redhat.com>
2017-05-04Export drmDevicesEqualAdam Jackson1-0/+2
drmCompareBusInfo was almost this already, but it wasn't exported, its name didn't match its functionality, and while it almost looks like it was usable for sorting due to memcmp it wouldn't work if you had multiple bus types. I don't really want to think about defining a sensible sort order for bus types, so let's at least make it less of a trap for the caller. Invert its boolean sense to be 'true if equal', rename it to describe the types it actually operates on, and export. Reviewed-by: Eric Anholt <eric@anholt.net> Reviewed-by: Emil Velikov <emil.velilkov@collabora.com> Signed-off-by: Adam Jackson <ajax@redhat.com>
2017-04-06Add CRTC ID to vblank eventAnder Conselvan de Oliveira1-1/+8
When using the atomic API, one request can span multiple CRTCs, however one event is generated per CRTC. As we cannot disambiguate the CRTC with user data (since we only have one piece of user data to pass in), newer kernels can include the CRTC ID in the page flip event. Add a new vfunc to dispatch vblank events carrying a CRTC ID to clients who negotiate a higher interface version. [daniels: Rebased, include new cap, call page_flip_handler if it is set but page_flip_handler2 isn't even on newer contexts, write a commit message.] v2: Split into separate commit. Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com> Signed-off-by: Daniel Stone <daniels@collabora.com> Reviewed-by: Maarten Lankhorst <maarten.lankhorst@intel.com>
2017-01-20xf86drm: Add platform and host1x bus supportThierry Reding1-2/+28
ARM SoCs usually have their DRM/KMS devices on the platform bus, so add support for that to enable these devices to be used with the drmDevice infrastructure. NVIDIA Tegra SoCs have an additional level in the hierarchy and DRM/KMS devices can also be on the host1x bus. This is mostly equivalent to the platform bus. v4: - continue on error to process platform or host1x device v3: - guard Linux-specific sysfs parsing code with #ifdef __linux__ v2: - be careful not to overflow the full name - read compatible strings into device info Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com> Signed-off-by: Thierry Reding <treding@nvidia.com>
2017-01-20xf86drm: Add USB supportThierry Reding1-0/+13
Allow DRM/KMS devices hosted on USB to be detected by the drmDevice infrastructure. v4: - continue on error to process USB devices v3: - guard Linux-specific sysfs parsing code with #ifdef __linux__ v2: - make sysfs_uevent_get() more flexible using a format string Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com> Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
2016-12-05xf86drm: introduce drmGetDevice[s]2Emil Velikov1-0/+4
Relative to the original version, here one can provide a flags bitmask. Currently only DRM_DEVICE_IGNORE_PCI_REVISION is supported. Implementation detail: If it's set, we will only parse the separate sysfs files and we won't touch the config one. The latter awakes the device (causing delays) which is the core reason why this API was introduced. v2: - Initialize revision to 0xff if it's unread. - Change DRM_DEVICE_IGNORE_PCI_REVISION to DRM_DEVICE_GET_PCI_REVISION - Add explicit note that drmGetDevice[s]2 does not retrieve the revision by default. v3: - Correctly fold drmParsePciDeviceInfo() hunk in this patch. Cc: Michel Dänzer <michel@daenzer.net> Cc: Nicolai Hähnle <nhaehnle@gmail.com> Cc: Mauro Santos <registo.mailling@gmail.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98502 Signed-off-by: Emil Velikov <emil.velikov@collabora.com> Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
2016-11-22xf86drm: introduce drmGetDeviceNameFromFd2Emil Velikov1-0/+5
The original version considered only card devices, while this will pick the device/node name regardless - card, control, renderD, other... Current implementation is "linux" specific, in such that it relies on sysfs/uevent file. At the same time this gives us the flexibility to support any nodes even future ones, as long as they're within DRM_MAJOR. Shamelessly copied from mesa, latter by: Gary Wong <gtw@gnu.org> Signed-off-by: Emil Velikov <emil.velikov@collabora.com> Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
2015-09-21xf86drm: add drm{Get,Free}DeviceEmil Velikov1-0/+3
Similar interface to the *Devices() ones but they obtain/free the information of the opened device (as given by its fd). Note there is a fair bit of duplication between the two Get functions, and anyone interested is more than welcome to consolidate it. Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Acked-by: Alex Deucher <alexander.deucher@amd.com>
2015-08-24drm: add interface to get drm devices on the system v3Emil Velikov1-0/+34
For mutiple GPU support, the devices on the system should be enumerated to get necessary information about each device, and the drmGetDevices interface is added for this. Currently only PCI devices are supported for the enumeration. Typical usage: int count; drmDevicePtr *foo; count = drmGetDevices(NULL, 0); foo = calloc(count, sizeof(drmDevicePtr)); count = drmGetDevices(foo, count); /* find proper device, open correct device node, etc */ drmFreeDevices(foo, count); free(foo); v2: [Jammy Zhou] - return a list of devices, rather than nodes v3: [Jammy Zhou] - fix the signed extension for PCI device info Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Signed-off-by: Jammy Zhou <Jammy.Zhou@amd.com>
2015-08-10remove usage of 'c_plusplus' preprocessor macroTapani Pälli1-2/+2
Use only __cplusplus which is supported by the C++ standard. Signed-off-by: Tapani Pälli <tapani.palli@intel.com> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
2015-07-29xf86drm: use the correct device minor names on OpenBSDJonathan Gray1-0/+7
Add defines for the device minor names and make use of them in drmGetMinorName() so the correct paths will be used on OpenBSD. v2: don't add new defines to xf86drm.h to keep them out of the API as requested by Emil. Signed-off-by: Jonathan Gray <jsg@jsg.id.au> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
2015-06-29Revert "Add device enumeration interface (v4)"Emil Velikov1-19/+0
This reverts commit fde4969176822fe54197b6baa78f8b0ef900baba. The commit adds an API that does not seem flexible enough to be used in current open-source projects. Additionally it adds a hidden dependency of libudev, which when used in mesa caused grief when combined with Steam('s runtime). Let's revert this for now and add a tweaked API later on that can be used in mesa/xserver. Cc: Frank Min <frank.min@amd.com> Cc: Christian König <christian.koenig@amd.com> Cc: Alex Deucher <alexander.deucher@amd.com> Cc: Jammy Zhou <Jammy.Zhou@amd.com>
2015-05-26Add device enumeration interface (v4)frank1-0/+19
Add an interface for enumerating PCI devices on a system. v3: switch to udev/sysfs for the enumeration v4: fix warnings Signed-off-by: Frank Min <frank.min@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com>
2015-03-10drm: add drmGet(Primary|Render)DeviceNameFromFd functionsEmil Velikov1-0/+3
Currently most places assume reliable primary(master) <> render node mapping. Although this may work in some cases, it is not correct. Add a couple of helpers that hide the details and provide the name of the master or render device name, given an fd. The latter may belong to either the master, control or render node device. v2: - Rename Device and Primary to Master (aka the /dev/dri/cardX device). - Check for the file via readdir_r() rather than stat(). - Wrap the check into a single function. - Return NULL for non-linux platforms. v3: - Don't segfault if name is NULL. - Update function names, as suggested by Frank Binns. v4: - Update commit message to reflect the function name changes. Cc: Frank Binns <frank.binns@imgtec.com> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Cc: David Herrmann <dh.herrmann@googlemail.com> Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Reviewed-by: Frank Binns <frank.binns@imgtec.com>
2015-02-23Add new drmGetNodeTypeFromFd functionFrank Binns1-0/+1
Add a helper function that returns the type of device node from an fd. Signed-off-by: Frank Binns <frank.binns@imgtec.com> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
2015-02-12Add new drmOpenOnceWithType function (v2)Jammy Zhou1-0/+1
v2: call drmOpenOnceWithType in drmOpenOnce, and drop unused param for drmOpenOnceWithType Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Jammy Zhou <Jammy.Zhou@amd.com>
2015-02-12Add new drmOpenWithType function (v4)Jammy Zhou1-1/+8
v2: Add drmGetMinorBase, and call drmOpenWithType in drmOpen v3: Pass 'type' to drmOpenByBusid and drmOpenDevice in drmOpenByName v4: Renumber node type definitions, and return -1 for unsupported type Signed-off-by: Jammy Zhou <Jammy.Zhou@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> (v3) Reviewed-by: Frank Binns <frank.binns@imgtec.com>
2015-01-23Add new drmOpenRender functionFrank Binns1-0/+2
Add a new function, drmOpenRender, that can be used to open render nodes. This can be used in the same way that drmOpenControl is used to open control nodes. Signed-off-by: Frank Binns <frank.binns@imgtec.com> Reviewed-by: Rob Clark <robdclark@gmail.com>
2014-04-17Mark functions printf-like where possibleThierry Reding1-1/+1
These functions all take a format string and either a list of variable arguments or a va_list. Use the new DRM_PRINTFLIKE macro to tell the compiler about it so that the arguments can be checked against the format string. Reviewed-by: Eric Anholt <eric@anholt.net> Signed-off-by: Thierry Reding <treding@nvidia.com>
2014-01-13Mark debug_print with __attribute__ ((format(__printf__, 1, 0)))Keith Packard1-1/+7
the drmServerInfo member, debug_print, takes a printf format string and varargs list. Tell the compiler about it. Signed-off-by: Keith Packard <keithp@keithp.com> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
2013-09-30drm: Introduce a drmSetClientCap() wrapperDamien Lespiau1-0/+2
That wraps around the new DRM_SET_CLIENT_CAP ioctl. v2: SET_CAP -> SET_CLIENT_CAP renaming Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2012-07-16libdrm: add prime fd->handle and handle->fd interfacesDave Airlie1-0/+3
These are just basic ioctl wrappers around the prime ioctls, along with the capability reporting. Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
2011-09-23xf86drm.h : wrap C code for C++ compilation/linkingTapani Pälli1-0/+8
To enable usage of xf86drm.h from C++ programs/frameworks. Signed-off-by: Tapani Pälli <tapani.palli@intel.com> [ickle: also wrap xf86drmMode.h] Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-04-04libdrm: (revised) vblank wait on crtc > 1Ilija Hadzic1-0/+3
Hi Alex, Enclosed is a revised version of the patch sent on Mar 18, against the master branch of the drm userspace (i.e. libdrm). Details summarised in this thread: http://lists.freedesktop.org/archives/dri-devel/2011-March/009499.html This patch reconciles libdrm with the the kernel change that Dave pushed this morning. It *supersedes* the previously sent patch (i.e. apply it to the master branch as it exists at the time of this writing, not as an incremental patch to the one sent previously). Regards, Ilija Signed-off-by: Ilija Hadzic <ihadzic@research.bell-labs.com> Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
2011-03-04Implement drmGetCap() to query device/driver capabilitiesBen Skeggs1-0/+1
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2009-12-03Bump event context structure version for page flippingJesse Barnes1-1/+1
2009-12-03Merge branch 'pageflip' of git://people.freedesktop.org/~jbarnes/drmJesse Barnes1-0/+6
Conflicts: include/drm/drm.h - RMFB had its signature changed to avoid uint32_t