linux/drivers/video/fbdev
Zsolt Kajtar 96106d4f3f fbdev: core: tileblit: Implement missing margin clearing for tileblit
[ Upstream commit 76d3ca8998 ]

I was wondering why there's garbage at the bottom of the screen when
tile blitting is used with an odd mode like 1080, 600 or 200. Sure there's
only space for half a tile but the same area is clean when the buffer
is bitmap.

Then later I found that it's supposed to be cleaned but that's not
implemented. So I took what's in bitblit and adapted it for tileblit.

This implementation was tested for both the horizontal and vertical case,
and now does the same as what's done for bitmap buffers.

If anyone is interested to reproduce the problem then I could bet that'd
be on a S3 or Ark. Just set up a mode with an odd line count and make
sure that the virtual size covers the complete tile at the bottom. E.g.
for 600 lines that's 608 virtual lines for a 16 tall tile. Then the
bottom area should be cleaned.

For the right side it's more difficult as there the drivers won't let an
odd size happen, unless the code is modified. But once it reports back a
few pixel columns short then fbcon won't use the last column. With the
patch that column is now clean.

Btw. the virtual size should be rounded up by the driver for both axes
(not only the horizontal) so that it's dividable by the tile size.
That's a driver bug but correcting it is not in scope for this patch.

Implement missing margin clearing for tileblit

