[Mesa-dev] [PATCH 01/10] gallium: add a common uploader to pipe_context
Roland Scheidegger
sroland at vmware.com
Fri Jan 27 14:38:44 UTC 2017
Am 27.01.2017 um 12:02 schrieb Marek Olšák:
> From: Marek Olšák <marek.olsak at amd.com>
>
> For lower memory usage and more efficient updates of the buffer residency
> list. (e.g. if drivers keep seeing the same buffer for many consecutive
> "add" calls, the calls can be turned into no-ops trivially)
> ---
> src/gallium/include/pipe/p_context.h | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/src/gallium/include/pipe/p_context.h b/src/gallium/include/pipe/p_context.h
> index 45098c9..5876968 100644
> --- a/src/gallium/include/pipe/p_context.h
> +++ b/src/gallium/include/pipe/p_context.h
> @@ -69,33 +69,40 @@ struct pipe_stream_output_target;
> struct pipe_surface;
> struct pipe_transfer;
> struct pipe_vertex_buffer;
> struct pipe_vertex_element;
> struct pipe_video_buffer;
> struct pipe_video_codec;
> struct pipe_viewport_state;
> struct pipe_compute_state;
> union pipe_color_union;
> union pipe_query_result;
> +struct u_upload_mgr;
>
> /**
> * Gallium rendering context. Basically:
> * - state setting functions
> * - VBO drawing functions
> * - surface functions
> */
> struct pipe_context {
> struct pipe_screen *screen;
>
> void *priv; /**< context private data (for DRI for example) */
> void *draw; /**< private, for draw module (temporary?) */
>
> + /**
> + * Stream uploader created by the driver. All drivers, state trackers, and
> + * modules should use it.
> + */
> + struct u_upload_mgr *stream_uploader;
> +
> void (*destroy)( struct pipe_context * );
>
> /**
> * VBO drawing
> */
> /*@{*/
> void (*draw_vbo)( struct pipe_context *pipe,
> const struct pipe_draw_info *info );
> /*@}*/
>
>
I suppose this makes sense. However, this makes util interfaces
effectively part of the gallium interface, not sure how I feel about
that as this seems to violate the contract that util code is optional.
Roland
More information about the mesa-dev
mailing list