OpenGL hardware acceleration defaults on

--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%404319
This commit is contained in:
Sam Lantinga 2009-12-15 20:36:31 +00:00
parent abec9e44fa
commit fe2b42f86c
6 changed files with 37 additions and 41 deletions

View file

@ -239,7 +239,7 @@ SDL_VideoInit(const char *driver_name, Uint32 flags)
_this->gl_config.multisamplebuffers = 0; _this->gl_config.multisamplebuffers = 0;
_this->gl_config.multisamplesamples = 0; _this->gl_config.multisamplesamples = 0;
_this->gl_config.retained_backing = 1; _this->gl_config.retained_backing = 1;
_this->gl_config.accelerated = -1; /* not known, don't set */ _this->gl_config.accelerated = 1;
_this->gl_config.major_version = 2; _this->gl_config.major_version = 2;
_this->gl_config.minor_version = 1; _this->gl_config.minor_version = 1;
@ -3274,7 +3274,7 @@ SDL_GL_GetAttribute(SDL_GLattr attr, int *value)
case SDL_GL_ACCELERATED_VISUAL: case SDL_GL_ACCELERATED_VISUAL:
{ {
/* FIXME: How do we get this information? */ /* FIXME: How do we get this information? */
*value = (_this->gl_config.accelerated != 0); *value = _this->gl_config.accelerated;
return 0; return 0;
} }
default: default:

View file

@ -28,6 +28,7 @@
#if SDL_VIDEO_OPENGL_CGL #if SDL_VIDEO_OPENGL_CGL
#include <OpenGL/CGLTypes.h> #include <OpenGL/CGLTypes.h>
#include <OpenGL/OpenGL.h> #include <OpenGL/OpenGL.h>
#include <OpenGL/CGLRenderers.h>
#include "SDL_loadso.h" #include "SDL_loadso.h"
#include "SDL_opengl.h" #include "SDL_opengl.h"
@ -132,8 +133,11 @@ Cocoa_GL_CreateContext(_THIS, SDL_Window * window)
attr[i++] = NSOpenGLPFANoRecovery; attr[i++] = NSOpenGLPFANoRecovery;
} }
if (_this->gl_config.accelerated > 0) { if (_this->gl_config.accelerated) {
attr[i++] = NSOpenGLPFAAccelerated; attr[i++] = NSOpenGLPFAAccelerated;
} else {
attr[i++] = NSOpenGLPFARendererID;
attr[i++] = kCGLRendererGenericFloatID;
} }
attr[i++] = NSOpenGLPFAScreenMask; attr[i++] = NSOpenGLPFAScreenMask;

View file

@ -469,12 +469,9 @@ WIN_GL_SetupWindow(_THIS, SDL_Window * window)
*iAttr++ = _this->gl_config.multisamplesamples; *iAttr++ = _this->gl_config.multisamplesamples;
} }
if (_this->gl_config.accelerated >= 0) {
*iAttr++ = WGL_ACCELERATION_ARB; *iAttr++ = WGL_ACCELERATION_ARB;
*iAttr++ = *iAttr++ = (_this->gl_config.accelerated ? WGL_GENERIC_ACCELERATION_ARB :
(_this->gl_config.accelerated ? WGL_GENERIC_ACCELERATION_ARB :
WGL_NO_ACCELERATION_ARB); WGL_NO_ACCELERATION_ARB);
}
*iAttr = 0; *iAttr = 0;

View file

