On Wed, Feb 12, 2014 at 1:28 PM, Alex Deucher <alexdeucher@xxxxxxxxx> wrote: > Some hardware may not support standard 64x64 cursors. Add > a drm cap to query the cursor size from the kernel. Some examples > include radeon CIK parts (128x128 cursors) and armada (32x64 or 64x32). > This allows things like device specific ddxes to remove asics specific > logic and also allows xf86-video-modesetting to work properly with hw > cursors on this hardware. Default to 64 if the driver doesn't specify > a size. > > Signed-off-by: Alex Deucher <alexander.deucher@xxxxxxx> Reviewed-by: Rob Clark <robdclark@xxxxxxxxx> > --- > drivers/gpu/drm/drm_ioctl.c | 12 ++++++++++++ > include/drm/drm_crtc.h | 3 +++ > include/uapi/drm/drm.h | 2 ++ > 3 files changed, 17 insertions(+) > > diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c > index dffc836..f4dc9b7 100644 > --- a/drivers/gpu/drm/drm_ioctl.c > +++ b/drivers/gpu/drm/drm_ioctl.c > @@ -296,6 +296,18 @@ int drm_getcap(struct drm_device *dev, void *data, struct drm_file *file_priv) > case DRM_CAP_ASYNC_PAGE_FLIP: > req->value = dev->mode_config.async_page_flip; > break; > + case DRM_CAP_CURSOR_WIDTH: > + if (dev->mode_config.cursor_width) > + req->value = dev->mode_config.cursor_width; > + else > + req->value = 64; > + break; > + case DRM_CAP_CURSOR_HEIGHT: > + if (dev->mode_config.cursor_height) > + req->value = dev->mode_config.cursor_height; > + else > + req->value = 64; > + break; > default: > return -EINVAL; > } > diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h > index 71727b6..8f3dee0 100644 > --- a/include/drm/drm_crtc.h > +++ b/include/drm/drm_crtc.h > @@ -907,6 +907,9 @@ struct drm_mode_config { > > /* whether async page flip is supported or not */ > bool async_page_flip; > + > + /* cursor size */ > + uint32_t cursor_width, cursor_height; > }; > > #define obj_to_crtc(x) container_of(x, struct drm_crtc, base) > diff --git a/include/uapi/drm/drm.h b/include/uapi/drm/drm.h > index 3c9a833..b06c8ed 100644 > --- a/include/uapi/drm/drm.h > +++ b/include/uapi/drm/drm.h > @@ -619,6 +619,8 @@ struct drm_gem_open { > #define DRM_PRIME_CAP_EXPORT 0x2 > #define DRM_CAP_TIMESTAMP_MONOTONIC 0x6 > #define DRM_CAP_ASYNC_PAGE_FLIP 0x7 > +#define DRM_CAP_CURSOR_WIDTH 0x8 > +#define DRM_CAP_CURSOR_HEIGHT 0x9 > > /** DRM_IOCTL_GET_CAP ioctl argument type */ > struct drm_get_cap { > -- > 1.8.3.1 > > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/dri-devel _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel