e14743d1 |
1 | README.QNX by Mike Gorchak <mike@malva.ua>, <lestat@i.com.ua> |
2 | Last changed at 24 Apr 2004. |
3 | |
4 | ====================================================================== |
5 | Table of Contents: |
6 | |
7 | 1. OpenGL. |
8 | 2. Wheel and multi-button mouses. |
9 | 3. CDROM handling issues. |
10 | 4. Hardware video overlays. |
11 | 5. Shared library building. |
12 | 6. Some building issues. |
13 | 7. Environment variables. |
14 | |
15 | ====================================================================== |
16 | 1. OpenGL: |
17 | |
18 | OpenGL works well and is stable, but fullscreen mode has not been |
19 | heavily tested yet. |
20 | If you have QNX RtP version 6.1.0 or above you must download the |
21 | Photon3D runtime from http://developers.qnx.com or install it from the |
22 | public repository or from the public CD, available with QNX. OS versi- |
23 | ons below 6.1.0 are not supported. |
24 | When creating an OpenGL context, software renderer mode is artifi- |
25 | cially selected (QSSL made acceleration only for Voodoo boards in |
26 | fullscreen mode, sorry but I don't have this board to test OpenGL - |
27 | maybe it works or maybe not :)). If you want acceleration - you can |
28 | remove one line in the source code: find the file SDL_ph_image.c and |
29 | remove the following |
30 | |
31 | OGLAttrib[OGLargc++]=PHOGL_ATTRIB_FORCE_SW; |
32 | |
33 | line in the ph_SetupOpenGLContext() function or change the argument to |
34 | PHOGL_ATTRIB_FORCE_HW or PHOGL_ATTRIB_FAVOR_HW. |
35 | |
36 | ====================================================================== |
37 | 2. Wheel and multi-button mouses: |
38 | |
39 | Photon emits keyboard events (key up and down) when the mouse |
40 | wheel is moved. The key_scan field appears valid, and it contains zero. |
41 | That is a basic method of detecting mouse wheel events under Photon. |
42 | It looks like a hack, but it works for me :) on various PC configura- |
43 | tions. |
44 | |
45 | I've tested it on: |
46 | |
47 | 1. Genius Optical NetScroll/+ PS/2 (1 wheel) |
48 | 2. A4Tech Optical GreatEye WheelMouse PS/2, model: WOP-35. (2 wheels |
49 | + 2 additional buttons). The wheel for vertical scrolling works as |
50 | usual, but the second wheel for horizontal scrolling emits two se- |
51 | quential events up or down, so it can provide faster scrolling than |
52 | the first wheel. Additional buttons don't emit any events, but it |
53 | looks like they're handled by photon in an unusual way - like click |
54 | to front, but works not with any window, looks like a fun bug-o-fe- |
55 | ature :). |
56 | |
57 | ====================================================================== |
58 | 3. CDROM handling issues: |
59 | |
60 | Access to CDROM can only be provided with 'root' privileges. I |
61 | can't do anything about that, /dev/cd0 has brw------- permissions and |
62 | root:root rights. |
63 | |
64 | ====================================================================== |
65 | 4. Hardware video overlays: |
66 | |
67 | Overlays can flicker during window movement, resizing, etc. It |
68 | happens because the photon driver updates the real window contents be- |
69 | hind the overlay, then draws the temporary chroma key color over the |
70 | window contents. It can be done without using the chroma key but that |
71 | causes the overlay to always be on top. So flickering during window |
72 | movement is preferred instead. |
73 | Double buffering code is temporarily disabled in the photon driver |
74 | code, because on my GF2-MX it can accidentally cause a buffer switch, |
75 | which causes the old frame to show. S3 Savage4 has the same problem, |
76 | but ATI Rage 128 doesn't. I think it can be fixed later. Current code |
77 | works very well, so maybe double buffering is not needed right now. |
78 | Something strange happens when you try to move the window with the |
79 | overlay beyond the left border of the screen. The overlay tries to |
80 | stay at position x=0, but when attempting to move it a bit more it |
81 | jumps to position x=-60 (on GF2-MX, on ATI Rage128 this value a bit |
82 | smaller). It's really strange, looks like the overlay doesn't like |
83 | negative coordinates. |
84 | |
85 | ======================================================================= |
86 | 5. Shared library building: |
87 | |
88 | A shared library can be built, but before running the autogen.sh |
89 | script you must manually delete the libtool.m4 stuff from the acinclu- |
90 | de.m4 file (it comes after the ESD detection code up to the end of the |
91 | file), because the libtool stuff in the acinclude.m4 file was very old |
92 | in SDL distribution before the version 1.2.7 and doesn't knew anything |
93 | about QNX. SDL 1.2.7 distribution contains the new libtool.m4 script, |
94 | but anyway it is broken :), Just remove it, then run "libtoolize |
95 | --force --copy", delete the file aclocal.m4 if it is exists and after |
96 | that run the autogen.sh script. SDL 1.2.8 contains fixed libtool.m4, |
97 | ltmain.sh and config.sub files, so you can just run the autogen.sh |
98 | script. |
99 | |
100 | ====================================================================== |
101 | 6. Some building issues: |
102 | |
103 | Feel free to not use the --disable-shared configure option if you' |
104 | ve read the above comment about 'Shared library building'. Otherwise |
105 | this option is strongly recommended, as without it the sdl-config |
106 | script will be broken. |
107 | |
108 | Run the configure script without x11 support, e.g.: |
109 | |
110 | a) for OpenGL support: |
111 | ./configure --prefix=/usr \ |
112 | --disable-video-x11 \ |
113 | --disable-shared |
114 | |
115 | b) without OpenGL support: |
116 | ./configure --prefix=/usr \ |
117 | --disable-video-x11 \ |
118 | --disable-shared \ |
119 | --disable-video-opengl |
120 | |
121 | And of course dont forget to specify --disable-debug, which is on |
122 | by default, to disable debug and enable the expensive optimizations. |
123 | |
124 | In the test directory also run the ./configure script without |
125 | x11 support, e.g.: |
126 | |
127 | ./configure --with-sdl-prefix=/usr \ |
128 | --with-sdl-exec-prefix=/usr \ |
129 | --prefix=/usr --without-x |
130 | |
131 | ====================================================================== |
132 | 7. Environment variables: |
133 | |
134 | Please note that the photon driver is sensible to the following |
135 | environmental variables: |
136 | |
137 | * SDL_PHOTON_FULLSCREEN_REFRESH - this environment variable controls |
138 | the refresh rate in all fullscreen modes. Be carefull !!! Photon |
139 | drivers usually do not checking the maximum refresh rate, which video |
140 | adapter or monitor supports. |
141 | |
142 | * SDL_VIDEO_WINDOW_POS - can be set in the "X,Y" format. If X and Y |
143 | coordinates are bigger than the current desktop resolution, then win- |
144 | dow positioning across virtual consoles is activated. If X and Y are |
145 | smaller than the desktop resolution then window positioning in the |
146 | current console is activated. The word "center" can be used instead of |
147 | coordinates, it produces the same behavior as SDL_VIDEO_CENTERED |
148 | environmental variable. |
149 | |
150 | * SDL_VIDEO_CENTERED - if this environmental variable exists then the |
151 | window centering is perfomed in the current virtual console. |
152 | |
153 | Notes: The SDL_VIDEO_CENTERED enviromental variable has greater pri- |
154 | ority than the SDL_VIDEO_WINDOW_POS in case if both variables are sup- |
155 | plied to the application. |