On Tue, 11 Jan 2005 17:47:31 +0100, Roland Scheidegger <[EMAIL PROTECTED]> wrote: > Alex Deucher wrote: > > On Mon, 10 Jan 2005 23:41:55 -0500, Michel Dänzer <[EMAIL PROTECTED]> wrote: > > > >>On Wed, 2005-01-05 at 09:27 -0500, Alex Deucher wrote: > >> > >>>Ok, so last night I think I figured out why pageflipping was borked > >>>with mergedfb. Unfortunately the fix requires changes to the drm and > >>>sarea. I'm wondering what the best way to do this is and maintain > >>>compatability. When crtc1 is at offset 0 pageflipping should work > >>>with a simple patch to radeon_driver.c::RadeonDoAdjustframe(). the > >>>backbuffer offset was being added to the base address after the > >>>crtc2_base info was updated in the sarea. That's an easy fix. > >> > >>For what? radeon_cp_dispatch_flip() adds the offset before writing the > >>CRTC(2)_OFFSET registers? > >> > > > > > > you're right. > > > > > >>>For situations where crtc2 is at offset 0 and crtc1 is at a higher offset, > >>>changes to the drm and sarea are required. I think the easiest > >>>solution would be to add a crtc1_base to the sarea and update that in > >>>RadeonDoAdjustframe() just like crtc2_base. The problem is that in > >>>the drm in radeon_state.c::radeon_cp_dispatch_flip() the offset of > >>>crtc1 is calculated from the sarea frame info which could be crtc1 or > >>>crtc2 depending on their orientation. It should really be calcluated > >>>in RadeonDoAdjustframe() just like crtc2 base. > >> > >>Why don't you make sure the frame info is set the way the DRM expects it > >>instead? > > > > > > > > That's a good idea. The code in the drm should work fine with a small > > modification to the DDX, the problem is values in the in the sarea > > that get set in the DDX never make it to the drm. I did some testing > > of this solution last night and the values I set in the DDX never make > > it to the drm. I'm not sure why; I'm not yet that familiar with the > > drm. Everything works fine if I hard code the offsets in the dispatch > > pageflip function in the drm. Does any one have any ideas? > > > > Alex > > Are you trying to fix up the frame.y and frame.x values in the sarea in > ddx? This will probably not work, since _DRIAdjustFrame (in dri.c) will > overwrite them right after that. Though I don't know if this is actually > always called, or only if a 3d client is running. >
hmm, that could cause other problems... That still doesn't explain why crtc2_base doesn't make it to the drm properly though, unless that gets messed with elsewhere as well. Alex > Roland > ------------------------------------------------------- The SF.Net email is sponsored by: Beat the post-holiday blues Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt -- _______________________________________________ Dri-devel mailing list Dri-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/dri-devel