diff options
author | Dave Airlie <airlied@redhat.com> | 2021-03-26 06:25:08 +1000 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2021-03-26 06:27:31 +1000 |
commit | 815404281e5df8c684a93eeaede88de262a37023 (patch) | |
tree | 8c2cb4d6e6c8829a7c5ae489fb017a85fcfb3b24 | |
parent | 5165fe0bd1fcca7038ecc3d32012e7d01228938c (diff) | |
parent | d3999c1f7bbbc100c167d7ad3cd79c1d10446ba2 (diff) | |
download | lwn-815404281e5df8c684a93eeaede88de262a37023.tar.gz lwn-815404281e5df8c684a93eeaede88de262a37023.zip |
Merge branch 'linux-5.12' of git://github.com/skeggsb/linux into drm-fixes
- cursor size fix
Signed-off-by: Dave Airlie <airlied@redhat.com>
From: Ben Skeggs <skeggsb@gmail.com>
Link: https://patchwork.freedesktop.org/patch/msgid/CACAvsv7js90N_PYc8JncQA9Hu0yjbg+vPw109FKxJ538nZ=fag@mail.gmail.com
-rw-r--r-- | drivers/gpu/drm/nouveau/dispnv50/disp.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c b/drivers/gpu/drm/nouveau/dispnv50/disp.c index 196612addfd6..1c9c0cdf85db 100644 --- a/drivers/gpu/drm/nouveau/dispnv50/disp.c +++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c @@ -2693,9 +2693,20 @@ nv50_display_create(struct drm_device *dev) else nouveau_display(dev)->format_modifiers = disp50xx_modifiers; - if (disp->disp->object.oclass >= GK104_DISP) { + /* FIXME: 256x256 cursors are supported on Kepler, however unlike Maxwell and later + * generations Kepler requires that we use small pages (4K) for cursor scanout surfaces. The + * proper fix for this is to teach nouveau to migrate fbs being used for the cursor plane to + * small page allocations in prepare_fb(). When this is implemented, we should also force + * large pages (128K) for ovly fbs in order to fix Kepler ovlys. + * But until then, just limit cursors to 128x128 - which is small enough to avoid ever using + * large pages. + */ + if (disp->disp->object.oclass >= GM107_DISP) { dev->mode_config.cursor_width = 256; dev->mode_config.cursor_height = 256; + } else if (disp->disp->object.oclass >= GK104_DISP) { + dev->mode_config.cursor_width = 128; + dev->mode_config.cursor_height = 128; } else { dev->mode_config.cursor_width = 64; dev->mode_config.cursor_height = 64; |