On Fri, 2003-07-11 at 18:10, Alex Deucher wrote: > 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,
Can you elaborate on these? > 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? No, dev_priv->sarea_priv->crtc2_base is supposed to take the CRTC2 frame position into account. The X server driver must set it correctly in MergedFB mode, should be easy looking at the clone code. > 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. In X terminology, a cliprect is a rectangular area which is visible. This translates pretty well into the chip scissor registers. The DRM basically does in pseudo-code: foreach ( cliprect ) { write cliprect coordinates into scissor registers; flush primitives; } > I'm not sure I understand how this fits with the maximum size of the 3D > context. The scissor registers seem to be the limiting factor as they only take 12 bits for each dimension of size and position of the rectangle. > I assume each 3D context has some number of clip rects > associated with it (at least one?). Exactly, in fact this is true for every window. > 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? Exactly. > I guess I can't quite see how all this is supposed to work together. I know the feeling. :) You seem to be on the right track though. > Also what source files should I look in to mess with this? As I said above, I believe DRIGetDrawableInfo() in programs/Xserver/GL/dri/dri.c to be the place. -- Earthling Michel Dänzer \ Debian (powerpc), XFree86 and DRI developer Software libre enthusiast \ http://svcs.affero.net/rm.php?r=daenzer ------------------------------------------------------- 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