summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2013-02-04 21:23:45 +0100
committerWladimir J. van der Laan <laanwj@gmail.com>2013-02-07 18:13:37 +0100
commit72a841745eea6f3a4b4e857d7534b1b6dccb5d53 (patch)
treebc9440d44c882f836923dc5b2a41068ee79c3458 /doc
parentcf4bd4b6123ae7b2df8f7ea9a05b42b367b29e73 (diff)
gallium state: running prototype
Diffstat (limited to 'doc')
-rw-r--r--doc/hardware.md4
-rw-r--r--doc/kernel_interface.md10
2 files changed, 9 insertions, 5 deletions
diff --git a/doc/hardware.md b/doc/hardware.md
index fd67c97..dd327a7 100644
--- a/doc/hardware.md
+++ b/doc/hardware.md
@@ -57,14 +57,14 @@ Functional blocks, indicated by two-letter abbreviations:
- FE Graphics Pipeline Front End (also: DMA engine, Fetch Engine)
- PE Pixel Engine (can be version 1.0 / 2.0)
-- SH SHader (up to 256 threads per shader)
+- SH SHader (vertex + pixel)
- PA Primitive Assembly (clipping, perspective division, viewport transformation)
- SE Setup Engine (depth offset, scissor, clipping)
- RA RAsterizer (multisampling, clipping, culling, varying interpolation, generate fragments)
- TX Texture
- VG Vector Graphics
- IM ? (unknown bit in idle state, may group a few other modules, or maybe the 2D DE)
-- FP Fragment Processor (not available, probably was present in older GLES1 HW)
+- FP Fragment Processor?
- MC Memory Controller
- HI Host Interface
- DE 2D drawing and scaling engine
diff --git a/doc/kernel_interface.md b/doc/kernel_interface.md
index 662a195..3c81471 100644
--- a/doc/kernel_interface.md
+++ b/doc/kernel_interface.md
@@ -6,7 +6,7 @@ Module parameters
The exact module parameters available depend on the kernel driver version
(see respective `gc_hal_kernel_driver.c`). Important initialisation parameters are,
-along with the values on my device:
+along with the values on a RK2918 device:
baseAddress 0 Physical memory base address
signal 48 Realtime signal to use for kernel-user communication (only used if USE_NEW_LINUX_SIGNAL)
@@ -27,6 +27,7 @@ communicate with the GPU hardware. They depend on the board, not on the GPU. For
The `dove` (cubox) driver also has a `gpu_frequency` parameter that sets the AXICLK/GCCLK clock at startup,
if compiled with `ENABLE_GPU_CLOCK_BY_DRIVER`. Some devices may need this, although not the CuBox itself (it is disabled in the makefile).
+In that case your GPU will have an entry `GC` in `/proc/clocks`.
User to kernel interface
========================
@@ -36,6 +37,8 @@ At startup, the application connects to galcore device using `open` with the dev
- `/dev/galcore`, or
- `/dev/graphics/galcore`
+Immediately after connecting the entire chunk of contiguous memory, after requesting its address and size, is mapped into user space using `mmap`.
+
Ioctl
-------
@@ -183,7 +186,8 @@ Signals can be scheduled to be signalled/unsignalled when the GPU finished a cer
They are also used for inter-thread synchronization by the EGL driver.
The event queue effectively schedules kernel operations to happen in the future, when the GPU has finished processing the currently
-committed command buffers.
+committed command buffers. This can be used to implement, for example, a fenced free that will release a buffer as soon as the GPU
+is finished with it.
Events queues are sent to the kernel using the command `HAL_EVENT_COMMIT`. Types of interfaces that can be sent using an event are:
@@ -240,7 +244,7 @@ See `native/replay` tests for details.
Context switching
==================
-Clients manage their own context, which is passed to COMMIT in case a context switch is needed.
+Clients manage their own context, which is passed to COMMIT preemptively in case a context switch is needed.
It appears that context switching is manual. Every process has to keep its own context structure for
context switching, and pass this to COMMIT. In case this is needed the kernel will then load the state