Mercurial > sdl-ios-xcode
annotate src/video/qnxgf/SDL_qnxgf.c @ 3168:6338b7f2d024
Hi,
I have prepared a set of patches to readd WindowsCE support to SDL 1.3.
I've created a new GAPI/Rawframebuffer and a DirectDraw renderer.
Both renderers are work in progress and there are several unimplemented
cases. (Notably
RenderLine/RenderPoint/RenderFill/QueryTexturePixels/UpdateTexture and
texture blending )
Nevertheless I am successfully using these renderers together with the
SDL software renderer. (On most devices the SDL software renderer will
be much faster as there are only badly optimized vendor drivers available)
I send these patches now in this unpolished state because there seems to
be some interest in win ce and someone has to start supporting SDL 1.3
Now on to the patches:
wince_events_window_fixes.patch
fixes some wince incompatibilities and adds fullscreen support via
SHFullScreen. NOTE: This patch shouldn't have any side effects on
Windows, but I have NOT tested it on Windows, so please double-check.
This patch doesn't dependent on the following ones.
wince_renderers_system.patch
This patch does all necessary modifications to the SDL system.
- it adds the renderers to the configure system
- it adds the renderers to win32video
SDL_ceddrawrender.c
SDL_ceddrawrender.h
SDL_gapirender_c.h
SDL_gapirender.c
SDL_gapirender.h
these files add the new render drivers and should be placed in
src/video/win32
Some notes to people who want to test this:
- I have only compiled sdl with ming32ce, so the VisualC files are not
up to date
- As mingw32ce has no ddraw.h this file must be taken from the MS SDK
and modified to work with gcc
- I had to modify line 2611 in configure.in to
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lcoredll -lcommctrl -lmmtimer
-Wl,--image-base -Wl,0x10000"
otherwise GetCPinfo wouldn't link. If someone knows whats causing this
I'd be happy to hear about it.
It would be great if these patches could make their way into SVN as this
would make collaboration much much easier.
I'm out of office for the next week and therefore will be unavailable
via email.
Regards
Stefan
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sun, 07 Jun 2009 02:44:46 +0000 |
parents | 7f684f249ec9 |
children | 44d5474c2c8a |
rev | line source |
---|---|
3083
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1 /* |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
2 SDL - Simple DirectMedia Layer |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
3 Copyright (C) 1997-2009 Sam Lantinga |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
4 |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
5 This library is free software; you can redistribute it and/or |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
6 modify it under the terms of the GNU Lesser General Public |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
7 License as published by the Free Software Foundation; either |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
8 version 2.1 of the License, or (at your option) any later version. |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
9 |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
10 This library is distributed in the hope that it will be useful, |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
11 but WITHOUT ANY WARRANTY; without even the implied warranty of |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
13 Lesser General Public License for more details. |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
14 |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
15 You should have received a copy of the GNU Lesser General Public |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
16 License along with this library; if not, write to the Free Software |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
18 |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
19 Sam Lantinga |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
20 slouken@libsdl.org |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
21 |
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
22 QNX Graphics Framework SDL driver |
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
23 Copyright (C) 2009 Mike Gorchak |
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
24 (mike@malva.ua, lestat@i.com.ua) |
3083
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
25 */ |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
26 |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
27 #include "SDL_config.h" |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
28 |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
29 #include "../SDL_sysvideo.h" |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
30 #include "SDL_version.h" |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
31 #include "SDL_syswm.h" |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
32 #include "SDL_loadso.h" |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
33 |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
34 /* Include QNX Graphics Framework declarations */ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
35 #include <gf/gf.h> |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
36 |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
37 #include "SDL_qnxgf.h" |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
38 #include "SDL_gf_render.h" |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
39 #include "SDL_gf_pixelfmt.h" |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
40 #include "SDL_gf_opengles.h" |
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
41 #include "SDL_gf_input.h" |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
42 |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
43 /******************************************************************************/ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
44 /* SDL Generic video modes, which could provide GF */ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
45 /* This is real pain in the ass. GF is just wrapper around a selected driver */ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
46 /* some drivers could support double scan modes, like 320x200, 512x384, etc */ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
47 /* but some drivers are not. Later we can distinguish one driver from another */ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
48 /* Feel free to add any new custom graphics mode */ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
49 /******************************************************************************/ |
3139 | 50 static SDL_DisplayMode generic_mode[] = { |
51 {0, 320, 200, 70, NULL}, /* 320x200 modes are 70Hz and 85Hz */ | |
52 {0, 320, 200, 85, NULL}, | |
53 {0, 320, 240, 70, NULL}, /* 320x240 modes are 70Hz and 85Hz */ | |
54 {0, 320, 240, 85, NULL}, | |
55 {0, 400, 300, 60, NULL}, /* 400x300 mode is 60Hz only */ | |
56 {0, 480, 360, 60, NULL}, /* 480x360 mode is 60Hz only */ | |
57 {0, 512, 384, 60, NULL}, /* 512x384 modes are 60Hz and 70Hz */ | |
58 {0, 512, 384, 70, NULL}, | |
59 {0, 640, 480, 60, NULL}, /* 640x480 modes are 60Hz, 75Hz, 85Hz */ | |
60 {0, 640, 480, 75, NULL}, | |
61 {0, 640, 480, 85, NULL}, | |
62 {0, 800, 600, 60, NULL}, /* 800x600 modes are 60Hz, 75Hz, 85Hz */ | |
63 {0, 800, 600, 75, NULL}, | |
64 {0, 800, 600, 85, NULL}, | |
65 {0, 800, 480, 60, NULL}, /* 800x480 mode is 60Hz only */ | |
66 {0, 848, 480, 60, NULL}, /* 848x480 mode is 60Hz only */ | |
67 {0, 960, 600, 60, NULL}, /* 960x600 mode is 60Hz only */ | |
68 {0, 1024, 640, 60, NULL}, /* 1024x640 mode is 60Hz only */ | |
69 {0, 1024, 768, 60, NULL}, /* 1024x768 modes are 60Hz, 70Hz, 75Hz */ | |
70 {0, 1024, 768, 70, NULL}, | |
71 {0, 1024, 768, 75, NULL}, | |
72 {0, 1088, 612, 60, NULL}, /* 1088x612 mode is 60Hz only */ | |
73 {0, 1152, 864, 60, NULL}, /* 1152x864 modes are 60Hz, 70Hz, 72Hz */ | |
74 {0, 1152, 864, 70, NULL}, /* 75Hz and 85Hz */ | |
75 {0, 1152, 864, 72, NULL}, | |
76 {0, 1152, 864, 75, NULL}, | |
77 {0, 1152, 864, 85, NULL}, | |
78 {0, 1280, 720, 60, NULL}, /* 1280x720 mode is 60Hz only */ | |
79 {0, 1280, 768, 60, NULL}, /* 1280x768 mode is 60Hz only */ | |
80 {0, 1280, 800, 60, NULL}, /* 1280x800 mode is 60Hz only */ | |
81 {0, 1280, 960, 60, NULL}, /* 1280x960 mode is 60Hz only */ | |
82 {0, 1280, 1024, 60, NULL}, /* 1280x1024 modes are 60Hz, 75Hz, 85Hz and */ | |
83 {0, 1280, 1024, 75, NULL}, /* 100 Hz */ | |
84 {0, 1280, 1024, 85, NULL}, /* */ | |
85 {0, 1280, 1024, 100, NULL}, /* */ | |
86 {0, 1360, 768, 60, NULL}, /* 1360x768 mode is 60Hz only */ | |
87 {0, 1400, 1050, 60, NULL}, /* 1400x1050 mode is 60Hz only */ | |
88 {0, 1440, 900, 60, NULL}, /* 1440x900 mode is 60Hz only */ | |
89 {0, 1440, 960, 60, NULL}, /* 1440x960 mode is 60Hz only */ | |
90 {0, 1600, 900, 60, NULL}, /* 1600x900 mode is 60Hz only */ | |
91 {0, 1600, 1024, 60, NULL}, /* 1600x1024 mode is 60Hz only */ | |
92 {0, 1600, 1200, 60, NULL}, /* 1600x1200 mode is 60Hz only */ | |
93 {0, 1680, 1050, 60, NULL}, /* 1680x1050 mode is 60Hz only */ | |
94 {0, 1920, 1080, 60, NULL}, /* 1920x1080 mode is 60Hz only */ | |
95 {0, 1920, 1200, 60, NULL}, /* 1920x1200 mode is 60Hz only */ | |
96 {0, 1920, 1440, 60, NULL}, /* 1920x1440 mode is 60Hz only */ | |
97 {0, 2048, 1536, 60, NULL}, /* 2048x1536 mode is 60Hz only */ | |
98 {0, 2048, 1080, 60, NULL}, /* 2048x1080 mode is 60Hz only */ | |
99 {0, 0, 0, 0, NULL} /* End of generic mode list */ | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
100 }; |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
101 |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
102 /* Low level device graphics driver names, which they are reporting */ |
3139 | 103 GF_DeviceCaps gf_devicename[] = { |
104 /* ATI Rage 128 graphics driver (devg-ati_rage128) */ | |
105 {"ati_rage128", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
106 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
107 /* Fujitsu Carmine graphics driver (devg-carmine.so) */ | |
108 {"carmine", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
109 SDL_GF_ACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
110 /* C&T graphics driver (devg-chips.so) */ | |
111 {"chips", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
112 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
113 /* Fujitsu Coral graphics driver (devg-coral.so) */ | |
114 {"coral", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
115 SDL_GF_ACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
116 /* Intel integrated graphics driver (devg-extreme2.so) */ | |
117 {"extreme2", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
118 SDL_GF_ACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
119 /* Unaccelerated FB driver (devg-flat.so) */ | |
120 {"flat", SDL_GF_UNACCELERATED | SDL_GF_LOWRESOLUTION | | |
121 SDL_GF_UNACCELERATED_3D | SDL_GF_NOVIDEOMEMORY}, | |
122 /* NS Geode graphics driver (devg-geode.so) */ | |
123 {"geode", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
124 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
125 /* Geode LX graphics driver (devg-geodelx.so) */ | |
126 {"geodelx", SDL_GF_ACCELERATED | SDL_GF_LOWRESOLUTION | | |
127 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
128 /* Intel integrated graphics driver (devg-gma9xx.so) */ | |
129 {"gma", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
130 SDL_GF_ACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
131 /* Intel integrated graphics driver (devg-i810.so) */ | |
132 {"i810", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
133 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
134 /* Intel integrated graphics driver (devg-i830.so) */ | |
135 {"i830", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
136 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
137 /* Geode LX graphics driver (devg-lx800.so) */ | |
138 {"lx800", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
139 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
140 /* Matrox Gxx graphics driver (devg-matroxg.so) */ | |
141 {"matroxg", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
142 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
143 /* Intel Poulsbo graphics driver (devg-poulsbo.so) */ | |
144 {"poulsbo", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
145 SDL_GF_ACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
146 /* ATI Radeon driver (devg-radeon.so) */ | |
147 {"radeon", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
148 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
149 /* ATI Rage driver (devg-rage.so) */ | |
150 {"rage", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
151 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
152 /* S3 Savage graphics driver (devg-s3_savage.so) */ | |
153 {"s3_savage", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
154 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
155 /* SiS630 integrated graphics driver (devg-sis630.so) */ | |
156 {"sis630", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
157 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
158 /* PowerVR SGX 535 graphics driver (devg-poulsbo.so) */ | |
159 {"sgx", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
160 SDL_GF_ACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
161 /* SM Voyager GX graphics driver (devg-smi5xx.so) */ | |
162 {"smi5xx", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
163 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
164 /* Silicon Motion graphics driver (devg-smi7xx.so) */ | |
165 {"smi7xx", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
166 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
167 /* SVGA unaccelerated gfx driver (devg-svga.so) */ | |
168 {"svga", SDL_GF_UNACCELERATED | SDL_GF_LOWRESOLUTION | | |
169 SDL_GF_UNACCELERATED_3D | SDL_GF_NOVIDEOMEMORY}, | |
170 /* nVidia TNT graphics driver (devg-tnt.so) */ | |
171 {"tnt", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
172 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
173 /* VIA integrated graphics driver (devg-tvia.so) */ | |
174 {"tvia", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
175 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
176 /* VIA UniChrome graphics driver (devg-unichrome.so) */ | |
177 {"unichrome", SDL_GF_ACCELERATED | SDL_GF_NOLOWRESOLUTION | | |
178 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
179 /* VESA unaccelerated gfx driver (devg-vesa.so) */ | |
180 {"vesa", SDL_GF_UNACCELERATED | SDL_GF_LOWRESOLUTION | | |
181 SDL_GF_UNACCELERATED_3D | SDL_GF_NOVIDEOMEMORY}, | |
182 /* VmWare graphics driver (devg-volari.so) */ | |
183 {"vmware", SDL_GF_ACCELERATED | SDL_GF_LOWRESOLUTION | | |
184 SDL_GF_UNACCELERATED_3D | SDL_GF_NOVIDEOMEMORY}, | |
185 /* XGI XP10 graphics driver (devg-volari.so) */ | |
186 {"volari", SDL_GF_ACCELERATED | SDL_GF_LOWRESOLUTION | | |
187 SDL_GF_UNACCELERATED_3D | SDL_GF_VIDEOMEMORY}, | |
188 /* End of list */ | |
189 {NULL, 0x00000000} | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
190 }; |
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
191 |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
192 /*****************************************************************************/ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
193 /* SDL Video Device initialization functions */ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
194 /*****************************************************************************/ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
195 |
3139 | 196 static int |
197 qnxgf_available(void) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
198 { |
3139 | 199 gf_dev_t gfdev; |
200 gf_dev_info_t gfdev_info; | |
201 int status; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
202 |
3139 | 203 /* Try to attach to graphics device driver */ |
204 status = gf_dev_attach(&gfdev, GF_DEVICE_INDEX(0), &gfdev_info); | |
205 if (status != GF_ERR_OK) { | |
206 return 0; | |
207 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
208 |
3139 | 209 /* Detach from graphics device driver for now */ |
210 gf_dev_detach(gfdev); | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
211 |
3139 | 212 return 1; |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
213 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
214 |
3139 | 215 static void |
216 qnxgf_destroy(SDL_VideoDevice * device) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
217 { |
3139 | 218 SDL_VideoData *gfdata = (SDL_VideoData *) device->driverdata; |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
219 |
3139 | 220 /* Detach from graphics device driver, if it was initialized */ |
221 if (gfdata->gfinitialized != SDL_FALSE) { | |
222 gf_dev_detach(gfdata->gfdev); | |
223 gfdata->gfdev = NULL; | |
224 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
225 |
3139 | 226 if (device->driverdata != NULL) { |
227 device->driverdata = NULL; | |
228 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
229 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
230 |
3139 | 231 static SDL_VideoDevice * |
232 qnxgf_create(int devindex) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
233 { |
3139 | 234 SDL_VideoDevice *device; |
235 SDL_VideoData *gfdata; | |
236 int status; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
237 |
3139 | 238 /* Initialize SDL_VideoDevice structure */ |
239 device = (SDL_VideoDevice *) SDL_calloc(1, sizeof(SDL_VideoDevice)); | |
240 if (device == NULL) { | |
241 SDL_OutOfMemory(); | |
242 return NULL; | |
243 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
244 |
3139 | 245 /* Initialize internal GF specific data */ |
246 gfdata = (SDL_VideoData *) SDL_calloc(1, sizeof(SDL_VideoData)); | |
247 if (gfdata == NULL) { | |
248 SDL_OutOfMemory(); | |
249 SDL_free(device); | |
250 return NULL; | |
251 } | |
252 device->driverdata = gfdata; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
253 |
3139 | 254 /* Try to attach to graphics device driver */ |
255 status = | |
256 gf_dev_attach(&gfdata->gfdev, GF_DEVICE_INDEX(devindex), | |
257 &gfdata->gfdev_info); | |
258 if (status != GF_ERR_OK) { | |
259 SDL_OutOfMemory(); | |
260 SDL_free(gfdata); | |
261 SDL_free(device); | |
262 return NULL; | |
263 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
264 |
3139 | 265 if (gfdata->gfdev_info.description == NULL) { |
266 gf_dev_detach(gfdata->gfdev); | |
267 SDL_SetError("GF: Failed to initialize graphics driver"); | |
268 return NULL; | |
269 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
270 |
3139 | 271 /* Setup amount of available displays and current display */ |
272 device->num_displays = 0; | |
273 device->current_display = 0; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
274 |
3139 | 275 /* Setup device shutdown function */ |
276 gfdata->gfinitialized = SDL_TRUE; | |
277 device->free = qnxgf_destroy; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
278 |
3139 | 279 /* Setup all functions which we can handle */ |
280 device->VideoInit = qnxgf_videoinit; | |
281 device->VideoQuit = qnxgf_videoquit; | |
282 device->GetDisplayModes = qnxgf_getdisplaymodes; | |
283 device->SetDisplayMode = qnxgf_setdisplaymode; | |
284 device->SetDisplayPalette = qnxgf_setdisplaypalette; | |
285 device->GetDisplayPalette = qnxgf_getdisplaypalette; | |
286 device->SetDisplayGammaRamp = qnxgf_setdisplaygammaramp; | |
287 device->GetDisplayGammaRamp = qnxgf_getdisplaygammaramp; | |
288 device->CreateWindow = qnxgf_createwindow; | |
289 device->CreateWindowFrom = qnxgf_createwindowfrom; | |
290 device->SetWindowTitle = qnxgf_setwindowtitle; | |
291 device->SetWindowIcon = qnxgf_setwindowicon; | |
292 device->SetWindowPosition = qnxgf_setwindowposition; | |
293 device->SetWindowSize = qnxgf_setwindowsize; | |
294 device->ShowWindow = qnxgf_showwindow; | |
295 device->HideWindow = qnxgf_hidewindow; | |
296 device->RaiseWindow = qnxgf_raisewindow; | |
297 device->MaximizeWindow = qnxgf_maximizewindow; | |
298 device->MinimizeWindow = qnxgf_minimizewindow; | |
299 device->RestoreWindow = qnxgf_restorewindow; | |
300 device->SetWindowGrab = qnxgf_setwindowgrab; | |
301 device->DestroyWindow = qnxgf_destroywindow; | |
302 device->GetWindowWMInfo = qnxgf_getwindowwminfo; | |
303 device->GL_LoadLibrary = qnxgf_gl_loadlibrary; | |
304 device->GL_GetProcAddress = qnxgf_gl_getprocaddres; | |
305 device->GL_UnloadLibrary = qnxgf_gl_unloadlibrary; | |
306 device->GL_CreateContext = qnxgf_gl_createcontext; | |
307 device->GL_MakeCurrent = qnxgf_gl_makecurrent; | |
308 device->GL_SetSwapInterval = qnxgf_gl_setswapinterval; | |
309 device->GL_GetSwapInterval = qnxgf_gl_getswapinterval; | |
310 device->GL_SwapWindow = qnxgf_gl_swapwindow; | |
311 device->GL_DeleteContext = qnxgf_gl_deletecontext; | |
312 device->PumpEvents = qnxgf_pumpevents; | |
313 device->SuspendScreenSaver = qnxgf_suspendscreensaver; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
314 |
3139 | 315 return device; |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
316 } |
3083
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
317 |
3139 | 318 VideoBootStrap qnxgf_bootstrap = { |
319 "qnxgf", | |
320 "SDL QNX Graphics Framework (GF) video driver", | |
321 qnxgf_available, | |
322 qnxgf_create | |
3083
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
323 }; |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
324 |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
325 /*****************************************************************************/ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
326 /* SDL Video and Display initialization/handling functions */ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
327 /*****************************************************************************/ |
3139 | 328 int |
329 qnxgf_videoinit(_THIS) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
330 { |
3139 | 331 SDL_VideoData *gfdata = (SDL_VideoData *) _this->driverdata; |
332 uint32_t it; | |
333 uint32_t jt; | |
334 char *override; | |
335 int32_t status; | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
336 |
3139 | 337 /* By default GF uses buffer swap on vsync */ |
338 gfdata->swapinterval = 1; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
339 |
3139 | 340 /* Add each detected output to SDL */ |
341 for (it = 0; it < gfdata->gfdev_info.ndisplays; it++) { | |
342 SDL_VideoDisplay display; | |
343 SDL_DisplayMode current_mode; | |
344 SDL_DisplayData *didata; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
345 |
3139 | 346 didata = (SDL_DisplayData *) SDL_calloc(1, sizeof(SDL_DisplayData)); |
347 if (didata == NULL) { | |
348 /* memory allocation problem */ | |
349 SDL_OutOfMemory(); | |
350 return -1; | |
351 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
352 |
3139 | 353 /* Set default cursor settings, maximum 128x128 cursor */ |
354 didata->cursor_visible = SDL_FALSE; | |
355 didata->cursor.type = GF_CURSOR_BITMAP; | |
356 didata->cursor.hotspot.x = 0; | |
357 didata->cursor.hotspot.y = 0; | |
358 didata->cursor.cursor.bitmap.w = SDL_VIDEO_GF_MAX_CURSOR_SIZE; | |
359 didata->cursor.cursor.bitmap.h = SDL_VIDEO_GF_MAX_CURSOR_SIZE; | |
360 didata->cursor.cursor.bitmap.stride = | |
361 (didata->cursor.cursor.bitmap.w + 7) / (sizeof(uint8_t) * 8); | |
362 didata->cursor.cursor.bitmap.color0 = 0x00000000; | |
363 didata->cursor.cursor.bitmap.color1 = 0x00000000; | |
364 didata->cursor.cursor.bitmap.image0 = | |
365 SDL_calloc(sizeof(uint8_t), | |
366 (didata->cursor.cursor.bitmap.w + | |
367 7) * didata->cursor.cursor.bitmap.h / | |
368 (sizeof(uint8_t) * 8)); | |
369 if (didata->cursor.cursor.bitmap.image0 == NULL) { | |
370 SDL_free(didata); | |
371 SDL_OutOfMemory(); | |
372 return -1; | |
373 } | |
374 didata->cursor.cursor.bitmap.image1 = | |
375 SDL_calloc(sizeof(uint8_t), | |
376 (didata->cursor.cursor.bitmap.w + | |
377 7) * didata->cursor.cursor.bitmap.h / | |
378 (sizeof(uint8_t) * 8)); | |
379 if (didata->cursor.cursor.bitmap.image1 == NULL) { | |
380 SDL_OutOfMemory(); | |
381 SDL_free((void *) didata->cursor.cursor.bitmap.image0); | |
382 SDL_free(didata); | |
383 return -1; | |
384 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
385 |
3139 | 386 /* Query current display settings */ |
387 status = gf_display_query(gfdata->gfdev, it, &didata->display_info); | |
388 if (status == GF_ERR_OK) { | |
389 SDL_zero(current_mode); | |
390 current_mode.w = didata->display_info.xres; | |
391 current_mode.h = didata->display_info.yres; | |
392 current_mode.refresh_rate = didata->display_info.refresh; | |
393 current_mode.format = | |
394 qnxgf_gf_to_sdl_pixelformat(didata->display_info.format); | |
395 current_mode.driverdata = NULL; | |
396 } else { | |
397 /* video initialization problem */ | |
398 SDL_free((void *) didata->cursor.cursor.bitmap.image0); | |
399 SDL_free((void *) didata->cursor.cursor.bitmap.image1); | |
400 SDL_free(didata); | |
401 SDL_SetError("GF: Display query failed"); | |
402 return -1; | |
403 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
404 |
3139 | 405 /* Attach GF to selected display */ |
406 status = gf_display_attach(&didata->display, gfdata->gfdev, it, NULL); | |
407 if (status != GF_ERR_OK) { | |
408 /* video initialization problem */ | |
409 SDL_free((void *) didata->cursor.cursor.bitmap.image0); | |
410 SDL_free((void *) didata->cursor.cursor.bitmap.image1); | |
411 SDL_free(didata); | |
412 SDL_SetError("GF: Couldn't attach to display"); | |
413 return -1; | |
414 } | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
415 |
3139 | 416 /* Initialize status variables */ |
417 didata->layer_attached = SDL_FALSE; | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
418 |
3139 | 419 /* Attach to main display layer */ |
420 status = | |
421 gf_layer_attach(&didata->layer, didata->display, | |
422 didata->display_info.main_layer_index, 0); | |
423 if (status != GF_ERR_OK) { | |
424 /* Failed to attach to main layer */ | |
425 SDL_free((void *) didata->cursor.cursor.bitmap.image0); | |
426 SDL_free((void *) didata->cursor.cursor.bitmap.image1); | |
427 SDL_free(didata); | |
428 SDL_SetError | |
429 ("GF: Couldn't attach to main layer, it could be busy"); | |
430 return -1; | |
431 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
432 |
3139 | 433 /* Mark main display layer is attached */ |
434 didata->layer_attached = SDL_TRUE; | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
435 |
3139 | 436 /* Set layer source and destination viewport */ |
437 gf_layer_set_src_viewport(didata->layer, 0, 0, current_mode.w - 1, | |
438 current_mode.h - 1); | |
439 gf_layer_set_dst_viewport(didata->layer, 0, 0, current_mode.w - 1, | |
440 current_mode.h - 1); | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
441 |
3139 | 442 /* Create main visible on display surface */ |
443 status = gf_surface_create_layer(&didata->surface[0], &didata->layer, | |
444 1, 0, current_mode.w, current_mode.h, | |
445 qnxgf_sdl_to_gf_pixelformat | |
446 (current_mode.format), NULL, | |
447 GF_SURFACE_CREATE_2D_ACCESSIBLE | | |
448 GF_SURFACE_CREATE_3D_ACCESSIBLE | | |
449 GF_SURFACE_CREATE_SHAREABLE); | |
450 if (status != GF_ERR_OK) { | |
451 gf_layer_disable(didata->layer); | |
452 gf_layer_detach(didata->layer); | |
453 didata->layer_attached = SDL_FALSE; | |
454 SDL_free((void *) didata->cursor.cursor.bitmap.image0); | |
455 SDL_free((void *) didata->cursor.cursor.bitmap.image1); | |
456 SDL_free(didata); | |
457 SDL_SetError("GF: Can't create main layer surface at init (%d)\n", | |
458 status); | |
459 return -1; | |
460 } | |
461 | |
462 /* Set just created surface as main visible on the layer */ | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
463 // gf_layer_set_surfaces(didata->layer, &didata->surface[0], 1); |
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
464 |
3139 | 465 /* Update layer parameters */ |
466 status = gf_layer_update(didata->layer, GF_LAYER_UPDATE_NO_WAIT_IDLE); | |
467 if (status != GF_ERR_OK) { | |
468 /* Free allocated surface */ | |
469 gf_surface_free(didata->surface[0]); | |
470 didata->surface[0] = NULL; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
471 |
3139 | 472 /* Disable and detach from layer */ |
473 gf_layer_disable(didata->layer); | |
474 gf_layer_detach(didata->layer); | |
475 didata->layer_attached = SDL_FALSE; | |
476 SDL_free((void *) didata->cursor.cursor.bitmap.image0); | |
477 SDL_free((void *) didata->cursor.cursor.bitmap.image1); | |
478 SDL_free(didata); | |
479 SDL_SetError("GF: Can't update layer parameters\n"); | |
480 return -1; | |
481 } | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
482 |
3139 | 483 /* Enable layer in case if hardware supports layer enable/disable */ |
484 gf_layer_enable(didata->layer); | |
485 | |
486 /* Copy device name for each display */ | |
487 SDL_strlcpy(didata->description, gfdata->gfdev_info.description, | |
488 SDL_VIDEO_GF_DEVICENAME_MAX - 1); | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
489 |
3139 | 490 /* Search device capabilities and possible workarounds */ |
491 jt = 0; | |
492 do { | |
493 if (gf_devicename[jt].name == NULL) { | |
494 break; | |
495 } | |
496 if (SDL_strncmp | |
497 (gf_devicename[jt].name, didata->description, | |
498 SDL_strlen(gf_devicename[jt].name)) == 0) { | |
499 didata->caps = gf_devicename[jt].caps; | |
500 } | |
501 jt++; | |
502 } while (1); | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
503 |
3139 | 504 /* Initialize display structure */ |
505 SDL_zero(display); | |
506 display.desktop_mode = current_mode; | |
507 display.current_mode = current_mode; | |
508 display.driverdata = didata; | |
509 didata->current_mode = current_mode; | |
510 SDL_AddVideoDisplay(&display); | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
511 |
3139 | 512 /* Check for environment variables which could override some SDL settings */ |
513 didata->custom_refresh = 0; | |
514 override = SDL_getenv("SDL_VIDEO_GF_REFRESH_RATE"); | |
515 if (override != NULL) { | |
516 if (SDL_sscanf(override, "%u", &didata->custom_refresh) != 1) { | |
517 didata->custom_refresh = 0; | |
518 } | |
519 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
520 |
3139 | 521 /* Get all display modes for this display */ |
522 _this->current_display = it; | |
523 qnxgf_getdisplaymodes(_this); | |
524 } | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
525 |
3139 | 526 /* Restore default display */ |
527 _this->current_display = 0; | |
528 | |
529 /* Add GF renderer to SDL */ | |
530 gf_addrenderdriver(_this); | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
531 |
3139 | 532 /* Add GF input devices */ |
533 status = gf_addinputdevices(_this); | |
534 if (status != 0) { | |
535 /* SDL error is set by gf_addinputdevices() function */ | |
536 return -1; | |
537 } | |
538 | |
539 /* video has been initialized successfully */ | |
540 return 1; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
541 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
542 |
3139 | 543 void |
544 qnxgf_videoquit(_THIS) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
545 { |
3139 | 546 SDL_DisplayData *didata = NULL; |
547 uint32_t it; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
548 |
3139 | 549 /* Stop collecting mouse events */ |
550 hiddi_disable_mouse(); | |
551 /* Delete GF input devices */ | |
552 gf_delinputdevices(_this); | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
553 |
3139 | 554 /* SDL will restore old desktop mode on exit */ |
555 for (it = 0; it < _this->num_displays; it++) { | |
556 didata = _this->displays[it].driverdata; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
557 |
3139 | 558 /* Free cursor image */ |
559 if (didata->cursor.cursor.bitmap.image0 != NULL) { | |
560 SDL_free((void *) didata->cursor.cursor.bitmap.image0); | |
561 didata->cursor.cursor.bitmap.image0 = NULL; | |
562 } | |
563 if (didata->cursor.cursor.bitmap.image1 != NULL) { | |
564 SDL_free((void *) didata->cursor.cursor.bitmap.image1); | |
565 didata->cursor.cursor.bitmap.image1 = NULL; | |
566 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
567 |
3139 | 568 /* Free main surface */ |
569 if (didata->surface[0] != NULL) { | |
570 gf_surface_free(didata->surface[0]); | |
571 didata->surface[0] = NULL; | |
572 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
573 |
3139 | 574 /* Free back surface */ |
575 if (didata->surface[1] != NULL) { | |
576 gf_surface_free(didata->surface[1]); | |
577 didata->surface[1] = NULL; | |
578 } | |
579 | |
580 /* Free second back surface */ | |
581 if (didata->surface[2] != NULL) { | |
582 gf_surface_free(didata->surface[2]); | |
583 didata->surface[2] = NULL; | |
584 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
585 |
3139 | 586 /* Detach layer before quit */ |
587 if (didata->layer_attached == SDL_TRUE) { | |
588 /* Disable layer if hardware supports this */ | |
589 gf_layer_disable(didata->layer); | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
590 |
3139 | 591 /* Detach from layer, free it for others */ |
592 gf_layer_detach(didata->layer); | |
593 didata->layer = NULL; | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
594 |
3139 | 595 /* Mark it as detached */ |
596 didata->layer_attached = SDL_FALSE; | |
597 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
598 |
3139 | 599 /* Detach from selected display */ |
600 gf_display_detach(didata->display); | |
601 didata->display = NULL; | |
602 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
603 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
604 |
3139 | 605 void |
606 qnxgf_getdisplaymodes(_THIS) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
607 { |
3139 | 608 SDL_DisplayData *didata = |
609 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata; | |
610 SDL_DisplayMode mode; | |
611 gf_modeinfo_t modeinfo; | |
612 uint32_t it = 0; | |
613 uint32_t jt = 0; | |
614 uint32_t kt = 0; | |
615 int status; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
616 |
3139 | 617 do { |
618 status = gf_display_query_mode(didata->display, it, &modeinfo); | |
619 if (status == GF_ERR_OK) { | |
620 /* Parsing current mode */ | |
621 if ((modeinfo.flags & GF_MODE_GENERIC) == GF_MODE_GENERIC) { | |
622 /* This mode is generic, so we can add to SDL our resolutions */ | |
623 /* Only pixel format is fixed, refresh rate could be any */ | |
624 jt = 0; | |
625 do { | |
626 if (generic_mode[jt].w == 0) { | |
627 break; | |
628 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
629 |
3139 | 630 /* Check if driver do not supports doublescan video modes */ |
631 if ((didata->caps & SDL_GF_LOWRESOLUTION) != | |
632 SDL_GF_LOWRESOLUTION) { | |
633 if (generic_mode[jt].w < 640) { | |
634 jt++; | |
635 continue; | |
636 } | |
637 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
638 |
3139 | 639 mode.w = generic_mode[jt].w; |
640 mode.h = generic_mode[jt].h; | |
641 mode.refresh_rate = generic_mode[jt].refresh_rate; | |
642 mode.format = | |
643 qnxgf_gf_to_sdl_pixelformat(modeinfo.primary_format); | |
644 mode.driverdata = NULL; | |
645 SDL_AddDisplayMode(_this->current_display, &mode); | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
646 |
3139 | 647 jt++; |
648 } while (1); | |
649 } else { | |
650 /* Add this display mode as is in case if it is non-generic */ | |
651 /* But go through the each refresh rate, supported by gf */ | |
652 jt = 0; | |
653 do { | |
654 if (modeinfo.refresh[jt] != 0) { | |
655 mode.w = modeinfo.xres; | |
656 mode.h = modeinfo.yres; | |
657 mode.refresh_rate = modeinfo.refresh[jt]; | |
658 mode.format = | |
659 qnxgf_gf_to_sdl_pixelformat(modeinfo. | |
660 primary_format); | |
661 mode.driverdata = NULL; | |
662 SDL_AddDisplayMode(_this->current_display, &mode); | |
663 jt++; | |
664 } else { | |
665 break; | |
666 } | |
667 } while (1); | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
668 } |
3139 | 669 } else { |
670 if (status == GF_ERR_PARM) { | |
671 /* out of available modes, all are listed */ | |
672 break; | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
673 } |
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
674 |
3139 | 675 /* Error occured during mode listing */ |
676 break; | |
677 } | |
678 it++; | |
679 } while (1); | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
680 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
681 |
3139 | 682 int |
683 qnxgf_setdisplaymode(_THIS, SDL_DisplayMode * mode) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
684 { |
3139 | 685 SDL_DisplayData *didata = |
686 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata; | |
687 uint32_t refresh_rate = 0; | |
688 int status; | |
689 | |
690 /* Current display dimensions and bpp are no more valid */ | |
691 didata->current_mode.format = SDL_PIXELFORMAT_UNKNOWN; | |
692 didata->current_mode.w = 0; | |
693 didata->current_mode.h = 0; | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
694 |
3139 | 695 /* Check if custom refresh rate requested */ |
696 if (didata->custom_refresh != 0) { | |
697 refresh_rate = didata->custom_refresh; | |
698 } else { | |
699 refresh_rate = mode->refresh_rate; | |
700 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
701 |
3139 | 702 /* Check if SDL GF driver needs to find appropriate refresh rate itself */ |
703 if (refresh_rate == 0) { | |
704 uint32_t it; | |
705 SDL_DisplayMode tempmode; | |
706 | |
707 /* Clear display mode structure */ | |
708 SDL_memset(&tempmode, 0x00, sizeof(SDL_DisplayMode)); | |
709 tempmode.refresh_rate = 0x0000FFFF; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
710 |
3139 | 711 /* Check if window width and height matches one of our modes */ |
712 for (it = 0; it < SDL_CurrentDisplay.num_display_modes; it++) { | |
713 if ((SDL_CurrentDisplay.display_modes[it].w == mode->w) && | |
714 (SDL_CurrentDisplay.display_modes[it].h == mode->h) && | |
715 (SDL_CurrentDisplay.display_modes[it].format == mode->format)) | |
716 { | |
717 /* Find the lowest refresh rate available */ | |
718 if (tempmode.refresh_rate > | |
719 SDL_CurrentDisplay.display_modes[it].refresh_rate) { | |
720 tempmode = SDL_CurrentDisplay.display_modes[it]; | |
721 } | |
722 } | |
723 } | |
724 if (tempmode.refresh_rate != 0x0000FFFF) { | |
725 refresh_rate = tempmode.refresh_rate; | |
726 } else { | |
727 /* Let video driver decide what to do with this */ | |
728 refresh_rate = 0; | |
729 } | |
730 } | |
731 | |
732 /* Check if SDL GF driver needs to check custom refresh rate */ | |
733 if (didata->custom_refresh != 0) { | |
734 uint32_t it; | |
735 SDL_DisplayMode tempmode; | |
736 | |
737 /* Clear display mode structure */ | |
738 SDL_memset(&tempmode, 0x00, sizeof(SDL_DisplayMode)); | |
739 tempmode.refresh_rate = 0x0000FFFF; | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
740 |
3139 | 741 /* Check if window width and height matches one of our modes */ |
742 for (it = 0; it < SDL_CurrentDisplay.num_display_modes; it++) { | |
743 if ((SDL_CurrentDisplay.display_modes[it].w == mode->w) && | |
744 (SDL_CurrentDisplay.display_modes[it].h == mode->h) && | |
745 (SDL_CurrentDisplay.display_modes[it].format == mode->format)) | |
746 { | |
747 /* Find the lowest refresh rate available */ | |
748 if (tempmode.refresh_rate > | |
749 SDL_CurrentDisplay.display_modes[it].refresh_rate) { | |
750 tempmode = SDL_CurrentDisplay.display_modes[it]; | |
751 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
752 |
3139 | 753 /* Check if requested refresh rate found */ |
754 if (refresh_rate == | |
755 SDL_CurrentDisplay.display_modes[it].refresh_rate) { | |
756 tempmode = SDL_CurrentDisplay.display_modes[it]; | |
757 break; | |
758 } | |
759 } | |
760 } | |
761 if (tempmode.refresh_rate != 0x0000FFFF) { | |
762 refresh_rate = tempmode.refresh_rate; | |
763 } else { | |
764 /* Let video driver decide what to do with this */ | |
765 refresh_rate = 0; | |
766 } | |
767 } | |
768 | |
769 /* Free main surface */ | |
770 if (didata->surface[0] != NULL) { | |
771 gf_surface_free(didata->surface[0]); | |
772 didata->surface[0] = NULL; | |
773 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
774 |
3139 | 775 /* Free back surface */ |
776 if (didata->surface[1] != NULL) { | |
777 gf_surface_free(didata->surface[1]); | |
778 didata->surface[1] = NULL; | |
779 } | |
780 | |
781 /* Free second back surface */ | |
782 if (didata->surface[2] != NULL) { | |
783 gf_surface_free(didata->surface[2]); | |
784 didata->surface[2] = NULL; | |
785 } | |
786 | |
787 /* Detach layer before switch to new graphics mode */ | |
788 if (didata->layer_attached == SDL_TRUE) { | |
789 /* Disable layer if hardware supports this */ | |
790 gf_layer_disable(didata->layer); | |
791 | |
792 /* Detach from layer, free it for others */ | |
793 gf_layer_detach(didata->layer); | |
794 | |
795 /* Mark it as detached */ | |
796 didata->layer_attached = SDL_FALSE; | |
797 } | |
798 | |
799 /* Set new display video mode */ | |
800 status = | |
801 gf_display_set_mode(didata->display, mode->w, mode->h, refresh_rate, | |
802 qnxgf_sdl_to_gf_pixelformat(mode->format), 0); | |
803 if (status != GF_ERR_OK) { | |
804 /* Display mode/resolution switch has been failed */ | |
805 SDL_SetError("GF: Mode is not supported by graphics driver"); | |
806 return -1; | |
807 } else { | |
808 didata->current_mode = *mode; | |
809 didata->current_mode.refresh_rate = refresh_rate; | |
810 } | |
811 | |
812 /* Attach to main display layer */ | |
813 status = | |
814 gf_layer_attach(&didata->layer, didata->display, | |
815 didata->display_info.main_layer_index, 0); | |
816 if (status != GF_ERR_OK) { | |
817 SDL_SetError("GF: Couldn't attach to main layer, it could be busy"); | |
818 | |
819 /* Failed to attach to main displayable layer */ | |
820 return -1; | |
821 } | |
822 | |
823 /* Mark main display layer is attached */ | |
824 didata->layer_attached = SDL_TRUE; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
825 |
3139 | 826 /* Set layer source and destination viewport */ |
827 gf_layer_set_src_viewport(didata->layer, 0, 0, mode->w - 1, mode->h - 1); | |
828 gf_layer_set_dst_viewport(didata->layer, 0, 0, mode->w - 1, mode->h - 1); | |
829 | |
830 /* Create main visible on display surface */ | |
831 status = | |
832 gf_surface_create_layer(&didata->surface[0], &didata->layer, 1, 0, | |
833 mode->w, mode->h, | |
834 qnxgf_sdl_to_gf_pixelformat(mode->format), | |
835 NULL, | |
836 GF_SURFACE_CREATE_2D_ACCESSIBLE | | |
837 GF_SURFACE_CREATE_3D_ACCESSIBLE | | |
838 GF_SURFACE_CREATE_SHAREABLE); | |
839 if (status != GF_ERR_OK) { | |
840 gf_layer_disable(didata->layer); | |
841 gf_layer_detach(didata->layer); | |
842 didata->layer_attached = SDL_FALSE; | |
843 SDL_SetError | |
844 ("GF: Can't create main layer surface at modeswitch (%d)\n", | |
845 status); | |
846 return -1; | |
847 } | |
848 | |
849 /* Set just created surface as main visible on the layer */ | |
850 gf_layer_set_surfaces(didata->layer, &didata->surface[0], 1); | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
851 |
3139 | 852 /* Update layer parameters */ |
853 status = gf_layer_update(didata->layer, GF_LAYER_UPDATE_NO_WAIT_IDLE); | |
854 if (status != GF_ERR_OK) { | |
855 /* Free main surface */ | |
856 gf_surface_free(didata->surface[0]); | |
857 didata->surface[0] = NULL; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
858 |
3139 | 859 /* Detach layer */ |
860 gf_layer_disable(didata->layer); | |
861 gf_layer_detach(didata->layer); | |
862 didata->layer_attached = SDL_FALSE; | |
863 SDL_SetError("GF: Can't update layer parameters\n"); | |
864 return -1; | |
865 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
866 |
3139 | 867 /* Restore cursor if it was visible */ |
868 if (didata->cursor_visible == SDL_TRUE) { | |
869 gf_cursor_set(didata->display, 0, &didata->cursor); | |
870 gf_cursor_enable(didata->display, 0); | |
871 } | |
872 | |
873 /* Enable layer in case if hardware supports layer enable/disable */ | |
874 gf_layer_enable(didata->layer); | |
875 | |
876 return 0; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
877 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
878 |
3139 | 879 int |
880 qnxgf_setdisplaypalette(_THIS, SDL_Palette * palette) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
881 { |
3139 | 882 SDL_DisplayData *didata = |
883 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata; | |
884 | |
885 /* QNX GF doesn't have support for global palette changing, but we */ | |
886 /* could store it for usage in future */ | |
887 | |
888 /* Setting display palette operation has been failed */ | |
889 return -1; | |
890 } | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
891 |
3139 | 892 int |
893 qnxgf_getdisplaypalette(_THIS, SDL_Palette * palette) | |
894 { | |
895 SDL_DisplayData *didata = | |
896 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata; | |
897 | |
898 /* We can't provide current palette settings and looks like SDL */ | |
899 /* do not call this function also, in such case this function returns -1 */ | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
900 |
3139 | 901 /* Getting display palette operation has been failed */ |
902 return -1; | |
903 } | |
904 | |
905 int | |
906 qnxgf_setdisplaygammaramp(_THIS, Uint16 * ramp) | |
907 { | |
908 SDL_DisplayData *didata = | |
909 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata; | |
910 int status; | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
911 |
3139 | 912 /* Setup gamma ramp, for each color channel */ |
913 status = | |
914 gf_display_set_color_lut16(didata->display, (uint16_t *) ramp, | |
915 (uint16_t *) ramp + 256, | |
916 (uint16_t *) ramp + 512); | |
917 if (status != GF_ERR_OK) { | |
918 /* Setting display gamma ramp operation has been failed */ | |
919 return -1; | |
920 } | |
921 | |
922 return 0; | |
923 } | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
924 |
3139 | 925 int |
926 qnxgf_getdisplaygammaramp(_THIS, Uint16 * ramp) | |
927 { | |
928 /* TODO: We need to return previous gamma set */ | |
929 /* Also we need some initial fake gamma to return */ | |
930 | |
931 /* Getting display gamma ramp operation has been failed */ | |
932 return -1; | |
933 } | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
934 |
3139 | 935 int |
936 qnxgf_createwindow(_THIS, SDL_Window * window) | |
937 { | |
938 SDL_VideoData *gfdata = (SDL_VideoData *) _this->driverdata; | |
939 SDL_DisplayData *didata = | |
940 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata; | |
941 SDL_WindowData *wdata; | |
942 int32_t status; | |
943 | |
944 /* QNX GF supports fullscreen window modes only */ | |
945 if ((window->flags & SDL_WINDOW_FULLSCREEN) != SDL_WINDOW_FULLSCREEN) { | |
946 uint32_t it; | |
947 SDL_DisplayMode mode; | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
948 |
3139 | 949 /* Clear display mode structure */ |
950 SDL_memset(&mode, 0x00, sizeof(SDL_DisplayMode)); | |
951 mode.refresh_rate = 0x0000FFFF; | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
952 |
3139 | 953 /* Check if window width and height matches one of our modes */ |
954 for (it = 0; it < SDL_CurrentDisplay.num_display_modes; it++) { | |
955 if ((SDL_CurrentDisplay.display_modes[it].w == window->w) && | |
956 (SDL_CurrentDisplay.display_modes[it].h == window->h) && | |
957 (SDL_CurrentDisplay.display_modes[it].format == | |
958 SDL_CurrentDisplay.desktop_mode.format)) { | |
959 /* Find the lowest refresh rate available */ | |
960 if (mode.refresh_rate > | |
961 SDL_CurrentDisplay.display_modes[it].refresh_rate) { | |
962 mode = SDL_CurrentDisplay.display_modes[it]; | |
963 } | |
964 } | |
965 } | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
966 |
3139 | 967 /* Check if end of display list has been reached */ |
968 if (mode.refresh_rate == 0x0000FFFF) { | |
969 SDL_SetError("GF: Desired video mode is not supported"); | |
970 | |
971 /* Failed to create new window */ | |
972 return -1; | |
973 } else { | |
974 /* Tell to the caller that mode will be fullscreen */ | |
975 window->flags |= SDL_WINDOW_FULLSCREEN; | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
976 |
3139 | 977 /* Setup fullscreen mode, bpp used from desktop mode in this case */ |
978 status = qnxgf_setdisplaymode(_this, &mode); | |
979 if (status != 0) { | |
980 /* Failed to swith fullscreen video mode */ | |
981 return -1; | |
982 } | |
983 } | |
984 } | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
985 |
3139 | 986 /* Setup our own window decorations and states, which are depend on fullscreen mode */ |
987 window->flags |= SDL_WINDOW_SHOWN | SDL_WINDOW_BORDERLESS | | |
988 SDL_WINDOW_MAXIMIZED | SDL_WINDOW_INPUT_GRABBED | | |
989 SDL_WINDOW_INPUT_FOCUS | SDL_WINDOW_MOUSE_FOCUS; | |
990 window->flags &= ~(SDL_WINDOW_RESIZABLE | SDL_WINDOW_MINIMIZED); | |
991 | |
992 /* Ignore any window position settings */ | |
993 window->x = SDL_WINDOWPOS_UNDEFINED; | |
994 window->y = SDL_WINDOWPOS_UNDEFINED; | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
995 |
3139 | 996 /* Allocate window internal data */ |
997 wdata = (SDL_WindowData *) SDL_calloc(1, sizeof(SDL_WindowData)); | |
998 if (wdata == NULL) { | |
999 SDL_OutOfMemory(); | |
1000 return -1; | |
1001 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1002 |
3139 | 1003 /* Setup driver data for this window */ |
1004 window->driverdata = wdata; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1005 |
3139 | 1006 /* Check if window must support OpenGL ES rendering */ |
1007 if ((window->flags & SDL_WINDOW_OPENGL) == SDL_WINDOW_OPENGL) { | |
1008 #if defined(SDL_VIDEO_OPENGL_ES) | |
1009 EGLBoolean initstatus; | |
1010 | |
1011 /* Mark this window as OpenGL ES compatible */ | |
1012 wdata->uses_gles = SDL_TRUE; | |
1013 | |
1014 /* Create connection to OpenGL ES */ | |
1015 if (gfdata->egldisplay == EGL_NO_DISPLAY) { | |
1016 gfdata->egldisplay = eglGetDisplay(gfdata->gfdev); | |
1017 if (gfdata->egldisplay == EGL_NO_DISPLAY) { | |
1018 SDL_SetError("GF: Can't get connection to OpenGL ES"); | |
1019 return -1; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1020 } |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1021 |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1022 /* Initialize OpenGL ES library, ignore EGL version */ |
3139 | 1023 initstatus = eglInitialize(gfdata->egldisplay, NULL, NULL); |
1024 if (initstatus != EGL_TRUE) { | |
1025 SDL_SetError("GF: Can't init OpenGL ES library"); | |
1026 return -1; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1027 } |
3139 | 1028 } |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1029 |
3139 | 1030 /* Increment GL ES reference count usage */ |
1031 gfdata->egl_refcount++; | |
1032 #else | |
1033 SDL_SetError("GF: OpenGL ES support is not compiled in"); | |
1034 return -1; | |
1035 #endif /* SDL_VIDEO_OPENGL_ES */ | |
1036 } | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
1037 |
3139 | 1038 /* Enable mouse event collecting */ |
1039 hiddi_enable_mouse(); | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1040 |
3139 | 1041 /* By default last created window got a input focus */ |
1042 SDL_SetKeyboardFocus(0, window->id); | |
1043 SDL_SetMouseFocus(0, window->id); | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1044 |
3139 | 1045 /* Window has been successfully created */ |
1046 return 0; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1047 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1048 |
3139 | 1049 int |
1050 qnxgf_createwindowfrom(_THIS, SDL_Window * window, const void *data) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1051 { |
3139 | 1052 /* Failed to create window from another window */ |
1053 return -1; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1054 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1055 |
3139 | 1056 void |
1057 qnxgf_setwindowtitle(_THIS, SDL_Window * window) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1058 { |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1059 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1060 |
3139 | 1061 void |
1062 qnxgf_setwindowicon(_THIS, SDL_Window * window, SDL_Surface * icon) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1063 { |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1064 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1065 |
3139 | 1066 void |
1067 qnxgf_setwindowposition(_THIS, SDL_Window * window) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1068 { |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1069 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1070 |
3139 | 1071 void |
1072 qnxgf_setwindowsize(_THIS, SDL_Window * window) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1073 { |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1074 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1075 |
3139 | 1076 void |
1077 qnxgf_showwindow(_THIS, SDL_Window * window) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1078 { |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1079 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1080 |
3139 | 1081 void |
1082 qnxgf_hidewindow(_THIS, SDL_Window * window) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1083 { |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1084 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1085 |
3139 | 1086 void |
1087 qnxgf_raisewindow(_THIS, SDL_Window * window) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1088 { |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1089 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1090 |
3139 | 1091 void |
1092 qnxgf_maximizewindow(_THIS, SDL_Window * window) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1093 { |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1094 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1095 |
3139 | 1096 void |
1097 qnxgf_minimizewindow(_THIS, SDL_Window * window) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1098 { |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1099 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1100 |
3139 | 1101 void |
1102 qnxgf_restorewindow(_THIS, SDL_Window * window) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1103 { |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1104 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1105 |
3139 | 1106 void |
1107 qnxgf_setwindowgrab(_THIS, SDL_Window * window) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1108 { |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1109 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1110 |
3139 | 1111 void |
1112 qnxgf_destroywindow(_THIS, SDL_Window * window) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1113 { |
3139 | 1114 SDL_VideoData *gfdata = (SDL_VideoData *) _this->driverdata; |
1115 SDL_DisplayData *didata = | |
1116 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata; | |
1117 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata; | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
1118 |
3139 | 1119 if (wdata != NULL) { |
1120 #if defined(SDL_VIDEO_OPENGL_ES) | |
1121 /* Destroy OpenGL ES surface if it was created */ | |
1122 if (wdata->gles_surface != EGL_NO_SURFACE) { | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1123 eglDestroySurface(gfdata->egldisplay, wdata->gles_surface); |
3139 | 1124 } |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1125 |
3139 | 1126 /* Free any 3D target if it was created before */ |
1127 if (wdata->target_created == SDL_TRUE) { | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1128 gf_3d_target_free(wdata->target); |
3139 | 1129 wdata->target_created == SDL_FALSE; |
1130 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1131 |
3139 | 1132 gfdata->egl_refcount--; |
1133 if (gfdata->egl_refcount == 0) { | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1134 /* Terminate connection to OpenGL ES */ |
3139 | 1135 if (gfdata->egldisplay != EGL_NO_DISPLAY) { |
1136 eglTerminate(gfdata->egldisplay); | |
1137 gfdata->egldisplay = EGL_NO_DISPLAY; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1138 } |
3139 | 1139 } |
1140 #endif /* SDL_VIDEO_OPENGL_ES */ | |
1141 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1142 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1143 |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1144 /*****************************************************************************/ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1145 /* SDL Window Manager function */ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1146 /*****************************************************************************/ |
3139 | 1147 SDL_bool |
1148 qnxgf_getwindowwminfo(_THIS, SDL_Window * window, struct SDL_SysWMinfo *info) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1149 { |
3139 | 1150 /* QNX GF do not operates at window level, this means we are have no */ |
1151 /* Window Manager available, no specific data in SDL_SysWMinfo too */ | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3087
diff
changeset
|
1152 |
3139 | 1153 if (info->version.major <= SDL_MAJOR_VERSION) { |
1154 return SDL_TRUE; | |
1155 } else { | |
1156 SDL_SetError("Application not compiled with SDL %d.%d\n", | |
1157 SDL_MAJOR_VERSION, SDL_MINOR_VERSION); | |
1158 return SDL_FALSE; | |
1159 } | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1160 |
3139 | 1161 /* Failed to get window manager information */ |
1162 return SDL_FALSE; | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1163 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1164 |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1165 /*****************************************************************************/ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1166 /* SDL OpenGL/OpenGL ES functions */ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1167 /*****************************************************************************/ |
3139 | 1168 int |
1169 qnxgf_gl_loadlibrary(_THIS, const char *path) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1170 { |
3139 | 1171 #if defined(SDL_VIDEO_OPENGL_ES) |
1172 /* Check if OpenGL ES library is specified for GF driver */ | |
1173 if (path == NULL) { | |
1174 path = SDL_getenv("SDL_OPENGL_LIBRARY"); | |
1175 if (path == NULL) { | |
1176 path = SDL_getenv("SDL_OPENGLES_LIBRARY"); | |
1177 } | |
1178 } | |
1179 | |
1180 /* Check if default library loading requested */ | |
1181 if (path == NULL) { | |
1182 /* Already linked with GF library which provides egl* subset of */ | |
1183 /* functions, use Common profile of OpenGL ES library by default */ | |
1184 path = "/usr/lib/libGLES_CM.so.1"; | |
1185 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1186 |
3139 | 1187 /* Load dynamic library */ |
1188 _this->gl_config.dll_handle = SDL_LoadObject(path); | |
1189 if (!_this->gl_config.dll_handle) { | |
1190 /* Failed to load new GL ES library */ | |
1191 SDL_SetError("GF: Failed to locate OpenGL ES library"); | |
1192 return -1; | |
1193 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1194 |
3139 | 1195 /* Store OpenGL ES library path and name */ |
1196 SDL_strlcpy(_this->gl_config.driver_path, path, | |
1197 SDL_arraysize(_this->gl_config.driver_path)); | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1198 |
3139 | 1199 /* New OpenGL ES library is loaded */ |
1200 return 0; | |
1201 #else | |
1202 SDL_SetError("GF: OpenGL ES support is not compiled in"); | |
1203 return -1; | |
1204 #endif /* SDL_VIDEO_OPENGL_ES */ | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1205 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1206 |
3139 | 1207 void * |
1208 qnxgf_gl_getprocaddres(_THIS, const char *proc) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1209 { |
3139 | 1210 #if defined(SDL_VIDEO_OPENGL_ES) |
1211 void *function_address; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1212 |
3139 | 1213 /* Try to get function address through the egl interface */ |
1214 function_address = eglGetProcAddress(proc); | |
1215 if (function_address != NULL) { | |
1216 return function_address; | |
1217 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1218 |
3139 | 1219 /* Then try to get function in the OpenGL ES library */ |
1220 if (_this->gl_config.dll_handle) { | |
1221 function_address = | |
1222 SDL_LoadFunction(_this->gl_config.dll_handle, proc); | |
1223 if (function_address != NULL) { | |
1224 return function_address; | |
1225 } | |
1226 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1227 |
3139 | 1228 /* Add emulated OpenGL ES 1.1 functions */ |
1229 if (SDL_strcmp(proc, "glTexParameteri") == 0) { | |
1230 return glTexParameteri; | |
1231 } | |
1232 if (SDL_strcmp(proc, "glTexParameteriv") == 0) { | |
1233 return glTexParameteriv; | |
1234 } | |
1235 if (SDL_strcmp(proc, "glColor4ub") == 0) { | |
1236 return glColor4ub; | |
1237 } | |
1238 | |
1239 /* Failed to get GL ES function address pointer */ | |
1240 SDL_SetError("GF: Cannot locate OpenGL ES function name"); | |
1241 return NULL; | |
1242 #else | |
1243 SDL_SetError("GF: OpenGL ES support is not compiled in"); | |
1244 return NULL; | |
1245 #endif /* SDL_VIDEO_OPENGL_ES */ | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1246 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1247 |
3139 | 1248 void |
1249 qnxgf_gl_unloadlibrary(_THIS) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1250 { |
3139 | 1251 #if defined(SDL_VIDEO_OPENGL_ES) |
1252 /* Unload OpenGL ES library */ | |
1253 if (_this->gl_config.dll_handle) { | |
1254 SDL_UnloadObject(_this->gl_config.dll_handle); | |
1255 _this->gl_config.dll_handle = NULL; | |
1256 } | |
1257 #else | |
1258 SDL_SetError("GF: OpenGL ES support is not compiled in"); | |
1259 return; | |
1260 #endif /* SDL_VIDEO_OPENGL_ES */ | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1261 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1262 |
3139 | 1263 SDL_GLContext |
1264 qnxgf_gl_createcontext(_THIS, SDL_Window * window) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1265 { |
3139 | 1266 #if defined(SDL_VIDEO_OPENGL_ES) |
1267 SDL_VideoData *gfdata = (SDL_VideoData *) _this->driverdata; | |
1268 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata; | |
1269 SDL_DisplayData *didata = | |
1270 (SDL_DisplayData *) SDL_CurrentDisplay.driverdata; | |
1271 EGLBoolean status; | |
1272 int32_t gfstatus; | |
1273 EGLint configs; | |
1274 uint32_t surfaces; | |
1275 uint32_t attr_pos; | |
1276 EGLint attr_value; | |
1277 EGLint cit; | |
1278 | |
1279 /* Choose buffeingr scheme */ | |
1280 if (!_this->gl_config.double_buffer) { | |
1281 surfaces = 1; | |
1282 } else { | |
1283 surfaces = 2; | |
1284 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1285 |
3139 | 1286 /* If driver has no support of video memory allocation, then */ |
1287 /* disable double buffering, use single buffer present copy */ | |
1288 if ((didata->caps & SDL_GF_VIDEOMEMORY) != SDL_GF_VIDEOMEMORY) { | |
1289 surfaces = 1; | |
1290 } | |
1291 | |
1292 /* Free main surface */ | |
1293 if (didata->surface[0] != NULL) { | |
1294 gf_surface_free(didata->surface[0]); | |
1295 didata->surface[0] = NULL; | |
1296 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1297 |
3139 | 1298 /* Free back surface */ |
1299 if (didata->surface[1] != NULL) { | |
1300 gf_surface_free(didata->surface[1]); | |
1301 didata->surface[1] = NULL; | |
1302 } | |
3116
b17f1ae7ad66
Added support for single buffering, if double buffering is not available.
Mike Gorchak <lestat@i.com.ua>
parents:
3109
diff
changeset
|
1303 |
3139 | 1304 /* Free second back surface */ |
1305 if (didata->surface[2] != NULL) { | |
1306 gf_surface_free(didata->surface[2]); | |
1307 didata->surface[2] = NULL; | |
1308 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1309 |
3139 | 1310 /* Detach layer before switch to new graphics mode */ |
1311 if (didata->layer_attached == SDL_TRUE) { | |
1312 /* Disable layer if hardware supports this */ | |
1313 gf_layer_disable(didata->layer); | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1314 |
3139 | 1315 /* Detach from layer, free it for others */ |
1316 gf_layer_detach(didata->layer); | |
1317 | |
1318 /* Mark it as detached */ | |
1319 didata->layer_attached = SDL_FALSE; | |
1320 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1321 |
3139 | 1322 /* Attach to main display layer */ |
1323 gfstatus = | |
1324 gf_layer_attach(&didata->layer, didata->display, | |
1325 didata->display_info.main_layer_index, 0); | |
1326 if (gfstatus != GF_ERR_OK) { | |
1327 SDL_SetError("GF: Couldn't attach to main layer, it could be busy"); | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1328 |
3139 | 1329 /* Failed to attach to main displayable layer */ |
1330 return NULL; | |
1331 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1332 |
3139 | 1333 /* Mark main display layer is attached */ |
1334 didata->layer_attached = SDL_TRUE; | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1335 |
3139 | 1336 /* Set layer source and destination viewport */ |
1337 gf_layer_set_src_viewport(didata->layer, 0, 0, didata->current_mode.w - 1, | |
1338 didata->current_mode.h - 1); | |
1339 gf_layer_set_dst_viewport(didata->layer, 0, 0, didata->current_mode.w - 1, | |
1340 didata->current_mode.h - 1); | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1341 |
3139 | 1342 /* Create main visible on display surface */ |
1343 gfstatus = | |
1344 gf_surface_create_layer(&didata->surface[0], &didata->layer, 1, 0, | |
1345 didata->current_mode.w, | |
1346 didata->current_mode.h, | |
1347 qnxgf_sdl_to_gf_pixelformat(didata-> | |
1348 current_mode. | |
1349 format), NULL, | |
1350 GF_SURFACE_CREATE_2D_ACCESSIBLE | | |
1351 GF_SURFACE_CREATE_3D_ACCESSIBLE | | |
1352 GF_SURFACE_CREATE_SHAREABLE); | |
1353 if (gfstatus != GF_ERR_OK) { | |
1354 gf_layer_disable(didata->layer); | |
1355 gf_layer_detach(didata->layer); | |
1356 didata->layer_attached = SDL_FALSE; | |
1357 SDL_SetError("GF: Can't create main layer surface at glctx (%d)\n", | |
1358 gfstatus); | |
1359 return NULL; | |
1360 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1361 |
3139 | 1362 /* Set just created surface as main visible on the layer */ |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1363 // gf_layer_set_surfaces(didata->layer, &didata->surface[0], 1); |
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1364 |
3139 | 1365 if (surfaces > 1) { |
1366 /* Create back display surface */ | |
1367 gfstatus = | |
1368 gf_surface_create_layer(&didata->surface[1], &didata->layer, 1, 0, | |
1369 didata->current_mode.w, | |
1370 didata->current_mode.h, | |
1371 qnxgf_sdl_to_gf_pixelformat(didata-> | |
1372 current_mode. | |
1373 format), NULL, | |
1374 GF_SURFACE_CREATE_2D_ACCESSIBLE | | |
1375 GF_SURFACE_CREATE_3D_ACCESSIBLE | | |
1376 GF_SURFACE_CREATE_SHAREABLE); | |
1377 if (gfstatus != GF_ERR_OK) { | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1378 gf_surface_free(didata->surface[0]); |
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1379 gf_layer_disable(didata->layer); |
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1380 gf_layer_detach(didata->layer); |
3139 | 1381 didata->layer_attached = SDL_FALSE; |
1382 SDL_SetError | |
1383 ("GF: Can't create main layer surface at glctx (%d)\n", | |
1384 gfstatus); | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1385 return NULL; |
3139 | 1386 } |
1387 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1388 |
3139 | 1389 /* Update layer parameters */ |
1390 gfstatus = gf_layer_update(didata->layer, GF_LAYER_UPDATE_NO_WAIT_IDLE); | |
1391 if (gfstatus != GF_ERR_OK) { | |
1392 /* Free main and back surfaces */ | |
1393 gf_surface_free(didata->surface[1]); | |
1394 didata->surface[1] = NULL; | |
1395 gf_surface_free(didata->surface[0]); | |
1396 didata->surface[0] = NULL; | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1397 |
3139 | 1398 /* Detach layer */ |
1399 gf_layer_disable(didata->layer); | |
1400 gf_layer_detach(didata->layer); | |
1401 didata->layer_attached = SDL_FALSE; | |
1402 SDL_SetError("GF: Can't update layer parameters\n"); | |
1403 return NULL; | |
1404 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1405 |
3139 | 1406 /* Enable layer in case if hardware supports layer enable/disable */ |
1407 gf_layer_enable(didata->layer); | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1408 |
3139 | 1409 /* Prepare attributes list to pass them to OpenGL ES */ |
1410 attr_pos = 0; | |
1411 wdata->gles_attributes[attr_pos++] = EGL_NATIVE_VISUAL_ID; | |
1412 wdata->gles_attributes[attr_pos++] = | |
1413 qnxgf_sdl_to_gf_pixelformat(didata->current_mode.format); | |
1414 wdata->gles_attributes[attr_pos++] = EGL_RED_SIZE; | |
1415 wdata->gles_attributes[attr_pos++] = _this->gl_config.red_size; | |
1416 wdata->gles_attributes[attr_pos++] = EGL_GREEN_SIZE; | |
1417 wdata->gles_attributes[attr_pos++] = _this->gl_config.green_size; | |
1418 wdata->gles_attributes[attr_pos++] = EGL_BLUE_SIZE; | |
1419 wdata->gles_attributes[attr_pos++] = _this->gl_config.blue_size; | |
1420 wdata->gles_attributes[attr_pos++] = EGL_ALPHA_SIZE; | |
1421 if (_this->gl_config.alpha_size) { | |
1422 wdata->gles_attributes[attr_pos++] = _this->gl_config.alpha_size; | |
1423 } else { | |
1424 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE; | |
1425 } | |
1426 wdata->gles_attributes[attr_pos++] = EGL_DEPTH_SIZE; | |
1427 wdata->gles_attributes[attr_pos++] = _this->gl_config.depth_size; | |
1428 if (_this->gl_config.buffer_size) { | |
1429 wdata->gles_attributes[attr_pos++] = EGL_BUFFER_SIZE; | |
1430 wdata->gles_attributes[attr_pos++] = _this->gl_config.buffer_size; | |
1431 } | |
1432 if (_this->gl_config.stencil_size) { | |
1433 wdata->gles_attributes[attr_pos++] = EGL_STENCIL_SIZE; | |
1434 wdata->gles_attributes[attr_pos++] = _this->gl_config.buffer_size; | |
1435 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1436 |
3139 | 1437 /* Set number of samples in multisampling */ |
1438 if (_this->gl_config.multisamplesamples) { | |
1439 wdata->gles_attributes[attr_pos++] = EGL_SAMPLES; | |
1440 wdata->gles_attributes[attr_pos++] = | |
1441 _this->gl_config.multisamplesamples; | |
1442 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1443 |
3139 | 1444 /* Multisample buffers, OpenGL ES 1.0 spec defines 0 or 1 buffer */ |
1445 if (_this->gl_config.multisamplebuffers) { | |
1446 wdata->gles_attributes[attr_pos++] = EGL_SAMPLE_BUFFERS; | |
1447 wdata->gles_attributes[attr_pos++] = | |
1448 _this->gl_config.multisamplebuffers; | |
1449 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1450 |
3139 | 1451 /* Finish attributes list */ |
1452 wdata->gles_attributes[attr_pos] = EGL_NONE; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1453 |
3139 | 1454 /* Request first suitable framebuffer configuration */ |
1455 status = eglChooseConfig(gfdata->egldisplay, wdata->gles_attributes, | |
1456 wdata->gles_configs, SDL_VIDEO_GF_OPENGLES_CONFS, | |
1457 &configs); | |
1458 if (status != EGL_TRUE) { | |
1459 SDL_SetError("GF: Can't find closest configuration for OpenGL ES"); | |
1460 return NULL; | |
1461 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1462 |
3139 | 1463 /* Check if nothing has been found, try "don't care" settings */ |
1464 if (configs == 0) { | |
1465 int32_t it; | |
1466 int32_t jt; | |
1467 GLint depthbits[4] = { 32, 24, 16, EGL_DONT_CARE }; | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1468 |
3139 | 1469 for (it = 0; it < 4; it++) { |
1470 for (jt = 16; jt >= 0; jt--) { | |
1471 /* Don't care about color buffer bits, use what exist */ | |
1472 /* Replace previous data set with EGL_DONT_CARE */ | |
1473 attr_pos = 0; | |
1474 wdata->gles_attributes[attr_pos++] = EGL_NATIVE_VISUAL_ID; | |
1475 wdata->gles_attributes[attr_pos++] = | |
1476 qnxgf_sdl_to_gf_pixelformat(didata->current_mode.format); | |
1477 wdata->gles_attributes[attr_pos++] = EGL_RED_SIZE; | |
1478 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE; | |
1479 wdata->gles_attributes[attr_pos++] = EGL_GREEN_SIZE; | |
1480 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE; | |
1481 wdata->gles_attributes[attr_pos++] = EGL_BLUE_SIZE; | |
1482 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE; | |
1483 wdata->gles_attributes[attr_pos++] = EGL_ALPHA_SIZE; | |
1484 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE; | |
1485 wdata->gles_attributes[attr_pos++] = EGL_BUFFER_SIZE; | |
1486 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE; | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1487 |
3139 | 1488 /* Try to find requested or smallest depth */ |
1489 if (_this->gl_config.depth_size) { | |
1490 wdata->gles_attributes[attr_pos++] = EGL_DEPTH_SIZE; | |
1491 wdata->gles_attributes[attr_pos++] = depthbits[it]; | |
1492 } else { | |
1493 wdata->gles_attributes[attr_pos++] = EGL_DEPTH_SIZE; | |
1494 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE; | |
1495 } | |
1496 | |
1497 if (_this->gl_config.stencil_size) { | |
1498 wdata->gles_attributes[attr_pos++] = EGL_STENCIL_SIZE; | |
1499 wdata->gles_attributes[attr_pos++] = jt; | |
1500 } else { | |
1501 wdata->gles_attributes[attr_pos++] = EGL_STENCIL_SIZE; | |
1502 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE; | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1503 |
3139 | 1504 /* exit from stencil loop */ |
1505 jt = 0; | |
1506 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1507 |
3139 | 1508 /* Don't care about antialiasing */ |
1509 wdata->gles_attributes[attr_pos++] = EGL_SAMPLES; | |
1510 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE; | |
1511 wdata->gles_attributes[attr_pos++] = EGL_SAMPLE_BUFFERS; | |
1512 wdata->gles_attributes[attr_pos++] = EGL_DONT_CARE; | |
1513 wdata->gles_attributes[attr_pos] = EGL_NONE; | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1514 |
3139 | 1515 /* Request first suitable framebuffer configuration */ |
1516 status = | |
1517 eglChooseConfig(gfdata->egldisplay, | |
1518 wdata->gles_attributes, | |
1519 wdata->gles_configs, | |
1520 SDL_VIDEO_GF_OPENGLES_CONFS, &configs); | |
1521 if (status != EGL_TRUE) { | |
1522 SDL_SetError | |
1523 ("Photon: Can't find closest configuration for OpenGL ES"); | |
1524 return NULL; | |
1525 } | |
1526 if (configs != 0) { | |
1527 break; | |
1528 } | |
1529 } | |
1530 if (configs != 0) { | |
1531 break; | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1532 } |
3139 | 1533 } |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1534 |
3139 | 1535 /* No available configs */ |
1536 if (configs == 0) { | |
1537 SDL_SetError | |
1538 ("Photon: Can't find any configuration for OpenGL ES"); | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1539 return NULL; |
3139 | 1540 } |
1541 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1542 |
3139 | 1543 /* Initialize config index */ |
1544 wdata->gles_config = 0; | |
1545 | |
1546 /* Now check each configuration to find out the best */ | |
1547 for (cit = 0; cit < configs; cit++) { | |
1548 uint32_t stencil_found; | |
1549 uint32_t depth_found; | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1550 |
3139 | 1551 stencil_found = 0; |
1552 depth_found = 0; | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1553 |
3139 | 1554 if (_this->gl_config.stencil_size) { |
1555 status = | |
1556 eglGetConfigAttrib(gfdata->egldisplay, | |
1557 wdata->gles_configs[cit], EGL_STENCIL_SIZE, | |
1558 &attr_value); | |
1559 if (status == EGL_TRUE) { | |
1560 if (attr_value != 0) { | |
1561 stencil_found = 1; | |
1562 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1563 } |
3139 | 1564 } else { |
1565 stencil_found = 1; | |
1566 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1567 |
3139 | 1568 if (_this->gl_config.depth_size) { |
1569 status = | |
1570 eglGetConfigAttrib(gfdata->egldisplay, | |
1571 wdata->gles_configs[cit], EGL_DEPTH_SIZE, | |
1572 &attr_value); | |
1573 if (status == EGL_TRUE) { | |
1574 if (attr_value != 0) { | |
1575 depth_found = 1; | |
1576 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1577 } |
3139 | 1578 } else { |
1579 depth_found = 1; | |
1580 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1581 |
3139 | 1582 /* Exit from loop if found appropriate configuration */ |
1583 if ((depth_found != 0) && (stencil_found != 0)) { | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1584 break; |
3139 | 1585 } |
1586 } | |
1587 | |
1588 /* If best could not be found, use first */ | |
1589 if (cit == configs) { | |
1590 cit = 0; | |
1591 } | |
1592 wdata->gles_config = cit; | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1593 |
3139 | 1594 /* Create OpenGL ES context */ |
1595 wdata->gles_context = | |
1596 eglCreateContext(gfdata->egldisplay, | |
1597 wdata->gles_configs[wdata->gles_config], | |
1598 EGL_NO_CONTEXT, NULL); | |
1599 if (wdata->gles_context == EGL_NO_CONTEXT) { | |
1600 SDL_SetError("GF: OpenGL ES context creation has been failed"); | |
1601 return NULL; | |
1602 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1603 |
3139 | 1604 /* Free any 3D target if it was created before */ |
1605 if (wdata->target_created == SDL_TRUE) { | |
1606 gf_3d_target_free(wdata->target); | |
1607 wdata->target_created == SDL_FALSE; | |
1608 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1609 |
3139 | 1610 /* Create surface(s) target for OpenGL ES */ |
1611 gfstatus = | |
1612 gf_3d_target_create(&wdata->target, didata->layer, | |
1613 &didata->surface[0], surfaces, | |
1614 didata->current_mode.w, didata->current_mode.h, | |
1615 qnxgf_sdl_to_gf_pixelformat(didata->current_mode. | |
1616 format)); | |
1617 if (gfstatus != GF_ERR_OK) { | |
1618 /* Destroy just created context */ | |
1619 eglDestroyContext(gfdata->egldisplay, wdata->gles_context); | |
1620 wdata->gles_context = EGL_NO_CONTEXT; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1621 |
3139 | 1622 /* Mark 3D target as unallocated */ |
1623 wdata->target_created = SDL_FALSE; | |
1624 SDL_SetError("GF: OpenGL ES target could not be created"); | |
1625 return NULL; | |
1626 } else { | |
1627 wdata->target_created = SDL_TRUE; | |
1628 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1629 |
3139 | 1630 /* Create target rendering surface on whole screen */ |
1631 wdata->gles_surface = | |
1632 eglCreateWindowSurface(gfdata->egldisplay, | |
1633 wdata->gles_configs[wdata->gles_config], | |
1634 wdata->target, NULL); | |
1635 if (wdata->gles_surface == EGL_NO_SURFACE) { | |
1636 /* Destroy 3d target */ | |
1637 gf_3d_target_free(wdata->target); | |
1638 wdata->target_created = SDL_FALSE; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1639 |
3139 | 1640 /* Destroy OpenGL ES context */ |
1641 eglDestroyContext(gfdata->egldisplay, wdata->gles_context); | |
1642 wdata->gles_context = EGL_NO_CONTEXT; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1643 |
3139 | 1644 SDL_SetError("GF: OpenGL ES surface could not be created"); |
1645 return NULL; | |
1646 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1647 |
3139 | 1648 /* Make just created context current */ |
1649 status = | |
1650 eglMakeCurrent(gfdata->egldisplay, wdata->gles_surface, | |
1651 wdata->gles_surface, wdata->gles_context); | |
1652 if (status != EGL_TRUE) { | |
1653 /* Destroy OpenGL ES surface */ | |
1654 eglDestroySurface(gfdata->egldisplay, wdata->gles_surface); | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1655 |
3139 | 1656 /* Destroy 3d target */ |
1657 gf_3d_target_free(wdata->target); | |
1658 wdata->target_created = SDL_FALSE; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1659 |
3139 | 1660 /* Destroy OpenGL ES context */ |
1661 eglDestroyContext(gfdata->egldisplay, wdata->gles_context); | |
1662 wdata->gles_context = EGL_NO_CONTEXT; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1663 |
3139 | 1664 /* Failed to set current GL ES context */ |
1665 SDL_SetError("GF: Can't set OpenGL ES context on creation"); | |
1666 return NULL; | |
1667 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1668 |
3139 | 1669 /* Setup into SDL internals state of OpenGL ES: */ |
1670 /* it is accelerated or not */ | |
1671 if ((didata->caps & SDL_GF_ACCELERATED_3D) == SDL_GF_ACCELERATED_3D) { | |
1672 _this->gl_config.accelerated = 1; | |
1673 } else { | |
1674 _this->gl_config.accelerated = 0; | |
1675 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1676 |
3139 | 1677 /* Always clear stereo enable, since OpenGL ES do not supports stereo */ |
1678 _this->gl_config.stereo = 0; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1679 |
3139 | 1680 /* Get back samples and samplebuffers configurations. Rest framebuffer */ |
1681 /* parameters could be obtained through the OpenGL ES API */ | |
1682 status = | |
1683 eglGetConfigAttrib(gfdata->egldisplay, | |
1684 wdata->gles_configs[wdata->gles_config], | |
1685 EGL_SAMPLES, &attr_value); | |
1686 if (status == EGL_TRUE) { | |
1687 _this->gl_config.multisamplesamples = attr_value; | |
1688 } | |
1689 status = | |
1690 eglGetConfigAttrib(gfdata->egldisplay, | |
1691 wdata->gles_configs[wdata->gles_config], | |
1692 EGL_SAMPLE_BUFFERS, &attr_value); | |
1693 if (status == EGL_TRUE) { | |
1694 _this->gl_config.multisamplebuffers = attr_value; | |
1695 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1696 |
3139 | 1697 /* Get back stencil and depth buffer sizes */ |
1698 status = | |
1699 eglGetConfigAttrib(gfdata->egldisplay, | |
1700 wdata->gles_configs[wdata->gles_config], | |
1701 EGL_DEPTH_SIZE, &attr_value); | |
1702 if (status == EGL_TRUE) { | |
1703 _this->gl_config.depth_size = attr_value; | |
1704 } | |
1705 status = | |
1706 eglGetConfigAttrib(gfdata->egldisplay, | |
1707 wdata->gles_configs[wdata->gles_config], | |
1708 EGL_STENCIL_SIZE, &attr_value); | |
1709 if (status == EGL_TRUE) { | |
1710 _this->gl_config.stencil_size = attr_value; | |
1711 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1712 |
3139 | 1713 /* Restore cursor if it was visible */ |
1714 if (didata->cursor_visible == SDL_TRUE) { | |
1715 gf_cursor_set(didata->display, 0, &didata->cursor); | |
1716 gf_cursor_enable(didata->display, 0); | |
1717 } | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1718 |
3139 | 1719 /* GL ES context was successfully created */ |
1720 return wdata->gles_context; | |
1721 #else | |
1722 SDL_SetError("GF: OpenGL ES support is not compiled in"); | |
1723 return NULL; | |
1724 #endif /* SDL_VIDEO_OPENGL_ES */ | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1725 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1726 |
3139 | 1727 int |
1728 qnxgf_gl_makecurrent(_THIS, SDL_Window * window, SDL_GLContext context) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1729 { |
3139 | 1730 #if defined(SDL_VIDEO_OPENGL_ES) |
1731 SDL_VideoData *gfdata = (SDL_VideoData *) _this->driverdata; | |
1732 SDL_WindowData *wdata; | |
1733 EGLBoolean status; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1734 |
3139 | 1735 if ((window == NULL) && (context == NULL)) { |
1736 status = | |
1737 eglMakeCurrent(gfdata->egldisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, | |
1738 EGL_NO_CONTEXT); | |
1739 if (status != EGL_TRUE) { | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1740 /* Failed to set current GL ES context */ |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1741 SDL_SetError("GF: Can't set OpenGL ES context"); |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1742 return -1; |
3139 | 1743 } |
1744 } else { | |
1745 wdata = (SDL_WindowData *) window->driverdata; | |
1746 status = | |
1747 eglMakeCurrent(gfdata->egldisplay, wdata->gles_surface, | |
1748 wdata->gles_surface, wdata->gles_context); | |
1749 if (status != EGL_TRUE) { | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1750 /* Failed to set current GL ES context */ |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1751 SDL_SetError("GF: Can't set OpenGL ES context"); |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1752 return -1; |
3139 | 1753 } |
1754 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1755 |
3139 | 1756 return 0; |
1757 #else | |
1758 SDL_SetError("GF: OpenGL ES support is not compiled in"); | |
1759 return -1; | |
1760 #endif /* SDL_VIDEO_OPENGL_ES */ | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1761 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1762 |
3139 | 1763 int |
1764 qnxgf_gl_setswapinterval(_THIS, int interval) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1765 { |
3139 | 1766 #if defined(SDL_VIDEO_OPENGL_ES) |
1767 SDL_VideoData *gfdata = (SDL_VideoData *) _this->driverdata; | |
1768 EGLBoolean status; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1769 |
3139 | 1770 /* Check if OpenGL ES connection has been initialized */ |
1771 if (gfdata->egldisplay != EGL_NO_DISPLAY) { | |
1772 /* Set swap OpenGL ES interval */ | |
1773 status = eglSwapInterval(gfdata->egldisplay, interval); | |
1774 if (status == EGL_TRUE) { | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1775 /* Return success to upper level */ |
3139 | 1776 gfdata->swapinterval = interval; |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1777 return 0; |
3139 | 1778 } |
1779 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1780 |
3139 | 1781 /* Failed to set swap interval */ |
1782 SDL_SetError("GF: Cannot set swap interval"); | |
1783 return -1; | |
1784 #else | |
1785 SDL_SetError("GF: OpenGL ES support is not compiled in"); | |
1786 return -1; | |
1787 #endif /* SDL_VIDEO_OPENGL_ES */ | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1788 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1789 |
3139 | 1790 int |
1791 qnxgf_gl_getswapinterval(_THIS) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1792 { |
3139 | 1793 #if defined(SDL_VIDEO_OPENGL_ES) |
1794 SDL_VideoData *gfdata = (SDL_VideoData *) _this->driverdata; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1795 |
3139 | 1796 /* Return default swap interval value */ |
1797 return gfdata->swapinterval; | |
1798 #else | |
1799 SDL_SetError("GF: OpenGL ES support is not compiled in"); | |
1800 return -1; | |
1801 #endif /* SDL_VIDEO_OPENGL_ES */ | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1802 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1803 |
3139 | 1804 void |
1805 qnxgf_gl_swapwindow(_THIS, SDL_Window * window) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1806 { |
3139 | 1807 #if defined(SDL_VIDEO_OPENGL_ES) |
1808 SDL_VideoData *gfdata = (SDL_VideoData *) _this->driverdata; | |
1809 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1810 |
3139 | 1811 /* Finish all drawings */ |
1812 glFinish(); | |
3109
7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
Mike Gorchak <lestat@i.com.ua>
parents:
3099
diff
changeset
|
1813 |
3139 | 1814 /* Swap buffers */ |
1815 eglSwapBuffers(gfdata->egldisplay, wdata->gles_surface); | |
1816 #else | |
1817 SDL_SetError("GF: OpenGL ES support is not compiled in"); | |
1818 return; | |
1819 #endif /* SDL_VIDEO_OPENGL_ES */ | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1820 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1821 |
3139 | 1822 void |
1823 qnxgf_gl_deletecontext(_THIS, SDL_GLContext context) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1824 { |
3139 | 1825 #if defined(SDL_VIDEO_OPENGL_ES) |
1826 SDL_VideoData *gfdata = (SDL_VideoData *) _this->driverdata; | |
1827 EGLBoolean status; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1828 |
3139 | 1829 /* Check if OpenGL ES connection has been initialized */ |
1830 if (gfdata->egldisplay != EGL_NO_DISPLAY) { | |
1831 if (context != EGL_NO_CONTEXT) { | |
1832 status = eglDestroyContext(gfdata->egldisplay, context); | |
1833 if (status != EGL_TRUE) { | |
1834 /* Error during OpenGL ES context destroying */ | |
1835 SDL_SetError("GF: OpenGL ES context destroy error"); | |
1836 return; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1837 } |
3139 | 1838 } |
1839 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
1840 |
3139 | 1841 return; |
1842 #else | |
1843 SDL_SetError("GF: OpenGL ES support is not compiled in"); | |
1844 return; | |
1845 #endif /* SDL_VIDEO_OPENGL_ES */ | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1846 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1847 |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1848 /*****************************************************************************/ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1849 /* SDL Event handling function */ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1850 /*****************************************************************************/ |
3139 | 1851 void |
1852 qnxgf_pumpevents(_THIS) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1853 { |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1854 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1855 |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1856 /*****************************************************************************/ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1857 /* SDL screen saver related functions */ |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1858 /*****************************************************************************/ |
3139 | 1859 void |
1860 qnxgf_suspendscreensaver(_THIS) | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1861 { |
3139 | 1862 /* There is no screensaver in pure console, it may exist when running */ |
1863 /* GF under Photon, but I do not know, how to disable screensaver */ | |
3087
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1864 } |
0b6f51c29267
Date: Wed, 4 Mar 2009 15:38:22 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1865 |
3083
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1866 /* vi: set ts=4 sw=4 expandtab: */ |