-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Brian Paul wrote:

> 1. I'd like an allocator that can be used outside/independent of the
> Xserver.  Specifically, an allocator that EGL and EGL drivers can use.
> 
> 2. There needs to be a way to share memory blocks between processes.

So that an off-screen "window" could be shared by the X-server and the
client-side driver?  The current designs don't really account for that.
 I suspect that this would just require a way to associate multiple
process IDs with a region ID (see below).  The does change the way we'd
have to manage region IDs.  Hmm...

> 3. Blocks should get automatically freed when the process that creates
> them terminates (unless they're shared w/ another process, perhaps).
> 
> 4. Blocks should probably be named by an opaque handle.  That might help
> to support some kind of simple security model plus allow memory blocks
> to be relocated, etc.
> 
> 5. Blocks would have to be locked in some manner while they were
> actually in use.  We don't want to move a texture image while it's being
> used.
> 
> 6. There should be a mechanism for the allocator to notify a process
> when one of its blocks is moved/ejected/changed.

In the prototype code that I posted to the list several months ago,
these four things were handled together.  Each object has an associated
"region ID".  The region IDs are allocated to a process by the kernel,
and they can therefore be reclaimed when the process dies.

When a process wants to use a region, it calls a function to conver the
region ID to an address.  Two functions exist.  One converts the region
ID to a CPU address, and the other, with the help of a device-specific
callback, converts the region ID to a card address.  This commits the
object to memory.

After an object is committed to memory, another function is called to
get a list of "dirty" ranges in the region.  These are portions of the
region that need to be restored.  In the original design the commit
routine would automatically have the kernel restore precious regions.
Since we've made the change that user-mode provides the kernel with
backing store for the region, this is no longer necessary.  The
user-mode driver restores precious regions just like other regions.

I had all this spread into 3 layers.  There's a kernel layer, a
device-independent user-mode layer, and a device-dependent user-mode
layer.  Almost everything should be doable in the device-independent
user-mode layer.

> 7. The public interface to the allocator should be OS-independent so
> that it can be implemented on Linux, FreeBSD, etc.  Perhaps the public
> API would be exposed through a library which wraps an OS-specific
> interface based on ioctls, etc.
> 
> 8. Try to keep both the interface and implementation as simple as
> possible with an eye toward future extensions.
> 
> 
> I think it would be worthwhile to start a specification document for
> this project (or perhaps a wiki page) where the requirements, issues and
> proposed interface could be recorded.  Any volunteers?

Yeah.  We've got discussions going on in enough different places that we
really need to gather all the information in one place.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.6 (GNU/Linux)

iD8DBQFDDJaaX1gOwKyEAw8RAtysAJsEIE/lB535melOceIMEI2vWJuIWwCdGsQd
9TmFEh93cMn9WDuT/tNqp3U=
=ejuh
-----END PGP SIGNATURE-----


-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
--
_______________________________________________
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to