On Tue, Mar 25, 2014 at 7:57 PM, Brian Paul <bri...@vmware.com> wrote: > On 03/25/2014 05:23 PM, Ilia Mirkin wrote: >> >> Signed-off-by: Ilia Mirkin <imir...@alum.mit.edu> >> --- >> >> v1 -> v2: add docs section to context.rst >> >> src/gallium/docs/source/context.rst | 5 +++++ >> src/gallium/include/pipe/p_context.h | 11 +++++++++++ >> 2 files changed, 16 insertions(+) >> >> 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. >> > > Looking ahead a bit, if/when we support GL_ARB_clear_texture I wonder if > we'll want to have just one pipe_context function for both purposes. > We'd probably replace offset and size above with a mipmap level and > x,y,z,w,h,d parameters. > > Do you have any thoughts on that?
I actually already sent a set of ARB_clear_texture patches earlier (e.g.http://patchwork.freedesktop.org/patch/21593/). And I discussed the single callback vs multiple callbacks thing with Marek on IRC -- he convinced me that having 2 separate callbacks would be better. My reasoning there is that at least for nouveau, we'd still want to have a separate "if PIPE_BUFFER: do this, else, do that" bit, and a shared bit. It seems reasonable to have 2 diff callbacks esp since their parameters are going to be reasonably different. (Instead of x,y,z,w,h,d, I think a box makes sense. But same basic idea.) -ilia _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev