Bug 14692 - Modules need some way of controlling Xinerama visual consolidation
Summary: Modules need some way of controlling Xinerama visual consolidation
Status: RESOLVED FIXED
Alias: None
Product: xorg
Classification: Unclassified
Component: Server/General (show other bugs)
Version: git
Hardware: All All
: medium normal
Assignee: Xorg Project Team
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: xorg-7.4
  Show dependency treegraph
 
Reported: 2008-02-26 12:49 UTC by Aaron Plattner
Modified: 2008-05-12 16:44 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments
Proposed fix (4.68 KB, patch)
2008-05-04 13:51 UTC, Aaron Plattner
no flags Details | Splinter Review

Note You need to log in before you can comment on or make changes to this bug.
Description Aaron Plattner 2008-02-26 12:49:49 UTC
Git commit ee21aba6 removed PanoramiXVisualTable, which was the pre-ABI4 mechanism for drivers & modules to control Xinerama visual consolidation.  GLX (and possibly other modules) needs to be able to have a say in which visuals are considered equal in PanoramiXConsolidate.
Comment 1 Aaron Plattner 2008-05-04 13:51:58 UTC
Created attachment 16349 [details] [review]
Proposed fix

I hacked up a patch to fix this.  With this, I can get the X server to start in Xinerama with working GLX with the nvidia driver.  I didn't convert glxMatchVisual to this interface because I can't test it, but the current hack should work for now.

The global function pointer interface may not be the best way to do this.  An alternative would be a function to register a callback, and then the logic for making sure all the stakeholders agree would live in panoramiX.c.
Comment 2 Aaron Plattner 2008-05-12 16:44:58 UTC
commit 8afd1d62f6298d43367ce52f3b5612a197e99ca0
Author: Aaron Plattner <aplattner@nvidia.com>
Date:   Sun May 4 13:45:27 2008 -0700

    Bug #14692: Allow drivers to have a say in Xinerama visual consolidation.
    
    Create a new exported global variable, XineramaVisualsEqualPtr.  Use this
    pointer to decide whether two visuals are equal during visual consolidation.
    This pointer can be wrapped, which allows drivers and extensions to control
    which visuals are consolidated.  A wrapper can reject the visuals without
    calling down, but must call down and return that result if it deems the visuals
    equal.  This ensures that all layers agree that the visuals are equal.
    
    Pass the screen of the other visual into the VisualsEqual callchain.
    
    Don't free PanoramiXVisuals since we need it for PanoramiXTranslateVisualID.
    
    Don't skip the first visual on the other screen in PanoramiXMaybeAddVisual.
    
    Skip the loop in PanoramiXTranslateVisualID if screen is 0.
    (cherry picked from commit c50b5d978981b13cdb22a9ad41c1b64f90cebe51)


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.