A couple of questions have come up in my mind as I've been looking
throught the DRM code.  In radeon_sarea.h, there is this line:
    int crtc2_base;             /* for pageflipping with CloneMode */

I've also noticed references to crtc2 in the 
xc/programs/Xserver/hw/xfree86/os-support/shared/drm/kernel/radeon*
tree.

The comments regarding this code are a bit sparce and seem to imply
that the support was added for clone mode.  Mergedfb works similarly to
clone mode, however there are some differences; for instance if you
have two heads side by side.  3D seems to work pretty well in mergedfb
mode, but there are a few little issues, and I'm wondering if they need
to be considered in the drm code (possibly for pageflipping).  this
snippet here seems like it might need updating (radeon_state.c):

        RADEON_WAIT_UNTIL_3D_IDLE();
        OUT_RING_REG( RADEON_CRTC_OFFSET, ( ( sarea->frame.y *
dev_priv->front_pitch
                                              + sarea->frame.x 
                                              * ( dev_priv->color_fmt - 2 ) ) & ~7 )
                                          + offset );
        OUT_RING_REG( RADEON_CRTC2_OFFSET, dev_priv->sarea_priv->crtc2_base
                                           + offset );

        ADVANCE_RING();

Should crtc2 take into account the sarea stuff that crtc1 does?  Sorry
if this is a simple question, I'm still trying to get my mind around
how all this 3D stuff interacts.

The other issue is how to add additional cliprects to make 3D work for
contexts larger than 2048x2048.  Michel made this comment:

--------------------

AFAICS the cliprects are generated in the X server dri module, in
DRIGetDrawableInfo(). A rough plan would be:

      * dri module: add support for maximum cliprect size and position,
        and split the cliprects in DRIGetDrawableInfo() if necessary
      * radeon driver (or any driver simlarly, for that matter):
              * if we're dealing with the new dri module (detected via
                module version or presence/absence of new symbols), set
                the maximum supported cliprect size and position, and
                disable the DRI if the framebuffer size exceeds 4096 
(or
                whatever the correct limit will be) horizontally or
                vertically
              * otherwise, disable the DRI if the framebuffer size
                exceeds 2048 horizontally or vertically.

Of course, I'd first hack in support for splitting the cliprects to
verify that it actually works as intended.

----------------------------

what exactly is a cliprect?  I've read over the FAQ and the source and
it seems to define a clipping region if you have overlapping windows. 
I'm not sure I understand how this fits with the maximum size of the 3D
context.   I assume each 3D context has some number of clip rects
associated with it (at least one?).  Does the cliprect define the 3D
region? so basically, the code would have to check the size of the 3D
region requested and if it was wider or taller than 2048, it would
allocate an additional cliprect?  I guess I can't quite see how all
this is supposed to work together.  Also what source files should I
look in to mess with this?  I apologizer if I'm getting the terms mixed
up.

Thanks,

Alex

__________________________________
Do you Yahoo!?
SBC Yahoo! DSL - Now only $29.95 per month!
http://sbc.yahoo.com


-------------------------------------------------------
This SF.Net email sponsored by: Parasoft
Error proof Web apps, automate testing & more.
Download & eval WebKing and get a free book.
www.parasoft.com/bulletproofapps1
_______________________________________________
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to