annotate src/video/ataricommon/SDL_atarigl.c @ 1192:54aa9aa32327

To: sdl@libsdl.org From: Christian Walther <cwalther@gmx.ch> Date: Fri, 18 Nov 2005 23:39:02 +0100 Subject: [SDL] Mouse position bugs on Mac OS X The attached patch fixes a few bugs in SDL related to the mouse position in windowed mode on Mac OS X, reproduced using the attached minimal test program - at least here on 10.3.9, with SDL CVS from today. Could anyone test whether the bugs exist and are fixed by the patch on 10.2 and 10.4? 1. When using OpenGL, the vertical mouse positions obtained through events or SDL_GetMouseState() are off by one. 2. When using OpenGL, SDL_WarpMouse() inverts the y coordinate. 3. Clicks on the topmost pixel row of the window are not recognized. 1 and 2 do not occur in non-OpenGL mode, while 3 does. All three only occur in windowed mode, not in fullscreen. The cause for 1 and 3 is that in Cocoa, "the location of the mouse" seems to be defined as "the location of the top left corner of the mouse pointer's hot pixel" (this is not documented, it's just what I found out here), which together with the fact that Cocoa's usual y coordinates start at the bottom and increase upwards means that the y coordinate of the mouse runs from 1 to h, not from 0 to h-1, in a window of height h. If it does work on 10.2 and 10.4 (I'll try to test it as soon as I can, but at the moment all I have at hand is 10.3.9), can this be applied to the CVS? -Christian To: sdl@libsdl.org From: Christian Walther <cwalther@gmx.ch> Date: Mon, 28 Nov 2005 10:41:51 +0100 Subject: [SDL] Re: Mouse position bugs on Mac OS X I wrote: > I'll try to test it as soon as I can, but at the moment all I have at hand is 10.3.9 So, here are the results of my tests (with patched and unpatched frameworks compiled with Xcode 1.5 (gcc 3.3) on 10.3.9): On 10.1.5, my test program doesn't run because of "Undefined symbols: SDL undefined reference to _CGMainDisplayID expected to be defined in Carbon". I guess not supporting 10.1 was a deliberate decision then and that's OK with me. On 10.2.8, 10.3.9, and 10.4.0, the bugs exist as described in my original post and are fixed by my patch. That is, there is no difference between pre/post 10.3 and the patched version works correctly in all combinations of GL/non-GL and windowed/fullscreen. I therefore recommend the patch for inclusion. -Christian
author Ryan C. Gordon <icculus@icculus.org>
date Mon, 28 Nov 2005 13:58:26 +0000
parents 2ab1cb02a44e
children 1901fea5edac
rev   line source
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1 /*
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
2 SDL - Simple DirectMedia Layer
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
3 Copyright (C) 1997-2004 Sam Lantinga
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
4
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
5 This library is free software; you can redistribute it and/or
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
6 modify it under the terms of the GNU Library General Public
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
7 License as published by the Free Software Foundation; either
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
8 version 2 of the License, or (at your option) any later version.
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
9
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
10 This library is distributed in the hope that it will be useful,
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
13 Library General Public License for more details.
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
14
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
15 You should have received a copy of the GNU Library General Public
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
16 License along with this library; if not, write to the Free
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
18
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
19 Sam Lantinga
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
20 slouken@libsdl.org
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
21 */
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
22
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
23 /* Atari OSMesa.ldg implementation of SDL OpenGL support */
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
24
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
25 /*--- Includes ---*/
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
26
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
27 #include <stdio.h>
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
28 #include <stdlib.h>
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
29 #include <string.h>
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
30 #ifdef HAVE_OPENGL
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
31 #include <GL/osmesa.h>
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
32 #endif
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
33
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
34 #include <mint/osbind.h>
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
35
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
36 #include "SDL_video.h"
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
37 #include "SDL_error.h"
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
38 #include "SDL_endian.h"
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
39 #include "SDL_atarigl_c.h"
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
40 #ifdef ENABLE_OSMESA_SHARED
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
41 #include "SDL_loadso.h"
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
42 #endif
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
43
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
44 /*--- Defines ---*/
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
45
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
46 #define PATH_OSMESA_LDG "osmesa.ldg"
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
47 #define PATH_MESAGL_LDG "mesa_gl.ldg"
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
48 #define PATH_TINYGL_LDG "tiny_gl.ldg"
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
49
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
50 #define VDI_RGB 0xf
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
51
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
52 /*--- Functions prototypes ---*/
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
53
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
54 static void SDL_AtariGL_UnloadLibrary(_THIS);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
55
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
56 #ifdef HAVE_OPENGL
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
57 static void CopyShadowNull(_THIS, SDL_Surface *surface);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
58 static void CopyShadowDirect(_THIS, SDL_Surface *surface);
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
59 static void CopyShadowRGBTo555(_THIS, SDL_Surface *surface);
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
60 static void CopyShadowRGBTo565(_THIS, SDL_Surface *surface);
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
61 static void CopyShadowRGBSwap(_THIS, SDL_Surface *surface);
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
62 static void CopyShadowRGBToARGB(_THIS, SDL_Surface *surface);
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
63 static void CopyShadowRGBToABGR(_THIS, SDL_Surface *surface);
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
64 static void CopyShadowRGBToBGRA(_THIS, SDL_Surface *surface);
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
65 static void CopyShadowRGBToRGBA(_THIS, SDL_Surface *surface);
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
66 static void CopyShadow8888To555(_THIS, SDL_Surface *surface);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
67 static void CopyShadow8888To565(_THIS, SDL_Surface *surface);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
68
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
69 static void ConvertNull(_THIS, SDL_Surface *surface);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
70 static void Convert565To555be(_THIS, SDL_Surface *surface);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
71 static void Convert565To555le(_THIS, SDL_Surface *surface);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
72 static void Convert565le(_THIS, SDL_Surface *surface);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
73 static void ConvertBGRAToABGR(_THIS, SDL_Surface *surface);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
74
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
75 static int InitNew(_THIS, SDL_Surface *current);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
76 static int InitOld(_THIS, SDL_Surface *current);
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
77 #endif
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
78
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
79 /*--- Public functions ---*/
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
80
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
81 int SDL_AtariGL_Init(_THIS, SDL_Surface *current)
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
82 {
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
83 #ifdef HAVE_OPENGL
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
84 if (gl_oldmesa) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
85 gl_active = InitOld(this, current);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
86 } else {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
87 gl_active = InitNew(this, current);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
88 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
89 #endif
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
90
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
91 return (gl_active);
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
92 }
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
93
992
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
94 void SDL_AtariGL_Quit(_THIS, SDL_bool unload)
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
95 {
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
96 #ifdef HAVE_OPENGL
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
97 if (gl_oldmesa) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
98 /* Old mesa implementations */
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
99 if (this->gl_data->OSMesaDestroyLDG) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
100 this->gl_data->OSMesaDestroyLDG();
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
101 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
102 if (gl_shadow) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
103 Mfree(gl_shadow);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
104 gl_shadow = NULL;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
105 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
106 } else {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
107 /* New mesa implementation */
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
108 if (gl_ctx) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
109 if (this->gl_data->OSMesaDestroyContext) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
110 this->gl_data->OSMesaDestroyContext(gl_ctx);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
111 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
112 gl_ctx = NULL;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
113 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
114 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
115
992
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
116 if (unload) {
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
117 SDL_AtariGL_UnloadLibrary(this);
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
118 }
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
119
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
120 #endif /* HAVE_OPENGL */
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
121 gl_active = 0;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
122 }
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
123
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
124 int SDL_AtariGL_LoadLibrary(_THIS, const char *path)
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
125 {
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
126 #ifdef HAVE_OPENGL
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
127
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
128 #ifdef ENABLE_OSMESA_SHARED
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
129 void *handle;
995
22fc5f45bbb7 TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents: 993
diff changeset
130 SDL_bool cancel_load;
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
131
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
132 if (gl_active) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
133 SDL_SetError("OpenGL context already created");
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
134 return -1;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
135 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
136
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
137 /* Unload previous driver */
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
138 SDL_AtariGL_UnloadLibrary(this);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
139
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
140 /* Load library given by path */
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
141 handle = SDL_LoadObject(path);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
142 if (handle == NULL) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
143 /* Try to load another one */
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
144 path = getenv("SDL_VIDEO_GL_DRIVER");
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
145 if ( path != NULL ) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
146 handle = SDL_LoadObject(path);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
147 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
148
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
149 /* If it does not work, try some other */
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
150 if (handle == NULL) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
151 path = PATH_OSMESA_LDG;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
152 handle = SDL_LoadObject(path);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
153 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
154
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
155 if (handle == NULL) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
156 path = PATH_MESAGL_LDG;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
157 handle = SDL_LoadObject(path);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
158 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
159
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
160 if (handle == NULL) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
161 path = PATH_TINYGL_LDG;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
162 handle = SDL_LoadObject(path);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
163 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
164 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
165
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
166 if (handle == NULL) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
167 SDL_SetError("Could not load OpenGL library");
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
168 return -1;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
169 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
170
993
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
171 this->gl_data->glGetIntegerv = SDL_LoadFunction(handle, "glGetIntegerv");
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
172 this->gl_data->glFinish = SDL_LoadFunction(handle, "glFinish");
995
22fc5f45bbb7 TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents: 993
diff changeset
173 this->gl_data->glFlush = SDL_LoadFunction(handle, "glFlush");
993
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
174
995
22fc5f45bbb7 TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents: 993
diff changeset
175 cancel_load = SDL_FALSE;
22fc5f45bbb7 TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents: 993
diff changeset
176 if (this->gl_data->glGetIntegerv == NULL) {
22fc5f45bbb7 TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents: 993
diff changeset
177 cancel_load = SDL_TRUE;
22fc5f45bbb7 TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents: 993
diff changeset
178 } else {
22fc5f45bbb7 TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents: 993
diff changeset
179 /* We need either glFinish (OSMesa) or glFlush (TinyGL) */
22fc5f45bbb7 TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents: 993
diff changeset
180 if ((this->gl_data->glFinish == NULL) &&
22fc5f45bbb7 TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents: 993
diff changeset
181 (this->gl_data->glFlush == NULL)) {
22fc5f45bbb7 TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents: 993
diff changeset
182 cancel_load = SDL_TRUE;
22fc5f45bbb7 TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents: 993
diff changeset
183 }
22fc5f45bbb7 TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents: 993
diff changeset
184 }
22fc5f45bbb7 TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents: 993
diff changeset
185 if (cancel_load) {
993
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
186 SDL_SetError("Could not retrieve OpenGL functions");
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
187 SDL_UnloadObject(handle);
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
188 /* Restore pointers to static library */
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
189 SDL_AtariGL_InitPointers(this);
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
190 return -1;
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
191 }
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
192
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
193 /* Load functions pointers (osmesa.ldg) */
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
194 this->gl_data->OSMesaCreateContextExt = SDL_LoadFunction(handle, "OSMesaCreateContextExt");
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
195 this->gl_data->OSMesaDestroyContext = SDL_LoadFunction(handle, "OSMesaDestroyContext");
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
196 this->gl_data->OSMesaMakeCurrent = SDL_LoadFunction(handle, "OSMesaMakeCurrent");
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
197 this->gl_data->OSMesaPixelStore = SDL_LoadFunction(handle, "OSMesaPixelStore");
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
198 this->gl_data->OSMesaGetProcAddress = SDL_LoadFunction(handle, "OSMesaGetProcAddress");
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
199
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
200 /* Load old functions pointers (mesa_gl.ldg, tiny_gl.ldg) */
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
201 this->gl_data->OSMesaCreateLDG = SDL_LoadFunction(handle, "OSMesaCreateLDG");
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
202 this->gl_data->OSMesaDestroyLDG = SDL_LoadFunction(handle, "OSMesaDestroyLDG");
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
203
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
204 gl_oldmesa = 0;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
205
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
206 if ( (this->gl_data->OSMesaCreateContextExt == NULL) ||
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
207 (this->gl_data->OSMesaDestroyContext == NULL) ||
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
208 (this->gl_data->OSMesaMakeCurrent == NULL) ||
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
209 (this->gl_data->OSMesaPixelStore == NULL) ||
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
210 (this->gl_data->OSMesaGetProcAddress == NULL)) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
211 /* Hum, maybe old library ? */
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
212 if ( (this->gl_data->OSMesaCreateLDG == NULL) ||
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
213 (this->gl_data->OSMesaDestroyLDG == NULL)) {
993
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
214 SDL_SetError("Could not retrieve OSMesa functions");
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
215 SDL_UnloadObject(handle);
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
216 /* Restore pointers to static library */
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
217 SDL_AtariGL_InitPointers(this);
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
218 return -1;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
219 } else {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
220 gl_oldmesa = 1;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
221 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
222 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
223
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
224 this->gl_config.dll_handle = handle;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
225 if ( path ) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
226 strncpy(this->gl_config.driver_path, path,
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
227 sizeof(this->gl_config.driver_path)-1);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
228 } else {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
229 strcpy(this->gl_config.driver_path, "");
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
230 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
231
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
232 #endif
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
233 this->gl_config.driver_loaded = 1;
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
234
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
235 return 0;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
236 #else
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
237 return -1;
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
238 #endif
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
239 }
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
240
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
241 void *SDL_AtariGL_GetProcAddress(_THIS, const char *proc)
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
242 {
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
243 void *func = NULL;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
244 #ifdef HAVE_OPENGL
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
245
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
246 if (this->gl_config.dll_handle) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
247 func = SDL_LoadFunction(this->gl_config.dll_handle, (void *)proc);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
248 } else if (this->gl_data->OSMesaGetProcAddress) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
249 func = this->gl_data->OSMesaGetProcAddress(proc);
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
250 }
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
251
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
252 #endif
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
253 return func;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
254 }
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
255
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
256 int SDL_AtariGL_GetAttribute(_THIS, SDL_GLattr attrib, int* value)
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
257 {
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
258 #ifdef HAVE_OPENGL
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
259 GLenum mesa_attrib;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
260 SDL_Surface *surface;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
261
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
262 if (!gl_active) {
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
263 return -1;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
264 }
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
265
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
266 switch(attrib) {
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
267 case SDL_GL_RED_SIZE:
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
268 mesa_attrib = GL_RED_BITS;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
269 break;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
270 case SDL_GL_GREEN_SIZE:
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
271 mesa_attrib = GL_GREEN_BITS;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
272 break;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
273 case SDL_GL_BLUE_SIZE:
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
274 mesa_attrib = GL_BLUE_BITS;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
275 break;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
276 case SDL_GL_ALPHA_SIZE:
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
277 mesa_attrib = GL_ALPHA_BITS;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
278 break;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
279 case SDL_GL_DOUBLEBUFFER:
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
280 surface = this->screen;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
281 *value = ((surface->flags & SDL_DOUBLEBUF)==SDL_DOUBLEBUF);
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
282 return 0;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
283 case SDL_GL_DEPTH_SIZE:
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
284 mesa_attrib = GL_DEPTH_BITS;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
285 break;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
286 case SDL_GL_STENCIL_SIZE:
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
287 mesa_attrib = GL_STENCIL_BITS;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
288 break;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
289 case SDL_GL_ACCUM_RED_SIZE:
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
290 mesa_attrib = GL_ACCUM_RED_BITS;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
291 break;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
292 case SDL_GL_ACCUM_GREEN_SIZE:
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
293 mesa_attrib = GL_ACCUM_GREEN_BITS;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
294 break;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
295 case SDL_GL_ACCUM_BLUE_SIZE:
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
296 mesa_attrib = GL_ACCUM_BLUE_BITS;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
297 break;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
298 case SDL_GL_ACCUM_ALPHA_SIZE:
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
299 mesa_attrib = GL_ACCUM_ALPHA_BITS;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
300 break;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
301 default :
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
302 return -1;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
303 }
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
304
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
305 this->gl_data->glGetIntegerv(mesa_attrib, value);
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
306 return 0;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
307 #else
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
308 return -1;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
309 #endif
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
310 }
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
311
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
312 int SDL_AtariGL_MakeCurrent(_THIS)
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
313 {
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
314 #ifdef HAVE_OPENGL
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
315 SDL_Surface *surface;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
316 GLenum type;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
317
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
318 if (gl_oldmesa && gl_active) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
319 return 0;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
320 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
321
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
322 if (this->gl_config.dll_handle) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
323 if ((this->gl_data->OSMesaMakeCurrent == NULL) ||
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
324 (this->gl_data->OSMesaPixelStore == NULL)) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
325 return -1;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
326 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
327 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
328
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
329 if (!gl_active) {
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
330 SDL_SetError("Invalid OpenGL context");
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
331 return -1;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
332 }
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
333
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
334 surface = this->screen;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
335
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
336 if ((surface->format->BitsPerPixel == 15) || (surface->format->BitsPerPixel == 16)) {
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
337 type = GL_UNSIGNED_SHORT_5_6_5;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
338 } else {
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
339 type = GL_UNSIGNED_BYTE;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
340 }
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
341
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
342 if (!(this->gl_data->OSMesaMakeCurrent(gl_ctx, surface->pixels, type, surface->w, surface->h))) {
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
343 SDL_SetError("Can not make OpenGL context current");
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
344 return -1;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
345 }
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
346
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
347 /* OSMesa draws upside down */
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
348 this->gl_data->OSMesaPixelStore(OSMESA_Y_UP, 0);
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
349
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
350 return 0;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
351 #else
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
352 return -1;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
353 #endif
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
354 }
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
355
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
356 void SDL_AtariGL_SwapBuffers(_THIS)
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
357 {
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
358 #ifdef HAVE_OPENGL
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
359 if (gl_active) {
993
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
360 if (this->gl_config.dll_handle) {
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
361 if (this->gl_data->glFinish) {
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
362 this->gl_data->glFinish();
995
22fc5f45bbb7 TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents: 993
diff changeset
363 } else if (this->gl_data->glFlush) {
22fc5f45bbb7 TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents: 993
diff changeset
364 this->gl_data->glFlush();
993
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
365 }
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
366 } else {
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
367 this->gl_data->glFinish();
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
368 }
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
369 gl_copyshadow(this, this->screen);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
370 gl_convert(this, this->screen);
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
371 }
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
372 #endif
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
373 }
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
374
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
375 void SDL_AtariGL_InitPointers(_THIS)
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
376 {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
377 #if defined(HAVE_OPENGL)
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
378 this->gl_data->OSMesaCreateContextExt = OSMesaCreateContextExt;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
379 this->gl_data->OSMesaDestroyContext = OSMesaDestroyContext;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
380 this->gl_data->OSMesaMakeCurrent = OSMesaMakeCurrent;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
381 this->gl_data->OSMesaPixelStore = OSMesaPixelStore;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
382 this->gl_data->OSMesaGetProcAddress = OSMesaGetProcAddress;
993
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
383
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
384 this->gl_data->glGetIntegerv = glGetIntegerv;
993
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
385 this->gl_data->glFinish = glFinish;
995
22fc5f45bbb7 TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents: 993
diff changeset
386 this->gl_data->glFlush = glFlush;
993
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
387
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
388 this->gl_data->OSMesaCreateLDG = NULL;
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
389 this->gl_data->OSMesaDestroyLDG = NULL;
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
390 #endif
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
391 }
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
392
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
393 /*--- Private functions ---*/
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
394
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
395 static void SDL_AtariGL_UnloadLibrary(_THIS)
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
396 {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
397 #if defined(HAVE_OPENGL)
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
398 if (this->gl_config.dll_handle) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
399 SDL_UnloadObject(this->gl_config.dll_handle);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
400 this->gl_config.dll_handle = NULL;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
401
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
402 /* Restore pointers to static library */
993
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
403 SDL_AtariGL_InitPointers(this);
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
404 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
405 #endif
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
406 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
407
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
408 /*--- Creation of an OpenGL context using new/old functions ---*/
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
409
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
410 #ifdef HAVE_OPENGL
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
411 static int InitNew(_THIS, SDL_Surface *current)
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
412 {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
413 GLenum osmesa_format;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
414 SDL_PixelFormat *pixel_format;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
415 Uint32 redmask;
992
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
416 int recreatecontext;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
417 GLint newaccumsize;
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
418
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
419 if (this->gl_config.dll_handle) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
420 if (this->gl_data->OSMesaCreateContextExt == NULL) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
421 return 0;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
422 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
423 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
424
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
425 /* Init OpenGL context using OSMesa */
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
426 gl_convert = ConvertNull;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
427 gl_copyshadow = CopyShadowNull;
1005
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
428 gl_upsidedown = SDL_FALSE;
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
429
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
430 pixel_format = current->format;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
431 redmask = pixel_format->Rmask;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
432 switch (pixel_format->BitsPerPixel) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
433 case 15:
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
434 /* 1555, big and little endian, unsupported */
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
435 gl_pixelsize = 2;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
436 osmesa_format = OSMESA_RGB_565;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
437 if (redmask == 31<<10) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
438 gl_convert = Convert565To555be;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
439 } else {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
440 gl_convert = Convert565To555le;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
441 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
442 break;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
443 case 16:
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
444 gl_pixelsize = 2;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
445 if (redmask == 31<<11) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
446 osmesa_format = OSMESA_RGB_565;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
447 } else {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
448 /* 565, little endian, unsupported */
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
449 osmesa_format = OSMESA_RGB_565;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
450 gl_convert = Convert565le;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
451 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
452 break;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
453 case 24:
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
454 gl_pixelsize = 3;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
455 if (redmask == 255<<16) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
456 osmesa_format = OSMESA_RGB;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
457 } else {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
458 osmesa_format = OSMESA_BGR;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
459 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
460 break;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
461 case 32:
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
462 gl_pixelsize = 4;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
463 if (redmask == 255<<16) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
464 osmesa_format = OSMESA_ARGB;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
465 } else if (redmask == 255<<8) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
466 osmesa_format = OSMESA_BGRA;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
467 } else if (redmask == 255<<24) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
468 osmesa_format = OSMESA_RGBA;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
469 } else {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
470 /* ABGR format unsupported */
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
471 osmesa_format = OSMESA_BGRA;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
472 gl_convert = ConvertBGRAToABGR;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
473 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
474 break;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
475 default:
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
476 gl_pixelsize = 1;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
477 osmesa_format = OSMESA_COLOR_INDEX;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
478 break;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
479 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
480
992
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
481 /* Try to keep current context if possible */
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
482 newaccumsize =
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
483 this->gl_config.accum_red_size +
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
484 this->gl_config.accum_green_size +
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
485 this->gl_config.accum_blue_size +
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
486 this->gl_config.accum_alpha_size;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
487 recreatecontext=1;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
488 if (gl_ctx &&
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
489 (gl_curformat == osmesa_format) &&
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
490 (gl_curdepth == this->gl_config.depth_size) &&
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
491 (gl_curstencil == this->gl_config.stencil_size) &&
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
492 (gl_curaccum == newaccumsize)) {
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
493 recreatecontext = 0;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
494 }
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
495 if (recreatecontext) {
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
496 SDL_AtariGL_Quit(this, SDL_FALSE);
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
497
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
498 gl_ctx = this->gl_data->OSMesaCreateContextExt(
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
499 osmesa_format, this->gl_config.depth_size,
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
500 this->gl_config.stencil_size, newaccumsize, NULL );
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
501
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
502 if (gl_ctx) {
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
503 gl_curformat = osmesa_format;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
504 gl_curdepth = this->gl_config.depth_size;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
505 gl_curstencil = this->gl_config.stencil_size;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
506 gl_curaccum = newaccumsize;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
507 } else {
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
508 gl_curformat = 0;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
509 gl_curdepth = 0;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
510 gl_curstencil = 0;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
511 gl_curaccum = 0;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
512 }
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
513 }
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
514
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
515 return (gl_ctx != NULL);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
516 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
517
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
518
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
519 static int InitOld(_THIS, SDL_Surface *current)
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
520 {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
521 GLenum osmesa_format;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
522 SDL_PixelFormat *pixel_format;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
523 Uint32 redmask;
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
524 int recreatecontext, tinygl_present;
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
525
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
526 if (this->gl_config.dll_handle) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
527 if (this->gl_data->OSMesaCreateLDG == NULL) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
528 return 0;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
529 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
530 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
531
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
532 /* TinyGL only supports VDI_RGB (OSMESA_RGB) */
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
533 tinygl_present=0;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
534 if (this->gl_config.dll_handle) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
535 if (this->gl_data->glFinish == NULL) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
536 tinygl_present=1;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
537 }
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
538 }
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
539
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
540 /* Init OpenGL context using OSMesa */
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
541 gl_convert = ConvertNull;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
542 gl_copyshadow = CopyShadowNull;
1005
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
543 gl_upsidedown = SDL_FALSE;
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
544
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
545 pixel_format = current->format;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
546 redmask = pixel_format->Rmask;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
547 switch (pixel_format->BitsPerPixel) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
548 case 15:
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
549 /* 15 bits unsupported */
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
550 if (tinygl_present) {
1002
13aa96c76e86 Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents: 1000
diff changeset
551 gl_pixelsize = 3;
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
552 osmesa_format = VDI_RGB;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
553 if (redmask == 31<<10) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
554 gl_copyshadow = CopyShadowRGBTo555;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
555 } else {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
556 gl_copyshadow = CopyShadowRGBTo565;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
557 gl_convert = Convert565To555le;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
558 }
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
559 } else {
1002
13aa96c76e86 Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents: 1000
diff changeset
560 gl_pixelsize = 4;
1005
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
561 gl_upsidedown = SDL_TRUE;
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
562 osmesa_format = OSMESA_ARGB;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
563 if (redmask == 31<<10) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
564 gl_copyshadow = CopyShadow8888To555;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
565 } else {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
566 gl_copyshadow = CopyShadow8888To565;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
567 gl_convert = Convert565To555le;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
568 }
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
569 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
570 break;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
571 case 16:
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
572 /* 16 bits unsupported */
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
573 if (tinygl_present) {
1002
13aa96c76e86 Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents: 1000
diff changeset
574 gl_pixelsize = 3;
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
575 osmesa_format = VDI_RGB;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
576 gl_copyshadow = CopyShadowRGBTo565;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
577 if (redmask != 31<<11) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
578 /* 565, little endian, unsupported */
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
579 gl_convert = Convert565le;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
580 }
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
581 } else {
1002
13aa96c76e86 Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents: 1000
diff changeset
582 gl_pixelsize = 4;
1005
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
583 gl_upsidedown = SDL_TRUE;
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
584 osmesa_format = OSMESA_ARGB;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
585 gl_copyshadow = CopyShadow8888To565;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
586 if (redmask != 31<<11) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
587 /* 565, little endian, unsupported */
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
588 gl_convert = Convert565le;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
589 }
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
590 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
591 break;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
592 case 24:
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
593 gl_pixelsize = 3;
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
594 if (tinygl_present) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
595 osmesa_format = VDI_RGB;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
596 gl_copyshadow = CopyShadowDirect;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
597 if (redmask != 255<<16) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
598 gl_copyshadow = CopyShadowRGBSwap;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
599 }
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
600 } else {
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
601 gl_copyshadow = CopyShadowDirect;
1005
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
602 gl_upsidedown = SDL_TRUE;
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
603 if (redmask == 255<<16) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
604 osmesa_format = OSMESA_RGB;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
605 } else {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
606 osmesa_format = OSMESA_BGR;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
607 }
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
608 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
609 break;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
610 case 32:
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
611 if (tinygl_present) {
1002
13aa96c76e86 Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents: 1000
diff changeset
612 gl_pixelsize = 3;
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
613 osmesa_format = VDI_RGB;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
614 gl_copyshadow = CopyShadowRGBToARGB;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
615 if (redmask == 255) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
616 gl_convert = CopyShadowRGBToABGR;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
617 } else if (redmask == 255<<8) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
618 gl_convert = CopyShadowRGBToBGRA;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
619 } else if (redmask == 255<<24) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
620 gl_convert = CopyShadowRGBToRGBA;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
621 }
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
622 } else {
1002
13aa96c76e86 Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents: 1000
diff changeset
623 gl_pixelsize = 4;
1005
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
624 gl_upsidedown = SDL_TRUE;
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
625 gl_copyshadow = CopyShadowDirect;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
626 if (redmask == 255<<16) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
627 osmesa_format = OSMESA_ARGB;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
628 } else if (redmask == 255<<8) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
629 osmesa_format = OSMESA_BGRA;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
630 } else if (redmask == 255<<24) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
631 osmesa_format = OSMESA_RGBA;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
632 } else {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
633 /* ABGR format unsupported */
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
634 osmesa_format = OSMESA_BGRA;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
635 gl_convert = ConvertBGRAToABGR;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
636 }
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
637 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
638 break;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
639 default:
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
640 if (tinygl_present) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
641 SDL_AtariGL_Quit(this, SDL_FALSE);
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
642 return 0;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
643 }
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
644 gl_pixelsize = 1;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
645 gl_copyshadow = CopyShadowDirect;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
646 osmesa_format = OSMESA_COLOR_INDEX;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
647 break;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
648 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
649
992
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
650 /* Try to keep current context if possible */
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
651 recreatecontext=1;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
652 if (gl_shadow &&
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
653 (gl_curformat == osmesa_format) &&
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
654 (gl_curwidth == current->w) &&
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
655 (gl_curheight == current->h)) {
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
656 recreatecontext = 0;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
657 }
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
658 if (recreatecontext) {
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
659 SDL_AtariGL_Quit(this, SDL_FALSE);
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
660
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
661 gl_shadow = this->gl_data->OSMesaCreateLDG(
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
662 osmesa_format, GL_UNSIGNED_BYTE, current->w, current->h
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
663 );
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
664
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
665 if (gl_shadow) {
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
666 gl_curformat = osmesa_format;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
667 gl_curwidth = current->w;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
668 gl_curheight = current->h;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
669 } else {
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
670 gl_curformat = 0;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
671 gl_curwidth = 0;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
672 gl_curheight = 0;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
673 }
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
674 }
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
675
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
676 return (gl_shadow != NULL);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
677 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
678
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
679 /*--- Conversions routines from shadow buffer to the screen ---*/
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
680
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
681 static void CopyShadowNull(_THIS, SDL_Surface *surface)
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
682 {
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
683 }
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
684
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
685 static void CopyShadowDirect(_THIS, SDL_Surface *surface)
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
686 {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
687 int y, srcpitch, dstpitch;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
688 Uint8 *srcline, *dstline;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
689
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
690 srcline = gl_shadow;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
691 srcpitch = surface->w * gl_pixelsize;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
692 dstline = surface->pixels;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
693 dstpitch = surface->pitch;
1005
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
694 if (gl_upsidedown) {
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
695 srcline += (surface->h-1)*srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
696 srcpitch = -srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
697 }
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
698
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
699 for (y=0; y<surface->h; y++) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
700 memcpy(dstline, srcline, srcpitch);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
701
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
702 srcline += srcpitch;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
703 dstline += dstpitch;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
704 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
705 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
706
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
707 static void CopyShadowRGBTo555(_THIS, SDL_Surface *surface)
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
708 {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
709 int x,y, srcpitch, dstpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
710 Uint16 *dstline, *dstcol;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
711 Uint8 *srcline, *srccol;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
712
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
713 srcline = (Uint8 *)gl_shadow;
1002
13aa96c76e86 Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents: 1000
diff changeset
714 srcpitch = surface->w * gl_pixelsize;
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
715 dstline = surface->pixels;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
716 dstpitch = surface->pitch >>1;
1005
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
717 if (gl_upsidedown) {
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
718 srcline += (surface->h-1)*srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
719 srcpitch = -srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
720 }
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
721
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
722 for (y=0; y<surface->h; y++) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
723 srccol = srcline;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
724 dstcol = dstline;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
725 for (x=0; x<surface->w; x++) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
726 Uint16 dstcolor;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
727
1003
ece5ab8acd1c Wrong RGB24 to RGB16 conversion
Patrice Mandin <patmandin@gmail.com>
parents: 1002
diff changeset
728 dstcolor = ((*srccol++)<<7) & (31<<10);
ece5ab8acd1c Wrong RGB24 to RGB16 conversion
Patrice Mandin <patmandin@gmail.com>
parents: 1002
diff changeset
729 dstcolor |= ((*srccol++)<<2) & (31<<5);
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
730 dstcolor |= ((*srccol++)>>3) & 31;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
731 *dstcol++ = dstcolor;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
732 }
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
733
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
734 srcline += srcpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
735 dstline += dstpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
736 }
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
737 }
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
738
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
739 static void CopyShadowRGBTo565(_THIS, SDL_Surface *surface)
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
740 {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
741 int x,y, srcpitch, dstpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
742 Uint16 *dstline, *dstcol;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
743 Uint8 *srcline, *srccol;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
744
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
745 srcline = (Uint8 *)gl_shadow;
1002
13aa96c76e86 Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents: 1000
diff changeset
746 srcpitch = surface->w * gl_pixelsize;
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
747 dstline = surface->pixels;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
748 dstpitch = surface->pitch >>1;
1005
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
749 if (gl_upsidedown) {
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
750 srcline += (surface->h-1)*srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
751 srcpitch = -srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
752 }
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
753
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
754 for (y=0; y<surface->h; y++) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
755 srccol = srcline;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
756 dstcol = dstline;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
757
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
758 for (x=0; x<surface->w; x++) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
759 Uint16 dstcolor;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
760
1003
ece5ab8acd1c Wrong RGB24 to RGB16 conversion
Patrice Mandin <patmandin@gmail.com>
parents: 1002
diff changeset
761 dstcolor = ((*srccol++)<<8) & (31<<11);
ece5ab8acd1c Wrong RGB24 to RGB16 conversion
Patrice Mandin <patmandin@gmail.com>
parents: 1002
diff changeset
762 dstcolor |= ((*srccol++)<<3) & (63<<5);
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
763 dstcolor |= ((*srccol++)>>3) & 31;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
764 *dstcol++ = dstcolor;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
765 }
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
766
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
767 srcline += srcpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
768 dstline += dstpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
769 }
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
770 }
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
771
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
772 static void CopyShadowRGBSwap(_THIS, SDL_Surface *surface)
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
773 {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
774 int x,y, srcpitch, dstpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
775 Uint8 *dstline, *dstcol;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
776 Uint8 *srcline, *srccol;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
777
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
778 srcline = (Uint8 *)gl_shadow;
1002
13aa96c76e86 Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents: 1000
diff changeset
779 srcpitch = surface->w * gl_pixelsize;
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
780 dstline = surface->pixels;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
781 dstpitch = surface->pitch;
1005
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
782 if (gl_upsidedown) {
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
783 srcline += (surface->h-1)*srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
784 srcpitch = -srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
785 }
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
786
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
787 for (y=0; y<surface->h; y++) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
788 srccol = srcline;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
789 dstcol = dstline;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
790
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
791 for (x=0; x<surface->w; x++) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
792 *dstcol++ = srccol[2];
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
793 *dstcol++ = srccol[1];
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
794 *dstcol++ = srccol[0];
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
795 srccol += 3;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
796 }
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
797
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
798 srcline += srcpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
799 dstline += dstpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
800 }
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
801 }
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
802
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
803 static void CopyShadowRGBToARGB(_THIS, SDL_Surface *surface)
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
804 {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
805 int x,y, srcpitch, dstpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
806 Uint32 *dstline, *dstcol;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
807 Uint8 *srcline, *srccol;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
808
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
809 srcline = (Uint8 *)gl_shadow;
1002
13aa96c76e86 Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents: 1000
diff changeset
810 srcpitch = surface->w * gl_pixelsize;
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
811 dstline = surface->pixels;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
812 dstpitch = surface->pitch >>2;
1005
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
813 if (gl_upsidedown) {
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
814 srcline += (surface->h-1)*srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
815 srcpitch = -srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
816 }
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
817
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
818 for (y=0; y<surface->h; y++) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
819 srccol = srcline;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
820 dstcol = dstline;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
821
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
822 for (x=0; x<surface->w; x++) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
823 Uint32 dstcolor;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
824
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
825 dstcolor = (*srccol++)<<16;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
826 dstcolor |= (*srccol++)<<8;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
827 dstcolor |= *srccol++;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
828
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
829 *dstcol++ = dstcolor;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
830 }
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
831
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
832 srcline += srcpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
833 dstline += dstpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
834 }
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
835 }
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
836
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
837 static void CopyShadowRGBToABGR(_THIS, SDL_Surface *surface)
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
838 {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
839 int x,y, srcpitch, dstpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
840 Uint32 *dstline, *dstcol;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
841 Uint8 *srcline, *srccol;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
842
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
843 srcline = (Uint8 *)gl_shadow;
1002
13aa96c76e86 Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents: 1000
diff changeset
844 srcpitch = surface->w * gl_pixelsize;
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
845 dstline = surface->pixels;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
846 dstpitch = surface->pitch >>2;
1005
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
847 if (gl_upsidedown) {
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
848 srcline += (surface->h-1)*srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
849 srcpitch = -srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
850 }
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
851
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
852 for (y=0; y<surface->h; y++) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
853 srccol = srcline;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
854 dstcol = dstline;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
855
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
856 for (x=0; x<surface->w; x++) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
857 Uint32 dstcolor;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
858
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
859 dstcolor = *srccol++;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
860 dstcolor |= (*srccol++)<<8;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
861 dstcolor |= (*srccol++)<<16;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
862
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
863 *dstcol++ = dstcolor;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
864 }
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
865
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
866 srcline += srcpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
867 dstline += dstpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
868 }
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
869 }
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
870
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
871 static void CopyShadowRGBToBGRA(_THIS, SDL_Surface *surface)
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
872 {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
873 int x,y, srcpitch, dstpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
874 Uint32 *dstline, *dstcol;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
875 Uint8 *srcline, *srccol;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
876
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
877 srcline = (Uint8 *)gl_shadow;
1002
13aa96c76e86 Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents: 1000
diff changeset
878 srcpitch = surface->w * gl_pixelsize;
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
879 dstline = surface->pixels;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
880 dstpitch = surface->pitch >>2;
1005
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
881 if (gl_upsidedown) {
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
882 srcline += (surface->h-1)*srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
883 srcpitch = -srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
884 }
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
885
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
886 for (y=0; y<surface->h; y++) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
887 srccol = srcline;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
888 dstcol = dstline;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
889
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
890 for (x=0; x<surface->w; x++) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
891 Uint32 dstcolor;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
892
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
893 dstcolor = (*srccol++)<<8;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
894 dstcolor |= (*srccol++)<<16;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
895 dstcolor |= (*srccol++)<<24;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
896
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
897 *dstcol++ = dstcolor;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
898 }
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
899
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
900 srcline += srcpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
901 dstline += dstpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
902 }
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
903 }
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
904
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
905 static void CopyShadowRGBToRGBA(_THIS, SDL_Surface *surface)
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
906 {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
907 int x,y, srcpitch, dstpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
908 Uint32 *dstline, *dstcol;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
909 Uint8 *srcline, *srccol;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
910
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
911 srcline = (Uint8 *)gl_shadow;
1002
13aa96c76e86 Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents: 1000
diff changeset
912 srcpitch = surface->w * gl_pixelsize;
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
913 dstline = surface->pixels;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
914 dstpitch = surface->pitch >>2;
1005
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
915 if (gl_upsidedown) {
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
916 srcline += (surface->h-1)*srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
917 srcpitch = -srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
918 }
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
919
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
920 for (y=0; y<surface->h; y++) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
921 srccol = srcline;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
922 dstcol = dstline;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
923
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
924 for (x=0; x<surface->w; x++) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
925 Uint32 dstcolor;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
926
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
927 dstcolor = (*srccol++)<<24;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
928 dstcolor |= (*srccol++)<<16;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
929 dstcolor |= (*srccol++)<<8;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
930
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
931 *dstcol++ = dstcolor;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
932 }
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
933
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
934 srcline += srcpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
935 dstline += dstpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
936 }
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
937 }
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
938
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
939 static void CopyShadow8888To555(_THIS, SDL_Surface *surface)
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
940 {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
941 int x,y, srcpitch, dstpitch;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
942 Uint16 *dstline, *dstcol;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
943 Uint32 *srcline, *srccol;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
944
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
945 srcline = (Uint32 *)gl_shadow;
1002
13aa96c76e86 Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents: 1000
diff changeset
946 srcpitch = (surface->w * gl_pixelsize) >>2;
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
947 dstline = surface->pixels;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
948 dstpitch = surface->pitch >>1;
1005
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
949 if (gl_upsidedown) {
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
950 srcline += (surface->h-1)*srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
951 srcpitch = -srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
952 }
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
953
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
954 for (y=0; y<surface->h; y++) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
955 srccol = srcline;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
956 dstcol = dstline;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
957 for (x=0; x<surface->w; x++) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
958 Uint32 srccolor;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
959 Uint16 dstcolor;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
960
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
961 srccolor = *srccol++;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
962 dstcolor = (srccolor>>9) & (31<<10);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
963 dstcolor |= (srccolor>>6) & (31<<5);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
964 dstcolor |= (srccolor>>3) & 31;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
965 *dstcol++ = dstcolor;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
966 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
967
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
968 srcline += srcpitch;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
969 dstline += dstpitch;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
970 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
971 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
972
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
973 static void CopyShadow8888To565(_THIS, SDL_Surface *surface)
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
974 {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
975 int x,y, srcpitch, dstpitch;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
976 Uint16 *dstline, *dstcol;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
977 Uint32 *srcline, *srccol;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
978
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
979 srcline = (Uint32 *)gl_shadow;
1002
13aa96c76e86 Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents: 1000
diff changeset
980 srcpitch = (surface->w * gl_pixelsize) >> 2;
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
981 dstline = surface->pixels;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
982 dstpitch = surface->pitch >>1;
1005
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
983 if (gl_upsidedown) {
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
984 srcline += (surface->h-1)*srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
985 srcpitch = -srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
986 }
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
987
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
988 for (y=0; y<surface->h; y++) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
989 srccol = srcline;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
990 dstcol = dstline;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
992 for (x=0; x<surface->w; x++) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
993 Uint32 srccolor;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
994 Uint16 dstcolor;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
995
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
996 srccolor = *srccol++;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
997 dstcolor = (srccolor>>8) & (31<<11);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
998 dstcolor |= (srccolor>>5) & (63<<5);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
999 dstcolor |= (srccolor>>3) & 31;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
1000 *dstcol++ = dstcolor;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
1001 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
1002
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
1003 srcline += srcpitch;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
1004 dstline += dstpitch;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
1005 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
1006 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
1007
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
1008 /*--- Conversions routines in the screen ---*/
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
1009
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
1010 static void ConvertNull(_THIS, SDL_Surface *surface)
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
1011 {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
1012 }
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
1013
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
1014 static void Convert565To555be(_THIS, SDL_Surface *surface)
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1015 {
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1016 int x,y, pitch;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1017 unsigned short *line, *pixel;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1018
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1019 line = surface->pixels;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1020 pitch = surface->pitch >> 1;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1021 for (y=0; y<surface->h; y++) {
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1022 pixel = line;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1023 for (x=0; x<surface->w; x++) {
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1024 unsigned short color = *pixel;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1025
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1026 *pixel++ = (color & 0x1f)|((color>>1) & 0xffe0);
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1027 }
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1028
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1029 line += pitch;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1030 }
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1031 }
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1032
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
1033 static void Convert565To555le(_THIS, SDL_Surface *surface)
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1034 {
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1035 int x,y, pitch;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1036 unsigned short *line, *pixel;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1037
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1038 line = surface->pixels;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1039 pitch = surface->pitch >>1;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1040 for (y=0; y<surface->h; y++) {
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1041 pixel = line;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1042 for (x=0; x<surface->w; x++) {
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1043 unsigned short color = *pixel;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1044
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1045 color = (color & 0x1f)|((color>>1) & 0xffe0);
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1046 *pixel++ = SDL_Swap16(color);
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1047 }
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1048
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1049 line += pitch;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1050 }
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1051 }
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1052
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
1053 static void Convert565le(_THIS, SDL_Surface *surface)
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1054 {
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1055 int x,y, pitch;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1056 unsigned short *line, *pixel;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1057
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1058 line = surface->pixels;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1059 pitch = surface->pitch >>1;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1060 for (y=0; y<surface->h; y++) {
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1061 pixel = line;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1062 for (x=0; x<surface->w; x++) {
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1063 unsigned short color = *pixel;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1064
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1065 *pixel++ = SDL_Swap16(color);
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1066 }
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1067
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1068 line += pitch;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1069 }
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1070 }
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1071
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
1072 static void ConvertBGRAToABGR(_THIS, SDL_Surface *surface)
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1073 {
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1074 int x,y, pitch;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1075 unsigned long *line, *pixel;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1076
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1077 line = surface->pixels;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1078 pitch = surface->pitch >>2;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1079 for (y=0; y<surface->h; y++) {
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1080 pixel = line;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1081 for (x=0; x<surface->w; x++) {
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1082 unsigned long color = *pixel;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1083
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1084 *pixel++ = (color<<24)|(color>>8);
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1085 }
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1086
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1087 line += pitch;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1088 }
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
1089 }
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
1090
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
1091 #endif /* HAVE_OPENGL */