devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=f3c4692221892da6e500deb66ccd6087e8857691

commit f3c4692221892da6e500deb66ccd6087e8857691
Author: Christopher Michael <[email protected]>
Date:   Thu May 7 11:28:05 2020 -0400

    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
---
 src/lib/ecore_drm2/Ecore_Drm2.h        | 10 ++++++++++
 src/lib/ecore_drm2/ecore_drm2_device.c | 20 ++++++++++++++++++++
 2 files changed, 30 insertions(+)

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)
 {

-- 


Reply via email to