Mercurial > sdl-ios-xcode
annotate src/video/ataricommon/SDL_atarigl.c @ 1629:ef4a796e7f24
Fixed bug #55
From Christian Walther:
When writing my patch for #12, I ended up doing all sorts of changes to the way
application/window activating/deactivating is handled in the Quartz backend,
resulting in the attached patch. It does make the code a bit cleaner IMHO, but
as it might be regarded as a case of "if it ain't broken, don't fix it" I'd
like to hear other people's opinion about it. Please shout if some change
strikes you as unnecessary or wrong, and I'll explain the reasons behind it. As
far as I tested it, it does not introduce any new bugs, but I may well have
missed some.
- The most fundamental change (that triggered most of the others) is irrelevant
for the usual single-window SDL applications, it only affects the people who
are crazy enough to display other Cocoa windows alongside the SDL window (I'm
actually doing this currently, although the additional window only displays
debugging info and won't be present in the final product): Before, some things
were done on the application becoming active, some on the window becoming key,
and some on the window becoming main. Conceptually, all these actions belong to
the window becoming key, so that's what I implemented. However, since in a
single-window application these three events always happen together, the
previous implementation "ain't broken".
- This slightly changed the meaning of the SDL_APPMOUSEFOCUS flag from
SDL_GetAppState(): Before, it meant "window is main and mouse is inside window
(or mode is fullscreen)". Now, it means "window is key and mouse is inside
window (or mode is fullscreen)". It makes more sense to me that way. (See
http://developer.apple.com/documentation/Cocoa/Conceptual/WinPanel/Concepts/ChangingMainKeyWindow.html
for a discussion of what key and main windows are.) The other two flags are
unchanged: SDL_APPACTIVE = application is not hidden and window is not
minimized, SDL_APPINPUTFOCUS = window is key (or mode is fullscreen).
- As a side effect, the reorganization fixes the following two issues (and
maybe others) (but they could also be fixed in less invasive ways):
* A regression that was introduced in revision 1.42 of SDL_QuartzVideo.m
(http://libsdl.org/cgi/cvsweb.cgi/SDL12/src/video/quartz/SDL_QuartzVideo.m.diff?r1=1.41&r2=1.42)
(from half-desirable to undesirable behavior):
Situation: While in windowed mode, hide the cursor using
SDL_ShowCursor(SDL_DISABLE), move the mouse outside of the window so that the
cursor becomes visible again, and SDL_SetVideoMode() to a fullscreen mode.
What happened before revision 1.42: The cursor is visible, but becomes
invisible as soon as the mouse is moved (half-desirable).
What happens in revision 1.42 and after (including current CVS): The cursor is
visible and stays visible (undesirable).
What happens after my patch: The cursor is invisible from the beginning
(desirable).
* When the cursor is hidden and grabbed, switch away from the application using
cmd-tab (which ungrabs and makes the cursor visible), move the cursor outside
of the SDL window, then cmd-tab back to the application. In 1.2.8 and in the
current CVS, the cursor is re-grabbed, but it stays visible (immovable in the
middle of the window). With my patch, the cursor is correctly re-grabbed and
hidden. (For some reason, it still doesn't work correctly if you switch back to
the application using the dock instead of cmd-tab. I haven't been able to
figure out why. I can step over [NSCursor hide] being called in the debugger,
but it seems to have no effect.)
- The patch includes my patch for #12 (it was easier to obtain using cvs diff
that way). If you apply both of them, you will end up with 6 duplicate lines in
SDL_QuartzEvents.m.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Thu, 13 Apr 2006 14:17:48 +0000 |
parents | d910939febfa |
children | 782fd950bd46 c121d94672cb a1b03ba2fcd0 |
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 */ |
1402
d910939febfa
Use consistent identifiers for the various platforms we support.
Sam Lantinga <slouken@libsdl.org>
parents:
1379
diff
changeset
|
22 #include "SDL_config.h" |
989
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
23 |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
24 /* Atari OSMesa.ldg implementation of SDL OpenGL support */ |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
25 |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
26 /*--- Includes ---*/ |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
27 |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
28 #if SDL_VIDEO_OPENGL |
989
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
29 #include <GL/osmesa.h> |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
30 #endif |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
31 |
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
|
32 #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
|
33 |
1358
c71e05b4dc2e
More header massaging... works great on Windows. ;-)
Sam Lantinga <slouken@libsdl.org>
parents:
1338
diff
changeset
|
34 #include "SDL_endian.h" |
989
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
35 #include "SDL_video.h" |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
36 #include "SDL_atarigl_c.h" |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
37 #if SDL_VIDEO_OPENGL_OSMESA_DYNAMIC |
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
|
38 #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
|
39 #endif |
989
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
40 |
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
|
41 /*--- 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
|
42 |
12b13601a544
Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents:
989
diff
changeset
|
43 #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
|
44 #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
|
45 #define PATH_TINYGL_LDG "tiny_gl.ldg" |
989
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
46 |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
47 #define VDI_RGB 0xf |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
48 |
989
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
49 /*--- Functions prototypes ---*/ |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
50 |
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
|
51 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
|
52 |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
53 #if SDL_VIDEO_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
|
54 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
|
55 static void CopyShadowDirect(_THIS, SDL_Surface *surface); |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
56 static void CopyShadowRGBTo555(_THIS, SDL_Surface *surface); |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
57 static void CopyShadowRGBTo565(_THIS, SDL_Surface *surface); |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
58 static void CopyShadowRGBSwap(_THIS, SDL_Surface *surface); |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
59 static void CopyShadowRGBToARGB(_THIS, SDL_Surface *surface); |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
60 static void CopyShadowRGBToABGR(_THIS, SDL_Surface *surface); |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
61 static void CopyShadowRGBToBGRA(_THIS, SDL_Surface *surface); |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
62 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
|
63 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
|
64 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
|
65 |
12b13601a544
Final touches to OSMesa 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 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
|
67 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
|
68 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
|
69 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
|
70 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
|
71 |
12b13601a544
Final touches to OSMesa 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 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
|
73 static int InitOld(_THIS, SDL_Surface *current); |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
74 #endif |
989
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
75 |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
76 /*--- Public functions ---*/ |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
77 |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
78 int SDL_AtariGL_Init(_THIS, SDL_Surface *current) |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
79 { |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
80 #if SDL_VIDEO_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
|
81 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
|
82 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
|
83 } 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
|
84 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
|
85 } |
12b13601a544
Final touches to OSMesa 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 #endif |
989
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
87 |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
88 return (gl_active); |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
89 } |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
90 |
992
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
91 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
|
92 { |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
93 #if SDL_VIDEO_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
|
94 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
|
95 /* 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
|
96 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
|
97 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
|
98 } |
12b13601a544
Final touches to OSMesa 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 (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
|
100 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
|
101 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
|
102 } |
12b13601a544
Final touches to OSMesa 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 } 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
|
104 /* 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
|
105 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
|
106 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
|
107 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
|
108 } |
12b13601a544
Final touches to OSMesa 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 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
|
110 } |
12b13601a544
Final touches to OSMesa 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 |
992
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
113 if (unload) { |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
114 SDL_AtariGL_UnloadLibrary(this); |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
115 } |
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
|
116 |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
117 #endif /* SDL_VIDEO_OPENGL */ |
989
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
118 gl_active = 0; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
119 } |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
120 |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
121 int SDL_AtariGL_LoadLibrary(_THIS, const char *path) |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
122 { |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
123 #if SDL_VIDEO_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
|
124 |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
125 #if SDL_VIDEO_OPENGL_OSMESA_DYNAMIC |
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
|
126 void *handle; |
995
22fc5f45bbb7
TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents:
993
diff
changeset
|
127 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
|
128 |
12b13601a544
Final touches to OSMesa 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 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
|
130 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
|
131 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
|
132 } |
12b13601a544
Final touches to OSMesa 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 |
1239 | 134 /* Unload previous driver */ |
135 SDL_AtariGL_UnloadLibrary(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
|
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 /* Load library given by path */ |
1239 | 138 handle = SDL_LoadObject(path); |
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
|
139 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
|
140 /* Try to load another one */ |
1336
3692456e7b0f
Use SDL_ prefixed versions of C library functions.
Sam Lantinga <slouken@libsdl.org>
parents:
1239
diff
changeset
|
141 path = SDL_getenv("SDL_VIDEO_GL_DRIVER"); |
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
|
142 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
|
143 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
|
144 } |
12b13601a544
Final touches to OSMesa 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 |
12b13601a544
Final touches to OSMesa 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 /* 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
|
147 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
|
148 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
|
149 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
|
150 } |
12b13601a544
Final touches to OSMesa 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 |
12b13601a544
Final touches to OSMesa 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 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
|
153 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
|
154 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
|
155 } |
12b13601a544
Final touches to OSMesa 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 |
12b13601a544
Final touches to OSMesa 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 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
|
158 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
|
159 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
|
160 } |
12b13601a544
Final touches to OSMesa 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 } |
12b13601a544
Final touches to OSMesa 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 |
12b13601a544
Final touches to OSMesa 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 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
|
164 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
|
165 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
|
166 } |
12b13601a544
Final touches to OSMesa 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 |
993
2662da16d668
Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents:
992
diff
changeset
|
168 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
|
169 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
|
170 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
|
171 |
995
22fc5f45bbb7
TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents:
993
diff
changeset
|
172 cancel_load = SDL_FALSE; |
22fc5f45bbb7
TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents:
993
diff
changeset
|
173 if (this->gl_data->glGetIntegerv == NULL) { |
22fc5f45bbb7
TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents:
993
diff
changeset
|
174 cancel_load = SDL_TRUE; |
22fc5f45bbb7
TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents:
993
diff
changeset
|
175 } else { |
22fc5f45bbb7
TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents:
993
diff
changeset
|
176 /* 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
|
177 if ((this->gl_data->glFinish == NULL) && |
22fc5f45bbb7
TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents:
993
diff
changeset
|
178 (this->gl_data->glFlush == NULL)) { |
22fc5f45bbb7
TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents:
993
diff
changeset
|
179 cancel_load = SDL_TRUE; |
22fc5f45bbb7
TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents:
993
diff
changeset
|
180 } |
22fc5f45bbb7
TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents:
993
diff
changeset
|
181 } |
22fc5f45bbb7
TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents:
993
diff
changeset
|
182 if (cancel_load) { |
993
2662da16d668
Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents:
992
diff
changeset
|
183 SDL_SetError("Could not retrieve OpenGL functions"); |
2662da16d668
Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents:
992
diff
changeset
|
184 SDL_UnloadObject(handle); |
2662da16d668
Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents:
992
diff
changeset
|
185 /* Restore pointers to static library */ |
2662da16d668
Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents:
992
diff
changeset
|
186 SDL_AtariGL_InitPointers(this); |
2662da16d668
Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents:
992
diff
changeset
|
187 return -1; |
2662da16d668
Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents:
992
diff
changeset
|
188 } |
2662da16d668
Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents:
992
diff
changeset
|
189 |
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
|
190 /* 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
|
191 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
|
192 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
|
193 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
|
194 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
|
195 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
|
196 |
12b13601a544
Final touches to OSMesa 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 /* 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
|
198 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
|
199 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
|
200 |
12b13601a544
Final touches to OSMesa 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 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
|
202 |
12b13601a544
Final touches to OSMesa 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 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
|
204 (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
|
205 (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
|
206 (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
|
207 (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
|
208 /* 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
|
209 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
|
210 (this->gl_data->OSMesaDestroyLDG == NULL)) { |
993
2662da16d668
Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents:
992
diff
changeset
|
211 SDL_SetError("Could not retrieve OSMesa functions"); |
2662da16d668
Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents:
992
diff
changeset
|
212 SDL_UnloadObject(handle); |
2662da16d668
Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents:
992
diff
changeset
|
213 /* Restore pointers to static library */ |
2662da16d668
Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents:
992
diff
changeset
|
214 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
|
215 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
|
216 } 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
|
217 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
|
218 } |
12b13601a544
Final touches to OSMesa 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 } |
12b13601a544
Final touches to OSMesa 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 |
12b13601a544
Final touches to OSMesa 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 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
|
222 if ( path ) { |
1379
c0a74f199ecf
Use only safe string functions
Sam Lantinga <slouken@libsdl.org>
parents:
1361
diff
changeset
|
223 SDL_strlcpy(this->gl_config.driver_path, path, |
c0a74f199ecf
Use only safe string functions
Sam Lantinga <slouken@libsdl.org>
parents:
1361
diff
changeset
|
224 SDL_arraysize(this->gl_config.driver_path)); |
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
|
225 } else { |
1379
c0a74f199ecf
Use only safe string functions
Sam Lantinga <slouken@libsdl.org>
parents:
1361
diff
changeset
|
226 *this->gl_config.driver_path = '\0'; |
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
|
227 } |
12b13601a544
Final touches to OSMesa 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 |
12b13601a544
Final touches to OSMesa 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 #endif |
989
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
230 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
|
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 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
|
233 #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
|
234 return -1; |
989
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
235 #endif |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
236 } |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
237 |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
238 void *SDL_AtariGL_GetProcAddress(_THIS, const char *proc) |
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 void *func = NULL; |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
241 #if SDL_VIDEO_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
|
242 |
12b13601a544
Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents:
989
diff
changeset
|
243 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
|
244 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
|
245 } 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
|
246 func = this->gl_data->OSMesaGetProcAddress(proc); |
989
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
247 } |
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
|
248 |
989
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
249 #endif |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
250 return func; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
251 } |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
252 |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
253 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
|
254 { |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
255 #if SDL_VIDEO_OPENGL |
989
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
256 GLenum mesa_attrib; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
257 SDL_Surface *surface; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
258 |
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
|
259 if (!gl_active) { |
989
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
260 return -1; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
261 } |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
262 |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
263 switch(attrib) { |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
264 case SDL_GL_RED_SIZE: |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
265 mesa_attrib = GL_RED_BITS; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
266 break; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
267 case SDL_GL_GREEN_SIZE: |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
268 mesa_attrib = GL_GREEN_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_BLUE_SIZE: |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
271 mesa_attrib = GL_BLUE_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_ALPHA_SIZE: |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
274 mesa_attrib = GL_ALPHA_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_DOUBLEBUFFER: |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
277 surface = this->screen; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
278 *value = ((surface->flags & SDL_DOUBLEBUF)==SDL_DOUBLEBUF); |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
279 return 0; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
280 case SDL_GL_DEPTH_SIZE: |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
281 mesa_attrib = GL_DEPTH_BITS; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
282 break; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
283 case SDL_GL_STENCIL_SIZE: |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
284 mesa_attrib = GL_STENCIL_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_ACCUM_RED_SIZE: |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
287 mesa_attrib = GL_ACCUM_RED_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_GREEN_SIZE: |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
290 mesa_attrib = GL_ACCUM_GREEN_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_BLUE_SIZE: |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
293 mesa_attrib = GL_ACCUM_BLUE_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_ALPHA_SIZE: |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
296 mesa_attrib = GL_ACCUM_ALPHA_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 default : |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
299 return -1; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
300 } |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
301 |
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
|
302 this->gl_data->glGetIntegerv(mesa_attrib, value); |
989
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
303 return 0; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
304 #else |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
305 return -1; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
306 #endif |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
307 } |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
308 |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
309 int SDL_AtariGL_MakeCurrent(_THIS) |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
310 { |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
311 #if SDL_VIDEO_OPENGL |
989
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
312 SDL_Surface *surface; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
313 GLenum type; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
314 |
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
|
315 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
|
316 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
|
317 } |
12b13601a544
Final touches to OSMesa 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 |
12b13601a544
Final touches to OSMesa 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 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
|
320 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
|
321 (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
|
322 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
|
323 } |
12b13601a544
Final touches to OSMesa 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 } |
12b13601a544
Final touches to OSMesa 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 |
12b13601a544
Final touches to OSMesa 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 if (!gl_active) { |
989
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
327 SDL_SetError("Invalid OpenGL context"); |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
328 return -1; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
329 } |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
330 |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
331 surface = this->screen; |
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 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
|
334 type = GL_UNSIGNED_SHORT_5_6_5; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
335 } else { |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
336 type = GL_UNSIGNED_BYTE; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
337 } |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
338 |
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
|
339 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
|
340 SDL_SetError("Can not make OpenGL context current"); |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
341 return -1; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
342 } |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
343 |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
344 /* 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
|
345 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
|
346 |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
347 return 0; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
348 #else |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
349 return -1; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
350 #endif |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
351 } |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
352 |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
353 void SDL_AtariGL_SwapBuffers(_THIS) |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
354 { |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
355 #if SDL_VIDEO_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
|
356 if (gl_active) { |
993
2662da16d668
Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents:
992
diff
changeset
|
357 if (this->gl_config.dll_handle) { |
2662da16d668
Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents:
992
diff
changeset
|
358 if (this->gl_data->glFinish) { |
2662da16d668
Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents:
992
diff
changeset
|
359 this->gl_data->glFinish(); |
995
22fc5f45bbb7
TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents:
993
diff
changeset
|
360 } else if (this->gl_data->glFlush) { |
22fc5f45bbb7
TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents:
993
diff
changeset
|
361 this->gl_data->glFlush(); |
993
2662da16d668
Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents:
992
diff
changeset
|
362 } |
2662da16d668
Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents:
992
diff
changeset
|
363 } else { |
2662da16d668
Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents:
992
diff
changeset
|
364 this->gl_data->glFinish(); |
2662da16d668
Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents:
992
diff
changeset
|
365 } |
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
|
366 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
|
367 gl_convert(this, this->screen); |
989
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
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 #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
|
370 } |
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 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
|
373 { |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
374 #if SDL_VIDEO_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
|
375 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
|
376 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
|
377 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
|
378 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
|
379 this->gl_data->OSMesaGetProcAddress = OSMesaGetProcAddress; |
993
2662da16d668
Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents:
992
diff
changeset
|
380 |
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
|
381 this->gl_data->glGetIntegerv = glGetIntegerv; |
993
2662da16d668
Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents:
992
diff
changeset
|
382 this->gl_data->glFinish = glFinish; |
995
22fc5f45bbb7
TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents:
993
diff
changeset
|
383 this->gl_data->glFlush = glFlush; |
993
2662da16d668
Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents:
992
diff
changeset
|
384 |
2662da16d668
Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents:
992
diff
changeset
|
385 this->gl_data->OSMesaCreateLDG = NULL; |
2662da16d668
Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents:
992
diff
changeset
|
386 this->gl_data->OSMesaDestroyLDG = NULL; |
989
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
387 #endif |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
388 } |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
389 |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
390 /*--- Private functions ---*/ |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
391 |
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
|
392 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
|
393 { |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
394 #if SDL_VIDEO_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
|
395 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
|
396 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
|
397 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
|
398 |
12b13601a544
Final touches to OSMesa 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 /* Restore pointers to static library */ |
993
2662da16d668
Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents:
992
diff
changeset
|
400 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
|
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 #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
|
403 } |
12b13601a544
Final touches to OSMesa 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 /*--- 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
|
406 |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
407 #if SDL_VIDEO_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
|
408 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
|
409 { |
12b13601a544
Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents:
989
diff
changeset
|
410 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
|
411 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
|
412 Uint32 redmask; |
992
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
413 int recreatecontext; |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
414 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
|
415 |
12b13601a544
Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents:
989
diff
changeset
|
416 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
|
417 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
|
418 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
|
419 } |
12b13601a544
Final touches to OSMesa 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 } |
12b13601a544
Final touches to OSMesa 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 |
12b13601a544
Final touches to OSMesa 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 /* 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
|
423 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
|
424 gl_copyshadow = CopyShadowNull; |
1005
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
425 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
|
426 |
12b13601a544
Final touches to OSMesa 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 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
|
428 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
|
429 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
|
430 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
|
431 /* 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
|
432 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
|
433 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
|
434 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
|
435 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
|
436 } 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
|
437 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
|
438 } |
12b13601a544
Final touches to OSMesa 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 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
|
440 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
|
441 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
|
442 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
|
443 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
|
444 } 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
|
445 /* 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
|
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 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
|
448 } |
12b13601a544
Final touches to OSMesa 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 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
|
450 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
|
451 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
|
452 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
|
453 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
|
454 } 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
|
455 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
|
456 } |
12b13601a544
Final touches to OSMesa 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 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
|
458 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
|
459 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
|
460 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
|
461 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
|
462 } 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
|
463 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
|
464 } 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
|
465 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
|
466 } 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
|
467 /* 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
|
468 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
|
469 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
|
470 } |
12b13601a544
Final touches to OSMesa 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 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
|
472 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
|
473 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
|
474 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
|
475 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
|
476 } |
12b13601a544
Final touches to OSMesa 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 |
992
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
478 /* Try to keep current context if possible */ |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
479 newaccumsize = |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
480 this->gl_config.accum_red_size + |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
481 this->gl_config.accum_green_size + |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
482 this->gl_config.accum_blue_size + |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
483 this->gl_config.accum_alpha_size; |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
484 recreatecontext=1; |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
485 if (gl_ctx && |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
486 (gl_curformat == osmesa_format) && |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
487 (gl_curdepth == this->gl_config.depth_size) && |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
488 (gl_curstencil == this->gl_config.stencil_size) && |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
489 (gl_curaccum == newaccumsize)) { |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
490 recreatecontext = 0; |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
491 } |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
492 if (recreatecontext) { |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
493 SDL_AtariGL_Quit(this, SDL_FALSE); |
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 gl_ctx = this->gl_data->OSMesaCreateContextExt( |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
496 osmesa_format, this->gl_config.depth_size, |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
497 this->gl_config.stencil_size, newaccumsize, NULL ); |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
498 |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
499 if (gl_ctx) { |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
500 gl_curformat = osmesa_format; |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
501 gl_curdepth = this->gl_config.depth_size; |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
502 gl_curstencil = this->gl_config.stencil_size; |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
503 gl_curaccum = newaccumsize; |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
504 } else { |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
505 gl_curformat = 0; |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
506 gl_curdepth = 0; |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
507 gl_curstencil = 0; |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
508 gl_curaccum = 0; |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
509 } |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
510 } |
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
|
511 |
12b13601a544
Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents:
989
diff
changeset
|
512 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
|
513 } |
12b13601a544
Final touches to OSMesa 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 |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
515 |
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
|
516 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
|
517 { |
12b13601a544
Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents:
989
diff
changeset
|
518 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
|
519 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
|
520 Uint32 redmask; |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
521 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
|
522 |
12b13601a544
Final touches to OSMesa 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 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
|
524 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
|
525 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
|
526 } |
12b13601a544
Final touches to OSMesa 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 } |
12b13601a544
Final touches to OSMesa 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 |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
529 /* TinyGL only supports VDI_RGB (OSMESA_RGB) */ |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
530 tinygl_present=0; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
531 if (this->gl_config.dll_handle) { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
532 if (this->gl_data->glFinish == NULL) { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
533 tinygl_present=1; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
534 } |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
535 } |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
536 |
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
|
537 /* 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
|
538 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
|
539 gl_copyshadow = CopyShadowNull; |
1005
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
540 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
|
541 |
12b13601a544
Final touches to OSMesa 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 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
|
543 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
|
544 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
|
545 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
|
546 /* 15 bits unsupported */ |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
547 if (tinygl_present) { |
1002
13aa96c76e86
Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1000
diff
changeset
|
548 gl_pixelsize = 3; |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
549 osmesa_format = VDI_RGB; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
550 if (redmask == 31<<10) { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
551 gl_copyshadow = CopyShadowRGBTo555; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
552 } else { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
553 gl_copyshadow = CopyShadowRGBTo565; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
554 gl_convert = Convert565To555le; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
555 } |
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
|
556 } else { |
1002
13aa96c76e86
Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1000
diff
changeset
|
557 gl_pixelsize = 4; |
1005
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
558 gl_upsidedown = SDL_TRUE; |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
559 osmesa_format = OSMESA_ARGB; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
560 if (redmask == 31<<10) { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
561 gl_copyshadow = CopyShadow8888To555; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
562 } else { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
563 gl_copyshadow = CopyShadow8888To565; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
564 gl_convert = Convert565To555le; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
565 } |
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
|
566 } |
12b13601a544
Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents:
989
diff
changeset
|
567 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
|
568 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
|
569 /* 16 bits unsupported */ |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
570 if (tinygl_present) { |
1002
13aa96c76e86
Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1000
diff
changeset
|
571 gl_pixelsize = 3; |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
572 osmesa_format = VDI_RGB; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
573 gl_copyshadow = CopyShadowRGBTo565; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
574 if (redmask != 31<<11) { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
575 /* 565, little endian, unsupported */ |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
576 gl_convert = Convert565le; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
577 } |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
578 } else { |
1002
13aa96c76e86
Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1000
diff
changeset
|
579 gl_pixelsize = 4; |
1005
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
580 gl_upsidedown = SDL_TRUE; |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
581 osmesa_format = OSMESA_ARGB; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
582 gl_copyshadow = CopyShadow8888To565; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
583 if (redmask != 31<<11) { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
584 /* 565, little endian, unsupported */ |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
585 gl_convert = Convert565le; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
586 } |
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
|
587 } |
12b13601a544
Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents:
989
diff
changeset
|
588 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
|
589 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
|
590 gl_pixelsize = 3; |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
591 if (tinygl_present) { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
592 osmesa_format = VDI_RGB; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
593 gl_copyshadow = CopyShadowDirect; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
594 if (redmask != 255<<16) { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
595 gl_copyshadow = CopyShadowRGBSwap; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
596 } |
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
|
597 } else { |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
598 gl_copyshadow = CopyShadowDirect; |
1005
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
599 gl_upsidedown = SDL_TRUE; |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
600 if (redmask == 255<<16) { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
601 osmesa_format = OSMESA_RGB; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
602 } else { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
603 osmesa_format = OSMESA_BGR; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
604 } |
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
|
605 } |
12b13601a544
Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents:
989
diff
changeset
|
606 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
|
607 case 32: |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
608 if (tinygl_present) { |
1002
13aa96c76e86
Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1000
diff
changeset
|
609 gl_pixelsize = 3; |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
610 osmesa_format = VDI_RGB; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
611 gl_copyshadow = CopyShadowRGBToARGB; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
612 if (redmask == 255) { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
613 gl_convert = CopyShadowRGBToABGR; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
614 } else if (redmask == 255<<8) { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
615 gl_convert = CopyShadowRGBToBGRA; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
616 } else if (redmask == 255<<24) { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
617 gl_convert = CopyShadowRGBToRGBA; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
618 } |
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
|
619 } else { |
1002
13aa96c76e86
Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1000
diff
changeset
|
620 gl_pixelsize = 4; |
1005
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
621 gl_upsidedown = SDL_TRUE; |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
622 gl_copyshadow = CopyShadowDirect; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
623 if (redmask == 255<<16) { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
624 osmesa_format = OSMESA_ARGB; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
625 } else if (redmask == 255<<8) { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
626 osmesa_format = OSMESA_BGRA; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
627 } else if (redmask == 255<<24) { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
628 osmesa_format = OSMESA_RGBA; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
629 } else { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
630 /* ABGR format unsupported */ |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
631 osmesa_format = OSMESA_BGRA; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
632 gl_convert = ConvertBGRAToABGR; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
633 } |
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
|
634 } |
12b13601a544
Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents:
989
diff
changeset
|
635 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
|
636 default: |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
637 if (tinygl_present) { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
638 SDL_AtariGL_Quit(this, SDL_FALSE); |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
639 return 0; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
640 } |
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
|
641 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
|
642 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
|
643 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
|
644 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
|
645 } |
12b13601a544
Final touches to OSMesa 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 |
992
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
647 /* Try to keep current context if possible */ |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
648 recreatecontext=1; |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
649 if (gl_shadow && |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
650 (gl_curformat == osmesa_format) && |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
651 (gl_curwidth == current->w) && |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
652 (gl_curheight == current->h)) { |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
653 recreatecontext = 0; |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
654 } |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
655 if (recreatecontext) { |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
656 SDL_AtariGL_Quit(this, SDL_FALSE); |
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 gl_shadow = this->gl_data->OSMesaCreateLDG( |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
659 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
|
660 ); |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
661 |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
662 if (gl_shadow) { |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
663 gl_curformat = osmesa_format; |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
664 gl_curwidth = current->w; |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
665 gl_curheight = current->h; |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
666 } else { |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
667 gl_curformat = 0; |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
668 gl_curwidth = 0; |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
669 gl_curheight = 0; |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
670 } |
0324ce32b2d9
Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents:
991
diff
changeset
|
671 } |
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
|
672 |
12b13601a544
Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents:
989
diff
changeset
|
673 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
|
674 } |
12b13601a544
Final touches to OSMesa 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 /*--- 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
|
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 static void CopyShadowNull(_THIS, SDL_Surface *surface) |
989
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
679 { |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
680 } |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
681 |
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
|
682 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
|
683 { |
12b13601a544
Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents:
989
diff
changeset
|
684 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
|
685 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
|
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 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
|
688 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
|
689 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
|
690 dstpitch = surface->pitch; |
1005
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
691 if (gl_upsidedown) { |
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
692 srcline += (surface->h-1)*srcpitch; |
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
693 srcpitch = -srcpitch; |
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
694 } |
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
|
695 |
12b13601a544
Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents:
989
diff
changeset
|
696 for (y=0; y<surface->h; y++) { |
1336
3692456e7b0f
Use SDL_ prefixed versions of C library functions.
Sam Lantinga <slouken@libsdl.org>
parents:
1239
diff
changeset
|
697 SDL_memcpy(dstline, srcline, srcpitch); |
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 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
|
700 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
|
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 } |
12b13601a544
Final touches to OSMesa 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 |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
704 static void CopyShadowRGBTo555(_THIS, SDL_Surface *surface) |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
705 { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
706 int x,y, srcpitch, dstpitch; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
707 Uint16 *dstline, *dstcol; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
708 Uint8 *srcline, *srccol; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
709 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
710 srcline = (Uint8 *)gl_shadow; |
1002
13aa96c76e86
Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1000
diff
changeset
|
711 srcpitch = surface->w * gl_pixelsize; |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
712 dstline = surface->pixels; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
713 dstpitch = surface->pitch >>1; |
1005
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
714 if (gl_upsidedown) { |
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
715 srcline += (surface->h-1)*srcpitch; |
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
716 srcpitch = -srcpitch; |
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
717 } |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
718 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
719 for (y=0; y<surface->h; y++) { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
720 srccol = srcline; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
721 dstcol = dstline; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
722 for (x=0; x<surface->w; x++) { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
723 Uint16 dstcolor; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
724 |
1003
ece5ab8acd1c
Wrong RGB24 to RGB16 conversion
Patrice Mandin <patmandin@gmail.com>
parents:
1002
diff
changeset
|
725 dstcolor = ((*srccol++)<<7) & (31<<10); |
ece5ab8acd1c
Wrong RGB24 to RGB16 conversion
Patrice Mandin <patmandin@gmail.com>
parents:
1002
diff
changeset
|
726 dstcolor |= ((*srccol++)<<2) & (31<<5); |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
727 dstcolor |= ((*srccol++)>>3) & 31; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
728 *dstcol++ = dstcolor; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
729 } |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
730 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
731 srcline += srcpitch; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
732 dstline += dstpitch; |
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 } |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
735 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
736 static void CopyShadowRGBTo565(_THIS, SDL_Surface *surface) |
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 int x,y, srcpitch, dstpitch; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
739 Uint16 *dstline, *dstcol; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
740 Uint8 *srcline, *srccol; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
741 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
742 srcline = (Uint8 *)gl_shadow; |
1002
13aa96c76e86
Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1000
diff
changeset
|
743 srcpitch = surface->w * gl_pixelsize; |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
744 dstline = surface->pixels; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
745 dstpitch = surface->pitch >>1; |
1005
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
746 if (gl_upsidedown) { |
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
747 srcline += (surface->h-1)*srcpitch; |
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
748 srcpitch = -srcpitch; |
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
749 } |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
750 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
751 for (y=0; y<surface->h; y++) { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
752 srccol = srcline; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
753 dstcol = dstline; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
754 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
755 for (x=0; x<surface->w; x++) { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
756 Uint16 dstcolor; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
757 |
1003
ece5ab8acd1c
Wrong RGB24 to RGB16 conversion
Patrice Mandin <patmandin@gmail.com>
parents:
1002
diff
changeset
|
758 dstcolor = ((*srccol++)<<8) & (31<<11); |
ece5ab8acd1c
Wrong RGB24 to RGB16 conversion
Patrice Mandin <patmandin@gmail.com>
parents:
1002
diff
changeset
|
759 dstcolor |= ((*srccol++)<<3) & (63<<5); |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
760 dstcolor |= ((*srccol++)>>3) & 31; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
761 *dstcol++ = dstcolor; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
762 } |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
763 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
764 srcline += srcpitch; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
765 dstline += dstpitch; |
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 } |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
768 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
769 static void CopyShadowRGBSwap(_THIS, SDL_Surface *surface) |
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 int x,y, srcpitch, dstpitch; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
772 Uint8 *dstline, *dstcol; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
773 Uint8 *srcline, *srccol; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
774 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
775 srcline = (Uint8 *)gl_shadow; |
1002
13aa96c76e86
Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1000
diff
changeset
|
776 srcpitch = surface->w * gl_pixelsize; |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
777 dstline = surface->pixels; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
778 dstpitch = surface->pitch; |
1005
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
779 if (gl_upsidedown) { |
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
780 srcline += (surface->h-1)*srcpitch; |
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
781 srcpitch = -srcpitch; |
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
782 } |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
783 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
784 for (y=0; y<surface->h; y++) { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
785 srccol = srcline; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
786 dstcol = dstline; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
787 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
788 for (x=0; x<surface->w; x++) { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
789 *dstcol++ = srccol[2]; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
790 *dstcol++ = srccol[1]; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
791 *dstcol++ = srccol[0]; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
792 srccol += 3; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
793 } |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
794 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
795 srcline += srcpitch; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
796 dstline += dstpitch; |
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 } |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
799 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
800 static void CopyShadowRGBToARGB(_THIS, SDL_Surface *surface) |
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 int x,y, srcpitch, dstpitch; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
803 Uint32 *dstline, *dstcol; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
804 Uint8 *srcline, *srccol; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
805 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
806 srcline = (Uint8 *)gl_shadow; |
1002
13aa96c76e86
Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1000
diff
changeset
|
807 srcpitch = surface->w * gl_pixelsize; |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
808 dstline = surface->pixels; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
809 dstpitch = surface->pitch >>2; |
1005
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
810 if (gl_upsidedown) { |
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
811 srcline += (surface->h-1)*srcpitch; |
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
812 srcpitch = -srcpitch; |
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
813 } |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
814 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
815 for (y=0; y<surface->h; y++) { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
816 srccol = srcline; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
817 dstcol = dstline; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
818 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
819 for (x=0; x<surface->w; x++) { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
820 Uint32 dstcolor; |
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 dstcolor = (*srccol++)<<16; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
823 dstcolor |= (*srccol++)<<8; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
824 dstcolor |= *srccol++; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
825 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
826 *dstcol++ = dstcolor; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
827 } |
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 srcline += srcpitch; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
830 dstline += dstpitch; |
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 } |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
833 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
834 static void CopyShadowRGBToABGR(_THIS, SDL_Surface *surface) |
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 int x,y, srcpitch, dstpitch; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
837 Uint32 *dstline, *dstcol; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
838 Uint8 *srcline, *srccol; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
839 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
840 srcline = (Uint8 *)gl_shadow; |
1002
13aa96c76e86
Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1000
diff
changeset
|
841 srcpitch = surface->w * gl_pixelsize; |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
842 dstline = surface->pixels; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
843 dstpitch = surface->pitch >>2; |
1005
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
844 if (gl_upsidedown) { |
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
845 srcline += (surface->h-1)*srcpitch; |
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
846 srcpitch = -srcpitch; |
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
847 } |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
848 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
849 for (y=0; y<surface->h; y++) { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
850 srccol = srcline; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
851 dstcol = dstline; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
852 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
853 for (x=0; x<surface->w; x++) { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
854 Uint32 dstcolor; |
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 dstcolor = *srccol++; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
857 dstcolor |= (*srccol++)<<8; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
858 dstcolor |= (*srccol++)<<16; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
859 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
860 *dstcol++ = dstcolor; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
861 } |
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 srcline += srcpitch; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
864 dstline += dstpitch; |
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 } |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
867 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
868 static void CopyShadowRGBToBGRA(_THIS, SDL_Surface *surface) |
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 int x,y, srcpitch, dstpitch; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
871 Uint32 *dstline, *dstcol; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
872 Uint8 *srcline, *srccol; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
873 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
874 srcline = (Uint8 *)gl_shadow; |
1002
13aa96c76e86
Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1000
diff
changeset
|
875 srcpitch = surface->w * gl_pixelsize; |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
876 dstline = surface->pixels; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
877 dstpitch = surface->pitch >>2; |
1005
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
878 if (gl_upsidedown) { |
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
879 srcline += (surface->h-1)*srcpitch; |
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
880 srcpitch = -srcpitch; |
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
881 } |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
882 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
883 for (y=0; y<surface->h; y++) { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
884 srccol = srcline; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
885 dstcol = dstline; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
886 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
887 for (x=0; x<surface->w; x++) { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
888 Uint32 dstcolor; |
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 dstcolor = (*srccol++)<<8; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
891 dstcolor |= (*srccol++)<<16; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
892 dstcolor |= (*srccol++)<<24; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
893 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
894 *dstcol++ = dstcolor; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
895 } |
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 srcline += srcpitch; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
898 dstline += dstpitch; |
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 } |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
901 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
902 static void CopyShadowRGBToRGBA(_THIS, SDL_Surface *surface) |
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 int x,y, srcpitch, dstpitch; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
905 Uint32 *dstline, *dstcol; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
906 Uint8 *srcline, *srccol; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
907 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
908 srcline = (Uint8 *)gl_shadow; |
1002
13aa96c76e86
Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1000
diff
changeset
|
909 srcpitch = surface->w * gl_pixelsize; |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
910 dstline = surface->pixels; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
911 dstpitch = surface->pitch >>2; |
1005
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
912 if (gl_upsidedown) { |
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
913 srcline += (surface->h-1)*srcpitch; |
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
914 srcpitch = -srcpitch; |
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
915 } |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
916 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
917 for (y=0; y<surface->h; y++) { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
918 srccol = srcline; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
919 dstcol = dstline; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
920 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
921 for (x=0; x<surface->w; x++) { |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
922 Uint32 dstcolor; |
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 dstcolor = (*srccol++)<<24; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
925 dstcolor |= (*srccol++)<<16; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
926 dstcolor |= (*srccol++)<<8; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
927 |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
928 *dstcol++ = dstcolor; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
929 } |
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 srcline += srcpitch; |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
932 dstline += dstpitch; |
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 } |
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
935 |
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
|
936 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
|
937 { |
12b13601a544
Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents:
989
diff
changeset
|
938 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
|
939 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
|
940 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
|
941 |
12b13601a544
Final touches to OSMesa 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 srcline = (Uint32 *)gl_shadow; |
1002
13aa96c76e86
Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1000
diff
changeset
|
943 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
|
944 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
|
945 dstpitch = surface->pitch >>1; |
1005
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
946 if (gl_upsidedown) { |
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
947 srcline += (surface->h-1)*srcpitch; |
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
948 srcpitch = -srcpitch; |
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
949 } |
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
|
950 |
12b13601a544
Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents:
989
diff
changeset
|
951 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
|
952 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
|
953 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
|
954 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
|
955 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
|
956 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
|
957 |
12b13601a544
Final touches to OSMesa 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 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
|
959 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
|
960 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
|
961 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
|
962 *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
|
963 } |
12b13601a544
Final touches to OSMesa 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 |
12b13601a544
Final touches to OSMesa 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 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
|
966 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
|
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 } |
12b13601a544
Final touches to OSMesa 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 |
12b13601a544
Final touches to OSMesa 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 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
|
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 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
|
973 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
|
974 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
|
975 |
12b13601a544
Final touches to OSMesa 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 srcline = (Uint32 *)gl_shadow; |
1002
13aa96c76e86
Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents:
1000
diff
changeset
|
977 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
|
978 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
|
979 dstpitch = surface->pitch >>1; |
1005
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
980 if (gl_upsidedown) { |
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
981 srcline += (surface->h-1)*srcpitch; |
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
982 srcpitch = -srcpitch; |
2ab1cb02a44e
Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents:
1003
diff
changeset
|
983 } |
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
|
984 |
12b13601a544
Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents:
989
diff
changeset
|
985 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
|
986 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
|
987 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
|
988 |
12b13601a544
Final touches to OSMesa 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 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
|
990 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
|
991 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
|
992 |
12b13601a544
Final touches to OSMesa 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 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
|
994 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
|
995 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
|
996 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
|
997 *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
|
998 } |
12b13601a544
Final touches to OSMesa 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 |
12b13601a544
Final touches to OSMesa 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 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
|
1001 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
|
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 } |
12b13601a544
Final touches to OSMesa 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 |
12b13601a544
Final touches to OSMesa 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 /*--- 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
|
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 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
|
1008 { |
12b13601a544
Final touches to OSMesa 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 |
12b13601a544
Final touches to OSMesa 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 static void Convert565To555be(_THIS, SDL_Surface *surface) |
989
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1012 { |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1013 int x,y, pitch; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1014 unsigned short *line, *pixel; |
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 line = surface->pixels; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1017 pitch = surface->pitch >> 1; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1018 for (y=0; y<surface->h; y++) { |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1019 pixel = line; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1020 for (x=0; x<surface->w; x++) { |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1021 unsigned short color = *pixel; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1022 |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1023 *pixel++ = (color & 0x1f)|((color>>1) & 0xffe0); |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1024 } |
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 line += pitch; |
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 |
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
|
1030 static void Convert565To555le(_THIS, SDL_Surface *surface) |
989
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 int x,y, pitch; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1033 unsigned short *line, *pixel; |
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 line = surface->pixels; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1036 pitch = surface->pitch >>1; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1037 for (y=0; y<surface->h; y++) { |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1038 pixel = line; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1039 for (x=0; x<surface->w; x++) { |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1040 unsigned short color = *pixel; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1041 |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1042 color = (color & 0x1f)|((color>>1) & 0xffe0); |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1043 *pixel++ = SDL_Swap16(color); |
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 |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1046 line += pitch; |
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 |
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
|
1050 static void Convert565le(_THIS, SDL_Surface *surface) |
989
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 int x,y, pitch; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1053 unsigned short *line, *pixel; |
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 line = surface->pixels; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1056 pitch = surface->pitch >>1; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1057 for (y=0; y<surface->h; y++) { |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1058 pixel = line; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1059 for (x=0; x<surface->w; x++) { |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1060 unsigned short color = *pixel; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1061 |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1062 *pixel++ = SDL_Swap16(color); |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1063 } |
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 line += pitch; |
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 |
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
|
1069 static void ConvertBGRAToABGR(_THIS, SDL_Surface *surface) |
989
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 int x,y, pitch; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1072 unsigned long *line, *pixel; |
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 line = surface->pixels; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1075 pitch = surface->pitch >>2; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1076 for (y=0; y<surface->h; y++) { |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1077 pixel = line; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1078 for (x=0; x<surface->w; x++) { |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1079 unsigned long color = *pixel; |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1080 |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1081 *pixel++ = (color<<24)|(color>>8); |
475166d13b44
Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff
changeset
|
1082 } |
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 line += pitch; |
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 } |
1000
fbeac9312843
TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents:
995
diff
changeset
|
1087 |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
1088 #endif /* SDL_VIDEO_OPENGL */ |