- // GLES devices in general do not like GL_BGRA, so use GL_RGBA
- vid.forcetextype = TEXTYPE_RGBA;
-
- vid.support.amd_texture_texture4 = false;
- vid.support.arb_draw_buffers = false;
- vid.support.arb_occlusion_query = false;
- vid.support.arb_query_buffer_object = false;
- vid.support.arb_texture_compression = false; // different (vendor-specific) formats than on desktop OpenGL...
- vid.support.arb_texture_gather = false;
- vid.support.ext_blend_minmax = false;
- vid.support.ext_blend_subtract = true; // GLES2 core
- vid.support.ext_blend_func_separate = true; // GLES2 core
-
- vid.support.ext_packed_depth_stencil = false;
- vid.support.ext_texture_compression_s3tc = SDL_GL_ExtensionSupported("GL_EXT_texture_compression_s3tc") != 0;
- vid.support.ext_texture_filter_anisotropic = false; // probably don't want to use it...
- vid.support.ext_texture_srgb = false;
- vid.support.arb_texture_float = SDL_GL_ExtensionSupported("GL_OES_texture_float") != 0;
- vid.support.arb_half_float_pixel = SDL_GL_ExtensionSupported("GL_OES_texture_half_float") != 0;
- vid.support.arb_half_float_vertex = SDL_GL_ExtensionSupported("GL_OES_vertex_half_float") != 0;
-
- // NOTE: On some devices, a value of 512 gives better FPS than the maximum.
- qglGetIntegerv(GL_MAX_TEXTURE_SIZE, (GLint*)&vid.maxtexturesize_2d);
-
-#ifdef GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
- if (vid.support.ext_texture_filter_anisotropic)
- qglGetIntegerv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, (GLint*)&vid.max_anisotropy);
-#endif
- if (vid.support.arb_texture_cube_map)
- qglGetIntegerv(GL_MAX_CUBE_MAP_TEXTURE_SIZE, (GLint*)&vid.maxtexturesize_cubemap);
-#ifdef GL_MAX_3D_TEXTURE_SIZE
- if (vid.support.ext_texture_3d)
- qglGetIntegerv(GL_MAX_3D_TEXTURE_SIZE, (GLint*)&vid.maxtexturesize_3d);
-#endif
- Con_Printf("GL_MAX_CUBE_MAP_TEXTURE_SIZE = %i\n", vid.maxtexturesize_cubemap);
- Con_Printf("GL_MAX_3D_TEXTURE_SIZE = %i\n", vid.maxtexturesize_3d);
+static void VID_ChangeDisplay_c(cvar_t *var)
+{
+ unsigned int fullscreenwanted, fullscreencurrent;
+ unsigned int displaywanted = bound(0, vid_display.integer, vid_info_displaycount.integer - 1);
+
+ if (!window)
+ return;
+
+ fullscreencurrent = SDL_GetWindowFlags(window) & (SDL_WINDOW_FULLSCREEN_DESKTOP | SDL_WINDOW_FULLSCREEN);
+ if (vid_fullscreen.integer)
+ fullscreenwanted = vid_desktopfullscreen.integer ? SDL_WINDOW_FULLSCREEN_DESKTOP : SDL_WINDOW_FULLSCREEN;
+ else
+ fullscreenwanted = 0;
+
+ // moving to another display, changing the fullscreen mode or switching to windowed
+ if (vid.displayindex != displaywanted // SDL seems unable to move any fullscreen window to another display
+ || fullscreencurrent != fullscreenwanted) // even for desktop <-> exclusive: switching to windowed first feels safer