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
next prev parent 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.