On Mon, Sep 24, 2018 at 06:54:02PM +0000, Satish Kumar Nagireddy wrote: > This patch adds two new framebuffer flags, so that application can > communicate alternate interlaced field information to DRM. > > This patch also modifies the validation of framebuffer flags in DRM > core framework. This is to ensure that application is setting the > right framebuffer flags. > > Signed-off-by: Satish Kumar Nagireddy <satish.nagireddy.nagireddy@xxxxxxxxxx> Yeah as a draft this seems more reasonable. What we now need is fleshing out the full stack: - Full kernel-side implementation, including driver code. - igt testcase to validate all the corner-cases, e.g. how exactly does this interact with FB_INTERLACED? What happens if the client fails to supply the next field? - Userspace compositor/app driving this. See https://dri.freedesktop.org/docs/drm/gpu/drm-uapi.html#open-source-userspace-requirements for full details. Cheers, Daniel > --- > drivers/gpu/drm/drm_framebuffer.c | 3 ++- > include/uapi/drm/drm_mode.h | 2 ++ > 2 files changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/drm_framebuffer.c b/drivers/gpu/drm/drm_framebuffer.c > index 28a0108..d330256 100644 > --- a/drivers/gpu/drm/drm_framebuffer.c > +++ b/drivers/gpu/drm/drm_framebuffer.c > @@ -241,7 +241,8 @@ drm_internal_framebuffer_create(struct drm_device *dev, > struct drm_framebuffer *fb; > int ret; > > - if (r->flags & ~(DRM_MODE_FB_INTERLACED | DRM_MODE_FB_MODIFIERS)) { > + if (r->flags & ~(DRM_MODE_FB_INTERLACED | DRM_MODE_FB_MODIFIERS | > + DRM_MODE_FB_ALTERNATE_TOP | DRM_MODE_FB_ALTERNATE_BOTTOM)) { > DRM_DEBUG_KMS("bad framebuffer flags 0x%08x\n", r->flags); > return ERR_PTR(-EINVAL); > } > diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h > index ce7efe2..b857ed4 100644 > --- a/include/uapi/drm/drm_mode.h > +++ b/include/uapi/drm/drm_mode.h > @@ -388,6 +388,8 @@ struct drm_mode_fb_cmd { > > #define DRM_MODE_FB_INTERLACED (1<<0) /* for interlaced framebuffers */ > #define DRM_MODE_FB_MODIFIERS (1<<1) /* enables ->modifer[] */ > +#define DRM_MODE_FB_ALTERNATE_TOP (1<<2) /* for alternate top field */ > +#define DRM_MODE_FB_ALTERNATE_BOTTOM (1<<3) /* for alternate bottom field */ > > struct drm_mode_fb_cmd2 { > __u32 fb_id; > -- > 2.7.4 > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel