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>
This commit is contained in:
Chris Michael 2017-01-18 09:46:39 -05:00
parent 5f8172a589
commit 639ad420aa
2 changed files with 32 additions and 0 deletions

View File

@ -344,6 +344,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
*

View File

@ -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;
}