diff --git a/src/lib/ecore_drm2/Ecore_Drm2.h b/src/lib/ecore_drm2/Ecore_Drm2.h index 2a972771ba..a7834c42db 100644 --- a/src/lib/ecore_drm2/Ecore_Drm2.h +++ b/src/lib/ecore_drm2/Ecore_Drm2.h @@ -742,6 +742,21 @@ EAPI Eina_Bool ecore_drm2_output_possible_crtc_get(Ecore_Drm2_Output *output, un */ EAPI void ecore_drm2_output_gamma_set(Ecore_Drm2_Output *output, uint16_t size, uint16_t *red, uint16_t *green, uint16_t *blue); +/** + * Get the supported rotations of a given output + * + * @param output + * + * @return An integer representing possible rotations, or -1 on failure + * + * @note This function will only return valid values if Atomic support + * is enabled as it requires hardware plane support. + * + * @ingroup Ecore_Drm2_Output_Group + * @since 1.19 + */ +EAPI int ecore_drm2_output_supported_rotations_get(Ecore_Drm2_Output *output); + /** * @defgroup Ecore_Drm2_Fb_Group Drm framebuffer functions * diff --git a/src/lib/ecore_drm2/ecore_drm2_device.c b/src/lib/ecore_drm2/ecore_drm2_device.c index a6e6d22cb2..0c5cb15254 100644 --- a/src/lib/ecore_drm2/ecore_drm2_device.c +++ b/src/lib/ecore_drm2/ecore_drm2_device.c @@ -454,6 +454,7 @@ _drm2_atomic_state_plane_fill(Ecore_Drm2_Plane_State *pstate, int fd) { int r = -1; + DBG("\t\t\tRotation: %s", prop->enums[k].name); if (!strcmp(prop->enums[k].name, "rotate-0")) r = ECORE_DRM2_ROTATION_NORMAL; else if (!strcmp(prop->enums[k].name, "rotate-90")) diff --git a/src/lib/ecore_drm2/ecore_drm2_outputs.c b/src/lib/ecore_drm2/ecore_drm2_outputs.c index c9f7dde024..055b63dfa9 100644 --- a/src/lib/ecore_drm2/ecore_drm2_outputs.c +++ b/src/lib/ecore_drm2/ecore_drm2_outputs.c @@ -1514,3 +1514,18 @@ ecore_drm2_output_gamma_set(Ecore_Drm2_Output *output, uint16_t size, uint16_t * red, green, blue) < 0) ERR("Failed to set gamma for Output %s: %m", output->name); } + +EAPI int +ecore_drm2_output_supported_rotations_get(Ecore_Drm2_Output *output) +{ + int ret = -1; + + EINA_SAFETY_ON_NULL_RETURN_VAL(output, -1); + +#ifdef HAVE_ATOMIC_DRM + if (_ecore_drm2_use_atomic) + ret = output->plane_state->supported_rotations; +#endif + + return ret; +}