On some chipsets, which block-linear modifiers are
supported is format-specific. However, linear
modifiers are always be supported. The prior
modifier filtering logic was not accounting for
the linear case.
Fixes: c586f30bf74c ("drm/nouveau/kms: Add format mod prop to base/ovly/nvdisp")
Signed-off-by: James Jones <jajones@nvidia.com>
---
drivers/gpu/drm/nouveau/dispnv50/wndw.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/gpu/drm/nouveau/dispnv50/wndw.c b/drivers/gpu/drm/nouveau/dispnv50/wndw.c
index 11d5b923d6e7..e2c55f4b9c5a 100644
--- a/drivers/gpu/drm/nouveau/dispnv50/wndw.c
+++ b/drivers/gpu/drm/nouveau/dispnv50/wndw.c
@@ -795,6 +795,10 @@ static bool nv50_plane_format_mod_supported(struct drm_plane *plane,
struct nouveau_drm *drm = nouveau_drm(plane->dev);
uint8_t i;
+ /* All chipsets can display all formats in linear layout */
+ if (modifier == DRM_FORMAT_MOD_LINEAR)
+ return true;
+
if (drm->client.device.info.chipset < 0xc0) {
const struct drm_format_info *info = drm_format_info(format);
const uint8_t kind = (modifier >> 12) & 0xff;
--
2.50.1
On Tue Aug 12, 2025 at 12:00 AM CEST, James Jones wrote: > On some chipsets, which block-linear modifiers are > supported is format-specific. However, linear > modifiers are always be supported. The prior > modifier filtering logic was not accounting for > the linear case. > > Fixes: c586f30bf74c ("drm/nouveau/kms: Add format mod prop to base/ovly/nvdisp") > Signed-off-by: James Jones <jajones@nvidia.com> Applied to drm-misc-fixes, thanks!
On Tue Aug 12, 2025 at 12:00 AM CEST, James Jones wrote: > On some chipsets, which block-linear modifiers are > supported is format-specific. However, linear > modifiers are always be supported. The prior > modifier filtering logic was not accounting for > the linear case. > > Fixes: c586f30bf74c ("drm/nouveau/kms: Add format mod prop to base/ovly/nvdisp") > Signed-off-by: James Jones <jajones@nvidia.com> This issue seems to be present since v5.10, what's the implication of this? I assume this has to be backported into stable releases? Does the subsequent patch break strictly depend on this fix, or can it go separately?
On 8/22/25 13:55, Danilo Krummrich wrote: > On Tue Aug 12, 2025 at 12:00 AM CEST, James Jones wrote: >> On some chipsets, which block-linear modifiers are >> supported is format-specific. However, linear >> modifiers are always be supported. The prior >> modifier filtering logic was not accounting for >> the linear case. >> >> Fixes: c586f30bf74c ("drm/nouveau/kms: Add format mod prop to base/ovly/nvdisp") >> Signed-off-by: James Jones <jajones@nvidia.com> > > This issue seems to be present since v5.10, what's the implication of this? I > assume this has to be backported into stable releases? > > Does the subsequent patch break strictly depend on this fix, or can it go > separately? Without this fix, the next patch breaks linear modifier use on Blackwell2+. In my testing, that meant fbcon was severely corrupted (In a manner that suggests it ends up with a block-linear surface rendered to as if it was linear). Yes, it has to go back to a fair number of stable branches to fix similar issues on pre-fermi GPUs, though oddly in my testing before/after this patch, fbcon came up fine on my NV50, so the effects might not be as severe there for some reason. Thanks, -James
On Fri Aug 22, 2025 at 11:11 PM CEST, James Jones wrote: > On 8/22/25 13:55, Danilo Krummrich wrote: >> On Tue Aug 12, 2025 at 12:00 AM CEST, James Jones wrote: >>> On some chipsets, which block-linear modifiers are >>> supported is format-specific. However, linear >>> modifiers are always be supported. The prior >>> modifier filtering logic was not accounting for >>> the linear case. >>> >>> Fixes: c586f30bf74c ("drm/nouveau/kms: Add format mod prop to base/ovly/nvdisp") >>> Signed-off-by: James Jones <jajones@nvidia.com> >> >> This issue seems to be present since v5.10, what's the implication of this? I >> assume this has to be backported into stable releases? >> >> Does the subsequent patch break strictly depend on this fix, or can it go >> separately? > > Without this fix, the next patch breaks linear modifier use on > Blackwell2+. In my testing, that meant fbcon was severely corrupted (In > a manner that suggests it ends up with a block-linear surface rendered > to as if it was linear). > > Yes, it has to go back to a fair number of stable branches to fix > similar issues on pre-fermi GPUs, though oddly in my testing > before/after this patch, fbcon came up fine on my NV50, so the effects > might not be as severe there for some reason. Ok, thanks! This sounds like we should apply the fix, backmerge the -rc it lands in and then merge the rest of this series. - Danilo
On Mon, Aug 11, 2025 at 5:57 PM James Jones <jajones@nvidia.com> wrote: > > On some chipsets, which block-linear modifiers are > supported is format-specific. However, linear > modifiers are always be supported. The prior > modifier filtering logic was not accounting for > the linear case. > > Fixes: c586f30bf74c ("drm/nouveau/kms: Add format mod prop to base/ovly/nvdisp") > Signed-off-by: James Jones <jajones@nvidia.com> Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com> > --- > drivers/gpu/drm/nouveau/dispnv50/wndw.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/gpu/drm/nouveau/dispnv50/wndw.c b/drivers/gpu/drm/nouveau/dispnv50/wndw.c > index 11d5b923d6e7..e2c55f4b9c5a 100644 > --- a/drivers/gpu/drm/nouveau/dispnv50/wndw.c > +++ b/drivers/gpu/drm/nouveau/dispnv50/wndw.c > @@ -795,6 +795,10 @@ static bool nv50_plane_format_mod_supported(struct drm_plane *plane, > struct nouveau_drm *drm = nouveau_drm(plane->dev); > uint8_t i; > > + /* All chipsets can display all formats in linear layout */ > + if (modifier == DRM_FORMAT_MOD_LINEAR) > + return true; > + > if (drm->client.device.info.chipset < 0xc0) { > const struct drm_format_info *info = drm_format_info(format); > const uint8_t kind = (modifier >> 12) & 0xff; > -- > 2.50.1 >
© 2016 - 2025 Red Hat, Inc.