Message ID | 20200512084258.12673-1-tzimmermann@suse.de (mailing list archive) |
---|---|
Headers | show |
Series | drm/mgag200: Convert to atomic modesetting | expand |
Hi Thomas. On Tue, May 12, 2020 at 10:42:43AM +0200, Thomas Zimmermann wrote: > This patchset converts mgag200 to atomic modesetting. It uses simple > KMS helpers and SHMEM. > > Patch 1 removes cursor support. The HW cursor is not usable with the > way universal planes work. > > Patches 2 to 11 untangle the existing modesetting code into smaller > functions. Specifically, mode setting and plane updates are being > separated from each other. > > Patch 12 to 14 convert mgag200 to simple KMS helpers and enables atomic > mode setting. > > Atomically switching plane framebuffers, requires either source or target > buffer to be located at a non-0 offet. As some HW revisions seem to require > a framebuffer offset of 0 within the video memory, they do not work with > atomic modesetting. To resolve this problem, patch 15 converts mgag200 > from VRAM helpers to SHMEM helpers. During plane updates, the content of > the SHMEM BO is memcpy'd to VRAM. From my observation, performance is not > nuch different from the original code. > > The patchset has been tested on MGA G200EH hardware. > > v2: > * rebase patchset > * replace uint{8,32}_t with u{8,32} through-out patchset > * define additional register constants > * use helper functions around bpp-shift computations > * split conversion patch > * cleanups With the one comment addressed patch 1-14 are now all: Acked-by: Sam Ravnborg <sam@ravnborg.org> I did not look at the last patch - all the memory stuff is still beyond me. Nice to see this driver gettting so much love and care. The end result is a much nicer driver implmentation. Sam > > Thomas Zimmermann (15): > drm/mgag200: Remove HW cursor > drm/mgag200: Clean up mga_set_start_address() > drm/mgag200: Clean up mga_crtc_do_set_base() > drm/mgag200: Move mode-setting code into separate helper function > drm/mgag200: Split MISC register update into PLL selection, SYNC and > I/O > drm/mgag200: Update mode registers after plane registers > drm/mgag200: Set pitch in a separate helper function > drm/mgag200: Set primary plane's format in separate helper function > drm/mgag200: Move TAGFIFO reset into separate function > drm/mgag200: Move hiprilvl setting into separate functions > drm/mgag200: Move register initialization into separate function > drm/mgag200: Remove out-commented suspend/resume helpers > drm/mgag200: Use simple-display data structures > drm/mgag200: Convert to simple KMS helper > drm/mgag200: Replace VRAM helpers with SHMEM helpers > > drivers/gpu/drm/mgag200/Kconfig | 4 +- > drivers/gpu/drm/mgag200/Makefile | 2 +- > drivers/gpu/drm/mgag200/mgag200_drv.c | 51 +- > drivers/gpu/drm/mgag200/mgag200_drv.h | 41 +- > drivers/gpu/drm/mgag200/mgag200_main.c | 5 - > drivers/gpu/drm/mgag200/mgag200_mode.c | 871 ++++++++++++++----------- > drivers/gpu/drm/mgag200/mgag200_reg.h | 11 +- > drivers/gpu/drm/mgag200/mgag200_ttm.c | 28 +- > 8 files changed, 528 insertions(+), 485 deletions(-) > > -- > 2.26.2
Hi Am 12.05.20 um 20:56 schrieb Sam Ravnborg: > Hi Thomas. > > On Tue, May 12, 2020 at 10:42:43AM +0200, Thomas Zimmermann wrote: >> This patchset converts mgag200 to atomic modesetting. It uses simple >> KMS helpers and SHMEM. >> >> Patch 1 removes cursor support. The HW cursor is not usable with the >> way universal planes work. >> >> Patches 2 to 11 untangle the existing modesetting code into smaller >> functions. Specifically, mode setting and plane updates are being >> separated from each other. >> >> Patch 12 to 14 convert mgag200 to simple KMS helpers and enables atomic >> mode setting. >> >> Atomically switching plane framebuffers, requires either source or target >> buffer to be located at a non-0 offet. As some HW revisions seem to require >> a framebuffer offset of 0 within the video memory, they do not work with >> atomic modesetting. To resolve this problem, patch 15 converts mgag200 >> from VRAM helpers to SHMEM helpers. During plane updates, the content of >> the SHMEM BO is memcpy'd to VRAM. From my observation, performance is not >> nuch different from the original code. >> >> The patchset has been tested on MGA G200EH hardware. >> >> v2: >> * rebase patchset >> * replace uint{8,32}_t with u{8,32} through-out patchset >> * define additional register constants >> * use helper functions around bpp-shift computations >> * split conversion patch >> * cleanups > With the one comment addressed patch 1-14 are now all: > Acked-by: Sam Ravnborg <sam@ravnborg.org> Sure, I'll add that comment. Thanks for the timely reviews. Best regards Thomas > > I did not look at the last patch - all the memory stuff is still beyond > me. > > Nice to see this driver gettting so much love and care. > The end result is a much nicer driver implmentation. > > Sam > >> >> Thomas Zimmermann (15): >> drm/mgag200: Remove HW cursor >> drm/mgag200: Clean up mga_set_start_address() >> drm/mgag200: Clean up mga_crtc_do_set_base() >> drm/mgag200: Move mode-setting code into separate helper function >> drm/mgag200: Split MISC register update into PLL selection, SYNC and >> I/O >> drm/mgag200: Update mode registers after plane registers >> drm/mgag200: Set pitch in a separate helper function >> drm/mgag200: Set primary plane's format in separate helper function >> drm/mgag200: Move TAGFIFO reset into separate function >> drm/mgag200: Move hiprilvl setting into separate functions >> drm/mgag200: Move register initialization into separate function >> drm/mgag200: Remove out-commented suspend/resume helpers >> drm/mgag200: Use simple-display data structures >> drm/mgag200: Convert to simple KMS helper >> drm/mgag200: Replace VRAM helpers with SHMEM helpers >> >> drivers/gpu/drm/mgag200/Kconfig | 4 +- >> drivers/gpu/drm/mgag200/Makefile | 2 +- >> drivers/gpu/drm/mgag200/mgag200_drv.c | 51 +- >> drivers/gpu/drm/mgag200/mgag200_drv.h | 41 +- >> drivers/gpu/drm/mgag200/mgag200_main.c | 5 - >> drivers/gpu/drm/mgag200/mgag200_mode.c | 871 ++++++++++++++----------- >> drivers/gpu/drm/mgag200/mgag200_reg.h | 11 +- >> drivers/gpu/drm/mgag200/mgag200_ttm.c | 28 +- >> 8 files changed, 528 insertions(+), 485 deletions(-) >> >> -- >> 2.26.2