Hello,<br><br><div class="gmail_quote">On Fri, Sep 25, 2009 at 6:07 AM, Jonathan Morton <span dir="ltr">&lt;<a href="mailto:jonathan.morton@movial.com">jonathan.morton@movial.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im">On Thu, 2009-09-24 at 21:21 -0400, Michael wrote:<br>
&gt; So, yeah, EXA is unaffected. Unfortunately I can&#39;t do that on some of<br>
&gt; my hardware since there&#39;s no mappable (useful) framebuffer. Which is<br>
&gt; also one reason why I can&#39;t switch to EXA - not all hardware made for<br>
&gt; X11 can work like EXA wants it to.<br>
<br>
</div>EXA *can* cope with non-mappable framebuffers, provided you either<br>
accelerate every possible operation involving it, or (preferably) you<br>
provide a way to retrieve a copy of it to system or mappable memory.<br></blockquote><div><br></div><div>Even then I still have the problem that EXA wants to access off-screen memory in a linear way while many older once fairly high end graphics chips work with a fixed, hardcoded pitch, usually something like 2048 pixels or 8192 bytes, and no such thing as offsets in bytes - everthing is one, usually fairly large coordinate space.</div>
<div><br></div><div>Don&#39;t get me wrong, I&#39;m not saying EXA is bad or XAA is better whatever - I even wrote EXA acceleration for the Sun S24 ( the &#39;blitter&#39; has no concept of coordinates so EXA&#39;s way to access pixmaps in video RAM works just fine ) - I just happen to have a lot of hardware that can&#39;t work the EXA way without major headaches while XAA fits just fine.</div>
<div>Is there an easy way to replace EXA&#39;s off-screen memory manager with something that works like XAA&#39;s? If that was the case I&#39;d switch over to EXA in a heartbeat.</div><div><br></div><div>Also, with CRIME I can map the framebuffer, but it&#39;s not linear. It&#39;s tiled in 64kB blocks of 128 lines and depending on the colour depth, 512, 256 or 128 columns, the drawing engine sees it as three coordinate spaces of 16x16 tiles where not all tiles have to be filled in with actual memory. The pixel format is also weird - it&#39;s RGBA with alpha in the lowest byte which freaks out many X11 apps so my driver pretends it&#39;s ARGB and lets CRIME&#39;s DMA engine do the conversion. With this hardware I&#39;d actually prefer EXA if it could be taught to deal with fixed pitch off-screen memory the XAA way, the hardware can accelerate xrender ops from VRAM to VRAM just fine, having to copy alpha maps and such in every time is a waste and probably quite a performance killer since the CPU is not exactly fast by today&#39;s standards. The only thing it can&#39;t read from VRAM are monochrome masks.</div>
<div><br></div><div>have fun</div><div>Michael</div><div><br></div></div>