Index:
[thread]
[date]
[subject]
[author]
From: Jos Hulzink <josh@stack.nl>
To : GGI Development <ggi-develop@eskimo.com>
Date: Wed, 4 Aug 1999 14:08:37 +0200 (CEST)
Accelleration: A summary
Hi,
I hope this message is not seen as conclusion, but I had to get the huge
amount of mails on this topic clear to me and I want to know if I'm right:
Ping-Pong buffers are implemented by taking two memory pages (isn't that a
little huge for 2D accelleration ?). One of the pages is mapped into user
space, the other only in kernel space. For this needs segfault trapping in
the kernel, KGICON is not suitable, but KGI is the way to go.
User level drivers get a remapped region, with size 2x the memory page
size. This mmapped region is defined by a base pointer. Writes to this
region are done in linear (increasing) order with wrap around after 2x
memory page size, like:
Offset = (Offset + CommandSize) & (2 * Pagesize - 1)
Each time a write is done at the start of a new page (that is at offset
"0" and "Pagesize"), a PageFault is generated (caused by the fact that the
kerneldriver has unmapped that page). This pagefault is caught by the
kernel driver which maps the page, unmaps the other page, and tells some
accellerator procedure it has work to do. That procedure takes the data of
the unmapped page and does something with that data.
The data can consist of two things:
1) Commandstructures which have to be interpreted by the kernel
driver. Negative item here is that this makes the kernel accellerator
bigger compared with the 2nd option. Positive is that the kernel only has
to check coordinates for security (If this can crash the system,
otherwise even that might be omitted). Note here from me: 2D accelleration
in kernel doesn't take that much space, see for example the ViRGE
kgicon driver.
2) A list of registers and data. Positive here is that the kernel driver
can be very small, for no interpretation is needed. Negative is that the
register and data must be checked. (No DMA commands allowed, maybe
coordinate checking if this can crash the video chipset)
Am I right so far ?
Jos
------------------------------------------------------------------------------
The best accelerator for a computer running MS Windows is FREE and called
gravity.
Index:
[thread]
[date]
[subject]
[author]