diff options
author | Damien Lespiau <damien.lespiau@intel.com> | 2014-07-08 15:23:05 +0100 |
---|---|---|
committer | Damien Lespiau <damien.lespiau@intel.com> | 2014-07-11 15:12:21 +0100 |
commit | b2eb48576f2422591fe338e21a46757b2e331985 (patch) | |
tree | 4850838261f90b262ec19c7d7a5cda43e8b77ad8 /lib | |
parent | 143c3a757521de907889803b011ac2bb308b4e1a (diff) |
igt_kms: Add a way to query of the plane supports rotation
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/igt_kms.c | 7 | ||||
-rw-r--r-- | lib/igt_kms.h | 10 |
2 files changed, 17 insertions, 0 deletions
diff --git a/lib/igt_kms.c b/lib/igt_kms.c index f50f27f6..850f6e28 100644 --- a/lib/igt_kms.c +++ b/lib/igt_kms.c @@ -696,6 +696,7 @@ void igt_display_init(igt_display_t *display, int drm_fd) /* add the planes that can be used with that pipe */ for (j = 0; j < plane_resources->count_planes; j++) { drmModePlane *drm_plane; + uint64_t prop_value; drm_plane = drmModeGetPlane(display->drm_fd, plane_resources->planes[j]); @@ -736,6 +737,12 @@ void igt_display_init(igt_display_t *display, int drm_fd) plane->pipe = pipe; plane->drm_plane = drm_plane; + + get_plane_property(display, drm_plane->plane_id, + "rotation", + &plane->rotation_property, + &prop_value); + plane->rotation = (igt_rotation_t)prop_value; } if (display->has_universal_planes) { diff --git a/lib/igt_kms.h b/lib/igt_kms.h index 07c24183..ef87ee1e 100644 --- a/lib/igt_kms.h +++ b/lib/igt_kms.h @@ -148,8 +148,10 @@ typedef struct { /*< private >*/ igt_pipe_t *pipe; int index; + /* capabilities */ unsigned int is_primary : 1; unsigned int is_cursor : 1; + /* state tracking */ unsigned int fb_changed : 1; unsigned int position_changed : 1; unsigned int panning_changed : 1; @@ -159,6 +161,9 @@ typedef struct { */ drmModePlane *drm_plane; struct igt_fb *fb; + + uint32_t rotation_property; + /* position within pipe_src_w x pipe_src_h */ int crtc_x, crtc_y; /* panning offset within the fb */ @@ -210,6 +215,11 @@ drmModeModeInfo *igt_output_get_mode(igt_output_t *output); void igt_output_set_pipe(igt_output_t *output, enum pipe pipe); igt_plane_t *igt_output_get_plane(igt_output_t *output, enum igt_plane plane); +static inline bool igt_plane_supports_rotation(igt_plane_t *plane) +{ + return plane->rotation_property != 0; +} + void igt_plane_set_fb(igt_plane_t *plane, struct igt_fb *fb); void igt_plane_set_position(igt_plane_t *plane, int x, int y); void igt_plane_set_panning(igt_plane_t *plane, int x, int y); |