locking memory ranges with the exa memory manager

Alex Deucher alexdeucher at gmail.com
Wed Aug 10 07:25:29 PDT 2005


Unless I'm missing something, I think exa needs a function to set the
number and size of offscreen memory pools.  In porting exa to savage,
I'm having a hard time preventing the exa memory manager from using
the back/depth/texture buffers, etc.  XAA allows you to pass a boxrect
to the memory manager to specify the size of the offscreen memory. 
how would one do that with exa?  All I can see right now is limiting
the size of the videoram you pass to exa.

For example on savage the memory is laid out like this:

start -----------------------------------------------------------------------------
end
front | offscreen | back | depth | textures | BCI queue | hwcursor


How do I limit the exa memory manager to just the offscreen portion?

Adam and I were talking an IRC today and perhaps something like this
would be in order:

size_t available exaLockOffscreenRange(void *base, size_t length);

You could use this to pin memory ranges for exa use.  You could even
call it multiple times for sparse memory layouts.  Adam mentioned
voodoo cards that have banked texture ram or some cards that have
split FB and texture memory.  Also, it might allow you to use extended
videoram memory ranges on cards where only a portion of video ram is
host accessable.  on 256 MB radeons for example, the upper 128 MB is
only GPU accessable.  We could even add a flags field to mark certain
attributes about the range, but that may be overkill.

Thoughts?

Alex



More information about the xorg mailing list