@ -359,17 +359,19 @@ X11_GL_GetVisual(_THIS, Display * display, int screen)
attribs[i++] = _this->gl_config.multisamplesamples; attribs[i++] = _this->gl_config.multisamplesamples;
} }
if (_this->gl_config.accelerated >= 0 if (_this->gl_data->HAS_GLX_EXT_visual_rating) {
&& _this->gl_data->HAS_GLX_EXT_visual_rating) {
attribs[i++] = GLX_VISUAL_CAVEAT_EXT; attribs[i++] = GLX_VISUAL_CAVEAT_EXT;
attribs[i++] = GLX_NONE_EXT; attribs[i++] = _this->gl_config.accelerated ? GLX_NONE_EXT :
GLX_SLOW_VISUAL_EXT;
} }
#ifdef GLX_DIRECT_COLOR /* Try for a DirectColor visual for gamma support */ #ifdef GLX_DIRECT_COLOR /* Try for a DirectColor visual for gamma support */
if (X11_UseDirectColorVisuals()) { if (X11_UseDirectColorVisuals()) {
attribs[i++] = GLX_X_VISUAL_TYPE; attribs[i++] = GLX_X_VISUAL_TYPE;
attribs[i++] = GLX_DIRECT_COLOR; attribs[i++] = GLX_DIRECT_COLOR;
} }
#endif #endif
attribs[i++] = None; attribs[i++] = None;
vinfo = _this->gl_data->glXChooseVisual(display, screen, attribs); vinfo = _this->gl_data->glXChooseVisual(display, screen, attribs);

View file

@ -370,7 +370,7 @@ DrawLogoTexture(void)
int int
RunGLTest(int argc, char *argv[], RunGLTest(int argc, char *argv[],
int logo, int logocursor, int slowly, int bpp, float gamma, int logo, int logocursor, int slowly, int bpp, float gamma,
int noframe, int fsaa, int sync, int accel) int noframe, int fsaa, int sync, int noaccel)
{ {
int i; int i;
int rgb_size[3]; int rgb_size[3];
@ -454,9 +454,7 @@ RunGLTest(int argc, char *argv[],
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1); SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1);
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, fsaa); SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, fsaa);
} }
if (accel) { SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, !noaccel);
SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1);
}
if (SDL_SetVideoMode(w, h, bpp, video_flags) == NULL) { if (SDL_SetVideoMode(w, h, bpp, video_flags) == NULL) {
fprintf(stderr, "Couldn't set GL mode: %s\n", SDL_GetError()); fprintf(stderr, "Couldn't set GL mode: %s\n", SDL_GetError());
SDL_Quit(); SDL_Quit();
@ -493,10 +491,8 @@ RunGLTest(int argc, char *argv[],
printf("SDL_GL_MULTISAMPLESAMPLES: requested %d, got %d\n", fsaa, printf("SDL_GL_MULTISAMPLESAMPLES: requested %d, got %d\n", fsaa,
value); value);
} }
if (accel) {
SDL_GL_GetAttribute(SDL_GL_ACCELERATED_VISUAL, &value); SDL_GL_GetAttribute(SDL_GL_ACCELERATED_VISUAL, &value);
printf("SDL_GL_ACCELERATED_VISUAL: requested 1, got %d\n", value); printf("SDL_GL_ACCELERATED_VISUAL: requested %d, got %d\n", !noaccel, value);
}
if (sync) { if (sync) {
printf("Buffer swap interval: requested 1, got %d\n", printf("Buffer swap interval: requested 1, got %d\n",
SDL_GL_GetSwapInterval()); SDL_GL_GetSwapInterval());
@ -707,7 +703,7 @@ main(int argc, char *argv[])
float gamma = 0.0; float gamma = 0.0;
int noframe = 0; int noframe = 0;
int fsaa = 0; int fsaa = 0;
int accel = 0; int noaccel = 0;
int sync = 0; int sync = 0;
logo = 0; logo = 0;
@ -738,22 +734,22 @@ main(int argc, char *argv[])
if (strcmp(argv[i], "-fsaa") == 0) { if (strcmp(argv[i], "-fsaa") == 0) {
++fsaa; ++fsaa;
} }
if (strcmp(argv[i], "-accel") == 0) { if (strcmp(argv[i], "-noaccel") == 0) {
++accel; ++noaccel;
} }
if (strcmp(argv[i], "-sync") == 0) { if (strcmp(argv[i], "-sync") == 0) {
++sync; ++sync;
} }
if (strncmp(argv[i], "-h", 2) == 0) { if (strncmp(argv[i], "-h", 2) == 0) {
printf printf
("Usage: %s [-twice] [-logo] [-logocursor] [-slow] [-bpp n] [-gamma n] [-noframe] [-fsaa] [-accel] [-sync] [-fullscreen]\n", ("Usage: %s [-twice] [-logo] [-logocursor] [-slow] [-bpp n] [-gamma n] [-noframe] [-fsaa] [-noaccel] [-sync] [-fullscreen]\n",
argv[0]); argv[0]);
exit(0); exit(0);
} }
} }
for (i = 0; i < numtests; ++i) { for (i = 0; i < numtests; ++i) {
RunGLTest(argc, argv, logo, logocursor, slowly, bpp, gamma, RunGLTest(argc, argv, logo, logocursor, slowly, bpp, gamma,
noframe, fsaa, sync, accel); noframe, fsaa, sync, noaccel);
} }
return 0; return 0;
} }

