Quick answer: Pygame scrolling tilemap showing horizontal tear lines on AMD GPUs? Surface blits without vsync align to driver schedule - enable vsync or render through OpenGL texture.
Vertical scrolling level shows a 2-pixel tear line at random positions. Only AMD drivers.
Enable vsync
pygame.display.set_mode(size, vsync=1)Pygame 2+ supports vsync. AMD's compositor expects it; without, tearing.
Or use double buffer
pygame.display.set_mode(size, pygame.DOUBLEBUF)Cheaper than full vsync; reduces but doesn't eliminate.
Test on multiple drivers
NVIDIA, AMD, Intel iGPU. Each composes differently; tearing pattern varies.
“Tearing is a compositor artifact. Drivers compose differently.”
Test on real GPUs from all three major vendors. Cross-vendor bugs are common; cross-vendor testing isn't.