From: Eric Anholt <eric@anholt.net>
To: Michael Zoran <mzoran@crowfest.net>,
Tomasz Figa <tfiga@chromium.org>,
helen.koike@collabora.com
Cc: "Stéphane Marchesin" <marcheu@google.com>,
"Sean Paul" <seanpaul@google.com>,
"Gustavo Padovan" <gustavo.padovan@collabora.com>,
"David Airlie" <airlied@linux.ie>,
dri-devel <dri-devel@lists.freedesktop.org>,
"Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>,
"open list:ARM/Rockchip SoC..."
<linux-rockchip@lists.infradead.org>,
"list@263.net:IOMMU DRIVERS <iommu@lists.linux-foundation.org>,\
Joerg Roedel <joro@8bytes.org>,
" <iommu@lists.linux-foundation.org>,
"Enric Balletbo i Serra" <enric.balletbo@collabora.com>,
"Boris Brezillon" <boris.brezillon@bootlin.com>,
kernel@collabora.com,
"list@263.net:IOMMU DRIVERS <iommu@lists.linux-foundation.org>,
Joerg Roedel <joro@8bytes.org>,"
<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH v3] drm/rockchip: update cursors asynchronously through atomic.
Date: Mon, 26 Nov 2018 12:36:03 -0800 [thread overview]
Message-ID: <87o9abbmq4.fsf@anholt.net> (raw)
In-Reply-To: <1d10a4323a49ca09bbb7dc865aaaf5b8c5e3b3d5.camel@crowfest.net>
[-- Attachment #1.1: Type: text/plain, Size: 2463 bytes --]
Michael Zoran <mzoran@crowfest.net> writes:
> On Fri, 2018-11-23 at 11:27 +0900, Tomasz Figa wrote:
>>
>> The point here is not about setting and resetting the plane->fb
>> pointer. It's about what happens inside
>> drm_atomic_set_fb_for_plane().
>>
>> It calls drm_framebuffer_get() for the new fb and
>> drm_framebuffer_put() for the old fb. In result, if the fb changes,
>> the old fb, which had its reference count incremented in the atomic
>> commit that set it to the plane before, has its reference count
>> decremented. Moreover, if the new reference count becomes 0,
>> drm_framebuffer_put() will immediately free the buffer.
>>
>> Freeing a buffer when the hardware is still scanning out of it isn't
>> a
>> good idea, is it?
>
> No, it's not. But the board I submitted the patch for doesn't have
> anything like hot swapable ram. The ram access is still going to work,
> just it might display something it shouldn't. Say for example if that
> frame buffer got reused by somethig else and filled with new data in
> the very small window.
>
> But yes, I agree the best solution would be to not release the buffer
> until the next vblank.
>
> Perhaps a good solution would be for the DRM api to have the concept of
> a deferred release? Meaning if the put() call just added the frame
> buffer to a list that DRM core could walk during the vblank. That
> might be better then every single driver trying to work up a custom
> solution.
>
>> The vc4 driver seems to be able to program the hardware to switch the
>> scanout to the new buffer immediately:
>>
>> https://elixir.bootlin.com/linux/v4.20-rc3/source/drivers/gpu/drm/vc4/vc4_plane.c#L794
>>
>> Although I wonder if there isn't still a tiny race there - the
>> hardware may have just started refilling the FIFO from the old
>> address. Still, if the FIFO is small, the FIFO refill operation may
>> be
>> much shorter than it takes for the kernel code to actually free the
>> buffer. Eric and Michael, could you confirm?
>>
>
> I don't have those boards anymore, and I don't have access to any
> technical documentation on the GPU so I can't really add much here.
> Eric can probably provide the best information.
I don't think I understood my scanout hardware well enough when I
started on the async update stuff for rpi. vc4 probably needs to wait
until the HW starts scanning out a new line before letting the old BO
get freed.
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]
[-- Attachment #2: Type: text/plain, Size: 160 bytes --]
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2018-11-26 20:36 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-19 19:08 [PATCH v3] drm/rockchip: update cursors asynchronously through atomic Helen Koike
2018-11-20 6:48 ` Tomasz Figa
2018-11-22 23:30 ` Helen Koike
2018-11-23 2:27 ` Tomasz Figa
2018-11-23 4:58 ` Michael Zoran
2018-11-23 5:35 ` Tomasz Figa
2018-11-26 20:36 ` Eric Anholt [this message]
2018-11-26 21:41 ` Boris Brezillon
2018-11-27 7:56 ` Daniel Vetter
2018-11-26 23:54 ` Gustavo Padovan
2018-11-27 7:54 ` Tomasz Figa
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=87o9abbmq4.fsf@anholt.net \
--to=eric@anholt.net \
--cc=airlied@linux.ie \
--cc=boris.brezillon@bootlin.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=enric.balletbo@collabora.com \
--cc=gustavo.padovan@collabora.com \
--cc=helen.koike@collabora.com \
--cc=iommu@lists.linux-foundation.org \
--cc=kernel@collabora.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=marcheu@google.com \
--cc=mzoran@crowfest.net \
--cc=seanpaul@google.com \
--cc=tfiga@chromium.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox