add fence interfaces and buffer create flags to pipe_winsys
This commit is contained in:
@@ -99,7 +99,7 @@ i915_vbuf_render_allocate_vertices( struct vbuf_render *render,
|
|||||||
|
|
||||||
/* FIXME: handle failure */
|
/* FIXME: handle failure */
|
||||||
assert(!i915->vbo);
|
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,
|
winsys->buffer_data( winsys, i915->vbo,
|
||||||
size, NULL,
|
size, NULL,
|
||||||
I915_BUFFER_USAGE_LIT_VERTEX );
|
I915_BUFFER_USAGE_LIT_VERTEX );
|
||||||
|
@@ -172,6 +172,10 @@
|
|||||||
*/
|
*/
|
||||||
#define PIPE_BUFFER_FLAG_READ 0x1
|
#define PIPE_BUFFER_FLAG_READ 0x1
|
||||||
#define PIPE_BUFFER_FLAG_WRITE 0x2
|
#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)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -59,6 +59,7 @@ struct pipe_surface;
|
|||||||
|
|
||||||
/** Opaque type */
|
/** Opaque type */
|
||||||
struct pipe_buffer_handle;
|
struct pipe_buffer_handle;
|
||||||
|
struct pipe_fence_handle;
|
||||||
|
|
||||||
struct pipe_winsys
|
struct pipe_winsys
|
||||||
{
|
{
|
||||||
@@ -104,8 +105,10 @@ struct pipe_winsys
|
|||||||
* systems must then implement that interface (rather than the
|
* systems must then implement that interface (rather than the
|
||||||
* other way around...).
|
* other way around...).
|
||||||
*/
|
*/
|
||||||
struct pipe_buffer_handle *(*buffer_create)(struct pipe_winsys *sws,
|
struct pipe_buffer_handle *(*buffer_create)( struct pipe_winsys *sws,
|
||||||
unsigned alignment );
|
unsigned alignment,
|
||||||
|
unsigned flags,
|
||||||
|
unsigned hint );
|
||||||
|
|
||||||
/** Create a buffer that wraps user-space data */
|
/** Create a buffer that wraps user-space data */
|
||||||
struct pipe_buffer_handle *(*user_buffer_create)(struct pipe_winsys *sws,
|
struct pipe_buffer_handle *(*user_buffer_create)(struct pipe_winsys *sws,
|
||||||
@@ -136,25 +139,40 @@ struct pipe_winsys
|
|||||||
* usage argument is only an optimization hint, not a guarantee, therefore
|
* usage argument is only an optimization hint, not a guarantee, therefore
|
||||||
* proper behavior must be observed in all circumstances.
|
* 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,
|
struct pipe_buffer_handle *buf,
|
||||||
unsigned size, const void *data,
|
unsigned size, const void *data,
|
||||||
unsigned usage);
|
unsigned usage);
|
||||||
|
|
||||||
/** Modify some or all of the data contained in a buffer's data store */
|
/** Modify some or all of the data contained in a buffer's data store */
|
||||||
void (*buffer_subdata)(struct pipe_winsys *sws,
|
int (*buffer_subdata)(struct pipe_winsys *sws,
|
||||||
struct pipe_buffer_handle *buf,
|
struct pipe_buffer_handle *buf,
|
||||||
unsigned long offset,
|
unsigned long offset,
|
||||||
unsigned long size,
|
unsigned long size,
|
||||||
const void *data);
|
const void *data);
|
||||||
|
|
||||||
/** Query some or all of the data contained in a buffer's data store */
|
/** Query some or all of the data contained in a buffer's data store */
|
||||||
void (*buffer_get_subdata)(struct pipe_winsys *sws,
|
int (*buffer_get_subdata)(struct pipe_winsys *sws,
|
||||||
struct pipe_buffer_handle *buf,
|
struct pipe_buffer_handle *buf,
|
||||||
unsigned long offset,
|
unsigned long offset,
|
||||||
unsigned long size,
|
unsigned long size,
|
||||||
void *data);
|
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 );
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@@ -70,7 +70,7 @@ void st_upload_constants( struct st_context *st,
|
|||||||
_mesa_load_state_parameters(st->ctx, params);
|
_mesa_load_state_parameters(st->ctx, params);
|
||||||
|
|
||||||
if (!cbuf->buffer)
|
if (!cbuf->buffer)
|
||||||
cbuf->buffer = ws->buffer_create(ws, 1);
|
cbuf->buffer = ws->buffer_create(ws, 1, 0, 0);
|
||||||
|
|
||||||
if (0)
|
if (0)
|
||||||
{
|
{
|
||||||
|
@@ -63,7 +63,7 @@ st_bufferobj_alloc(GLcontext *ctx, GLuint name, GLenum target)
|
|||||||
|
|
||||||
_mesa_initialize_buffer_object(&st_obj->Base, name, 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;
|
return &st_obj->Base;
|
||||||
}
|
}
|
||||||
|
@@ -95,7 +95,7 @@ static void
|
|||||||
create_default_attribs_buffer(struct st_context *st)
|
create_default_attribs_buffer(struct st_context *st)
|
||||||
{
|
{
|
||||||
struct pipe_context *pipe = st->pipe;
|
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 */
|
/* 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,
|
pipe->winsys->buffer_data(pipe->winsys, vbuf,
|
||||||
vertex_bytes, verts,
|
vertex_bytes, verts,
|
||||||
PIPE_BUFFER_USAGE_VERTEX);
|
PIPE_BUFFER_USAGE_VERTEX);
|
||||||
|
Reference in New Issue
Block a user