aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/ecore_drm2
diff options
context:
space:
mode:
authorChris Michael <cp.michael@samsung.com>2017-01-18 09:46:39 -0500
committerChris Michael <cp.michael@samsung.com>2017-01-18 09:48:01 -0500
commit639ad420aa9b4f4f95a50c65676a011657277646 (patch)
tree5bfca6eaa17947e0b23b09d7278ffd728878aae7 /src/lib/ecore_drm2
parenteolian: add syntax for overridding docs in implements (diff)
downloadefl-639ad420aa9b4f4f95a50c65676a011657277646.tar.gz
ecore-drm2: Add API to determine if a device prefers shadow buffers
Small patch to add a new API function that can be called to determine if a given drm device prefers the use of shadow buffers. This API will be used later to provide some optimizations on various platforms. NB: Requested by Derek @feature Signed-off-by: Chris Michael <cp.michael@samsung.com>
Diffstat (limited to 'src/lib/ecore_drm2')
-rw-r--r--src/lib/ecore_drm2/Ecore_Drm2.h12
-rw-r--r--src/lib/ecore_drm2/ecore_drm2_device.c20
2 files changed, 32 insertions, 0 deletions
diff --git a/src/lib/ecore_drm2/Ecore_Drm2.h b/src/lib/ecore_drm2/Ecore_Drm2.h
index 2b87981da5..89263145e9 100644
--- a/src/lib/ecore_drm2/Ecore_Drm2.h
+++ b/src/lib/ecore_drm2/Ecore_Drm2.h
@@ -345,6 +345,18 @@ EAPI void ecore_drm2_device_calibrate(Ecore_Drm2_Device *device, int w, int h);
EAPI Eina_Bool ecore_drm2_device_vt_set(Ecore_Drm2_Device *device, int vt);
/**
+ * Get if a given device prefers the use of shadow buffers
+ *
+ * @param device
+ *
+ * @return EINA_TRUE if preferred, EINA_FALSE otherwise
+ *
+ * @ingroup Ecore_Drm2_Device_Group
+ * @since 1.19
+ */
+EAPI Eina_Bool ecore_drm2_device_prefer_shadow(Ecore_Drm2_Device *device);
+
+/**
* @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 10294af626..a6e6d22cb2 100644
--- a/src/lib/ecore_drm2/ecore_drm2_device.c
+++ b/src/lib/ecore_drm2/ecore_drm2_device.c
@@ -8,6 +8,10 @@
# define DRM_CAP_CURSOR_HEIGHT 0x9
#endif
+#ifndef DRM_CAP_DUMB_PREFER_SHADOW
+# define DRM_CAP_DUMB_PREFER_SHADOW 0x4
+#endif
+
#ifdef HAVE_ATOMIC_DRM
# include <sys/utsname.h>
#endif
@@ -816,3 +820,19 @@ ecore_drm2_device_vt_set(Ecore_Drm2_Device *device, int vt)
return elput_manager_vt_set(device->em, vt);
}
+
+EAPI Eina_Bool
+ecore_drm2_device_prefer_shadow(Ecore_Drm2_Device *device)
+{
+ uint64_t caps;
+ int ret;
+
+ EINA_SAFETY_ON_NULL_RETURN_VAL(device, EINA_FALSE);
+ EINA_SAFETY_ON_TRUE_RETURN_VAL((device->fd < 0), EINA_FALSE);
+
+ ret = sym_drmGetCap(device->fd, DRM_CAP_DUMB_PREFER_SHADOW, &caps);
+ if ((ret == 0) && (caps == 1))
+ return EINA_TRUE;
+ else
+ return EINA_FALSE;
+}