This is compile-tested.tags/i965-primitive-restart-v2
| @@ -376,6 +376,19 @@ pipe_buffer_write_nooverlap(struct pipe_context *pipe, | |||
| 0, 0); | |||
| } | |||
| static INLINE struct pipe_resource * | |||
| pipe_buffer_create_with_data(struct pipe_context *pipe, | |||
| unsigned bind, | |||
| unsigned usage, | |||
| unsigned size, | |||
| void *ptr) | |||
| { | |||
| struct pipe_resource *res = pipe_buffer_create(pipe->screen, | |||
| bind, usage, size); | |||
| pipe_buffer_write_nooverlap(pipe, res, 0, size, ptr); | |||
| return res; | |||
| } | |||
| static INLINE void | |||
| pipe_buffer_read(struct pipe_context *pipe, | |||
| struct pipe_resource *buf, | |||
| @@ -67,10 +67,11 @@ set_vertices(void) | |||
| vbuf.stride = sizeof(struct vertex); | |||
| vbuf.buffer_offset = 0; | |||
| vbuf.buffer = info.screen->user_buffer_create(info.screen, | |||
| vertices, | |||
| sizeof(vertices), | |||
| PIPE_BIND_VERTEX_BUFFER); | |||
| vbuf.buffer = pipe_buffer_create_with_data(info.ctx, | |||
| PIPE_BIND_VERTEX_BUFFER, | |||
| PIPE_USAGE_STATIC, | |||
| sizeof(vertices), | |||
| vertices); | |||
| info.ctx->set_vertex_buffers(info.ctx, 1, &vbuf); | |||
| } | |||
| @@ -89,10 +89,11 @@ set_vertices(void) | |||
| vbuf.stride = sizeof(struct vertex); | |||
| vbuf.buffer_offset = 0; | |||
| vbuf.buffer = info.screen->user_buffer_create(info.screen, | |||
| vertices, | |||
| sizeof(vertices), | |||
| PIPE_BIND_VERTEX_BUFFER); | |||
| vbuf.buffer = pipe_buffer_create_with_data(info.ctx, | |||
| PIPE_BIND_VERTEX_BUFFER, | |||
| PIPE_USAGE_STATIC, | |||
| sizeof(vertices), | |||
| vertices); | |||
| info.ctx->set_vertex_buffers(info.ctx, 1, &vbuf); | |||
| } | |||
| @@ -216,10 +216,11 @@ static void set_vertices( void ) | |||
| vbuf.stride = sizeof( struct vertex ); | |||
| vbuf.buffer_offset = 0; | |||
| vbuf.buffer = screen->user_buffer_create(screen, | |||
| vertices, | |||
| sizeof(vertices), | |||
| PIPE_BIND_VERTEX_BUFFER); | |||
| vbuf.buffer = pipe_buffer_create_with_data(ctx, | |||
| PIPE_BIND_VERTEX_BUFFER, | |||
| PIPE_USAGE_STATIC, | |||
| sizeof(vertices), | |||
| vertices); | |||
| ctx->set_vertex_buffers(ctx, 1, &vbuf); | |||
| } | |||
| @@ -93,10 +93,11 @@ set_vertices(void) | |||
| vbuf.stride = sizeof(struct vertex); | |||
| vbuf.buffer_offset = 0; | |||
| vbuf.buffer = info.screen->user_buffer_create(info.screen, | |||
| vertices, | |||
| sizeof(vertices), | |||
| PIPE_BIND_VERTEX_BUFFER); | |||
| vbuf.buffer = pipe_buffer_create_with_data(info.ctx, | |||
| PIPE_BIND_VERTEX_BUFFER, | |||
| PIPE_USAGE_STATIC, | |||
| sizeof(vertices), | |||
| vertices); | |||
| info.ctx->set_vertex_buffers(info.ctx, 1, &vbuf); | |||
| } | |||
| @@ -251,15 +251,17 @@ static void set_vertices( void ) | |||
| vbuf.stride = sizeof( struct vertex ); | |||
| vbuf.buffer_offset = 0; | |||
| if (draw_strip) { | |||
| vbuf.buffer = screen->user_buffer_create(screen, | |||
| vertices_strip, | |||
| sizeof(vertices_strip), | |||
| PIPE_BIND_VERTEX_BUFFER); | |||
| vbuf.buffer = pipe_buffer_create_with_data(ctx, | |||
| PIPE_BIND_VERTEX_BUFFER, | |||
| PIPE_USAGE_STATIC, | |||
| sizeof(vertices_strip), | |||
| vertices_strip); | |||
| } else { | |||
| vbuf.buffer = screen->user_buffer_create(screen, | |||
| vertices, | |||
| sizeof(vertices), | |||
| PIPE_BIND_VERTEX_BUFFER); | |||
| vbuf.buffer = pipe_buffer_create_with_data(ctx, | |||
| PIPE_BIND_VERTEX_BUFFER, | |||
| PIPE_USAGE_STATIC, | |||
| sizeof(vertices), | |||
| vertices); | |||
| } | |||
| ctx->set_vertex_buffers(ctx, 1, &vbuf); | |||
| @@ -94,10 +94,11 @@ set_vertices(struct vertex *vertices, unsigned bytes) | |||
| vbuf.stride = sizeof(struct vertex); | |||
| vbuf.buffer_offset = 0; | |||
| vbuf.buffer = info.screen->user_buffer_create(info.screen, | |||
| vertices, | |||
| bytes, | |||
| PIPE_BIND_VERTEX_BUFFER); | |||
| vbuf.buffer = pipe_buffer_create_with_data(info.ctx, | |||
| PIPE_BIND_VERTEX_BUFFER, | |||
| PIPE_USAGE_STATIC, | |||
| bytes, | |||
| vertices); | |||
| info.ctx->set_vertex_buffers(info.ctx, 1, &vbuf); | |||
| } | |||
| @@ -100,10 +100,11 @@ static void set_vertices( void ) | |||
| vbuf.stride = sizeof( struct vertex ); | |||
| vbuf.buffer_offset = 0; | |||
| vbuf.buffer = screen->user_buffer_create(screen, | |||
| vertices, | |||
| sizeof(vertices), | |||
| PIPE_BIND_VERTEX_BUFFER); | |||
| vbuf.buffer = pipe_buffer_create_with_data(ctx, | |||
| PIPE_BIND_VERTEX_BUFFER, | |||
| PIPE_USAGE_STATIC, | |||
| sizeof(vertices), | |||
| vertices); | |||
| ctx->set_vertex_buffers(ctx, 1, &vbuf); | |||
| } | |||
| @@ -56,10 +56,11 @@ static void set_vertices( void ) | |||
| vbuf.stride = sizeof( struct vertex ); | |||
| vbuf.buffer_offset = 0; | |||
| vbuf.buffer = info.screen->user_buffer_create(info.screen, | |||
| vertices, | |||
| sizeof(vertices), | |||
| PIPE_BIND_VERTEX_BUFFER); | |||
| vbuf.buffer = pipe_buffer_create_with_data(info.ctx, | |||
| PIPE_BIND_VERTEX_BUFFER, | |||
| PIPE_USAGE_STATIC, | |||
| sizeof(vertices), | |||
| vertices); | |||
| info.ctx->set_vertex_buffers(info.ctx, 1, &vbuf); | |||
| } | |||
| @@ -11,6 +11,7 @@ | |||
| #include "util/u_memory.h" /* Offset() */ | |||
| #include "util/u_draw_quad.h" | |||
| #include "util/u_inlines.h" | |||
| static int num_iters = 100; | |||
| @@ -89,10 +90,11 @@ static void set_vertices( void ) | |||
| vbuf.stride = sizeof(struct vertex); | |||
| vbuf.buffer_offset = 0; | |||
| vbuf.buffer = screen->user_buffer_create(screen, | |||
| vertices, | |||
| sizeof(vertices), | |||
| PIPE_BIND_VERTEX_BUFFER); | |||
| vbuf.buffer = pipe_buffer_create_with_data(ctx, | |||
| PIPE_BIND_VERTEX_BUFFER, | |||
| PIPE_USAGE_STATIC, | |||
| sizeof(vertices), | |||
| vertices); | |||
| ctx->set_vertex_buffers(ctx, 1, &vbuf); | |||
| } | |||
| @@ -72,10 +72,11 @@ set_vertices(struct vertex *verts, unsigned num_verts) | |||
| vbuf.stride = sizeof(struct vertex); | |||
| vbuf.buffer_offset = 0; | |||
| vbuf.buffer = info.screen->user_buffer_create(info.screen, | |||
| verts, | |||
| num_verts *sizeof(struct vertex), | |||
| PIPE_BIND_VERTEX_BUFFER); | |||
| vbuf.buffer = pipe_buffer_create_with_data(info.ctx, | |||
| PIPE_BIND_VERTEX_BUFFER, | |||
| PIPE_USAGE_STATIC, | |||
| num_verts * sizeof(struct vertex), | |||
| verts); | |||
| info.ctx->set_vertex_buffers(info.ctx, 1, &vbuf); | |||
| } | |||
| @@ -54,10 +54,11 @@ static void set_vertices(void) | |||
| vbuf.stride = sizeof(struct vertex); | |||
| vbuf.buffer_offset = 0; | |||
| vbuf.buffer = info.screen->user_buffer_create(info.screen, | |||
| vertices, | |||
| sizeof(vertices), | |||
| PIPE_BIND_VERTEX_BUFFER); | |||
| vbuf.buffer = pipe_buffer_create_with_data(info.ctx, | |||
| PIPE_BIND_VERTEX_BUFFER, | |||
| PIPE_USAGE_STATIC, | |||
| sizeof(vertices), | |||
| vertices); | |||
| info.ctx->set_vertex_buffers(info.ctx, 1, &vbuf); | |||
| } | |||
| @@ -11,6 +11,7 @@ | |||
| #include "util/u_memory.h" /* Offset() */ | |||
| #include "util/u_draw_quad.h" | |||
| #include "util/u_inlines.h" | |||
| enum pipe_format formats[] = { | |||
| PIPE_FORMAT_R8G8B8A8_UNORM, | |||
| @@ -90,10 +91,11 @@ static void set_vertices( void ) | |||
| vbuf.stride = sizeof( struct vertex ); | |||
| vbuf.buffer_offset = 0; | |||
| vbuf.buffer = screen->user_buffer_create(screen, | |||
| vertices, | |||
| sizeof(vertices), | |||
| PIPE_BIND_VERTEX_BUFFER); | |||
| vbuf.buffer = pipe_buffer_create_with_data(ctx, | |||
| PIPE_BIND_VERTEX_BUFFER, | |||
| PIPE_USAGE_STATIC, | |||
| sizeof(vertices), | |||
| vertices); | |||
| ctx->set_vertex_buffers(ctx, 1, &vbuf); | |||
| } | |||
| @@ -13,6 +13,7 @@ | |||
| #include "util/u_memory.h" /* Offset() */ | |||
| #include "util/u_draw_quad.h" | |||
| #include "util/u_inlines.h" | |||
| enum pipe_format formats[] = { | |||
| @@ -133,27 +134,29 @@ static void set_vertices( void ) | |||
| /* vertex data */ | |||
| vbuf[0].stride = sizeof( struct vertex ); | |||
| vbuf[0].buffer_offset = 0; | |||
| vbuf[0].buffer = screen->user_buffer_create(screen, | |||
| vertices, | |||
| sizeof(vertices), | |||
| PIPE_BIND_VERTEX_BUFFER); | |||
| vbuf[0].buffer = pipe_buffer_create_with_data(ctx, | |||
| PIPE_BIND_VERTEX_BUFFER, | |||
| PIPE_USAGE_STATIC, | |||
| sizeof(vertices), | |||
| vertices); | |||
| /* instance data */ | |||
| vbuf[1].stride = sizeof( inst_data[0] ); | |||
| vbuf[1].buffer_offset = 0; | |||
| vbuf[1].buffer = screen->user_buffer_create(screen, | |||
| inst_data, | |||
| sizeof(inst_data), | |||
| PIPE_BIND_VERTEX_BUFFER); | |||
| vbuf[1].buffer = pipe_buffer_create_with_data(ctx, | |||
| PIPE_BIND_VERTEX_BUFFER, | |||
| PIPE_USAGE_STATIC, | |||
| sizeof(inst_data), | |||
| inst_data); | |||
| ctx->set_vertex_buffers(ctx, 2, vbuf); | |||
| /* index data */ | |||
| ibuf.buffer = screen->user_buffer_create(screen, | |||
| indices, | |||
| sizeof(indices), | |||
| PIPE_BIND_VERTEX_BUFFER); | |||
| ibuf.buffer = pipe_buffer_create_with_data(ctx, | |||
| PIPE_BIND_INDEX_BUFFER, | |||
| PIPE_USAGE_STATIC, | |||
| sizeof(indices), | |||
| indices); | |||
| ibuf.offset = 0; | |||
| ibuf.index_size = 2; | |||
| @@ -55,10 +55,11 @@ static void set_vertices( void ) | |||
| vbuf.stride = sizeof( struct vertex ); | |||
| vbuf.buffer_offset = 0; | |||
| vbuf.buffer = info.screen->user_buffer_create(info.screen, | |||
| vertices, | |||
| sizeof(vertices), | |||
| PIPE_BIND_VERTEX_BUFFER); | |||
| vbuf.buffer = pipe_buffer_create_with_data(info.ctx, | |||
| PIPE_BIND_VERTEX_BUFFER, | |||
| PIPE_USAGE_STATIC, | |||
| sizeof(vertices), | |||
| vertices); | |||
| info.ctx->set_vertex_buffers(info.ctx, 1, &vbuf); | |||
| } | |||
| @@ -172,10 +172,11 @@ static void set_vertices( void ) | |||
| vbuf.stride = sizeof( struct vertex ); | |||
| vbuf.buffer_offset = 0; | |||
| vbuf.buffer = screen->user_buffer_create(screen, | |||
| vertices, | |||
| sizeof(vertices), | |||
| PIPE_BIND_VERTEX_BUFFER); | |||
| vbuf.buffer = pipe_buffer_create_with_data(ctx, | |||
| PIPE_BIND_VERTEX_BUFFER, | |||
| PIPE_USAGE_STATIC, | |||
| sizeof(vertices), | |||
| vertices); | |||
| ctx->set_vertex_buffers(ctx, 1, &vbuf); | |||
| } | |||