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