summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Michael <devilhorns@comcast.net>2020-05-07 11:28:05 -0400
committerChristopher Michael <devilhorns@comcast.net>2020-05-15 10:45:56 -0400
commitf3c4692221892da6e500deb66ccd6087e8857691 (patch)
treea5a00a96a07194a1bcea11d231bff85fad34c57f
parent5f654404d01509e684c1a1998ed8bd25dd67dae9 (diff)
downloadefl-f3c4692221892da6e500deb66ccd6087e8857691.tar.gz
ecore-drm2: Add API function to return default depth
Rather than hard-coding depth & bpp in the evas drm engines, we can use this function to return the default depth & bpp. @feature
-rw-r--r--src/lib/ecore_drm2/Ecore_Drm2.h10
-rw-r--r--src/lib/ecore_drm2/ecore_drm2_device.c20
2 files changed, 30 insertions, 0 deletions
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
@@ -412,6 +412,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
*
* Functions that deal with setup of outputs
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)
{