Signed-off-by: Zsolt Kajtar <soci@c64.rulez.org>
Signed-off-by: Helge Deller <deller@gmx.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2025-06-04 14:40:03 +02:00
..
aty fbdev: atyfb: only use ioremap_uc() on i386 and ia64 2023-11-08 14:10:58 +01:00
core fbdev: core: tileblit: Implement missing margin clearing for tileblit 2025-06-04 14:40:03 +02:00
geode fbdev: lxfb: Fix potential divide by zero 2023-04-06 12:10:41 +02:00
i810 fbdev: Remove conflicting devices on PCI bus 2022-07-19 13:19:11 +02:00
intelfb fbdev: intelfb: Fix potential divide by zero 2023-04-06 12:10:41 +02:00
kyro fbdev: Remove conflicting devices on PCI bus 2022-07-19 13:19:11 +02:00
matrox fbdev: matroxfb: G200eW: Increase max memory from 1 MB to 16 MB 2023-01-12 12:02:44 +01:00
mb862xx fbdev: mb862xx: Fix check of return value from irq_of_parse_and_map() 2022-10-08 15:20:09 +02:00
mmp fbdev: mmp: fix value check in mmphw_probe() 2023-08-23 17:52:30 +02:00
nvidia fbdev: nvidia: Fix potential divide by zero 2023-04-06 12:10:41 +02:00
omap fbdev: omap: use threaded IRQ for LCD DMA 2025-02-21 13:49:58 +01:00
omap2 fbdev: omapfb: Add 'plane' value check 2025-04-25 10:43:34 +02:00
riva fbdev: Remove conflicting devices on PCI bus 2022-07-19 13:19:11 +02:00
savage fbdev: savage: Handle err return when savagefb_check_var failed 2024-06-16 13:41:36 +02:00
sis fbdev: sisfb: Fix strbuf array overflow 2024-10-17 15:22:18 +02:00
vermilion fbdev: vermilion: decrease reference count in error path 2022-12-31 13:32:43 +01:00
via fbdev: viafb: fix typo in hw_bitblt_1 and hw_bitblt_2 2024-04-13 13:05:19 +02:00
68328fb.c video: fbdev: Make *fb_setup() and *fb_init() static 2022-07-18 07:54:20 +02:00
acornfb.c video: fbdev: acornfb: remove free_unused_pages() 2021-02-24 13:38:31 -08:00
acornfb.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
amba-clcd.c video: fbdev: amba-clcd: Fix refcount leak bugs 2022-07-26 08:56:22 +02:00
amifb.c video: fbdev: amiga: Simplify amifb_pan_display() 2022-07-18 07:54:17 +02:00
arcfb.c fbdev: arcfb: Fix error handling in arcfb_probe() 2023-05-24 17:32:33 +01:00
arkfb.c fbdev: arkfb: Remove the unused function dac_read_reg() 2022-10-08 15:20:08 +02:00
asiliantfb.c fbdev: Remove conflicting devices on PCI bus 2022-07-19 13:19:11 +02:00
atafb.c video: fbdev: atari: Remove backward bug-compatibility 2022-07-18 07:56:18 +02:00
atafb.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
atafb_iplan2p2.c fbdev: atafb: Remove obsolete module support 2019-04-01 17:46:55 +02:00
atafb_iplan2p4.c fbdev: atafb: Remove obsolete module support 2019-04-01 17:46:55 +02:00
atafb_iplan2p8.c fbdev: atafb: Remove obsolete module support 2019-04-01 17:46:55 +02:00
atafb_mfb.c fbdev: atafb: Remove obsolete module support 2019-04-01 17:46:55 +02:00
atafb_utils.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
atmel_lcdfb.c video: fbdev: atmel_lcdfb: fix an error code in atmel_lcdfb_probe() 2022-01-30 19:38:35 +01:00
au1100fb.c fbdev: au1100fb: Move a variable assignment behind a null pointer check 2025-04-10 14:33:33 +02:00
au1100fb.h video: fbdev: au1100fb: Spelling s/palette/palette/ 2022-02-16 10:54:42 +01:00
au1200fb.c fbdev: au1200fb: Fix missing IRQ check in au1200fb_drv_probe 2023-07-27 08:50:45 +02:00
au1200fb.h fbdev: au1200fb: delete duplicate header contents 2018-01-04 16:53:49 +01:00
broadsheetfb.c fbdev: Use pageref offset for deferred-I/O writeback 2022-05-03 16:04:22 +02:00
bt431.h video: fbdev: bt431: Correct cursor format control macro 2016-02-26 13:06:11 +02:00
bt455.h video: fbdev: pmag-ba-fb: Optimize Bt455 colormap addressing 2016-02-26 13:06:11 +02:00
bw2.c fbdev: Move fbdev drivers from strlcpy to strscpy 2022-08-24 22:06:15 +02:00
c2p.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
c2p_core.h fbdev: c2p: Use BUILD_BUG() instead of custom solution 2020-03-09 11:12:19 +01:00
c2p_iplan2.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
c2p_planar.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
carminefb.c fbdev: Remove conflicting devices on PCI bus 2022-07-19 13:19:11 +02:00
carminefb.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
carminefb_regs.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
cg3.c video: fbdev: sparc drivers: fix kernel-doc warnings for blank_mode 2020-12-08 18:34:08 +01:00
cg6.c video: fbdev: sparc drivers: fix kernel-doc warnings for blank_mode 2020-12-08 18:34:08 +01:00
cg14.c fbdev: cg14fb: use resource_size 2020-01-15 17:31:50 +01:00
chipsfb.c fbdev: chipsfb: Fix error codes in chipsfb_pci_init() 2023-03-22 13:33:39 +01:00
cirrusfb.c drm pull for 6.1-rc1 2022-10-05 11:24:12 -07:00
clps711x-fb.c fbdev: Move fbdev drivers from strlcpy to strscpy 2022-08-24 22:06:15 +02:00
cobalt_lcdfb.c video: constify fb ops across all drivers 2019-12-05 10:57:53 +02:00
controlfb.c fbdev: controlfb: Remove the unused function VAR_MATCH() 2022-10-08 15:20:08 +02:00
controlfb.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
cyber2000fb.c fbdev: cyber2000fb: fix missing pci_disable_device() 2022-10-27 20:29:59 +02:00
cyber2000fb.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
da8xx-fb.c fbdev: da8xx-fb: Fix error handling in .remove() 2022-10-18 10:22:28 +02:00
dnfb.c video: fbdev: Make *fb_setup() and *fb_init() static 2022-07-18 07:54:20 +02:00
edid.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
efifb.c fbdev: efifb: Register sysfs groups through driver core 2024-12-14 19:53:13 +01:00
ep93xx-fb.c fbdev/ep93xx-fb: Do not assign to struct fb_info.dev 2023-09-19 12:27:56 +02:00
ffb.c fbdev: Move fbdev drivers from strlcpy to strscpy 2022-08-24 22:06:15 +02:00
fm2fb.c video: fbdev: Make *fb_setup() and *fb_init() static 2022-07-18 07:54:20 +02:00
fsl-diu-fb.c fbdev: fsl-diu-fb: add missing device_remove_file() 2025-06-04 14:40:03 +02:00
g364fb.c fbdev/g364fb: Fix build failure 2020-02-19 10:58:22 -08:00
gbefb.c fbdev: gbefb: Convert sysfs snprintf to sysfs_emit 2022-10-18 10:28:41 +02:00
goldfishfb.c video: fbdev: goldfishfb: Fix defined but not used warning 2020-12-08 18:34:50 +01:00
grvga.c video: fbdev: Replace HTTP links with HTTPS ones 2020-07-20 11:47:29 +02:00
gxt4500.c drm pull for 6.1-rc1 2022-10-05 11:24:12 -07:00
hecubafb.c fbdev: Rename pagelist to pagereflist for deferred I/O 2022-05-03 16:04:22 +02:00
hgafb.c video: hgafb: correctly handle card detect failure during probe 2021-05-21 15:04:05 +02:00
hitfb.c mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
hpfb.c fbdev: hpfb: Fix an error handling path in hpfb_dio_probe() 2024-10-17 15:20:49 +02:00
hyperv_fb.c fbdev: hyperv_fb: iounmap() the correct memory when removing a device 2025-03-28 21:58:48 +01:00
i740_reg.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
i740fb.c drm pull for 6.1-rc1 2022-10-05 11:24:12 -07:00
imsttfb.c fbdev: imsttfb: fix double free in probe() 2024-01-10 17:10:29 +01:00
imxfb.c fbdev: imxfb: fix left margin setting 2024-01-25 15:27:38 -08:00
Kconfig fbdev: sh7760fb: allow modular build 2024-06-12 11:03:25 +02:00
leo.c video: fbdev: sparc drivers: fix kernel-doc warnings for blank_mode 2020-12-08 18:34:08 +01:00
macfb.c video: fbdev: Replace HTTP links with HTTPS ones 2020-07-20 11:47:29 +02:00
macmodes.c video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
macmodes.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
Makefile ARM: omap1: move lcd_dma code into omapfb driver 2022-04-21 15:00:45 +02:00
maxinefb.c video: constify fb ops across all drivers 2019-12-05 10:57:53 +02:00
metronomefb.c fbdev: Use pageref offset for deferred-I/O writeback 2022-05-03 16:04:22 +02:00
mx3fb.c dmaengine: imx: Move header to include/dma/ 2022-04-19 12:06:18 +01:00
n411.c Annotate hardware config module parameters in drivers/video/ 2017-04-20 12:02:32 +01:00
neofb.c fbdev: Remove conflicting devices on PCI bus 2022-07-19 13:19:11 +02:00
ocfb.c video: fbdev: ocfb: add const to of_device_id 2022-01-29 22:24:25 +01:00
offb.c fbdev: offb: fix up missing cleanup.h 2024-09-04 13:25:05 +02:00
p9100.c video: fbdev: sparc drivers: fix kernel-doc warnings for blank_mode 2020-12-08 18:34:08 +01:00
platinumfb.c video: fbdev: aty/matrox/...: Prepare cleanup of powerpc's asm/prom.h 2022-04-04 08:55:23 +02:00
platinumfb.h video: move fbdev to drivers/video/fbdev 2014-04-17 08:10:19 +03:00
pm2fb.c fbdev: pm2fb: fix missing pci_disable_device() 2022-12-31 13:32:43 +01:00
pm3fb.c fbdev: Remove conflicting devices on PCI bus 2022-07-19 13:19:11 +02:00
pmag-aa-fb.c drm pull for 5.6-rc1 2020-01-30 08:04:01 -08:00
pmag-ba-fb.c drm pull for 5.6-rc1 2020-01-30 08:04:01 -08:00
pmagb-b-fb.c drm pull for 5.6-rc1 2020-01-30 08:04:01 -08:00
ps3fb.c powerpc/ps3: make system bus's remove and shutdown callbacks return void 2020-12-04 01:01:22 +11:00
pvr2fb.c fbdev: Remove conflicting devices on PCI bus 2022-07-19 13:19:11 +02:00
pxa3xx-gcu.c video: fbdev: pxa3xx-gcu: Fix integer overflow in pxa3xx_gcu_write 2022-06-20 20:12:17 +02:00
pxa3xx-gcu.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
pxa3xx-regs.h ARM: pxa: move regs-lcd.h into driver 2022-04-19 16:29:03 +02:00
pxa168fb.c fbdev: Move fbdev drivers from strlcpy to strscpy 2022-08-24 22:06:15 +02:00
pxa168fb.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
pxafb.c fbdev: pxafb: Fix possible use after free in pxafb_task() 2024-10-17 15:21:42 +02:00
pxafb.h video: pxafb: Remove cpufreq policy notifier 2019-08-26 10:02:02 +02:00
q40fb.c video: fbdev: Make *fb_setup() and *fb_init() static 2022-07-18 07:54:20 +02:00
s1d13xxxfb.c video: fbdev: s1d13xxxfb: Fix kernel-doc and set but not used warnings 2020-11-29 22:51:07 +01:00
s3c-fb.c drm for 5.18-rc1 2022-03-24 16:19:43 -07:00
s3c2410fb-regs-lcd.h fbdev: s3c2410fb: remove mach header dependency 2020-08-20 17:48:12 +02:00
s3c2410fb.c fbdev: s3c2410fb: remove mach header dependency 2020-08-20 17:48:12 +02:00
s3c2410fb.h video: s3c2410fb: Register cpufreq notifier only on S3C24xx 2016-08-11 17:54:55 +03:00
s3fb.c drm pull for 6.1-rc1 2022-10-05 11:24:12 -07:00
sa1100fb.c video: fbdev: sa1100fb: Remove unused sa1100fb_setup() 2022-07-18 07:54:18 +02:00
sa1100fb.h ARM/fbdev: sa11x0: Switch to use GPIO descriptors 2020-04-17 15:50:11 +02:00
sbuslib.c fbdev: sbuslib: remove compat_alloc_user_space usage 2020-09-25 16:34:50 +02:00
sbuslib.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
sh7760fb.c fbdev: sh7760fb: Fix a possible memory leak in sh7760fb_alloc_mem() 2024-12-14 19:53:42 +01:00
sh_mobile_lcdcfb.c fbdev: shmobile: fix snprintf truncation 2024-06-12 11:03:22 +02:00
sh_mobile_lcdcfb.h fbdev/sh_mobile: remove sh_mobile_lcdc_display_notify 2019-06-12 20:28:11 +02:00
simplefb.c fbdev: Move fbdev drivers from strlcpy to strscpy 2022-08-24 22:06:15 +02:00
skeletonfb.c drm-misc-next for v6.1: 2022-09-06 10:56:04 +02:00
sm501fb.c fbdev: sm501fb: Add some geometry checks. 2025-04-10 14:33:33 +02:00
sm712.h fbdev: sm712fb: use 1024x768 by default on non-MIPS, fix garbled display 2019-04-01 17:46:59 +02:00
sm712fb.c fbdev: Remove conflicting devices on PCI bus 2022-07-19 13:19:11 +02:00
smscufx.c fbdev: smscufx: fix error handling code in ufx_usb_probe 2023-02-09 11:28:27 +01:00
ssd1307fb.c Merge tag 'v6.0-rc5' into i2c/for-mergewindow 2022-09-16 20:42:18 +01:00
sstfb.c drm pull for 6.1-rc1 2022-10-05 11:24:12 -07:00
sticore.h fbdev: stifb: Make the STI next font pointer a 32-bit signed offset 2023-12-08 08:51:19 +01:00
stifb.c fbdev: stifb: Fix info entry in sti_struct on error path 2023-06-09 10:34:09 +02:00
sunxvr500.c drm pull for 6.1-rc1 2022-10-05 11:24:12 -07:00
sunxvr1000.c fbdev: Move fbdev drivers from strlcpy to strscpy 2022-08-24 22:06:15 +02:00
sunxvr2500.c drm pull for 6.1-rc1 2022-10-05 11:24:12 -07:00
tcx.c fbdev: Move fbdev drivers from strlcpy to strscpy 2022-08-24 22:06:15 +02:00
tdfxfb.c drm pull for 6.1-rc1 2022-10-05 11:24:12 -07:00
tgafb.c fbdev: tgafb: Fix potential divide by zero 2023-04-06 12:10:40 +02:00
tmiofb.c video: constify fb ops across all drivers 2019-12-05 10:57:53 +02:00
tridentfb.c fbdev: tridentfb: Fix missing pci_disable_device() in probe and remove 2022-10-08 15:20:09 +02:00
udlfb.c fbdev: udlfb: Fix endpoint check 2023-05-30 14:03:20 +01:00
uvesafb.c fbdev: uvesafb: Call cn_del_callback() at the end of uvesafb_exit() 2023-11-08 14:11:00 +01:00
valkyriefb.c video: fbdev: Make *fb_setup() and *fb_init() static 2022-07-18 07:54:20 +02:00
valkyriefb.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
vesafb.c video: fbdev: vesafb: Fix a use-after-free due early fb_info cleanup 2022-05-28 19:26:56 +02:00
vfb.c video: constify fb ops across all drivers 2019-12-05 10:57:53 +02:00
vga16fb.c fbdev: vga16fb: Add missing MODULE_DEVICE_TABLE() entry 2022-10-08 15:20:09 +02:00
vt8500lcdfb.c video: vt8500lcdfb: fix fallthrough warning 2020-04-17 15:50:08 +02:00
vt8500lcdfb.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
vt8623fb.c drm-misc-next for v6.1: 2022-09-06 10:56:04 +02:00
w100fb.c video: fbdev: w100fb: Reset global state 2022-01-29 22:24:26 +01:00
w100fb.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
wm8505fb.c video: fbdev: wm8505fb: fix sparse warnings about using incorrect types 2020-03-02 16:32:04 +01:00
wm8505fb_regs.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
wmt_ge_rops.c video: fbdev: wmt_ge_rops: Fix function not declared warnings 2020-12-08 18:34:36 +01:00
wmt_ge_rops.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
xen-fbfront.c fbdev fixes and updates for kernel v5.19-rc1 2022-05-30 12:46:49 -07:00
xilinxfb.c fbdev: xilinxfb: Make xilinxfb_release() return void 2022-10-20 08:36:41 +02:00