diff --git a/src/lib/ecore_drm2/Ecore_Drm2.h b/src/lib/ecore_drm2/Ecore_Drm2.h index 4d10e0d3a6..6e2dd1fafc 100644 --- a/src/lib/ecore_drm2/Ecore_Drm2.h +++ b/src/lib/ecore_drm2/Ecore_Drm2.h @@ -411,6 +411,16 @@ EAPI Eina_Bool ecore_drm2_device_vt_set(Ecore_Drm2_Device *device, int vt); */ EAPI Eina_Bool ecore_drm2_device_prefer_shadow(Ecore_Drm2_Device *device); +/** + * Get the default depth & bpp from a given device + * + * @param device + * + * @ingroup Ecore_Drm2_Device_Group + * @since 1.25 + */ +EAPI void ecore_drm2_device_preferred_depth_get(Ecore_Drm2_Device *device, int *depth, int *bpp); + /** * @defgroup Ecore_Drm2_Output_Group Drm output functions * diff --git a/src/lib/ecore_drm2/ecore_drm2_device.c b/src/lib/ecore_drm2/ecore_drm2_device.c index 7602114453..77498d806e 100644 --- a/src/lib/ecore_drm2/ecore_drm2_device.c +++ b/src/lib/ecore_drm2/ecore_drm2_device.c @@ -1,5 +1,9 @@ #include "ecore_drm2_private.h" +#ifndef DRM_CAP_DUMB_PREFERRED_DEPTH +# define DRM_CAP_DUMB_PREFERRED_DEPTH 0x3 +#endif + #ifndef DRM_CAP_DUMB_PREFER_SHADOW # define DRM_CAP_DUMB_PREFER_SHADOW 0x4 #endif @@ -883,6 +887,22 @@ ecore_drm2_device_prefer_shadow(Ecore_Drm2_Device *device) return EINA_FALSE; } +EAPI void +ecore_drm2_device_preferred_depth_get(Ecore_Drm2_Device *device, int *depth, int *bpp) +{ + uint64_t caps; + int ret; + + EINA_SAFETY_ON_NULL_RETURN(device); + + ret = sym_drmGetCap(device->fd, DRM_CAP_DUMB_PREFERRED_DEPTH, &caps); + if (ret == 0) + { + if (depth) *depth = caps; + if (bpp) *bpp = caps; + } +} + EAPI int ecore_drm2_device_fd_get(Ecore_Drm2_Device *device) {