summaryrefslogtreecommitdiffstats
path: root/src/gallium
diff options
context:
space:
mode:
authorIlia Mirkin <imirkin@alum.mit.edu>2014-03-25 17:10:54 -0400
committerIlia Mirkin <imirkin@alum.mit.edu>2014-03-31 21:20:02 -0400
commit24b86cb3047507078ae8d0e2e8943586ee85ede5 (patch)
treef348a97667ae0ba620bd14bdd0d3f972844ea533 /src/gallium
parent4c035706dc3213d835dbd592655db14732296067 (diff)
downloadexternal_mesa3d-24b86cb3047507078ae8d0e2e8943586ee85ede5.zip
external_mesa3d-24b86cb3047507078ae8d0e2e8943586ee85ede5.tar.gz
external_mesa3d-24b86cb3047507078ae8d0e2e8943586ee85ede5.tar.bz2
gallium: add interface to clear buffers
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/docs/source/context.rst5
-rw-r--r--src/gallium/include/pipe/p_context.h11
2 files changed, 16 insertions, 0 deletions
diff --git a/src/gallium/docs/source/context.rst b/src/gallium/docs/source/context.rst
index 8e14522..efa2a1c 100644
--- a/src/gallium/docs/source/context.rst
+++ b/src/gallium/docs/source/context.rst
@@ -218,6 +218,11 @@ is is also possible to only clear one or the other part). While it is only
possible to clear one surface at a time (which can include several layers),
this surface need not be bound to the framebuffer.
+``clear_buffer`` clears a PIPE_BUFFER resource with the specified clear value
+(which may be multiple bytes in length). Logically this is a memset with a
+multi-byte element value starting at offset bytes from resource start, going
+for size bytes. It is guaranteed that size % clear_value_size == 0.
+
Drawing
^^^^^^^
diff --git a/src/gallium/include/pipe/p_context.h b/src/gallium/include/pipe/p_context.h
index fe3045a..bf27285 100644
--- a/src/gallium/include/pipe/p_context.h
+++ b/src/gallium/include/pipe/p_context.h
@@ -332,6 +332,17 @@ struct pipe_context {
unsigned dstx, unsigned dsty,
unsigned width, unsigned height);
+ /**
+ * Clear a buffer. Runs a memset over the specified region with the element
+ * value passed in through clear_value of size clear_value_size.
+ */
+ void (*clear_buffer)(struct pipe_context *pipe,
+ struct pipe_resource *res,
+ unsigned offset,
+ unsigned size,
+ const void *clear_value,
+ int clear_value_size);
+
/** Flush draw commands
*
* \param flags bitfield of enum pipe_flush_flags values.