gallium/docs: document conditional rendering
authorBrian Paul <brianp@vmware.com>
Thu, 21 Jan 2010 18:52:36 +0000 (11:52 -0700)
committerBrian Paul <brianp@vmware.com>
Thu, 21 Jan 2010 18:52:36 +0000 (11:52 -0700)
src/gallium/docs/source/context.rst

index d394f5b4f1b82643196501eae1695ba00bdefaa0..b7b625d25eed2b0c0b277edb2eaa268ce8bdcd96 100644 (file)
@@ -149,6 +149,42 @@ Queries can be created with ``create_query`` and deleted with
 use ``end_query`` to stop the query. Finally, ``get_query_result`` is used
 to retrieve the results.
 
+A common type of query is the occlusion query which counts the number of
+fragments/pixels which are written to the framebuffer (and not culled by
+Z/stencil/alpha testing or shader KILL instructions).
+
+
+Conditional Rendering
+^^^^^^^^^^^^^^^^^^^^^
+
+A drawing command can be skipped depending on the outcome of a query
+(typically an occlusion query).  The ``render_condition`` function specifies
+the query which should be checked prior to rendering anything.
+
+If ``render_condition`` is called with ``query`` = NULL, conditional
+rendering is disabled and drawing takes place normally.
+
+If ``render_condition`` is called with a non-null ``query`` subsequent
+drawing commands will be predicated on the outcome of the query.  If
+the query result is zero subsequent drawing commands will be skipped.
+
+If ``mode`` is PIPE_RENDER_COND_WAIT the driver will wait for the
+query to complete before deciding whether to render.
+
+If ``mode`` is PIPE_RENDER_COND_NO_WAIT and the query has not yet
+completed, the drawing command will be executed normally.  If the query
+has completed, drawing will be predicated on the outcome of the query.
+
+If ``mode`` is PIPE_RENDER_COND_BY_REGION_WAIT or
+PIPE_RENDER_COND_BY_REGION_NO_WAIT rendering will be predicated as above
+for the non-REGION modes but in the case that an occulusion query returns
+a non-zero result, regions which were occluded may be ommitted by subsequent
+drawing commands.  This can result in better performance with some GPUs.
+Normally, if the occlusion query returned a non-zero result subsequent
+drawing happens normally so fragments may be generated, shaded and
+processed even where they're known to be obscured.
+
+
 Flushing
 ^^^^^^^^