radeon/r200 color tiling ddx / drm questions

Michel Dänzer michel at daenzer.net
Mon Jan 10 21:18:11 PST 2005


On Fri, 2005-01-07 at 04:10 +0100, Roland Scheidegger wrote:
> 
> The dri and drm seem fairly straightforward, though I'm not sure the way
> I handled communication between especially drm and ddx is how it's meant
> to be. dri got a bit unlucky, as ddx can't know at startup if it will be
> able to handle color tiling, so old dri together with new drm and new
> ddx will not work (correctly) (if you have enabled color tiling).

You might be able to solve this with a two-way handshake between the 3D
driver and the DDX, similar to how it's done with the DRM already. With
that, the DDX could recognize clients that can deal with tiling and
prevent others from using direct rendering.


> 1) the biggest problem is XAA's handling of graphic memory. It treats
> everything as a single big chunk of linear framebuffer.

Actually, it treats it as a rectangle of the same width as the virtual
width of the screen. The tiling should really be uniform over that whole
rectangle. A problem with that is that the hardware cursor does and the
back and depth buffers and textures may overlap with it.


> 2) I was unable to make render work with the changed x coordinates
> trick, needed to support coordinates beyond 2048. I think it should be
> possible that this works?

Maybe the calculation of the colour offset has to take the tiling into
account?


> 3) When switching from/to a resolution without tiling support,

If tiling doesn't work with all resolutions, shouldn't those resolutions
be discarded in the first place if tiling is enabled?

> everything on screen will be really wrong and needs to be redrawn. I
> guess it's somehow possible to mark everything as dirty or something
> like that? Just externally calling "xrender" doesn't sound like a good
> solution...

Maybe you could walk the window tree and generate expose events or
something like that, but that would be rather ugly.


> 5) I'm not sure how exactly fbdev (the UseFBDev option) works, but I'm
> pretty confident it won't work at all with color tiling, and I've no
> idea how you'd fix that, [...]

It's true that radeonfb doesn't enable tiling when it sets a mode, and
there's no way that I know of to tell it to do it even if it could. The
only (hackish) way I can see would be to make sure the relevant
registers are correct after calling into fbdevHW for setting the mode,
but for now I'd just disable tiling if fbdev is enabled.


-- 
Earthling Michel Dänzer      |     Debian (powerpc), X and DRI developer
Libre software enthusiast    |   http://svcs.affero.net/rm.php?r=daenzer



More information about the xorg mailing list