--- Michel Dänzer <[EMAIL PROTECTED]> wrote: > On Mon, 2003-07-14 at 02:59, Alex Deucher wrote: > > --- Michel Dnzer <[EMAIL PROTECTED]> wrote: > > > On Mon, 2003-07-14 at 00:34, Alex Deucher wrote: > > > > > > > however, the framebuffer on crtc1 is still shifted a few pixels > to > > > > the left when you run an opengl app in clone mode. side by > side > > > > modes work fine. everything works fine with pageflipping > disabled. > > > > > > Hmm, for a second I thought I had botched the RADEON_CRTC_OFFSET > > > calculation in the DRM as well, but it looks to me like it should > be > > > identical to that in RADEONDoAdjustFrame(). Agreed? > > > > I would think so. Should the patch [...] > > I forgot to unattach the patch, it's clearly wrong (if it was > correct, > the error would have been significant and on the y axis). Do you > agree > that in RADEONDoAdjustFrame() and radeon_cp_dispatch_flip() the same > value gets written to RADEON_CRTC_OFFSET for the same frame position? > (Note that pitch = displayWidth * <bytes per pixel>)
no. the order of operations are different. RADEONDoAdjustFrame() multiplies _all_ of base by 2, 3, or 4 while radeon_cp_dispatch_flip() only multipies x by the color_fmt. In RADEONDoAdjustFrame() you have: Base = y * info->CurrentLayout.displayWidth + x; switch (info->CurrentLayout.pixel_code) { case 15: case 16: Base *= 2; break; case 24: Base *= 3; break; case 32: Base *= 4; break; } Base &= ~7; if (pSAREAPriv->pfCurrentPage == 1) { Base += info->backOffset; } reg = RADEON_CRTC_OFFSET; OUTREG(reg, Base); in radeon_cp_dispatch_flip() you have: OUT_RING_REG( RADEON_CRTC_OFFSET, ( ( sarea->frame.y * dev_priv->front_pitch + sarea->frame.x * ( dev_priv->color_fmt -2 ) ) & ~7 ) + offset ); (I'm assuming 'offset' and 'info->backOffset' are the equivalent.) > > > > > > I created a virtual framebuffer of size 2080x480. I then started > an > > instance of glxgears and resized the window to about 3/4 of the > size of > > the frambuffer. I then started a second instance of glxgears and > > placed it next to the first instance, then resized it. it resized > fine > > until I hit the 2048 boundry, then the window (the one I was > resizing), > > went black; the first window was still showed gears. resizing > smaller, > > the gears came back when I crossed the 2048 boundry again. > > Weird, I don't understand what would cause the window to go blank. > What > happens when you enlarge a single window beyond 2048, does it go > blank > as well, or is the rendering cropped to 2048? In the latter case I > suspect this is a different problem. > I haven't tried this myself, but see Rich's email. I'll try it tonight. 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