# Distributed Multihead X design

  1. Introduction
    1.1. The Distributed Multihead X Server
    1.2. Layout of Paper
  2. Development plan
    2.1. Bootstrap code
    2.2. Input device handling
    2.3. Output device handling
      2.3.1. Initialization
      2.3.2. Handling rendering requests
    2.4. Optimizing DMX
    2.5. DMX X extension support
    2.6. Common X extension support
    2.7. OpenGL support
  3. Current issues
    3.1. Fonts
    3.2. Zero width rendering primitives
    3.3. Output scaling
    3.4. Per-screen colormaps
  4. Background
    4.1. Core input device handling
      4.1.1. InitInput()
      4.1.2. InitAndStartDevices()
      4.1.3. devReadInput()
      4.1.4. ProcessInputEvents()
      4.1.5. DisableDevice()
      4.1.6. CloseDevice()
      4.1.7. LegalModifier()
    4.2. Output handling
      4.2.1. InitOutput()
      4.2.2. AddScreen()
      4.2.3. ScreenInit()
      4.2.4. CloseScreen()
      4.2.5. GC operations
      4.2.6. Xnest
      4.2.7. Shadow framebuffer
    4.3. Xinerama
      4.3.1. Xinerama-specific changes to the DIX code
      4.3.2. Xinerama-specific changes to the MI code
      4.3.3. Intercepted DIX core requests
  5. Development Results
    5.1. Phase I
      5.1.1. Scope
      5.1.2. Results
      5.1.3. X Test Suite
        5.1.3.1. Introduction
        5.1.3.2. Expected Failures for a Single Head
        5.1.3.3. Expected Failures for Xinerama
        5.1.3.4. Additional Failures from Xdmx
        5.1.3.5. Summary and Future Work
      5.1.4. Fonts
      5.1.5. Performance
      5.1.6. Pixmaps
    5.2. Phase II
      5.2.1. Moving from XFree86 4.1.99.1 to 4.2.0.0
      5.2.2. Global changes
      5.2.3. XSync() Batching
      5.2.4. Offscreen Optimization
      5.2.5. Lazy Window Creation Optimization
      5.2.6. Subdividing Rendering Primitives
      5.2.7. Summary of x11perf Data
      5.2.8. Profiling with OProfile
      5.2.9. X Test Suite
    5.3. Phase III
      5.3.1. SHAPE
      5.3.2. RENDER
      5.3.3. XKEYBOARD
      5.3.4. XInput
      5.3.5. DPMS
      5.3.6. Other Extensions
    5.4. Phase IV
      5.4.1. Moving to XFree86 4.3.0
      5.4.2. Extensions
        5.4.2.1. XC-MISC (supported)
        5.4.2.2. Extended-Visual-Information (supported)
        5.4.2.3. RES (supported)
        5.4.2.4. BIG-REQUESTS (supported)
        5.4.2.5. XSYNC (supported)
        5.4.2.6. XTEST, RECORD, DEC-XTRAP (supported) and XTestExtension1 (not supported)
        5.4.2.7. MIT-MISC (not supported)
        5.4.2.8. SCREENSAVER (not supported)
        5.4.2.9. GLX (supported)
        5.4.2.10. RENDER (supported)
        5.4.2.11. Summary
      5.4.3. Additional Testing with the X Test Suite
        5.4.3.1. XFree86 without XTEST
        5.4.3.2. XFree86 with XTEST
        5.4.3.3. Xdmx with XTEST, without Xinerama, without GLX
        5.4.3.4. Xdmx with XTEST, with Xinerama, without GLX
        5.4.3.5. Xdmx with XTEST, with Xinerama, with GLX
        5.4.3.6. Conclusion
      5.4.4. Dynamic Reconfiguration
        5.4.4.1. Dynamic reconfiguration extension
        5.4.4.2. Bounding box
        5.4.4.3. Sample applications
        5.4.4.4. Additional notes
      5.4.5. Doxygen documentation
      5.4.6. Valgrind
      5.4.7. RATS