SDL-1.2.14
[sdl_omap.git] / src / video / ataricommon / SDL_atarigl_c.h
CommitLineData
e14743d1 1/*
2 SDL - Simple DirectMedia Layer
3 Copyright (C) 1997-2009 Sam Lantinga
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details.
14
15 You should have received a copy of the GNU Library General Public
16 License along with this library; if not, write to the Free
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18
19 Sam Lantinga
20 slouken@libsdl.org
21*/
22#include "SDL_config.h"
23
24/* Atari OSMesa.ldg implementation of SDL OpenGL support */
25
26#ifndef _SDL_ATARIGL_H_
27#define _SDL_ATARIGL_H_
28
29#if SDL_VIDEO_OPENGL
30#include <GL/osmesa.h>
31#endif
32
33#include "../SDL_sysvideo.h"
34
35/* Hidden "this" pointer for the video functions */
36#define _THIS SDL_VideoDevice *this
37
38struct SDL_PrivateGLData {
39
40 int gl_active; /* to stop switching drivers while we have a valid context */
41
42 int gl_oldmesa; /* Old OpenGL support ? */
43
44 int gl_pixelsize; /* for CopyShadow functions */
45
46 SDL_bool gl_upsidedown; /* Some implementations draw upside down */
47
48 Uint8 *gl_shadow; /* Shadow buffer for old implementations */
49
50 /* for unsupported OSMesa buffer formats */
51 void (*ConvertSurface)(_THIS, SDL_Surface *surface);
52
53 /* to convert the shadow buffer to the screen format */
54 void (*CopyShadow)(_THIS, SDL_Surface *surface);
55
56#if SDL_VIDEO_OPENGL
57 OSMesaContext ctx;
58
59 /* OpenGL functions */
60 void (*glGetIntegerv)( GLenum pname, GLint *value );
61 void (*glFinish)(void);
62 void (*glFlush)(void);
63
64 /* osmesa.ldg */
65 OSMesaContext (*OSMesaCreateContextExt)( GLenum format, GLint depthBits, GLint stencilBits, GLint accumBits, OSMesaContext sharelist);
66 void (*OSMesaDestroyContext)( OSMesaContext ctx );
67 GLboolean (*OSMesaMakeCurrent)( OSMesaContext ctx, void *buffer, GLenum type, GLsizei width, GLsizei height );
68 void (*OSMesaPixelStore)( GLint pname, GLint value );
69 void * (*OSMesaGetProcAddress)( const char *funcName );
70
71 /* mesa_gl.ldg, tiny_gl.ldg */
72 void *(*OSMesaCreateLDG)( long format, long type, long width, long height );
73 void (*OSMesaDestroyLDG)(void);
74
75 /* Info needed to compare existing context with new asked one */
76 int width, height;
77 GLenum format;
78 GLint depth,stencil,accum;
79#endif
80};
81
82/* Variable names */
83#define gl_active (this->gl_data->gl_active)
84#define gl_ctx (this->gl_data->ctx)
85#define gl_oldmesa (this->gl_data->gl_oldmesa)
86#define gl_pixelsize (this->gl_data->gl_pixelsize)
87#define gl_upsidedown (this->gl_data->gl_upsidedown)
88#define gl_shadow (this->gl_data->gl_shadow)
89#define gl_convert (this->gl_data->ConvertSurface)
90#define gl_copyshadow (this->gl_data->CopyShadow)
91#define gl_curformat (this->gl_data->format)
92#define gl_curdepth (this->gl_data->depth)
93#define gl_curstencil (this->gl_data->stencil)
94#define gl_curaccum (this->gl_data->accum)
95#define gl_curwidth (this->gl_data->width)
96#define gl_curheight (this->gl_data->height)
97
98/* OpenGL functions */
99extern int SDL_AtariGL_Init(_THIS, SDL_Surface *current);
100extern void SDL_AtariGL_Quit(_THIS, SDL_bool unload);
101extern void SDL_AtariGL_InitPointers(_THIS);
102
103extern int SDL_AtariGL_LoadLibrary(_THIS, const char *path);
104extern void *SDL_AtariGL_GetProcAddress(_THIS, const char *proc);
105extern int SDL_AtariGL_GetAttribute(_THIS, SDL_GLattr attrib, int* value);
106extern int SDL_AtariGL_MakeCurrent(_THIS);
107extern void SDL_AtariGL_SwapBuffers(_THIS);
108
109#endif /* _SDL_ATARIGL_H_ */