From: Daniel Vetter <daniel@ffwll.ch>
To: "Michel Dänzer" <michel@daenzer.net>
Cc: "Peter Rosin" <peda@axentia.se>,
"Philippe Cornu" <philippe.cornu@st.com>,
"Christian König" <christian.koenig@amd.com>,
"Yannick Fertre" <yannick.fertre@st.com>,
"Gerd Hoffmann" <kraxel@redhat.com>,
"Daniel Vetter" <daniel.vetter@intel.com>,
"Alex Deucher" <alexander.deucher@amd.com>,
"Dave Airlie" <airlied@redhat.com>,
"Vincent Abriou" <vincent.abriou@st.com>,
"Ben Skeggs" <bskeggs@redhat.com>,
nouveau@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
virtualization@lists.linux-foundation.org,
amd-gfx@lists.freedesktop.org
Subject: Re: [Nouveau] [PATCH 01/11] drm/fb-helper: do a generic fb_setcmap helper in terms of crtc .gamma_set
Date: Wed, 21 Jun 2017 10:14:54 +0200 [thread overview]
Message-ID: <20170621081454.ymykfka5peelkqxp@phenom.ffwll.local> (raw)
In-Reply-To: <dfd961c1-2ca9-d85e-fc28-d873666b9bf3@daenzer.net>
On Wed, Jun 21, 2017 at 04:59:31PM +0900, Michel Dänzer wrote:
> On 21/06/17 04:38 PM, Daniel Vetter wrote:
> > On Tue, Jun 20, 2017 at 09:25:25PM +0200, Peter Rosin wrote:
> >> This makes the redundant fb helpers .load_lut, .gamma_set and .gamma_get
> >> totally obsolete.
> >>
> >> I think the gamma_store can end up invalid on error. But the way I read
> >> it, that can happen in drm_mode_gamma_set_ioctl as well, so why should
> >> this pesky legacy fbdev stuff be any better?
> >>
> >> drm_fb_helper_save_lut_atomic justs saves the gamma lut for later. However,
> >> it saves it to the gamma_store which should already be up to date with what
> >> .gamma_get would return and is thus a nop. So, zap it.
> >
> > Removing drm_fb_helper_save_lut_atomic should be a separate patch I
> > think.
> >
> >> Signed-off-by: Peter Rosin <peda@axentia.se>
>
> [...]
>
> >> @@ -1167,50 +1150,6 @@ void drm_fb_helper_set_suspend_unlocked(struct drm_fb_helper *fb_helper,
> >> }
> >> EXPORT_SYMBOL(drm_fb_helper_set_suspend_unlocked);
> >>
> >> -static int setcolreg(struct drm_crtc *crtc, u16 red, u16 green,
> >> - u16 blue, u16 regno, struct fb_info *info)
> >> -{
> >> - struct drm_fb_helper *fb_helper = info->par;
> >> - struct drm_framebuffer *fb = fb_helper->fb;
> >> -
> >> - if (info->fix.visual == FB_VISUAL_TRUECOLOR) {
> >
> > This case here seems gone, and it was also the pièce de résistance when I
> > tried tackling fbdev lut support. As far as I understand this stuff we do
> > not support FB_VISUAL_TRUECOLOR palette, and all that bitshifting here is
> > pointless. But I'm honestly not really clear.
> >
> > I think removing this case should also be a separate patch, and I'd very
> > much prefer that someone with some fbdev-clue would ack it.
>
> No need for anyone with fbdev-clue, just run fbset -i. :) fbcon uses a
> TRUECOLOR visual at depths > 8.
Then I understand even less what exactly this code does ... Should we keep
it? Is it just pure cargo-cult? Only needed when we'd change the color
depth of the fbdev buffer, which we never do at runtime?
> > It's a pre-existing bug, but should we also try to restore the fbdev lut
> > in drm_fb_helper_restore_fbdev_mode_unlocked()? Would be yet another bug,
> > but might be relevant for your use-case. Just try to run both an fbdev
> > application and some kms-native thing, and then SIGKILL the native kms
> > app.
> >
> > But since pre-existing not really required, and probably too much effort.
>
> I suspect something like that indeed needs to be done though. E.g.
> killing Xorg results in fbcon continuing to use the LUT set by Xorg.
Ok, the only trouble with that is atomic kms locking, which requires that
we can only do 1 commit per lock-holding time, and also
drm_modeset_lock_all is an evil hack and needs to be phased out. Two
solutions:
- We just update the lut after we've dropped the locks again in
restore_fbdev_mode.
- We need both a legacy path, in restore_fbdev_mode_legacy, and an atomic
path in restore_fbdev_mode_atomic. The latter cannot use the gamme_set
callback, since that would call drm_atomic_helper_legacy_gamma_set for
atomic drivers, which would result in two calls to drm_atomic_commit in
one critical sections. Instead that needs to open-code the logic in
drm_atomic_helper_legacy_gamma_set and integrate it into the overall
fbdev restore commit.
The 2nd option is a bit more typing, but much cleaner. It also fits better
into some of the refactoring plans I have (I want to get rid of
drm_modeset_lock_all in the fbdev emulation). And has the benefit of
giving drivers a bit more complex fbdev emulation atomic commits, which
would be good for testing I think.
Cheers, Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
next prev parent reply other threads:[~2017-06-21 8:15 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-20 19:25 [PATCH 00/11] improve the fb_setcmap helper Peter Rosin
2017-06-20 19:25 ` [PATCH 01/11] drm/fb-helper: do a generic fb_setcmap helper in terms of crtc .gamma_set Peter Rosin
2017-06-21 7:38 ` Daniel Vetter
2017-06-21 7:59 ` Michel Dänzer
2017-06-21 8:14 ` Daniel Vetter [this message]
2017-06-21 8:36 ` [Nouveau] " Michel Dänzer
2017-06-21 9:40 ` Peter Rosin
2017-06-22 6:36 ` Daniel Vetter
2017-06-22 8:48 ` Peter Rosin
2017-06-23 8:40 ` Daniel Vetter
2017-06-20 19:25 ` [PATCH 02/11] drm: amd: remove dead code and pointless local lut storage Peter Rosin
2017-06-20 19:25 ` [PATCH 03/11] drm: ast: " Peter Rosin
2017-06-20 19:25 ` [PATCH 04/11] drm: cirrus: " Peter Rosin
2017-06-20 19:25 ` [PATCH 05/11] dmr: gma500: " Peter Rosin
2017-06-20 19:25 ` [PATCH 06/11] drm: i915: " Peter Rosin
2017-06-20 19:25 ` [PATCH 07/11] drm: mgag200: " Peter Rosin
2017-06-20 19:25 ` [PATCH 08/11] drm: nouveau: " Peter Rosin
2017-06-21 10:35 ` Peter Rosin
2017-06-20 19:25 ` [PATCH 09/11] drm: radeon: " Peter Rosin
2017-06-20 19:25 ` [PATCH 10/11] drm: stm: " Peter Rosin
2017-06-20 19:25 ` [PATCH 11/11] drm: remove unused and redundant callbacks Peter Rosin
2017-06-21 16:34 ` kbuild test robot
2017-06-22 6:37 ` Daniel Vetter
2017-06-22 7:13 ` Boris Brezillon
2017-06-21 7:40 ` [PATCH 00/11] improve the fb_setcmap helper Daniel Vetter
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=20170621081454.ymykfka5peelkqxp@phenom.ffwll.local \
--to=daniel@ffwll.ch \
--cc=airlied@redhat.com \
--cc=alexander.deucher@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=bskeggs@redhat.com \
--cc=christian.koenig@amd.com \
--cc=daniel.vetter@intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=kraxel@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=michel@daenzer.net \
--cc=nouveau@lists.freedesktop.org \
--cc=peda@axentia.se \
--cc=philippe.cornu@st.com \
--cc=vincent.abriou@st.com \
--cc=virtualization@lists.linux-foundation.org \
--cc=yannick.fertre@st.com \
/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;
as well as URLs for NNTP newsgroup(s).