src/video/x11/SDL_x11opengl.h
author Michael Sartain <mikesart@valvesoftware.com>
Thu, 11 Oct 2012 09:41:43 -0700
changeset 6570 45855398762c
parent 6382 64d54101773a
child 6846 97eb26e2dee0
permissions -rw-r--r--
Add GLX_X_VISUAL_TYPE_EXT so created window will use DirectColor if available (instead of TrueColor).
Our new X11 window was being created with the TrueColor attribute, and trying to set the gamma
on that would fail. This change checks for the visual_info extension, and uses that to ask for
DirectColor if available.
slouken@1952
     1
/*
slouken@5535
     2
  Simple DirectMedia Layer
slouken@6138
     3
  Copyright (C) 1997-2012 Sam Lantinga <slouken@libsdl.org>
slouken@1952
     4
slouken@5535
     5
  This software is provided 'as-is', without any express or implied
slouken@5535
     6
  warranty.  In no event will the authors be held liable for any damages
slouken@5535
     7
  arising from the use of this software.
slouken@1952
     8
slouken@5535
     9
  Permission is granted to anyone to use this software for any purpose,
slouken@5535
    10
  including commercial applications, and to alter it and redistribute it
slouken@5535
    11
  freely, subject to the following restrictions:
slouken@1952
    12
slouken@5535
    13
  1. The origin of this software must not be misrepresented; you must not
slouken@5535
    14
     claim that you wrote the original software. If you use this software
slouken@5535
    15
     in a product, an acknowledgment in the product documentation would be
slouken@5535
    16
     appreciated but is not required.
slouken@5535
    17
  2. Altered source versions must be plainly marked as such, and must not be
slouken@5535
    18
     misrepresented as being the original software.
slouken@5535
    19
  3. This notice may not be removed or altered from any source distribution.
slouken@1952
    20
*/
slouken@1952
    21
#include "SDL_config.h"
slouken@1952
    22
slouken@1952
    23
#ifndef _SDL_x11opengl_h
slouken@1952
    24
#define _SDL_x11opengl_h
slouken@1952
    25
slouken@1952
    26
#if SDL_VIDEO_OPENGL_GLX
slouken@1952
    27
#include "SDL_opengl.h"
slouken@1952
    28
#include <GL/glx.h>
slouken@1952
    29
slouken@1952
    30
struct SDL_GLDriverData
slouken@1952
    31
{
slouken@1952
    32
    SDL_bool HAS_GLX_EXT_visual_rating;
mikesart@6570
    33
    SDL_bool HAS_GLX_EXT_visual_info;
icculus@6382
    34
    SDL_bool HAS_GLX_EXT_swap_control_tear;
slouken@1952
    35
icculus@5572
    36
    void *(*glXGetProcAddress) (const GLubyte*);
icculus@5572
    37
    XVisualInfo *(*glXChooseVisual) (Display*,int,int*);
icculus@5572
    38
    GLXContext (*glXCreateContext) (Display*,XVisualInfo*,GLXContext,Bool);
icculus@5572
    39
    void (*glXDestroyContext) (Display*, GLXContext);
icculus@5572
    40
    Bool(*glXMakeCurrent) (Display*,GLXDrawable,GLXContext);
icculus@5572
    41
    void (*glXSwapBuffers) (Display*, GLXDrawable);
icculus@5572
    42
    void (*glXQueryDrawable) (Display*,GLXDrawable,int,unsigned int*);
icculus@5630
    43
    int (*glXSwapIntervalEXT) (Display*,GLXDrawable,int);
icculus@5572
    44
    int (*glXSwapIntervalSGI) (int);
icculus@5572
    45
    int (*glXSwapIntervalMESA) (int);
icculus@5572
    46
    int (*glXGetSwapIntervalMESA) (void);
slouken@1952
    47
};
slouken@1952
    48
slouken@1952
    49
/* OpenGL functions */
slouken@1952
    50
extern int X11_GL_LoadLibrary(_THIS, const char *path);
slouken@1952
    51
extern void *X11_GL_GetProcAddress(_THIS, const char *proc);
slouken@3057
    52
extern void X11_GL_UnloadLibrary(_THIS);
slouken@1952
    53
extern XVisualInfo *X11_GL_GetVisual(_THIS, Display * display, int screen);
slouken@1952
    54
extern SDL_GLContext X11_GL_CreateContext(_THIS, SDL_Window * window);
slouken@1952
    55
extern int X11_GL_MakeCurrent(_THIS, SDL_Window * window,
slouken@1952
    56
                              SDL_GLContext context);
slouken@1952
    57
extern int X11_GL_SetSwapInterval(_THIS, int interval);
slouken@1952
    58
extern int X11_GL_GetSwapInterval(_THIS);
slouken@1952
    59
extern void X11_GL_SwapWindow(_THIS, SDL_Window * window);
slouken@1952
    60
extern void X11_GL_DeleteContext(_THIS, SDL_GLContext context);
slouken@1952
    61
slouken@1952
    62
#endif /* SDL_VIDEO_OPENGL_GLX */
slouken@1952
    63
slouken@1952
    64
#endif /* _SDL_x11opengl_h */
slouken@1952
    65
slouken@1952
    66
/* vi: set ts=4 sw=4 expandtab: */