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 1240

Summary: Extremely slow fullscreen OpenGL on some Macs
Product: SDL Reporter: Vern Jensen <vern>
Component: videoAssignee: Sam Lantinga <slouken>
Status: RESOLVED FIXED QA Contact: Sam Lantinga <slouken>
Severity: critical    
Priority: P2    
Version: HG 2.0   
Hardware: x86   
OS: Mac OS X 10.6   

Description Vern Jensen 2011-06-30 21:12:31 UTC
I'm nearly ready to submit my game to the Mac App Store, but have run into a really major problem during beta testing. Some beta testers (about half it seems) are experiencing extremely slow fullscreen, while windowed mode works just fine -- even at high resolutions.

Initially, I tried reducing the resolution while fullscreen, figuring maybe a high resolution was the cause. But this and other attempts did not resolve the problem.

It is sporadic, and some users have found that by toggling repeatedly between fullscreen and windowed mode, they can (around the 2nd or 3rd time) get fullscreen running up-to-speed.

Just how slow is it going? About 18fps when fullscreen. It should be easily doing over 200fps, and does on my system, and does for them too, when in windowed mode, even with the window taking up most of the screen. It's not a resolution issue.

I thought it was something I was doing until i tried modifying one of the SDL demos to go fullscreen. I simply modified the testgl2.c demo, adding the following right before  "/* Main render loop */"

	{
		SDL_DisplayMode displayMode;
		
			// Set the resolution used when going fullscreen
		SDL_GetDesktopDisplayMode( SDL_GetWindowDisplay(state->windows[0]),  &displayMode );
	
		SDL_SetWindowDisplayMode( state->windows[0], &displayMode );
		SDL_SetWindowFullscreen( state->windows[0], true );
	}

And while yes, I'm switching to fullscreen later, instead of using a flag at startup, the flag at startup method results in the same result in my tests. 

DO NOTE: This does not happen on my own system! (iMac Dual-core 2.0 GHz Intel 20") It happens on more than half of my tester's systems, and quite consistently. Their systems are even newer/faster than mine, so it's strange.

The frame rates one of my testers gets with the above is:

Windowed:
2208.47 frames per second

Fullscreen:
29.65 frames per second

Hopefully it's obvious that such an abysmally slow framerate is NOT due to resolution. But as I mentioned, you can change the resolution simply by setting displayMode.h = 800, displayMode.v = 600 or something similar between the SDL_GetDesktopDisplayMode and SDL_SetWindowDisplayMode calls above, and it won't help. It'll still be very slow fullscreen on my tester's systems.

It's difficult for me to test "potential fixes" for this, as it runs great on my two Macs, so I'd have to send any potential fixes to my beta testers to see what they'd find.

This is a big bug that's holding up the release of my game, so I'm hoping it can be fixed soon! I'm happy to help with whatever I can -- i.e. try potential fixes and forward them to my testers, and get back to you asap, if that'd help.

I'll post some system profiles of two of the systems that run it slow fullscreen in follow-up messages.
Comment 1 Vern Jensen 2011-06-30 21:13:17 UTC
One tester who is experiencing the slow fullscreen issue writes:

This is the information about my Mac (OS X 10.6.8)

Hardware Overview:

  Model Name:      iMac
  Model Identifier:      iMac10,1
  Processor Name:      Intel Core 2 Duo
  Processor Speed:      3.06 GHz
  Number Of Processors:      1
  Total Number Of Cores:      2
  L2 Cache:      3 MB
  Memory:      4 GB
  Bus Speed:      1.07 GHz
  Boot ROM Version:      IM101.00CC.B00
  SMC Version (system):      1.52f9
  Serial Number (system):      W8949HAV5PC
  Hardware UUID:      BE638F42-460D-5981-BD71-8FB7A151CEEF


NVIDIA GeForce 9400:

  Chipset Model:      NVIDIA GeForce 9400
  Type:      GPU
  Bus:      PCI
  VRAM (Total):      256 MB
  Vendor:      NVIDIA (0x10de)
  Device ID:      0x0869
  Revision ID:      0x00b1
  ROM Revision:      3454
  Displays:
iMac:
  Resolution:      1920 x 1080
  Pixel Depth:      32-Bit Color (ARGB8888)
  Main Display:      Yes
  Mirror:      Off
  Online:      Yes
  Built-In:      Yes
Display Connector:
  Status:      No Display Connected
Comment 2 Vern Jensen 2011-06-30 21:14:02 UTC
Another tester's setup (laptop this time):

  Model Name:      MacBook
  Model Identifier:      MacBook4,1
  Processor Name:      Intel Core 2 Duo
  Processor Speed:      2.4 GHz
  Number Of Processors:      1
  Total Number Of Cores:      2
  L2 Cache:      3 MB
  Memory:      2 GB
  Bus Speed:      800 MHz
  Boot ROM Version:      MB41.00C1.B00
  SMC Version (system):      1.31f1
  Serial Number (system):      W88109RB0P2
  Hardware UUID:      AFB2C7B7-4A25-5327-AD5E-A62BA78F6071
  Sudden Motion Sensor:
  State:      Enabled

GRAPHICS/DISPLAYS

Intel GMA X3100:

  Chipset Model:      GMA X3100
  Type:      GPU
  Bus:      Built-In
  VRAM (Total):      144 MB
  Vendor:      Intel (0x8086)
  Device ID:      0x2a02
  Revision ID:      0x0003
  Displays:
Color LCD:
  Resolution:      1280 x 800
  Pixel Depth:      32-Bit Color (ARGB8888)
  Main Display:      Yes
  Mirror:      Off
  Online:      Yes
  Built-In:      Yes
Display Connector:
  Status:      No Display Connected
Comment 3 Vern Jensen 2011-06-30 21:14:45 UTC
A third tester writes:

This is the version of OpenGL that I have installed.

 Version:	1.6.7
 Last Modified:	9/6/10 11:22 AM
 Kind:	Universal
 64-Bit (Intel):	Yes
 Get Info String:	OpenGL 1.6.7.38.0
 Location:	/System/Library/Frameworks/OpenGL.framework
 Private:	No
Comment 4 Vern Jensen 2011-06-30 21:17:47 UTC
Oh I forgot to mention. This is with:

SDL-1.3.0-5557
Comment 5 Vern Jensen 2011-07-02 22:44:22 UTC
Just had a tester who experiences this problem test with an older version of SDL: SDL-1.3.0-5080. The same problem occurred (slow fullscreen with the gltest2 demo), verifying that this is a problem that has been around for a while... it's not something that was introduced in SDL recently (i.e. within the last few months.)
Comment 6 Vern Jensen 2011-07-18 09:21:30 UTC
Gordon fixed this in the latest Mercurial on July 16th.