We are currently migrating Bugzilla to GitHub issues.
Any changes made to the bug tracker now will be lost, so please do not post new bugs or make changes to them.
When we're done, all bug URLs will redirect to their equivalent location on the new bug tracker.

Bug 2602

Summary: Backing store prevents page flipping with current Xorg DRI2
Product: SDL Reporter: Michel Dänzer <michel>
Component: videoAssignee: Sam Lantinga <slouken>
Status: RESOLVED ENDOFLIFE QA Contact: Sam Lantinga <slouken>
Severity: normal    
Priority: P2 CC: renesd
Version: HG 1.2   
Hardware: Other   
OS: Linux   

Description Michel Dänzer 2014-06-24 08:37:12 UTC
src/video/x11/SDL_x11video.c:X11_CreateWindow() contains the code below, which enables backing store if the X server supports it. Current Xorg implements backing store by redirecting the window storage to a separate pixmap using the composite layer. This prevents windows with backing store enabled from using page flipping for DRI2 buffer swaps. Instead, a buffer swap requires two copies (one from the DRI2 back buffer to the window pixmap, and one from the window pixmap to the screen pixmap), which might reduce performance significantly and causes visible tearing such as described in https://bugs.freedesktop.org/show_bug.cgi?id=79850 .

SDL2 doesn't seem to have this code anymore, so I think it would be be best to disable it by default, if not remove it altogether.

#if 0 /* This is an experiment - are the graphics faster now? - nope. */
	if ( SDL_getenv("SDL_VIDEO_X11_BACKINGSTORE") )
#endif
	/* Cache the window in the server, when possible */
	{
		Screen *xscreen;
		XSetWindowAttributes a;

		xscreen = ScreenOfDisplay(SDL_Display, SDL_Screen);
		a.backing_store = DoesBackingStore(xscreen);
		if ( a.backing_store != NotUseful ) {
			XChangeWindowAttributes(SDL_Display, SDL_Window,
			                        CWBackingStore, &a);
		}
	}
Comment 1 Ryan C. Gordon 2015-08-25 09:38:21 UTC
Hello, and sorry if you're getting several copies of this message by email, since we are closing many bugs at once here.

We have decided to mark all SDL 1.2-related bugs as RESOLVED ENDOFLIFE, as we don't intend to work on SDL 1.2 any further, but didn't want to mark a large quantity of bugs as RESOLVED WONTFIX, to clearly show what was left unattended to and make it easily searchable.

Our current focus is on SDL 2.0.

If you are still having problems with an ENDOFLIFE bug, your absolute best option is to move your program to SDL2, as it will likely fix the problem by default, and give you access to modern platforms and tons of super-cool new features.

Failing that, we _will_ accept small patches to fix these issues, and put them in revision control, although we do not intend to do any further official 1.2 releases.

Failing that, please feel free to contact me directly by email (icculus@icculus.org) and we'll try to find some way to help you out of your situation.

Thank you,
--ryan.