diff options
Diffstat (limited to 'src/mesa')
| -rw-r--r-- | src/mesa/pipe/i915simple/i915_prim_vbuf.c | 2 | ||||
| -rw-r--r-- | src/mesa/pipe/p_defines.h | 8 | ||||
| -rw-r--r-- | src/mesa/pipe/p_winsys.h | 44 | ||||
| -rw-r--r-- | src/mesa/state_tracker/st_atom_constbuf.c | 2 | ||||
| -rw-r--r-- | src/mesa/state_tracker/st_cb_bufferobjects.c | 2 | ||||
| -rw-r--r-- | src/mesa/state_tracker/st_draw.c | 4 | 
6 files changed, 42 insertions, 20 deletions
| diff --git a/src/mesa/pipe/i915simple/i915_prim_vbuf.c b/src/mesa/pipe/i915simple/i915_prim_vbuf.c index 08ac5b672c..571ad40595 100644 --- a/src/mesa/pipe/i915simple/i915_prim_vbuf.c +++ b/src/mesa/pipe/i915simple/i915_prim_vbuf.c @@ -99,7 +99,7 @@ i915_vbuf_render_allocate_vertices( struct vbuf_render *render,     /* FIXME: handle failure */     assert(!i915->vbo); -   i915->vbo = winsys->buffer_create(winsys, 64); +   i915->vbo = winsys->buffer_create(winsys, 64, 0, 0);     winsys->buffer_data( winsys, i915->vbo,                           size, NULL,                           I915_BUFFER_USAGE_LIT_VERTEX ); diff --git a/src/mesa/pipe/p_defines.h b/src/mesa/pipe/p_defines.h index a853605486..8dce3aba90 100644 --- a/src/mesa/pipe/p_defines.h +++ b/src/mesa/pipe/p_defines.h @@ -170,8 +170,12 @@  /**   * Buffer access flags   */ -#define PIPE_BUFFER_FLAG_READ    0x1 -#define PIPE_BUFFER_FLAG_WRITE   0x2 +#define PIPE_BUFFER_FLAG_READ         0x1 +#define PIPE_BUFFER_FLAG_WRITE        0x2 +#define PIPE_BUFFER_FLAG_MEM_LOCAL    0x4 +#define PIPE_BUFFER_FLAG_CACHED       0x8 +#define PIPE_BUFFER_FLAG_CUSTOM       (1<<16) +  /** diff --git a/src/mesa/pipe/p_winsys.h b/src/mesa/pipe/p_winsys.h index 438e8bdb63..f46807995d 100644 --- a/src/mesa/pipe/p_winsys.h +++ b/src/mesa/pipe/p_winsys.h @@ -59,6 +59,7 @@ struct pipe_surface;  /** Opaque type */  struct pipe_buffer_handle; +struct pipe_fence_handle;  struct pipe_winsys  { @@ -104,8 +105,10 @@ struct pipe_winsys      * systems must then implement that interface (rather than the      * other way around...).      */ -   struct pipe_buffer_handle *(*buffer_create)(struct pipe_winsys *sws,  -					       unsigned alignment ); +   struct pipe_buffer_handle *(*buffer_create)( struct pipe_winsys *sws,  +					        unsigned alignment, +                                                unsigned flags, +                                                unsigned hint );     /** Create a buffer that wraps user-space data */     struct pipe_buffer_handle *(*user_buffer_create)(struct pipe_winsys *sws,  @@ -136,24 +139,39 @@ struct pipe_winsys      * usage argument is only an optimization hint, not a guarantee, therefore       * proper behavior must be observed in all circumstances.      */ -   void (*buffer_data)(struct pipe_winsys *sws,  +   int (*buffer_data)(struct pipe_winsys *sws,   		       struct pipe_buffer_handle *buf,  		       unsigned size, const void *data,  		       unsigned usage);     /** Modify some or all of the data contained in a buffer's data store */ -   void (*buffer_subdata)(struct pipe_winsys *sws,  -			  struct pipe_buffer_handle *buf, -			  unsigned long offset,  -			  unsigned long size,  -			  const void *data); +   int (*buffer_subdata)(struct pipe_winsys *sws,  +                         struct pipe_buffer_handle *buf, +                         unsigned long offset,  +                         unsigned long size,  +                         const void *data);     /** Query some or all of the data contained in a buffer's data store */ -   void (*buffer_get_subdata)(struct pipe_winsys *sws,  -			      struct pipe_buffer_handle *buf, -			      unsigned long offset,  -			      unsigned long size,  -			      void *data); +   int (*buffer_get_subdata)(struct pipe_winsys *sws,  +                             struct pipe_buffer_handle *buf, +                             unsigned long offset,  +                             unsigned long size,  +                             void *data); + + +   void (*fence_reference)( struct pipe_winsys *sws, +                            struct pipe_fence_handle **ptr, +                            struct pipe_fence_handle *fence ); + +   int (*fence_signalled)( struct pipe_winsys *sws, +                           struct pipe_fence_handle *fence, +                           unsigned flag ); + + +   int (*fence_finish)( struct pipe_winsys *sws, +                        struct pipe_fence_handle *fence, +                        unsigned flag ); +  }; diff --git a/src/mesa/state_tracker/st_atom_constbuf.c b/src/mesa/state_tracker/st_atom_constbuf.c index 446250c226..57f5ec68d2 100644 --- a/src/mesa/state_tracker/st_atom_constbuf.c +++ b/src/mesa/state_tracker/st_atom_constbuf.c @@ -70,7 +70,7 @@ void st_upload_constants( struct st_context *st,        _mesa_load_state_parameters(st->ctx, params);        if (!cbuf->buffer)    -	 cbuf->buffer = ws->buffer_create(ws, 1); +	 cbuf->buffer = ws->buffer_create(ws, 1, 0, 0);        if (0)        { diff --git a/src/mesa/state_tracker/st_cb_bufferobjects.c b/src/mesa/state_tracker/st_cb_bufferobjects.c index 99e1eb3c7a..872248cdb5 100644 --- a/src/mesa/state_tracker/st_cb_bufferobjects.c +++ b/src/mesa/state_tracker/st_cb_bufferobjects.c @@ -63,7 +63,7 @@ st_bufferobj_alloc(GLcontext *ctx, GLuint name, GLenum target)     _mesa_initialize_buffer_object(&st_obj->Base, name, target); -   st_obj->buffer = st->pipe->winsys->buffer_create( st->pipe->winsys, 32 ); +   st_obj->buffer = st->pipe->winsys->buffer_create( st->pipe->winsys, 32, 0, 0 );     return &st_obj->Base;  } diff --git a/src/mesa/state_tracker/st_draw.c b/src/mesa/state_tracker/st_draw.c index 32dcd73c46..0a5725ae6a 100644 --- a/src/mesa/state_tracker/st_draw.c +++ b/src/mesa/state_tracker/st_draw.c @@ -95,7 +95,7 @@ static void  create_default_attribs_buffer(struct st_context *st)  {     struct pipe_context *pipe = st->pipe; -   st->default_attrib_buffer = pipe->winsys->buffer_create( pipe->winsys, 32 ); +   st->default_attrib_buffer = pipe->winsys->buffer_create( pipe->winsys, 32, 0, 0 );  } @@ -288,7 +288,7 @@ st_draw_vertices(GLcontext *ctx, unsigned prim,     }     /* XXX create one-time */ -   vbuf = pipe->winsys->buffer_create(pipe->winsys, 32); +   vbuf = pipe->winsys->buffer_create(pipe->winsys, 32, 0, 0);     pipe->winsys->buffer_data(pipe->winsys, vbuf,                                vertex_bytes, verts,                               PIPE_BUFFER_USAGE_VERTEX); | 
