diff --git a/src/lib/ecore_drm/Ecore_Drm.h b/src/lib/ecore_drm/Ecore_Drm.h index 5c50f1022d..66ac7fe94b 100644 --- a/src/lib/ecore_drm/Ecore_Drm.h +++ b/src/lib/ecore_drm/Ecore_Drm.h @@ -34,6 +34,13 @@ extern "C" { # endif +# define ECORE_DRM_PLANE_ROTATION_NORMAL 1 +# define ECORE_DRM_PLANE_ROTATION_90 2 +# define ECORE_DRM_PLANE_ROTATION_180 4 +# define ECORE_DRM_PLANE_ROTATION_270 8 +# define ECORE_DRM_PLANE_ROTATION_REFLECT_X 16 +# define ECORE_DRM_PLANE_ROTATION_REFLECT_Y 32 + typedef enum _Ecore_Drm_Evdev_Capabilities { EVDEV_KEYBOARD = (1 << 0), @@ -153,6 +160,13 @@ struct _Ecore_Drm_Event_Output Eina_Bool plug : 1; }; +typedef enum _Ecore_Drm_Plane_Type +{ + ECORE_DRM_PLANE_TYPE_OVERLAY, + ECORE_DRM_PLANE_TYPE_PRIMARY, + ECORE_DRM_PLANE_TYPE_CURSOR +} Ecore_Drm_Plane_Type; + /* opaque structure to represent a drm device */ typedef struct _Ecore_Drm_Device Ecore_Drm_Device; @@ -183,6 +197,10 @@ typedef struct _Ecore_Drm_Sprite Ecore_Drm_Sprite; /* structure to inform drm activation state */ typedef struct _Ecore_Drm_Event_Activate Ecore_Drm_Event_Activate; +/* opaque structure to represent a drm hardware plane */ +/** @since 1.18 */ +typedef struct _Ecore_Drm_Plane Ecore_Drm_Plane; + /* structure to inform drm output plug events */ /** @since 1.14 */ typedef struct _Ecore_Drm_Event_Output Ecore_Drm_Event_Output; diff --git a/src/lib/ecore_drm/ecore_drm_private.h b/src/lib/ecore_drm/ecore_drm_private.h index 1f51d3b7df..de78d6d307 100644 --- a/src/lib/ecore_drm/ecore_drm_private.h +++ b/src/lib/ecore_drm/ecore_drm_private.h @@ -106,10 +106,20 @@ typedef struct _Ecore_Drm_Backlight Ecore_Drm_Backlight_Type type; } Ecore_Drm_Backlight; +struct _Ecore_Drm_Plane +{ + int id; + unsigned int rotation; + unsigned int rotation_map[6]; + unsigned int supported_rotations; + Ecore_Drm_Plane_Type type; +}; + struct _Ecore_Drm_Output { Ecore_Drm_Device *dev; unsigned int crtc_id; + unsigned int crtc_index; unsigned int conn_id; unsigned int conn_type; drmModeCrtcPtr crtc; @@ -125,6 +135,10 @@ struct _Ecore_Drm_Output Ecore_Drm_Output_Mode *current_mode; Eina_List *modes; + unsigned int primary_plane_id; + unsigned int rotation_prop_id; + Eina_List *planes; + unsigned char *edid_blob; struct