# @(#)29 1.13.5.2 src/gos/2d/README, x11, gos720 7/14/11 20:04:59 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # gos720 src/gos/2d/README 1.13.5.2 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1990,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG ------------------------------------------------------------------------------- AIXwindows Runtime Environment ------------------------------------------------------------------------------- Table of Contents: A. References B. X11R5/X11R6.1/X11R7.1 Compatibility Issues C. X Server D. New Xorg Xserver E. X Clients F ISO9241 Fonts G. Motif 2.1 vs Motif 1.2 H. 64bit Motif 2.1 I. X11 64bit J. X11R5, X11R6 and X11R7.1 on same system. K. Default fontserver port L. fontserver command is now xfs M. Support for Wheel Mouse N. Screen Magnifier Extension (-sme) O. Glyph subsets in CDE ------------------------------------------------------------------------------- A. References o For additional information regarding Shared Memory Transport (SMT), please read /usr/lpp/X11/README.SMT. o Information on building the sample clients can be found in the file /usr/lpp/X11/Xamples/README. B. X11R5/X11R6.1/X11R7.1 Compatibility Issues AIX 6 contains X Windows libraries, headers and some apps that have been updated to X11R7.1. The libraries shipped by IBM with XllR7.1 are backward-compatible and the client applications, which access these libraries, will work as on previous releases of AIX, except as noted below. As on earlier releases of AIX, IBM also ships X11R3, X11R4, X11R5 and X11R6 compatibility installation options for maximum customer flexibility. In this way, client applications experience no problems with compatibility. There are a few noteable differences due to the X11R7.1 updates: o Most of the new X11R7.1 header files now only contain full ANSI function prototypes. This may cause the compiler to find problems that were not apparent before. o The file /usr/lpp/X11/defaults/xserverrc, is the script used by xinit, xdm, and dtlogin to start the X server. This script has been modified so that the default visual will now be 24bit TrueColor instead of 8bit PseudoColor. Some old applications may not work in the 24bit TrueColor visual. In this case, the old visual can be restored by commenting out the following line in the xserverrc file: EXTENSIONS="$EXTENSIONS -cc 4" o An updated version of xterm is included in AIX 6. This version of xterm required an update to the xterm terminfo information. The updated terminfo may cause problems with other terminal emualtors that expect the older version. Seperate compatibility terminfo definitions (xterm-old and xterm-r6) are provided for use in such situtation, and are accessed by setting the TERM environment variable. (See section D. X Clients below). The AIX X server uses the X Consortium release 6 version of X. The X server allows the addition of new functionality through its extension mechanism. For each extension, part of the extension is loaded into the X server before it can be executed. X11R6.1 has modified how this mechanism works in the course of improvements to X, and it is this part of the extension that must be made compatible with X11R6.1 to execute properly. All extensions supplied by IBM are compatible and will execute properly. In some circumstances, including the following, a customer may have an extension that will not work with X11R6.1: o A customer has a sample extension downloaded from the X Consortium ftp site o A customer develops his own extension o A customer uses a third party extension In these cases the extension will need to be made compatible with X11R6.1 before it will execute properly. Customer-developed extensions and sample X consortium extensions need to be recompiled with the X11R6.1 environment. For third party extensions, the customer should contact the vendor for a X11R6.1 compatible update. Customers using non-IBM display adapters may also be using vendor-supplied software specific to those devices, which uses X11R6.1 Server capabilities. If so, this software must be made compatible with X11R6.1 to operate properly. The customer should contact the particular vendor of the display adapter for this software. A porting guide is available on "The Developers Connection" CD to assist customers and vendors developing adapters or extensions for AIX. C. X Server o The X server default backing store is off. To turn on backing store, start X (or xinit) with the -bs option. o When the X server goes from a state of having some connections to having no connections (i.e. the last connected client exits), it will reset itself to the initial state. For example, if you run the xhost command when only the X server is running (no other clients such as mwm or aixterm), the actions performed by the xhost command will be lost. After xhost exits, the X server will reset since xhost was the only and last client. o X Input Extension The LPFK device does not support button release class (this is a hardware restriction). o If you need both libXi.a (X Input Extension) and libXext.a for your application, be sure to link libXi.a before libXext.a. o Machines that have planar graphics capabilities present a special problem since if there are other graphics adapters in the system, it is likely that the planar graphics subsystem is not being used (i.e. no display is connected). The default display refers to which graphics display is being used for LFT login. Since there can be in any given system multiple graphics adapters and displays and only one mouse and keyboard typically, the default display provides the indication to the operating system which graphics adapter and display receive the login screen. The following information describes changes made to handle this scenario: 1) If the default display is set to the planar graphics subsystem, then when the X Server is started, all graphics adapters in the system including the planar graphics subsystem are used. The reasoning here is that if the planar graphics subsystem is the default display, then the user must have a display attached to it. 2) If the default display is not set to the planar graphics subsystem, then when the X Server is started, all graphics adapters in the system except the planar graphics subsystem are used. The reasoning here is that if the planar graphics subsystem is not the default display, then the user probably does not have a display attached to it. If the user wishes to override this (would typically be used in a situation where the user has a display attached to the planar graphics subsystem but the planar graphics subsystem is not the default display), there is a mechanism to allow this. The standard AIX X Server -P????? flag can be used to force the planar graphics subsystem to be used. See the X Server startup flags for more information regarding the use of the -P????? flag. The following short example illustrates a typical example of its use: # lsdisp DEV_NAME SLOT BUS ADPT_NAME DESCRIPTION ======== ==== === ========= =========== iga0 00 pci E15 E15 Graphics Adapter bbl0 01 pci GXT150P GXT150P Graphics Adapter Default display = bbl0 # xinit -- -P11 iga0 -P12 bbl0 This will start X multihead on both displays (planar graphics subsystem and the GXT150P) where the planar graphics subsystem display will be on the left and the GXT150P will be on the right in the standard X server multihead configuration. Note that the iga0 adapter in this case is the planar graphics subsystem. o X Stereo Flag -stereo[:display name or display number] Configures graphics adapter for optimum stereo support for the screen specified by :display. Supported screens will configure the adapter to provide the best available support for stereo. This may decrease other resources such as texture memory. The actual amount of memory affected is device dependent, and may be influenced by other factors, such as screen resolution or default pixel depth. The :display parameter is optional, but useful when using the multihead option. The :display parameter is the name of the display as shown in the lsdisp command. # lsdisp DEV_NAME SLOT BUS ADPT_NAME DESCRIPTION ======== ==== === ========= =========== son0 60 pci GXT6000P Graphics Adapter sonl0 58 pci GXT4000P Graphics Adapter Default display = son0 # xinit -- -stereo:son0 If no display number or name is supplied, the "-stereo" flag pertains to all supported screens. # xinit -- -stereo Non supported screens will ignore the "-stereo" flag. o Xinerama Flag VLS (Virtual Large Screen) is also referred to as Panoramix hence the extension xinerama. It allows users to treat all heads in a multihead environment as a large screen. VLS allows users the capability to move windows across screens. Also, the user can resize a window to span screens. VLS can be started on the command line with: xinit -- +xinerama or by editing the EXTENSIONS variable in the xserverrc file found in /usr/lpp/X11/defaults/xserverrc EXTENSIONS="+xinerama" You must also set the resolutions on each adapter to equal values. Note that VLS only supports 2D applications and so abx dbe and GLX extensions are not supported. If VLS is started with these extensions they will be automatically disabled. The screen orientation cannot be manually configured but rather is determined by the slot numbers of the graphics adapters. To set the resolution, you must also set the terminal type. To do this, execute smitty dev, choose Graphics Display and then Select the Display Type. From the list adapters in the Available state, choose the adapter whose resolution you are trying to change and hit enter. Highlight Select the Display Type and hit F4 for a list. Choose the type of monitor if possible. Else, choose Other_VESA. Else, the only option is default. Next, return to the previous screen with F3. Choose Select the Display Resolution and Refresh Rate and hit F4 for a list. Remember that it is imperative that each monitor is set to the same resolution. Due to the way that VLS is implemented, output cannot be directed to a particular screen such as :0.1 etc. VLS only creates one x server, :0. D. New Xorg Xserver The Xorg Xserver is now included in this release of AIX as an alternate to X (the older X11R6.1 Xserver). o The AIX version of Xorg currently only ships with the mga video driver that supports the GXT135P, GXT145 and GXT145LP graphics adapters. This version of Xorg does not currently support any other graphics adapters. o The AIX version of Xorg does not currently support OpenGL or any other 3D APIs. o An easy way to start using Xorg is to modify the xserverrc script located in /usr/lpp/X11/defaults. It is suggested to save a copy of the original xserverrc file so that it can be easily restored when switching back to X. A suggested xserverrc file to start Xorg could look like this: #!/usr/bin/ksh exec /usr/lpp/X11/bin/Xorg -depth 24 "$@" o Generating an xorg.conf file (optional). To do this, make sure no instances of X or Xorg are currently running. Then run this command: /usr/bin/X11/Xorg -configure This will create a file called xorg.conf.new in your $HOME directory. Copy this file to /etc/X11/xorg.conf . o Xorg creates a log file at /var/log/Xorg..log, where is the display number used by that instance of Xorg (typically "0"). o Other limitations - IBM GXT135P GXT145 GXT145LP The Xorg server does not support a digital connection to the display. This means the VGA cable from the display needs to be connected to the card. A VGA to DVI connector can be used to connect the VGA cable to the DVI port on the graphics adapter. The /usr/bin/X11/X server supports a digital connection but the graphics adapter is not capable of displaying resolutions greater than 1280x1024 with a digital connection. When using a display that supports a resolution greater than 1280x1024, use a VGA display cable. The DVI port on the adapter can be used with a VGA to DVI connector. - IBM GXT145 GXT145LP The Low Functional Terminal (LFT), also known as the green screen, supports an analog connection on both display ports. The digital connection only works on port A. E. X Clients o New xterm. The new version of xterm requires a new terminfo file that does not work well with older versions of xterm (on AIX 5L). However, terminfo compatibility files are provided for use by older versions of xterm. You can access these by setting the TERM environment variable to "xterm-r6" or "xterm-old". For example if using the Korn Shell, you would run one of these commands after you telnet into an AIX 6.1 system from an xterm on an AIX 5L system: export TERM=xterm-r6 or export TERM=xterm-old Either of these commands will start using a terminfo file designed to support the older (X11R6) version of xterm. The xterm-r6 and xterm-old files are identical. o New xdm. The new X11R7.1 version of xdm only supports PAM authentication. The new xdm also ships with a more secure default configuration that only allows local logins. The system administrator will have to enable remote logins if that is desired. o The XAsyncInput API in libX11.a is not supported in the X11R6 library. If this function is called, a warning message will be printed. However, the old X11R5 library with this function is included and can be accessed by setting the LIBPATH environment variable to /usr/lpp/X11/lib/R5. The X11R5 libraries are shipped in the fileset X11.compat.lib.X11R5. o The X11R5 and X11R6 X11 and Xt library APIs more restrictive than they were in X11R4. The more restrictive APIs may cause some X11R4 applications to work improperly. For these applications, the the AIXwindows 1.2 libraries are maintained in "/usr/lpp/X11/lib". An application may use the AIXwindows 1.2 libraries by setting the $LIBPATH environment variable to "/usr/lpp/X11/lib" and then executing the application. These compatibility libraries are not installed by default. You will need to install the X11.compat.lib.X11R4 and X11.compat.lib.Motif114 options. o The xhost command does not support using a network independent netname (e.g. "unix.uid@domainname"), or a local user name with a trailing at-sign (e.g. "joe@") as arguments for addition or deletion from the server access control list. o The default xinit(in /usr/bin/X11) is the X Consortium version of xinit. It behaves differently than the xinit in releases prior to X11R5. In those releases, xinit starts the X server and an xinitrc file. xinit would wait until both of these were done before exiting. That is, xinitrc could exit without killing the server. With the X Consortium version, xinit will by default start the X server and an xinitrc file. But, xinit will exit when EITHER xinitrc or the server exits. So, if xinitrc exits, the server will be killed. Also, as noted above in section B, the /usr/lpp/X11/defaults/xserverrc script has been updated to start the X server using a 24bit TrueColor visual. o Aixterm might take a long time to start because it has to use fonts that match the codeset it is using. If fonts are not specified in the defaults or on the command line, aixterm has to do XListFonts() requests to find some that it can use. These XListFonts() calls can bring a slow server to a crawl. If you find that aixterm is taking a long time to start (like on a non-AIX server that has a lot of fonts but not the types aixterm is looking for) try telling it what fonts to use: aixterm -fn fixed -fb fixed -fi fixed -fs fixed -rfn fixed \ -rfb fixed -rfi fixed -rfs fixed (regular and reduced normal, bold, italic, special_graphics fonts) Note that you may not be able to display some characters if the font does not match the codeset (ascii should be ok). o Limitations of fontutil 1. The environment variable "LANG" must be en_US. 2. For SBCS font files, input and output file formats must be the same. 3. For SBCS font files, bdf and xgsl formats cannot be handled. 4. For DBCS font files, fontutil is available only for V3.1-based Kanji font files. F. ISO9241 Fonts Additional AIXwindows fonts are being shipped. These fonts have been designed to comply with the ISO9241, part 3 standard when displayed on a monitor with the appropriate characteristics. The fontnames for these additional fonts are: Ergo11, Ergo11.iso1, Ergo11.iso7, Ergo11.iso9 Ergo15, Ergo15.iso1, Ergo15.iso7, Ergo15.iso9 ErgoB15, ErgoB15.iso1, ErgoB15.iso7, ErgoB15.iso9 ErgoI15, ErgoI15.iso1, ErgoI15.iso7, ErgoI15.iso9 Ergo17, Ergo17.iso1, Ergo17.iso7, Ergo17.iso9 Ergo22, Ergo22.iso1, Ergo22.iso7, Ergo22.iso9 G. Motif 2.1 vs Motif 1.2 The 1.2 version of Motif is shipping as the default runtime environment. Any existing Motif 1.2 applications will continue to load Motif 1.2 (same version as shipped in AIX 4.1.5/4.2.1). However, Motif 2.1 is the default compile time library. So, if you recompile an application, it will link to the 2.1 version of the Motif libraries (libXm.a, libMrm.a, libUil.a). This duality is achieved by shipping library files with multiple objects. For example: libXm.a ships with (shr4.o, shr_32.o), which are both 32bit objects. shr4.o is the Motif 1.2 object, and shr_32.o is the Motif 2.1 object. Any applications which were previously compiled against the shr4.o shared object, will continue to load that object at runtime. Therefore, all Motif applications compiled on earlier versions of AIX V4 will continue to load Motif 1.2 at runtime. The shr4.o in libXm.a is LOADONLY, which means, at compile time, the linker when looking for "-lXm" will find the libXm.a file, skip shr4.o because it is LOADONLY, and link to the shr_32.o. Therefore, at runtime the executable will load the shr_32.o and will be using Motif 2.1. Here is an example of a Motif 1.2 executable (execute the following dump command) 'dump -H /usr/bin/X11/mwm' Notice that the *Import File String* section has "shr4.o" as the MEMBER of libXm.a. This means that at runtime mwm will link to "shr4.o" i.e. Motif 1.2. Here is an example of a Motif 2.1 executable (this example is installed with X11.samples.apps.motifdemos fileset): cd /usr/samples/Motif2.1/programs/earth (If the samples are not already built do:) xmkmf make dump -H ./earth You see in the *Import File Strings* section that the MEMBER object for libXm.a is (shr_32.o). This client program "earth" will load shr_32.o from the libXm.a that is found in its LIBPATH, which is Motif 2.1. Using the "dump -H" command allows you to determine whether an executable will be using Motif 1.2(shr4.o) or Motif 2.1(shr_32.o). Remember, all existing binaries from previous versions of AIX were all linked to Motif 1.2(shr4.o), so they will still load Motif1.2(shr4.o). If you have client applications that must be compiled against Motif 1.2, a compatiblity option is provided. You will have to install X11.compat.adt.Motif12 (AIXwindows Motif 1.2 Compatibility Development Toolkit). This X11.compat fileset installs all of the Motif 1.2 include files as well as "Xm12.imp" and "Mrm12.imp". These files can be used to compile your application so that it will load from the Motif 1.2 (shr4.o) member of libXm.a. In order to use these files, the compile command should look like this: cc -o testapp testapp.c -I/usr/include/Motif1.2 \ /usr/lpp/X11/lib/Xm12.imp \ /usr/lpp/X11/lib/Mrm12.imp \ -lXt -lX11 Notice that you do not link to "-lXm" or "-lMrm". These "imp" files are used at compile time in place of the "-lXm" "-lMrm" flags. These "imp" files tell the compiler to look for the symbols listed in the "imp" file in the "shr4.o" member of the library. H. Motif 2.1 - 64-bit technology The 64-bit versions of the Motif 2.1 libXm.a, libUil.a and libMrm.a are shipping. Both the 32-bit object and 64-bit object ship in the same archive library. For example, libXm.a has a shr_32.o, and a shr_64.o. If you try and run a 64-bit executable, the loader will automatically load the 64-bit object, and 32-bit executables will use the 32-bit object. Note that only Motif 2.1 is 64-bit enabled. The Motif 1.2 libraries shipped in the X11.compat.adt.Motif12 are 32-bit only. I. X11 - 64bit technology When running 64-bit binaries, the following message may be displayed: "Warning: missing iconv converter........." 64-bit input methods loadable modules are shipped. J. X11R5, X11R6 and X11R7.1 on same system. X11R7.1 is considered binary compatible to X11R5 and X11R6. Therefore, any applications that used to be running on X11R5/X11R6 should run on X11R7.1 with no problems. For existing applications which do not run on the X11R71. libraries, the X11R6 Xlibs are shipped in the fileset: AIXwindows X11R6 Compatibility Libraries (X11.compat.lib.X11R6). In that fileset you will find the /usr/lpp/X11/lib/R6 directory which contains all the R6 libraries required for the system. The X11 toolkit specifically checks to make sure you are not running against X11R5 and X11R6 in the same application, by checking the XtVersion at runtime. The following error is generated when you try to to run an applications which is linked to Motif1.2, which was built using X11R7.1, and an libXt.a which was built using X11R6. Warning: Widget class VendorShell version mismatch (recompilation needed): widget 11007 vs. intrinsics 11006. Since the Motif1.2 (shr4.o) object shipping in libXm.a is compiled against X11R7.1, a version of Motif1.2 that was compiled against X11R6 is also shipping, so that anyone needing to use the X11R6 libraries, would also have a Motif1.2 library to run against. This X11R6 Motif 1.2 is found in /usr/lpp/X11/lib/R6/libXm.a. K. Setting the fontserver default port The default fontserver port is no longer over-ridden to be 7500. For customers that want to restore this old default, edit the file: /usr/lpp/X11/lib/X11/fs/config and add the line PORT=7500 to the file. The standard fontserver port of 7100 is the recommended port. L. The fontserver command name is now xfs M. Support for Wheel Mouse Wheel Mouse support has been added to the Xserver and libXt.a on AIX, and can be used by many applications. The basic interfaces to the wheel mouse support are: o New libXt.a command line flags. -mouseext - Turns wheel mouse support on +mouseext - Turns wheel mouse support off (this is the default) o New libXt.a resource mouseExtenstion: True/False - Turns wheel mouse support on/off (default is off) o New libXt.a Translation events Using these interfaces, you can create or modify your resource file(s) to enable many applications to use the wheel mouse. Resources are typically added to the file $HOME/.Xdefaults . A sample file containing resources to enable several applications can be found at /usr/lpp/X11/defaults/Xdefaults.wheelmouse. You can copy (or append) this file to $HOME/.Xdefaults . When running under CDE, after you create or modify your $HOME/.Xdefaults file, you will need to logout and log back in, or just run this command: /usr/bin/X11/xrdb -merge $HOME/.Xdefaults It is possible that the names of the command line flags and other names could change as we work to get this support adopted by other X-Windows platforms. Because of the possibility that this could affect some programs in an unforseen way, wheel mouse support is turned off by default. Older systems may not be able to support the wheel mouse, as the older device drivers for these mice have not been updated. N. Screen Magnifier Extension (-sme) The -sme option starts the X Server with the Virtual Frame Buffer(VFB) Extension and the default graphics adapter simultaneously. The VFB display will be the primary screen. Since the -sme option uses VFB Extension, VFB must be installed. The -sme option is not compatible with +xinerma option. O. Glyph subsets in CDE If even one glyph in a font extends much higher or lower than the others, the font metrics are affected such that a paragraph of text will appear to have excessive white space between each line. To address this issue, the "-dt interface user-*" and "-dt interface system-*" font aliases used by CDE in Unicode locales will by default point to fonts containing a reduced set of glyphs. This reduced set does not contain the large glyphs causing increased line height. To override this default and force the use of fonts containing the complete set of glyphs, add /usr/lib/X11/fonts/TrueType/complete to the front of your font path, so that the "-dt*" font aliases in that directory are found before the ones in /usr/lib/X11/fonts/TrueType. For example, if a user selects the EN_US locale at CDE login, but still needs to be able to display Indic characters, they can run this command: xset +fp /usr/lib/X11/fonts/TrueType/complete Note that an alternative would be for that user to have actually selected the EN_IN locale at CDE login instead of EN_US.