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