View file

@ -162,7 +162,7 @@ Render()
int int
main(int argc, char *argv[]) main(int argc, char *argv[])
{ {
int fsaa, accel; int fsaa, noaccel;
int value; int value;
int i, done; int i, done;
SDL_DisplayMode mode; SDL_DisplayMode mode;
@ -172,7 +172,7 @@ main(int argc, char *argv[])
/* Initialize parameters */ /* Initialize parameters */
fsaa = 0; fsaa = 0;
accel = 0; noaccel = 0;
/* Initialize test framework */ /* Initialize test framework */
state = CommonCreateState(argv, SDL_INIT_VIDEO); state = CommonCreateState(argv, SDL_INIT_VIDEO);
@ -187,15 +187,15 @@ main(int argc, char *argv[])
if (SDL_strcasecmp(argv[i], "--fsaa") == 0) { if (SDL_strcasecmp(argv[i], "--fsaa") == 0) {
++fsaa; ++fsaa;
consumed = 1; consumed = 1;
} else if (SDL_strcasecmp(argv[i], "--accel") == 0) { } else if (SDL_strcasecmp(argv[i], "--noaccel") == 0) {
++accel; ++noaccel;
consumed = 1; consumed = 1;
} else { } else {
consumed = -1; consumed = -1;
} }
} }
if (consumed < 0) { if (consumed < 0) {
fprintf(stderr, "Usage: %s %s [--fsaa] [--accel]\n", argv[0], fprintf(stderr, "Usage: %s %s [--fsaa] [--noaccel]\n", argv[0],
CommonUsage(state)); CommonUsage(state));
quit(1); quit(1);
} }
@ -213,9 +213,7 @@ main(int argc, char *argv[])
state->gl_multisamplebuffers = 1; state->gl_multisamplebuffers = 1;
state->gl_multisamplesamples = fsaa; state->gl_multisamplesamples = fsaa;
} }
if (accel) { state->gl_accelerated = !noaccel;
state->gl_accelerated=1;
}
if (!CommonInit(state)) { if (!CommonInit(state)) {
quit(2); quit(2);
@ -284,15 +282,14 @@ main(int argc, char *argv[])
SDL_GetError()); SDL_GetError());
} }
} }
if (accel) {
status = SDL_GL_GetAttribute(SDL_GL_ACCELERATED_VISUAL, &value); status = SDL_GL_GetAttribute(SDL_GL_ACCELERATED_VISUAL, &value);
if (!status) { if (!status) {
printf("SDL_GL_ACCELERATED_VISUAL: requested 1, got %d\n", value); printf("SDL_GL_ACCELERATED_VISUAL: requested %d, got %d\n", !noaccel,
value);
} else { } else {
printf("Failed to get SDL_GL_ACCELERATED_VISUAL: %s\n", printf("Failed to get SDL_GL_ACCELERATED_VISUAL: %s\n",
SDL_GetError()); SDL_GetError());
} }
}
/* Set rendering settings */ /* Set rendering settings */
glMatrixMode(GL_PROJECTION); glMatrixMode(GL_PROJECTION);