diff options
author | kem <kem> | 2002-11-29 16:54:06 +0000 |
---|---|---|
committer | kem <kem> | 2002-11-29 16:54:06 +0000 |
commit | a3d49b62599afa9ffb65538b279d734d170503c4 (patch) | |
tree | 9c4a5af29e0952e5ffa2dc7977189893d31fda90 | |
parent | 3551b0d9f070676b15146de3cf8b66ebc836e883 (diff) |
Update docsdmx-1-0-20021129-final
-rw-r--r-- | xc/programs/Xserver/hw/dmx/doc/Makefile.linux | 18 | ||||
-rw-r--r-- | xc/programs/Xserver/hw/dmx/doc/dmx.sgml | 44 | ||||
-rw-r--r-- | xc/programs/Xserver/hw/dmx/doc/dmx.txt | 366 |
3 files changed, 347 insertions, 81 deletions
diff --git a/xc/programs/Xserver/hw/dmx/doc/Makefile.linux b/xc/programs/Xserver/hw/dmx/doc/Makefile.linux index 840e7424d..f2a7a112f 100644 --- a/xc/programs/Xserver/hw/dmx/doc/Makefile.linux +++ b/xc/programs/Xserver/hw/dmx/doc/Makefile.linux @@ -1,6 +1,16 @@ # This is a temporary convenience Makefile that will be removed before # merging in to XFree86 tree. +# For RedHat 7.2: +SGML2TXT = sgml2txt +SGML2LATEX = sgml2latex +SGML2HTML = sgml2html + +# For RedHat 8.0: +#SGML2TXT = GROFF_NO_SGR= linuxdoc -B txt +#SGML2LATEX = linuxdoc -B latex +#SGML2HTML = linuxdoc -B html + FILES = dmx.sgml TXT_FILES = $(FILES:.sgml=.txt) @@ -16,16 +26,16 @@ ps: $(PS_FILES) html: $(HTML_FILES) %.txt: %.sgml - GROFF_NO_SGR= linuxdoc -B txt $* + $(SGML2TXT) $* %.dvi: %.sgml - linuxdoc -B latex --papersize=letter $* + $(SGML2LATEX) --papersize=letter $* %.ps: %.sgml - linuxdoc -B latex --papersize=letter --output=ps $* + $(SGML2LATEX) --papersize=letter --output=ps $* %.html: %.sgml - linuxdoc -B html --split=0 $* + $(SGML2HTML) --split=0 $* clean: rm -f $(TXT_FILES) $(DVI_FILES) $(PS_FILES) $(HTML_FILES) diff --git a/xc/programs/Xserver/hw/dmx/doc/dmx.sgml b/xc/programs/Xserver/hw/dmx/doc/dmx.sgml index 5b060b52f..fbf5cc8bb 100644 --- a/xc/programs/Xserver/hw/dmx/doc/dmx.sgml +++ b/xc/programs/Xserver/hw/dmx/doc/dmx.sgml @@ -4,7 +4,7 @@ <!-- Title information --> <title>Distributed Multihead X design <author>Kevin E. Martin, David H. Dawes, and Rickard E. Faith - <date>16 September 2002 (created 25 July 2001) + <date>29 November 2002 (created 25 July 2001) <abstract> This document covers the motivation, background, design and implementation of the distributed multihead X (DMX) system. It @@ -2076,33 +2076,51 @@ XChangeKeyboardControl: Test 9, 10 [1] <p>During the third phase of development, support was provided for the following extensions: SHAPE, RENDER, XKEYBAORD, XInput. +<sect2>SHAPE + +<p>The SHAPE extension is supported. Test applications (e.g., xeyes and +oclock) and window managers that make use of the SHAPE extension will +work as expected. + +<sect2>RENDER + +<p>The RENDER extension is supported. The version included in the DMX +CVS tree is version 0.2, and this version is fully supported by Xdmx. +Applications using only version 0.2 functions will work correctly; +however, some apps that make use of functions from later versions do not +properly check the extension's major/minor version numbers. These apps +will fail with a Bad Implementation error when using post-version 0.2 +functions. This is expected behavior. When the DMX CVS tree is updated +to include newer versions of RENDER, support for these newer functions +will be added to the DMX X server. + <sect2>XKEYBOARD -<p>The XKEYBOARD extension is supported. If present on the backend X +<p>The XKEYBOARD extension is supported. If present on the back-end X servers, the XKEYBOARD extension will be used to obtain information about the type of the keyboard for initialization. Otherwise, the keyboard will be initialized using defaults. Note that this departs from older behavior: when Xdmx is compiled without XKEYBOARD support, -the map from the backend X server will be preserved. With XKEYBOARD +the map from the back-end X server will be preserved. With XKEYBOARD support, the map is not preserved because better information and control of the keyboard is available. <sect2>XInput -<p>The XInput extension is supported. Any device that can be used as a -core device and be used as an XInput extension device, with the -exception of core devices on the backend servers. This limitation is -present because cursor handling on the backend requires that the backend +<p>The XInput extension is supported. Any device can be used as a core +device and be used as an XInput extension device, with the exception of +core devices on the back-end servers. This limitation is present +because cursor handling on the back-end requires that the back-end cursor sometimes track the Xdmx core cursor -- behavior that is -incompatible with using the backend pointer as a non-core device. +incompatible with using the back-end pointer as a non-core device. -<p>Currently, backend extension devices are not available as Xdmx +<p>Currently, back-end extension devices are not available as Xdmx extension devices, but this limitation should be removed in the future. <p>To demonstrate the XInput extension, and to provide more examples for low-level input device driver writers, USB device drivers have been written for mice (usb-mou), keyboards (usb-kbd), and -non-mouse/non-keyboard USB devices (usb-oth). Pleae see the man page +non-mouse/non-keyboard USB devices (usb-oth). Please see the man page for information on Linux kernel drivers that are required for using these Xdmx drivers. @@ -2118,7 +2136,7 @@ these Xdmx drivers. XFree86-Bigfont extensions do not require any special Xdmx support and have been exported. -<p>The following common extensions are <it/not/ supported at this time: +<p>The BIG-REQUESTS, DEC-XTRAP, DOUBLE-BUFFER, @@ -2139,7 +2157,9 @@ extensions do not require any special Xdmx support and have been exported. XFree86-DRI, XFree86-Misc, XFree86-VidModeExtension, and - XVideo. + XVideo +extensions are <it/not/ supported at this time, but will be evaluated +for inclusion in future DMX releases. <!-- ============================================================ --> <sect>Current issues diff --git a/xc/programs/Xserver/hw/dmx/doc/dmx.txt b/xc/programs/Xserver/hw/dmx/doc/dmx.txt index 8ff005488..941a6bf0f 100644 --- a/xc/programs/Xserver/hw/dmx/doc/dmx.txt +++ b/xc/programs/Xserver/hw/dmx/doc/dmx.txt @@ -1,7 +1,7 @@ Distributed Multihead X design Kevin E. Martin, David H. Dawes, and Rickard E. Faith - 16 September 2002 (created 25 July 2001) + 29 November 2002 (created 25 July 2001) This document covers the motivation, background, design and implemen- tation of the distributed multihead X (DMX) system. It is a living @@ -17,8 +17,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1. Introduction + 2. Background + 2.1 Core input device handling 2.1.1 InitInput() 2.1.2 InitAndStartDevices() @@ -41,6 +90,7 @@ 2.3.3 Intercepted DIX core requests 3. Development plan + 3.1 Bootstrap code 3.2 Input device handling 3.3 Output device handling @@ -52,6 +102,7 @@ 3.7 OpenGL support 4. Development Results + 4.1 Phase I 4.1.1 Scope 4.1.2 Results @@ -77,12 +128,15 @@ 4.2.8.2 Clock Cycles % 4.2.9 X Test Suite 4.3 Phase III - 4.3.1 XKEYBOARD - 4.3.2 XInput - 4.3.3 DPMS - 4.3.4 Other Extensions + 4.3.1 SHAPE + 4.3.2 RENDER + 4.3.3 XKEYBOARD + 4.3.4 XInput + 4.3.5 DPMS + 4.3.6 Other Extensions 5. Current issues + 5.1 Fonts 5.2 Zero width rendering primitives 5.3 DMX extension @@ -142,7 +196,6 @@ accordingly, while the cursors on the other back-end server(s) will be disabled. - Rendering requests will be accepted by the front-end server; however, rendering to visible windows will be broken down as needed and sent to the appropriate back-end server(s) via X11 library calls for actual @@ -338,6 +391,9 @@ current position. + + + 22..11..44.. PPrroocceessssIInnppuuttEEvveennttss(()) ProcessInputEvents() is a DDX function that is called from the X @@ -403,6 +459,7 @@ CloseDevice() calls the device's callback function with DEVICE_CLOSE: + ((**ddeevv-->>ddeevviicceePPrroocc))((ddeevv,, DDEEVVIICCEE__CCLLOOSSEE)) This typically closes the relevant physical device, and when appropriate, unregisters the device's file descriptor (or @@ -413,6 +470,9 @@ CloseDevice() then frees the data structures that were allocated for the device when it was registered/initialized. + + + 22..11..77.. LLeeggaallMMooddiiffiieerr(()) LegalModifier() is a required DDX function that can be used to @@ -466,7 +526,6 @@ image byte order, bitmap bit order and bitmap scanline unit/pad. The screenInfo's pixmap format's depth, bits per pixel and scanline padding is also initialized at this stage. - 4. UUnniiffyy ssccrreeeenn iinnffoo:: An optional task that might be done at this stage is to compare all of the information from the various screens and determines if they are compatible (i.e., if the set of screens @@ -542,7 +601,6 @@ then initializes the video mode of the graphics device. - 22..22..44.. CClloosseeSSccrreeeenn(()) This function restores any wrapped screen functions (and in particular @@ -609,6 +667,8 @@ the data from the real X server's pixmaps to initialize its own pixmap formats. Finally, it calls AddScreen(xnestOpenScreen, argc, argv) to initialize each of its screens. + + SSccrreeeennIInniitt(()) Xnest's ScreenInit() function is called xnestOpenScreen(). This function initializes its screen's depth and visual information, @@ -872,7 +932,6 @@ for expose events. - 22..33..33.. IInntteerrcceepptteedd DDIIXX ccoorree rreeqquueessttss Xinerama breaks up drawing requests for dispatch to each physical @@ -929,8 +988,6 @@ handled and required by the core X11 protocol. Additional types of input devices may be attached and utilized via the XInput extension. These are usually referred to as ``extended input devices''. - - There are some options as to how the front-end X server gets its core input devices: @@ -1039,12 +1096,12 @@ devices directly to the front-end: - +o Implement back-end input in the bootstrap code. + +o Implement back-end input in the bootstrap code. - +o Implement front-end input in the bootstrap code. + +o Implement front-end input in the bootstrap code. - +o Evaluate both options with the bootstrap code extended to drive - more than one back-end. + +o Evaluate both options with the bootstrap code extended to drive + more than one back-end. Status: The input code is complete. @@ -1261,7 +1318,6 @@ Support for the XTest extension was added during the first development phase. - Status: The following extensions are supported: DMX, DPMS (not currently functional), LBX, RENDER, SECURITY, SHAPE, XC-APPGROUP, XFree86-Bigfont, XINERAMA, XInputExtension, XKEYBOARD, XTEST, and @@ -1325,13 +1381,15 @@ + + + 44.. DDeevveellooppmmeenntt RReessuullttss In this section the results of each phase of development are discussed. - 44..11.. PPhhaassee II The initial development phase dealt with the basic implementation @@ -1347,31 +1405,30 @@ 1. Develop the proxy X server - +o The proxy X server will operate on the X11 protocol and relay - requests as necessary to correctly perform the request. + +o The proxy X server will operate on the X11 protocol and relay + requests as necessary to correctly perform the request. - +o Work will be based on the existing work for Xinerama and Xnest. + +o Work will be based on the existing work for Xinerama and Xnest. - +o Input events and windowing operations are handled in the proxy - server and rendering requests are repackaged and sent to each of - the back-end servers for display. + +o Input events and windowing operations are handled in the proxy + server and rendering requests are repackaged and sent to each of + the back-end servers for display. - +o The multiple screen layout (including support for overlapping - screens) will be user configurable via a configuration file or - through the configuration tool. + +o The multiple screen layout (including support for overlapping + screens) will be user configurable via a configuration file or + through the configuration tool. 2. Develop graphical configuration tool - +o There will be potentially a large number of X servers to - configure into a single display. The tool will allow the user - to specify which servers are involved in the configuration and - how they should be laid out. + +o There will be potentially a large number of X servers to configure + into a single display. The tool will allow the user to specify + which servers are involved in the configuration and how they should + be laid out. 3. Pass the X Test Suite - +o The X Test Suite covers the basic X11 operations. All tests - known to succeed must correctly operate in the distributed X - environment. + +o The X Test Suite covers the basic X11 operations. All tests known + to succeed must correctly operate in the distributed X environment. For this phase, the back-end X servers are assumed to be unmodified X @@ -1392,12 +1449,14 @@ on Xnest and uses the existing Xinerama extension. + Input events can be taken from (1) devices attached to the back-end server, (2) core devices attached directly to the Xdmx server, or (3) from a ``console'' window on another X server. Events for these devices are gathered, processed and delivered to clients attached to the Xdmx server. + An intuitive configuration format was developed to help the user easily configure the multiple back-end X servers. It was defined (see grammar in Xdmx man page) and a parser was implemented that is used by @@ -1423,9 +1482,13 @@ Suite are described in detail below. - 44..11..33.. XX TTeesstt SSuuiittee + 44..11..33.. + + XX TTeesstt SSuuiittee - 44..11..33..11.. IInnttrroodduuccttiioonn + 44..11..33..11.. + + IInnttrroodduuccttiioonn The X Test Suite contains tests that verify Xlib functions operate correctly. The test suite is designed to run on a single X server; @@ -1439,7 +1502,9 @@ in underlying systems can impact Xdmx test results. - 44..11..33..22.. EExxppeecctteedd FFaaiilluurreess ffoorr aa SSiinnggllee HHeeaadd + 44..11..33..22.. + + EExxppeecctteedd FFaaiilluurreess ffoorr aa SSiinnggllee HHeeaadd A correctly implemented X server with a single screen is expected to fail certain X Test tests. The following well-known errors occur @@ -1450,6 +1515,7 @@ + The following failures occur because of the high-level X server implementation: @@ -1459,6 +1525,7 @@ + The following test fails when running the X server as root under Linux because of the way directory modes are interpreted: @@ -1466,13 +1533,16 @@ + Depending on the video card used for the back-end, other failures may also occur because of bugs in the low-level driver implementation. Over time, failures of this kind are usually fixed by XFree86, but will show up in Xdmx testing until then. - 44..11..33..33.. EExxppeecctteedd FFaaiilluurreess ffoorr XXiinneerraammaa + 44..11..33..33.. + + EExxppeecctteedd FFaaiilluurreess ffoorr XXiinneerraammaa Xinerama fails several X Test Suite tests because of design decisions made for the current implementation of Xinerama. Over time, many of @@ -1502,6 +1572,7 @@ + These failures were noted only when using one dual-head video card with a 4.2.99.x XFree86 server: @@ -1510,6 +1581,7 @@ + These failures were noted only when using two video cards from different vendors with a 4.1.99.x XFree86 server: @@ -1522,7 +1594,11 @@ - 44..11..33..44.. AAddddiittiioonnaall FFaaiilluurreess ffrroomm XXddmmxx + + + 44..11..33..44.. + + AAddddiittiioonnaall FFaaiilluurreess ffrroomm XXddmmxx When running Xdmx, no unexpected failures were noted. Since the Xdmx server is based on Xinerama, we expect to have most of the Xinerama @@ -1542,13 +1618,16 @@ + Note that this list is shorter than the combined list for Xinerama because Xdmx uses different code paths to perform some Xinerama operations. Further, some Xinerama failures have been fixed in the XFree86 4.2.99.x CVS repository. - 44..11..33..55.. SSuummmmaarryy aanndd FFuuttuurree WWoorrkk + 44..11..33..55.. + + SSuummmmaarryy aanndd FFuuttuurree WWoorrkk Running the X Test Suite on Xdmx does not produce any failures that cannot be accounted for by the underlying Xinerama subsystem used by @@ -1586,7 +1665,6 @@ back-end machine. - The -fontpath command line option was added to allow users to initialize the font path of the front end server. This font path is propagated to each back-end server when the default font is loaded. @@ -1650,8 +1728,6 @@ After this update, the following tests were noted to be more than 10% faster: - - 1.13 Fill 300x300 opaque stippled trapezoid (161x145 stipple) 1.16 Fill 1x1 tiled trapezoid (161x145 tile) 1.13 Fill 10x10 tiled trapezoid (161x145 tile) @@ -1674,6 +1750,7 @@ + These changes were not caused by any changes in the DMX system, and may point to changes in the XFree86 tree or to tests that have more "jitter" than most other x11perf tests. @@ -1696,8 +1773,13 @@ + + The following tests were noted to be more than 10% slower: + + + 0.69 Scroll 10x10 pixels 0.68 Scroll 100x100 pixels 0.68 Copy 10x10 from window to window @@ -1707,6 +1789,8 @@ + + For the remainder of this analysis, the baseline of comparison will be the Phase II deliverable with all optimizations disabled (unless otherwise noted). This will highlight how the optimizations in @@ -1740,6 +1824,8 @@ + + 44..22..44.. OOffffssccrreeeenn OOppttiimmiizzaattiioonn Windows span one or more of the back-end servers' screens; however, @@ -1759,11 +1845,14 @@ fast, and 146 tests were at least 10% faster. Two tests were more than 10% slower with the offscreen optimization: + 0.88 Hide/expose window via popup (4 kids) 0.89 Resize unmapped window (75 kids) + + 44..22..55.. LLaazzyy WWiinnddooww CCrreeaattiioonn OOppttiimmiizzaattiioonn As mentioned above, during Phase I, windows were created on every @@ -1869,6 +1958,8 @@ + + The following test was noted to be more than 10% slower with this optimization: @@ -1876,6 +1967,8 @@ + + 44..22..77.. SSuummmmaarryy ooff xx1111ppeerrff DDaattaa With all of the optimizations on, 53 x11perf tests are more than 100X @@ -1894,6 +1987,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1: XSync() batching only 2: Off screen optimizations only 3: Window optimizations only @@ -2231,6 +2381,8 @@ + + 44..22..88.. PPrrooffiilliinngg wwiitthh OOPPrrooffiillee OProfile (available from http://oprofile.sourceforge.net/) is a @@ -2254,7 +2406,7 @@ % - 44..22..88..11.. RReettiirreedd IInnssttrruuccttiioonnss %% + 44..22..88..11.. %% RReettiirreedd IInnssttrruuccttiioonnss The initial tests using OProfile were done using the RETIRED_INSNS %counter with DMX running on the dual-processor AMD Athlon machine -- @@ -2277,7 +2429,7 @@ % - 44..22..88..22.. CClloocckk CCyycclleess %% + 44..22..88..22.. %% CClloocckk CCyycclleess Retired instructions can be misleading because Intel/AMD instructions %execute in variable amounts of time. The OProfile tests were @@ -2329,35 +2481,57 @@ + + 44..33.. PPhhaassee IIIIII During the third phase of development, support was provided for the following extensions: SHAPE, RENDER, XKEYBAORD, XInput. - 44..33..11.. XXKKEEYYBBOOAARRDD + 44..33..11.. SSHHAAPPEE + + The SHAPE extension is supported. Test applications (e.g., xeyes and + oclock) and window managers that make use of the SHAPE extension will + work as expected. + + + 44..33..22.. RREENNDDEERR + + The RENDER extension is supported. The version included in the DMX + CVS tree is version 0.2, and this version is fully supported by Xdmx. + Applications using only version 0.2 functions will work correctly; + however, some apps that make use of functions from later versions do + not properly check the extension's major/minor version numbers. These + apps will fail with a Bad Implementation error when using post-version + 0.2 functions. This is expected behavior. When the DMX CVS tree is + updated to include newer versions of RENDER, support for these newer + functions will be added to the DMX X server. - The XKEYBOARD extension is supported. If present on the backend X + + 44..33..33.. XXKKEEYYBBOOAARRDD + + The XKEYBOARD extension is supported. If present on the back-end X servers, the XKEYBOARD extension will be used to obtain information about the type of the keyboard for initialization. Otherwise, the keyboard will be initialized using defaults. Note that this departs from older behavior: when Xdmx is compiled without XKEYBOARD support, - the map from the backend X server will be preserved. With XKEYBOARD + the map from the back-end X server will be preserved. With XKEYBOARD support, the map is not preserved because better information and control of the keyboard is available. - 44..33..22.. XXIInnppuutt + 44..33..44.. XXIInnppuutt - The XInput extension is supported. Any device that can be used as a - core device and be used as an XInput extension device, with the - exception of core devices on the backend servers. This limitation is - present because cursor handling on the backend requires that the - backend cursor sometimes track the Xdmx core cursor -- behavior that - is incompatible with using the backend pointer as a non-core device. + The XInput extension is supported. Any device can be used as a core + device and be used as an XInput extension device, with the exception + of core devices on the back-end servers. This limitation is present + because cursor handling on the back-end requires that the back-end + cursor sometimes track the Xdmx core cursor -- behavior that is + incompatible with using the back-end pointer as a non-core device. - Currently, backend extension devices are not available as Xdmx + Currently, back-end extension devices are not available as Xdmx extension devices, but this limitation should be removed in the future. @@ -2365,28 +2539,28 @@ To demonstrate the XInput extension, and to provide more examples for low-level input device driver writers, USB device drivers have been written for mice (usb-mou), keyboards (usb-kbd), and non-mouse/non- - keyboard USB devices (usb-oth). Pleae see the man page for + keyboard USB devices (usb-oth). Please see the man page for information on Linux kernel drivers that are required for using these Xdmx drivers. - 44..33..33.. DDPPMMSS + 44..33..55.. DDPPMMSS The DPMS extension is exported but does not do anything at this time. - 44..33..44.. OOtthheerr EExxtteennssiioonnss + 44..33..66.. OOtthheerr EExxtteennssiioonnss The LBX, SECURITY, XC-APPGROUP, and XFree86-Bigfont extensions do not require any special Xdmx support and have been exported. - The following common extensions are _n_o_t supported at this time: BIG- - REQUESTS, DEC-XTRAP, DOUBLE-BUFFER, Extended-Visual-Information, - FontCache, GLX, MIT-SCREEN-SAVER, MIT-SHM, MIT-SUNDRY-NONSTANDARD, - RECORD, SECURITY, SGI-GLX, SYNC, TOG-CUP, X-Resource, XC-MISC, - XFree86-DGA, XFree86-DRI, XFree86-Misc, XFree86-VidModeExtension, and - XVideo. + The BIG-REQUESTS, DEC-XTRAP, DOUBLE-BUFFER, Extended-Visual- + Information, FontCache, GLX, MIT-SCREEN-SAVER, MIT-SHM, MIT-SUNDRY- + NONSTANDARD, RECORD, SECURITY, SGI-GLX, SYNC, TOG-CUP, X-Resource, XC- + MISC, XFree86-DGA, XFree86-DRI, XFree86-Misc, + XFree86-VidModeExtension, and XVideo extensions are _n_o_t supported at + this time, but will be evaluated for inclusion in future DMX releases. 55.. CCuurrrreenntt iissssuueess @@ -2395,6 +2569,9 @@ investigation. + + + 55..11.. FFoonnttss The font path and glyphs need to be the same for the front-end and @@ -2416,7 +2593,6 @@ in the front-end server via the GC state. - 55..33.. DDMMXX eexxtteennssiioonn The DMX extension will provide DMX-aware X clients with the screen @@ -2468,3 +2644,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + |