| 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. |