All of lore.kernel.org
 help / color / mirror / Atom feed
From: Archit Taneja <archit@ti.com>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: "dri-devel@lists.freedesktop.org" <dri-devel@lists.freedesktop.org>
Subject: Re: Synchronization between a crtc mode_set and page_flip?
Date: Fri, 4 Apr 2014 12:51:12 +0530	[thread overview]
Message-ID: <533E5D68.6040008@ti.com> (raw)
In-Reply-To: <20140403212459.GR7225@phenom.ffwll.local>

On Friday 04 April 2014 02:54 AM, Daniel Vetter wrote:
> On Thu, Apr 03, 2014 at 02:28:32PM +0530, Archit Taneja wrote:
>> On Wednesday 02 April 2014 06:41 PM, Rob Clark wrote:
>>> On Wed, Apr 2, 2014 at 5:52 AM, Archit Taneja <archit@ti.com> wrote:
>>>> Hi,
>>>>
>>>> I was trying to figure out how we are supposed to manage synchronization
>>>> between a mode_set and a page_flip called on a crtc.
>>>>
>>>> Say, if a mode_set is immediately followed by a page_flip. The driver can't
>>>> process the page_flip straight away since the hardware is still completing
>>>> the mode_set.
>>>
>>> I guess setcrtc is expected to be synchronous(ish).. so a lot of
>>> userspace won't expect the first pageflip to fail with -EBUSY.
>>
>> Okay, thanks. I guess having setcrtc synchronous isn't that bad.
>
> Yeah, atm I think the rules are that pageflip can only return -EBUSY if
> there's still a pageflip ongoing. Everything else is presumed to be at
> least implicitly ordered, so if your hw can do async modesets then you
> need to synchronize. Also if there's still a pageflip outstanding you need
> to wait for that to complete in your set_config callback first (usually in
> the set_base or the crtc->disable/prepare hooks when using the crtc
> helpers).

Thanks for the info. I didn't realize that the prepare/commit hooks get 
executed when using drm_crtc_helper_set_mode() for the set_config helper.

Rob,

We disable the crtc in prepare, and enable it in commit.

If setcrtc changes the mode,  I don't see how apply worker can execute 
prepare() -> mode_set() -> commit() hooks in a row for the crtc 
drm_crtc_helper_set_mode(). We can't queue more than one 'apply' of the 
same entity. So the latter queues are bound to get rejected, I see 
omap_crtc_apply() bailing out for crtc's apply in this case.

I guess making prepare() and mode_set() wait for a vsync should fix 
this. Or, combining mode_set and commit as a single queue to apply 
should work too. Any suggestions?

Thanks,
Archit

  reply	other threads:[~2014-04-04  7:22 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-02  9:52 Synchronization between a crtc mode_set and page_flip? Archit Taneja
2014-04-02 13:11 ` Rob Clark
2014-04-03  8:58   ` Archit Taneja
2014-04-03 21:24     ` Daniel Vetter
2014-04-04  7:21       ` Archit Taneja [this message]
2014-04-04 11:54         ` Rob Clark

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=533E5D68.6040008@ti.com \
    --to=archit@ti.com \
    --cc=daniel@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.