[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] FULLSCREEN or ~FULLSCREEN?



There's no simple rule on the relative performance between windowed and fullscreen, because it depends what you mean by fullscreen, and what the size of the app's window is relative to the desktop.

fullscreen can be done a few different ways:
A) changing the output resolution to the desired size, and grabbing exclusive video access
B) changing the output resolution to the desired size, and just making the window fill the whole screen
C) leaving the desktop resolution as is, and scaling the window up to whatever the desktop is

In terms of performance, A is usually the fastest, B is also usually fast, but can be slightly slower if other apps are doing things, and C can be *much* slower than a windowed app (since it can end up pushing dramatically more pixels). A and B can also change the color depth to what the app likes best (16 vs. 24. vs 32), which usually doesn't matter these days, but can have a significant performance impact, if your bottleneck is fill rate on rendering to the back buffer.

Providing you don't have any bit-depth problems, a windowed app can perform exactly as well as B, if it is close to the same size as the screen (should make sense, as if it's exactly the same size as the screen, and has no frame, it *is* the same as B), but as the surrounding desktop gets bigger, the video card has to deal with those surrounding pixels in addition to your windowed app.


One generalization you can make is that fullscreen of type A & B (changing the resolution) has significant performance benefits on big screens, and not really on smaller screens - however like you said fullscreen can cause stability problems.

On windows and mac, pygame's normal fullscreen is A, and can be susceptible to the same debug and crash problems with a fullscreen app locking up your system that you describe on Linux. On mac in particular, type A (exclusive fullscreen mode) actually blocks alt-tab as well, which means a hung or unresponsive app can hang up the system as well, which sucks.


On Mon, Jul 4, 2011 at 12:21 PM, James Mazer <james.mazer@xxxxxxxx> wrote:
I've always been under the impression pygame+GL performance was
substantially better when running with the FULLSCREEN flag
set. However, recently, I started playing around with NOFRAME windows
fit to the monitor size and found no big performance hit.

Is this generally the experience of most people?  Is it generally safe
with modern video cards to assume that windowed & fullscreen modes
give you similar to performance levels for pygame+GL? This is for an
app that uses mostly GL on top of pygame and runs with
__GL_SYNC_TO_VBLANK set.

Under linux, fullscreen debugging can be dangerous (it's too easy for
a bug to lock up the machine requiring a reboot/xserver-restart), so it
would be nice to not use it -- my app has a scripting language, so
even with a bug-free production version a user can lock up the
screen, so just using windowed mode for testing's not sufficient..

Thanks,
/jamie

--
James Mazer
Department of Neurobiology
Yale School of Medicine
phone: 203-737-5853
fax: 203-785-5263