>From 4b762d4cbb443387ae6e072a701f5a70e7196c9f Mon Sep 17 00:00:00 2001
From: Lauri Kasanen <c...@gmx.com>
Date: Tue, 16 Aug 2011 16:09:57 +0300
Subject: [PATCH 04/12] pp: Docs


Signed-off-by: Lauri Kasanen <c...@gmx.com>
---
 src/gallium/auxiliary/postprocess/ADDING |   87 ++++++++++++++++++++++++++++++
 1 files changed, 87 insertions(+), 0 deletions(-)
 create mode 100644 src/gallium/auxiliary/postprocess/ADDING

diff --git a/src/gallium/auxiliary/postprocess/ADDING 
b/src/gallium/auxiliary/postprocess/ADDING
new file mode 100644
index 0000000..3735835
--- /dev/null
+++ b/src/gallium/auxiliary/postprocess/ADDING
@@ -0,0 +1,87 @@
+How to add a new post-processing filter
+=======================================
+
+The Gallium post-processing queue works by passing the current screen to a 
fragment shader.
+These shaders may be written in any supported language, but are added here in 
TGSI text
+assembly.
+
+You can translate GLSL/ARB fairly easily via llvmpipe (LP_DEBUG=tgsi). I don't 
know the
+status of the D3D state tracker, but if/when that works, I'd assume HLSL would 
be possible
+too.
+
+
+
+Steps
+=====
+
+1. Add it to PP
+2. Make it known to PP
+3. Make it known to driconf
+4. ????
+5. Profit
+
+
+
+
+1. Add it to PP
+---------------
+
+Once you have the shader(s) in TGSI asm, put them to static const char arrays 
in a header
+file (see pp_colors.h).
+
+Add the filter's prototypes (main and init functions) to postprocess.h. This 
is mostly a
+copy-paste job with only changing the name.
+
+Then create a file containing empty main and init functions, named as you 
specified above.
+See pp_colors.c for an example.
+
+
+
+2. Make it known to PP
+----------------------
+
+Add your filter to filters.h, in a correct place. Placement is important, AA 
should usually
+be the last effect in the queue for example.
+
+Name is the config option your filter will be enabled by, both in driconf and 
as an env var.
+
+Inner temp means an intermediate framebuffer you may use in your filter to 
store
+results between passes. If you have a single-pass filter, request 0 of those.
+
+Shaders is the number of shaders your filter needs. The minimum is 2.
+
+
+You could also write the init and main functions now. If your filter is 
single-pass without
+a vertex shader and any other input than the main screen, you can use 
pp_nocolor as your
+main function as is.
+
+
+
+3. Make it known to driconf
+---------------------------
+
+First time outside of auxiliary/postprocess. First, add a suitable description 
to
+drivers/dri/common/xmlpool/t_options.h, and regenerate options.h by running 
make in that
+directory. Use the name you put into filters.h as the config option name.
+
+With driconf aware of the option, make Gallium aware of it too. Add it to
+state_trackers/dri/common/dri_screen.c in a proper section, specifying its 
default value and
+the accepted range (if applicable).
+
+Do check that __driNConfigOptions is still correct after the addition.
+
+
+
+4. ????
+-------
+
+Testing, praying, hookers, blow, sacrificial lambs...
+
+
+
+5. Profit
+---------
+
+Assuming you got here, sharing is caring. Send your filter to mesa-dev.
+
+
-- 
1.7.2.1

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to