Does the via driver support 3D with dualhead?  It seems to.  I noticed
the following code in via_context.c:

        GLboolean saam;
        int count = 0, fbSize;
        saam = XineramaIsActive(vmesa->display);
        if (saam && vmesa->viaScreen->drixinerama) {
            vmesa->xsi = XineramaQueryScreens(vmesa->display, &count);
            /* Test RightOf or Down */
            if (vmesa->xsi[0].x_org == 0 && vmesa->xsi[0].y_org == 0) {
                if (vmesa->xsi[1].x_org == vmesa->xsi[1].width) {
                    vmesa->saam = RightOf;
                }
                else {
                    vmesa->saam = Down;
                }
            }
            /* Test LeftOf or Up */
            else if (vmesa->xsi[0].x_org == vmesa->xsi[0].width) {
                vmesa->saam = LeftOf;
            }
            else if (vmesa->xsi[0].y_org == vmesa->xsi[0].height) {
                vmesa->saam = Up;
            }
            else
                vmesa->saam = 0;
                
                    
            fbSize = vmesa->viaScreen->fbSize;
        }
        else
            vmesa->saam = 0;
    }
    
    vmesa->pSaamRects = (XF86DRIClipRectPtr)
malloc(sizeof(XF86DRIClipRectRec));    
    return GL_TRUE;

and later:

   switch (side) {
        case RightOf:
            /* full in screen 1 */
            if (vmesa->drawX >= vmesa->xsi[0].width) {
                vmesa->viaScreen->fbOffset = vmesa->viaScreen->fbSize;
                vmesa->drawX = vmesa->drawX - vmesa->xsi[1].width;
                vmesa->numClipRects = dPriv->numBackClipRects;
                vmesa->pClipRects = dPriv->pBackClipRects;
                vmesa->drawX = dPriv->backX;
                vmesa->drawY = dPriv->backY;
                vmesa->saam &= ~S0;
                vmesa->saam |= S1;
            }
            /* full in screen 0 */
            else if ((vmesa->drawX + vmesa->drawW) <= vmesa->xsi[0].width) {
                vmesa->viaScreen->fbOffset = 0;
                vmesa->saam &= ~S1;
                vmesa->saam |= S0;
            }
            /* between screen 0 && screen 1 */
            else {
                vmesa->numSaamRects = dPriv->numBackClipRects;
                vmesa->pSaamRects = dPriv->pBackClipRects;
                vmesa->drawXSaam = dPriv->backX;
                vmesa->drawYSaam = dPriv->backY;
                vmesa->viaScreen->fbOffset = 0;
                vmesa->saam |= S0;
                vmesa->saam |= S1;
            }
            break;
etc.

This looks like a an interesting approach and perhaps a better one than
mergedfb.  Correct me if I'm wrong but it looks like the code checks to
see what head should be rendered to and then adjusts the offsets and
X/Y stuff accordingly.  what does "saam" stand for?  that would help
clarify things for me.  perhaps this is a better approach for dualhead
cards going forward.  I may try and give it a shot on radeon/r200 if I
can figure out exactly how it's working.  This would also avoid the
some of the current limitations of mergedfb and the need for a
pseudo-xinerama extension in the driver.

thoughts?  has anyone actually tested this on cle266 hardware?

Alex

--- Alan Cox <[EMAIL PROTECTED]> wrote:
> - 3D now works with 2D acceleration enabled
> - Chromium BSU runs entirely
> - Window overlapping now works
> - Tuxracer works except that the initial screen has a pale brown 
>   not a pale blue background (any ideas anyone ?)
> - Most screensavers run - morph3d and pipes crash
> - Several screensavers (but not tuxracer) don't render polygons
>   that are clipped.
> 
> Code drop available at
> http://www.linux.org.uk/~alan/via-dri-20040102.tar.gz
> 
> Alan
> 
> 
>

__________________________________
Do you Yahoo!?
Find out what made the Top Yahoo! Searches of 2003
http://search.yahoo.com/top2003


-------------------------------------------------------
This SF.net email is sponsored by: IBM Linux Tutorials.
Become an expert in LINUX or just sharpen your skills.  Sign up for IBM's
Free Linux Tutorials.  Learn everything from the bash shell to sys admin.
Click now! http://ads.osdn.com/?ad_id=1278&alloc_id=3371&op=click
--
_______________________________________________
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to