[Mesa-dev] [PATCH 3/3] gallium: remove user_buffer_create from the interface
Jose Fonseca
jfonseca at vmware.com
Sat May 12 10:31:35 PDT 2012
Patch 2 and 3 look good to me.
I think this is a nice cleanup.
Jose
----- Original Message -----
> Nothing uses it now.
> ---
> src/gallium/auxiliary/util/u_inlines.h | 8 -----
> src/gallium/auxiliary/util/u_slab.h | 2 +-
> src/gallium/drivers/galahad/glhd_screen.c | 23 --------------
> src/gallium/drivers/i915/i915_resource.c | 1 -
> src/gallium/drivers/identity/id_screen.c | 23 --------------
> src/gallium/drivers/llvmpipe/lp_texture.c | 2 --
> src/gallium/drivers/noop/noop_pipe.c | 18 -----------
> src/gallium/drivers/nv30/nv30_resource.c | 1 -
> src/gallium/drivers/nv50/nv50_resource.c | 1 -
> src/gallium/drivers/nvc0/nvc0_resource.c | 1 -
> src/gallium/drivers/r600/r600_buffer.c | 25 ---------------
> src/gallium/drivers/r600/r600_pipe.h | 3 --
> src/gallium/drivers/r600/r600_resource.c | 1 -
> src/gallium/drivers/radeonsi/r600_buffer.c | 25 ---------------
> src/gallium/drivers/radeonsi/r600_resource.c | 1 -
> src/gallium/drivers/radeonsi/radeonsi_pipe.h | 3 --
> src/gallium/drivers/rbug/rbug_screen.c | 23 --------------
> src/gallium/drivers/softpipe/sp_texture.c | 2 --
> src/gallium/drivers/svga/svga_resource.c | 1 -
> src/gallium/drivers/trace/tr_screen.c | 44
> --------------------------
> src/gallium/include/pipe/p_screen.h | 26 ---------------
> 21 files changed, 1 insertion(+), 233 deletions(-)
>
> diff --git a/src/gallium/auxiliary/util/u_inlines.h
> b/src/gallium/auxiliary/util/u_inlines.h
> index e78cdda..ebc64a2 100644
> --- a/src/gallium/auxiliary/util/u_inlines.h
> +++ b/src/gallium/auxiliary/util/u_inlines.h
> @@ -233,14 +233,6 @@ pipe_buffer_create( struct pipe_screen *screen,
> return screen->resource_create(screen, &buffer);
> }
>
> -
> -static INLINE struct pipe_resource *
> -pipe_user_buffer_create( struct pipe_screen *screen, void *ptr,
> unsigned size,
> - unsigned usage )
> -{
> - return screen->user_buffer_create(screen, ptr, size, usage);
> -}
> -
> static INLINE void *
> pipe_buffer_map_range(struct pipe_context *pipe,
> struct pipe_resource *buffer,
> diff --git a/src/gallium/auxiliary/util/u_slab.h
> b/src/gallium/auxiliary/util/u_slab.h
> index 6b9718d..3ed8b12 100644
> --- a/src/gallium/auxiliary/util/u_slab.h
> +++ b/src/gallium/auxiliary/util/u_slab.h
> @@ -28,7 +28,7 @@
> * Good for allocations which have very low lifetime and are
> allocated
> * and freed very often. Use a profiler first to know if it's worth
> using it!
> *
> - * Candidates: get_transfer, user_buffer_create
> + * Candidates: get_transfer
> *
> * @author Marek Olšák
> */
> diff --git a/src/gallium/drivers/galahad/glhd_screen.c
> b/src/gallium/drivers/galahad/glhd_screen.c
> index 49702b6..7d03763 100644
> --- a/src/gallium/drivers/galahad/glhd_screen.c
> +++ b/src/gallium/drivers/galahad/glhd_screen.c
> @@ -222,28 +222,6 @@ galahad_screen_resource_destroy(struct
> pipe_screen *screen,
> }
>
>
> -static struct pipe_resource *
> -galahad_screen_user_buffer_create(struct pipe_screen *_screen,
> - void *ptr,
> - unsigned bytes,
> - unsigned usage)
> -{
> - struct galahad_screen *glhd_screen = galahad_screen(_screen);
> - struct pipe_screen *screen = glhd_screen->screen;
> - struct pipe_resource *result;
> -
> - result = screen->user_buffer_create(screen,
> - ptr,
> - bytes,
> - usage);
> -
> - if (result)
> - return galahad_resource_create(glhd_screen, result);
> - return NULL;
> -}
> -
> -
> -
> static void
> galahad_screen_flush_frontbuffer(struct pipe_screen *_screen,
> struct pipe_resource *_resource,
> @@ -323,7 +301,6 @@ galahad_screen_create(struct pipe_screen *screen)
> glhd_screen->base.resource_from_handle =
> galahad_screen_resource_from_handle;
> glhd_screen->base.resource_get_handle =
> galahad_screen_resource_get_handle;
> glhd_screen->base.resource_destroy =
> galahad_screen_resource_destroy;
> - glhd_screen->base.user_buffer_create =
> galahad_screen_user_buffer_create;
> glhd_screen->base.flush_frontbuffer =
> galahad_screen_flush_frontbuffer;
> glhd_screen->base.fence_reference =
> galahad_screen_fence_reference;
> glhd_screen->base.fence_signalled =
> galahad_screen_fence_signalled;
> diff --git a/src/gallium/drivers/i915/i915_resource.c
> b/src/gallium/drivers/i915/i915_resource.c
> index b4719af..253c7d0 100644
> --- a/src/gallium/drivers/i915/i915_resource.c
> +++ b/src/gallium/drivers/i915/i915_resource.c
> @@ -46,5 +46,4 @@ i915_init_screen_resource_functions(struct
> i915_screen *is)
> is->base.resource_from_handle = i915_resource_from_handle;
> is->base.resource_get_handle = u_resource_get_handle_vtbl;
> is->base.resource_destroy = u_resource_destroy_vtbl;
> - is->base.user_buffer_create = i915_user_buffer_create;
> }
> diff --git a/src/gallium/drivers/identity/id_screen.c
> b/src/gallium/drivers/identity/id_screen.c
> index a173235..ab82e29 100644
> --- a/src/gallium/drivers/identity/id_screen.c
> +++ b/src/gallium/drivers/identity/id_screen.c
> @@ -188,28 +188,6 @@ identity_screen_resource_destroy(struct
> pipe_screen *screen,
> }
>
>
> -static struct pipe_resource *
> -identity_screen_user_buffer_create(struct pipe_screen *_screen,
> - void *ptr,
> - unsigned bytes,
> - unsigned usage)
> -{
> - struct identity_screen *id_screen = identity_screen(_screen);
> - struct pipe_screen *screen = id_screen->screen;
> - struct pipe_resource *result;
> -
> - result = screen->user_buffer_create(screen,
> - ptr,
> - bytes,
> - usage);
> -
> - if (result)
> - return identity_resource_create(id_screen, result);
> - return NULL;
> -}
> -
> -
> -
> static void
> identity_screen_flush_frontbuffer(struct pipe_screen *_screen,
> struct pipe_resource *_resource,
> @@ -286,7 +264,6 @@ identity_screen_create(struct pipe_screen
> *screen)
> id_screen->base.resource_from_handle =
> identity_screen_resource_from_handle;
> id_screen->base.resource_get_handle =
> identity_screen_resource_get_handle;
> id_screen->base.resource_destroy =
> identity_screen_resource_destroy;
> - id_screen->base.user_buffer_create =
> identity_screen_user_buffer_create;
> id_screen->base.flush_frontbuffer =
> identity_screen_flush_frontbuffer;
> id_screen->base.fence_reference =
> identity_screen_fence_reference;
> id_screen->base.fence_signalled =
> identity_screen_fence_signalled;
> diff --git a/src/gallium/drivers/llvmpipe/lp_texture.c
> b/src/gallium/drivers/llvmpipe/lp_texture.c
> index 198874b..4495e8d 100644
> --- a/src/gallium/drivers/llvmpipe/lp_texture.c
> +++ b/src/gallium/drivers/llvmpipe/lp_texture.c
> @@ -1432,8 +1432,6 @@ llvmpipe_init_screen_resource_funcs(struct
> pipe_screen *screen)
> screen->resource_destroy = llvmpipe_resource_destroy;
> screen->resource_from_handle = llvmpipe_resource_from_handle;
> screen->resource_get_handle = llvmpipe_resource_get_handle;
> - screen->user_buffer_create = llvmpipe_user_buffer_create;
> -
> }
>
>
> diff --git a/src/gallium/drivers/noop/noop_pipe.c
> b/src/gallium/drivers/noop/noop_pipe.c
> index e47f944..4c233d1 100644
> --- a/src/gallium/drivers/noop/noop_pipe.c
> +++ b/src/gallium/drivers/noop/noop_pipe.c
> @@ -142,23 +142,6 @@ static void noop_resource_destroy(struct
> pipe_screen *screen,
> FREE(resource);
> }
>
> -static struct pipe_resource *noop_user_buffer_create(struct
> pipe_screen *screen,
> - void *ptr, unsigned bytes,
> - unsigned bind)
> -{
> - struct pipe_resource templ;
> -
> - templ.target = PIPE_BUFFER;
> - templ.format = PIPE_FORMAT_R8_UNORM;
> - templ.usage = PIPE_USAGE_IMMUTABLE;
> - templ.bind = bind;
> - templ.width0 = bytes;
> - templ.height0 = 1;
> - templ.depth0 = 1;
> - templ.flags = 0;
> - return noop_resource_create(screen, &templ);
> -}
> -
>
> /*
> * transfer
> @@ -392,7 +375,6 @@ struct pipe_screen *noop_screen_create(struct
> pipe_screen *oscreen)
> screen->resource_from_handle = noop_resource_from_handle;
> screen->resource_get_handle = noop_resource_get_handle;
> screen->resource_destroy = noop_resource_destroy;
> - screen->user_buffer_create = noop_user_buffer_create;
> screen->flush_frontbuffer = noop_flush_frontbuffer;
>
> return screen;
> diff --git a/src/gallium/drivers/nv30/nv30_resource.c
> b/src/gallium/drivers/nv30/nv30_resource.c
> index 6bcee4d..3d8e7d7 100644
> --- a/src/gallium/drivers/nv30/nv30_resource.c
> +++ b/src/gallium/drivers/nv30/nv30_resource.c
> @@ -61,7 +61,6 @@ nv30_resource_screen_init(struct pipe_screen
> *pscreen)
> pscreen->resource_from_handle = nv30_resource_from_handle;
> pscreen->resource_get_handle = u_resource_get_handle_vtbl;
> pscreen->resource_destroy = u_resource_destroy_vtbl;
> - pscreen->user_buffer_create = nouveau_user_buffer_create;
> }
>
> void
> diff --git a/src/gallium/drivers/nv50/nv50_resource.c
> b/src/gallium/drivers/nv50/nv50_resource.c
> index a66a6a0..9fe18a6 100644
> --- a/src/gallium/drivers/nv50/nv50_resource.c
> +++ b/src/gallium/drivers/nv50/nv50_resource.c
> @@ -103,5 +103,4 @@ nv50_screen_init_resource_functions(struct
> pipe_screen *pscreen)
> pscreen->resource_from_handle = nv50_resource_from_handle;
> pscreen->resource_get_handle = u_resource_get_handle_vtbl;
> pscreen->resource_destroy = u_resource_destroy_vtbl;
> - pscreen->user_buffer_create = nouveau_user_buffer_create;
> }
> diff --git a/src/gallium/drivers/nvc0/nvc0_resource.c
> b/src/gallium/drivers/nvc0/nvc0_resource.c
> index e8d83ca..daf5c90 100644
> --- a/src/gallium/drivers/nvc0/nvc0_resource.c
> +++ b/src/gallium/drivers/nvc0/nvc0_resource.c
> @@ -61,5 +61,4 @@ nvc0_screen_init_resource_functions(struct
> pipe_screen *pscreen)
> pscreen->resource_from_handle = nvc0_resource_from_handle;
> pscreen->resource_get_handle = u_resource_get_handle_vtbl;
> pscreen->resource_destroy = u_resource_destroy_vtbl;
> - pscreen->user_buffer_create = nouveau_user_buffer_create;
> }
> diff --git a/src/gallium/drivers/r600/r600_buffer.c
> b/src/gallium/drivers/r600/r600_buffer.c
> index 857d860..2f7eb51 100644
> --- a/src/gallium/drivers/r600/r600_buffer.c
> +++ b/src/gallium/drivers/r600/r600_buffer.c
> @@ -220,28 +220,3 @@ struct pipe_resource *r600_buffer_create(struct
> pipe_screen *screen,
> }
> return &rbuffer->b.b;
> }
> -
> -struct pipe_resource *r600_user_buffer_create(struct pipe_screen
> *screen,
> - void *ptr, unsigned bytes,
> - unsigned bind)
> -{
> - struct r600_screen *rscreen = (struct r600_screen*)screen;
> - struct r600_resource *rbuffer;
> -
> - rbuffer = util_slab_alloc(&rscreen->pool_buffers);
> -
> - pipe_reference_init(&rbuffer->b.b.reference, 1);
> - rbuffer->b.vtbl = &r600_buffer_vtbl;
> - rbuffer->b.b.screen = screen;
> - rbuffer->b.b.target = PIPE_BUFFER;
> - rbuffer->b.b.format = PIPE_FORMAT_R8_UNORM;
> - rbuffer->b.b.usage = PIPE_USAGE_IMMUTABLE;
> - rbuffer->b.b.bind = bind;
> - rbuffer->b.b.width0 = bytes;
> - rbuffer->b.b.height0 = 1;
> - rbuffer->b.b.depth0 = 1;
> - rbuffer->b.b.array_size = 1;
> - rbuffer->b.b.flags = 0;
> - rbuffer->buf = NULL;
> - return &rbuffer->b.b;
> -}
> diff --git a/src/gallium/drivers/r600/r600_pipe.h
> b/src/gallium/drivers/r600/r600_pipe.h
> index a3ec9e5..d6a9707 100644
> --- a/src/gallium/drivers/r600/r600_pipe.h
> +++ b/src/gallium/drivers/r600/r600_pipe.h
> @@ -400,9 +400,6 @@ bool r600_init_resource(struct r600_screen
> *rscreen,
> unsigned bind, unsigned usage);
> struct pipe_resource *r600_buffer_create(struct pipe_screen *screen,
> const struct pipe_resource *templ);
> -struct pipe_resource *r600_user_buffer_create(struct pipe_screen
> *screen,
> - void *ptr, unsigned bytes,
> - unsigned bind);
>
> /* r600_pipe.c */
> void r600_flush(struct pipe_context *ctx, struct pipe_fence_handle
> **fence,
> diff --git a/src/gallium/drivers/r600/r600_resource.c
> b/src/gallium/drivers/r600/r600_resource.c
> index de339e0..ef0b4ce 100644
> --- a/src/gallium/drivers/r600/r600_resource.c
> +++ b/src/gallium/drivers/r600/r600_resource.c
> @@ -50,7 +50,6 @@ void r600_init_screen_resource_functions(struct
> pipe_screen *screen)
> screen->resource_from_handle = r600_resource_from_handle;
> screen->resource_get_handle = u_resource_get_handle_vtbl;
> screen->resource_destroy = u_resource_destroy_vtbl;
> - screen->user_buffer_create = r600_user_buffer_create;
> }
>
> void r600_init_context_resource_functions(struct r600_context *r600)
> diff --git a/src/gallium/drivers/radeonsi/r600_buffer.c
> b/src/gallium/drivers/radeonsi/r600_buffer.c
> index c6b7071..8fd7e27 100644
> --- a/src/gallium/drivers/radeonsi/r600_buffer.c
> +++ b/src/gallium/drivers/radeonsi/r600_buffer.c
> @@ -178,31 +178,6 @@ struct pipe_resource *r600_buffer_create(struct
> pipe_screen *screen,
> return &rbuffer->b.b;
> }
>
> -struct pipe_resource *r600_user_buffer_create(struct pipe_screen
> *screen,
> - void *ptr, unsigned bytes,
> - unsigned bind)
> -{
> - struct r600_screen *rscreen = (struct r600_screen*)screen;
> - struct r600_resource *rbuffer;
> -
> - rbuffer = util_slab_alloc(&rscreen->pool_buffers);
> -
> - pipe_reference_init(&rbuffer->b.b.reference, 1);
> - rbuffer->b.vtbl = &r600_buffer_vtbl;
> - rbuffer->b.b.screen = screen;
> - rbuffer->b.b.target = PIPE_BUFFER;
> - rbuffer->b.b.format = PIPE_FORMAT_R8_UNORM;
> - rbuffer->b.b.usage = PIPE_USAGE_IMMUTABLE;
> - rbuffer->b.b.bind = bind;
> - rbuffer->b.b.width0 = bytes;
> - rbuffer->b.b.height0 = 1;
> - rbuffer->b.b.depth0 = 1;
> - rbuffer->b.b.array_size = 1;
> - rbuffer->b.b.flags = 0;
> - rbuffer->buf = NULL;
> - return &rbuffer->b.b;
> -}
> -
> void r600_upload_index_buffer(struct r600_context *rctx,
> struct pipe_index_buffer *ib, unsigned count)
> {
> diff --git a/src/gallium/drivers/radeonsi/r600_resource.c
> b/src/gallium/drivers/radeonsi/r600_resource.c
> index 0e861c1..d9be706 100644
> --- a/src/gallium/drivers/radeonsi/r600_resource.c
> +++ b/src/gallium/drivers/radeonsi/r600_resource.c
> @@ -50,7 +50,6 @@ void r600_init_screen_resource_functions(struct
> pipe_screen *screen)
> screen->resource_from_handle = r600_resource_from_handle;
> screen->resource_get_handle = u_resource_get_handle_vtbl;
> screen->resource_destroy = u_resource_destroy_vtbl;
> - screen->user_buffer_create = r600_user_buffer_create;
> }
>
> void r600_init_context_resource_functions(struct r600_context *r600)
> diff --git a/src/gallium/drivers/radeonsi/radeonsi_pipe.h
> b/src/gallium/drivers/radeonsi/radeonsi_pipe.h
> index bba4cf2..b16ec10 100644
> --- a/src/gallium/drivers/radeonsi/radeonsi_pipe.h
> +++ b/src/gallium/drivers/radeonsi/radeonsi_pipe.h
> @@ -384,9 +384,6 @@ bool r600_init_resource(struct r600_screen
> *rscreen,
> unsigned bind, unsigned usage);
> struct pipe_resource *r600_buffer_create(struct pipe_screen *screen,
> const struct pipe_resource *templ);
> -struct pipe_resource *r600_user_buffer_create(struct pipe_screen
> *screen,
> - void *ptr, unsigned bytes,
> - unsigned bind);
> void r600_upload_index_buffer(struct r600_context *rctx,
> struct pipe_index_buffer *ib, unsigned count);
>
> diff --git a/src/gallium/drivers/rbug/rbug_screen.c
> b/src/gallium/drivers/rbug/rbug_screen.c
> index 1b7ca7c..2471fdb 100644
> --- a/src/gallium/drivers/rbug/rbug_screen.c
> +++ b/src/gallium/drivers/rbug/rbug_screen.c
> @@ -186,28 +186,6 @@ rbug_screen_resource_destroy(struct pipe_screen
> *screen,
> rbug_resource_destroy(rbug_resource(_resource));
> }
>
> -static struct pipe_resource *
> -rbug_screen_user_buffer_create(struct pipe_screen *_screen,
> - void *ptr,
> - unsigned bytes,
> - unsigned usage)
> -{
> - struct rbug_screen *rb_screen = rbug_screen(_screen);
> - struct pipe_screen *screen = rb_screen->screen;
> - struct pipe_resource *result;
> -
> - result = screen->user_buffer_create(screen,
> - ptr,
> - bytes,
> - usage);
> -
> - if (result)
> - return rbug_resource_create(rb_screen, result);
> - return NULL;
> -}
> -
> -
> -
> static void
> rbug_screen_flush_frontbuffer(struct pipe_screen *_screen,
> struct pipe_resource *_resource,
> @@ -298,7 +276,6 @@ rbug_screen_create(struct pipe_screen *screen)
> rb_screen->base.resource_from_handle =
> rbug_screen_resource_from_handle;
> rb_screen->base.resource_get_handle =
> rbug_screen_resource_get_handle;
> rb_screen->base.resource_destroy = rbug_screen_resource_destroy;
> - rb_screen->base.user_buffer_create =
> rbug_screen_user_buffer_create;
> rb_screen->base.flush_frontbuffer =
> rbug_screen_flush_frontbuffer;
> rb_screen->base.fence_reference = rbug_screen_fence_reference;
> rb_screen->base.fence_signalled = rbug_screen_fence_signalled;
> diff --git a/src/gallium/drivers/softpipe/sp_texture.c
> b/src/gallium/drivers/softpipe/sp_texture.c
> index ee8d423..978fbe1 100644
> --- a/src/gallium/drivers/softpipe/sp_texture.c
> +++ b/src/gallium/drivers/softpipe/sp_texture.c
> @@ -506,6 +506,4 @@ softpipe_init_screen_texture_funcs(struct
> pipe_screen *screen)
> screen->resource_destroy = softpipe_resource_destroy;
> screen->resource_from_handle = softpipe_resource_from_handle;
> screen->resource_get_handle = softpipe_resource_get_handle;
> - screen->user_buffer_create = softpipe_user_buffer_create;
> -
> }
> diff --git a/src/gallium/drivers/svga/svga_resource.c
> b/src/gallium/drivers/svga/svga_resource.c
> index b86469a..890c953 100644
> --- a/src/gallium/drivers/svga/svga_resource.c
> +++ b/src/gallium/drivers/svga/svga_resource.c
> @@ -73,5 +73,4 @@ svga_init_screen_resource_functions(struct
> svga_screen *is)
> is->screen.resource_from_handle = svga_resource_from_handle;
> is->screen.resource_get_handle = u_resource_get_handle_vtbl;
> is->screen.resource_destroy = u_resource_destroy_vtbl;
> - is->screen.user_buffer_create = svga_user_buffer_create;
> }
> diff --git a/src/gallium/drivers/trace/tr_screen.c
> b/src/gallium/drivers/trace/tr_screen.c
> index fd5acbe..4a1aa99 100644
> --- a/src/gallium/drivers/trace/tr_screen.c
> +++ b/src/gallium/drivers/trace/tr_screen.c
> @@ -319,49 +319,6 @@ trace_screen_resource_destroy(struct pipe_screen
> *_screen,
> }
>
>
> -
> -/********************************************************************
> - * buffer
> - */
> -
> -
> -
> -static struct pipe_resource *
> -trace_screen_user_buffer_create(struct pipe_screen *_screen,
> - void *data,
> - unsigned size,
> - unsigned usage)
> -{
> - struct trace_screen *tr_scr = trace_screen(_screen);
> - struct pipe_screen *screen = tr_scr->screen;
> - struct pipe_resource *result;
> -
> - trace_dump_call_begin("pipe_screen", "user_buffer_create");
> -
> - trace_dump_arg(ptr, screen);
> - trace_dump_arg_begin("data");
> - trace_dump_bytes(data, size);
> - trace_dump_arg_end();
> - trace_dump_arg(uint, size);
> - trace_dump_arg(uint, usage);
> -
> - result = screen->user_buffer_create(screen, data, size, usage);
> -
> - trace_dump_ret(ptr, result);
> -
> - trace_dump_call_end();
> -
> - if(result) {
> - assert(!(result->flags & TRACE_FLAG_USER_BUFFER));
> - result->flags |= TRACE_FLAG_USER_BUFFER;
> - }
> -
> - return trace_resource_create(tr_scr, result);
> -}
> -
> -
> -
> -
> /********************************************************************
> * fence
> */
> @@ -506,7 +463,6 @@ trace_screen_create(struct pipe_screen *screen)
> tr_scr->base.resource_from_handle =
> trace_screen_resource_from_handle;
> tr_scr->base.resource_get_handle =
> trace_screen_resource_get_handle;
> tr_scr->base.resource_destroy = trace_screen_resource_destroy;
> - tr_scr->base.user_buffer_create =
> trace_screen_user_buffer_create;
> tr_scr->base.fence_reference = trace_screen_fence_reference;
> tr_scr->base.fence_signalled = trace_screen_fence_signalled;
> tr_scr->base.fence_finish = trace_screen_fence_finish;
> diff --git a/src/gallium/include/pipe/p_screen.h
> b/src/gallium/include/pipe/p_screen.h
> index 7ae7c9a..b4a7f01 100644
> --- a/src/gallium/include/pipe/p_screen.h
> +++ b/src/gallium/include/pipe/p_screen.h
> @@ -162,32 +162,6 @@ struct pipe_screen {
>
>
> /**
> - * Create a buffer that wraps user-space data.
> - *
> - * Effectively this schedules a delayed call to buffer_create
> - * followed by an upload of the data at *some point in the
> future*,
> - * or perhaps never. Basically the allocate/upload is delayed
> - * until the buffer is actually passed to hardware.
> - *
> - * The intention is to provide a quick way to turn regular data
> - * into a buffer, and secondly to avoid a copy operation if that
> - * data subsequently turns out to be only accessed by the CPU.
> - *
> - * Common example is OpenGL vertex buffers that are subsequently
> - * processed either by software TNL in the driver or by passing
> to
> - * hardware.
> - *
> - * XXX: What happens if the delayed call to buffer_create()
> fails?
> - *
> - * Note that ptr may be accessed at any time upto the time when
> the
> - * buffer is destroyed, so the data must not be freed before
> then.
> - */
> - struct pipe_resource *(*user_buffer_create)(struct pipe_screen
> *screen,
> - void *ptr,
> - unsigned bytes,
> - unsigned bind_flags);
> -
> - /**
> * Do any special operations to ensure frontbuffer contents are
> * displayed, eg copy fake frontbuffer.
> * \param winsys_drawable_handle an opaque handle that the
> calling context
> --
> 1.7.9.5
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
More information about the mesa-dev
mailing list