Re: Add new DIRTY fb flags to pass interlaced alternate fields

2018-09-19 Thread Satish Nagireddy
Hi Daniel,

Thanks a lot for the reply.
Could you please give little more details on how "atomic modesetting"
will help this?
As I have to pass field type with every buffer, are there any existing
flags or can I add new flags in drm_mode_atomic struct?

Regards,
Satish
On Mon, 17 Sep 2018 at 11:59, Daniel Stone  wrote:
>
> Hi Satish,
>
> On Fri, 7 Sep 2018 at 23:04, Satish Nagireddy
>  wrote:
> > The requirement is to render interlaced alternate buffers. In case of
> > alternate, top field and bottom field are in two different buffers.
> >
> > The question is, can we pass existing flags DRM_MODE_PRESENT_TOP_FIELD
> > and DRM_MODE_PRESENT_TOP_FIELD to DRM_IOCTL_MODE_SETPLANE ioctl?
>
> Yes, if the driver implements it. No in-tree driver implements it, and
> the core does not pass along or even check the flags, so you would
> have to modify the DRM core in order to implement this. This makes the
> userspace depend on a specific driver, but this is already the case
> for setplane, as the pre-atomic interface is hopelessly underspecified
> wrt timing etc, which differs massively between drivers. We recommend
> not using it.
>
> > But in case if urrent frame out of display range, application
> > will invoke DRM_IOCTL_MODE_PAGE_FLIP ioctl. So, it is not guaranteed
> > that application will always call setplane(), it may also call page_flip().
> > Then we will have to introduce two more flags to pass with page_flip()
> > ioctl, which is complicating things.
>
> Yes, that's correct.
>
> > Background of DRM_IOCTL_MODE_DIRTYFB ioctl: This ioctl is defined, so
> > that userspace can notify the driver that an area of framebuffer has
> > changed and should be flushed to display hardware.
> >
> > The proposed solution is to introduce new dirty fb flags, so that userspace
> > can pass them with every alternate field buffer and the same is reached
> > display hardware. This patch adds new dirty framebuffer flags, so that
> > application can pass interlaced alternate field information to driver.
>
> If you're adding two new flags anyway, why not just add them to
> pageflip? DirtyFB is not required when pageflipping, and is mostly
> only intended for single-buffered usecases, which this is not. It is
> not required to be used in pageflipping pipelines, and making people
> use DirtyFB in order to specify frame order is quite strange.
>
> Another place where you could specify the field order would be in
> AddFB, which was discussed in this thread:
> https://lists.freedesktop.org/archives/dri-devel/2016-March/thread.html#102161
>
> In any case, I would very much recommend using atomic modesetting both
> within your driver and also within GStreamer, as this solves many
> other issues at the same time.
>
> Cheers,
> Daniel
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: Add new DIRTY fb flags to pass interlaced alternate fields

2018-09-17 Thread Daniel Stone
Hi Satish,

On Fri, 7 Sep 2018 at 23:04, Satish Nagireddy
 wrote:
> The requirement is to render interlaced alternate buffers. In case of
> alternate, top field and bottom field are in two different buffers.
>
> The question is, can we pass existing flags DRM_MODE_PRESENT_TOP_FIELD
> and DRM_MODE_PRESENT_TOP_FIELD to DRM_IOCTL_MODE_SETPLANE ioctl?

Yes, if the driver implements it. No in-tree driver implements it, and
the core does not pass along or even check the flags, so you would
have to modify the DRM core in order to implement this. This makes the
userspace depend on a specific driver, but this is already the case
for setplane, as the pre-atomic interface is hopelessly underspecified
wrt timing etc, which differs massively between drivers. We recommend
not using it.

> But in case if urrent frame out of display range, application
> will invoke DRM_IOCTL_MODE_PAGE_FLIP ioctl. So, it is not guaranteed
> that application will always call setplane(), it may also call page_flip().
> Then we will have to introduce two more flags to pass with page_flip()
> ioctl, which is complicating things.

Yes, that's correct.

> Background of DRM_IOCTL_MODE_DIRTYFB ioctl: This ioctl is defined, so
> that userspace can notify the driver that an area of framebuffer has
> changed and should be flushed to display hardware.
>
> The proposed solution is to introduce new dirty fb flags, so that userspace
> can pass them with every alternate field buffer and the same is reached
> display hardware. This patch adds new dirty framebuffer flags, so that
> application can pass interlaced alternate field information to driver.

If you're adding two new flags anyway, why not just add them to
pageflip? DirtyFB is not required when pageflipping, and is mostly
only intended for single-buffered usecases, which this is not. It is
not required to be used in pageflipping pipelines, and making people
use DirtyFB in order to specify frame order is quite strange.

Another place where you could specify the field order would be in
AddFB, which was discussed in this thread:
https://lists.freedesktop.org/archives/dri-devel/2016-March/thread.html#102161

In any case, I would very much recommend using atomic modesetting both
within your driver and also within GStreamer, as this solves many
other issues at the same time.

Cheers,
Daniel
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel