mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 00:58:05 +02:00
softpipe: update to new draw interfaces
This commit is contained in:
parent
befa4ff50e
commit
7ca78a07b3
2 changed files with 33 additions and 14 deletions
|
|
@ -92,7 +92,7 @@ EGL_DRIVERS_DIRS = demo
|
|||
GALLIUM_DIRS = auxiliary drivers state_trackers
|
||||
GALLIUM_AUXILIARY_DIRS = draw translate cso_cache pipebuffer tgsi sct rtasm util indices
|
||||
GALLIUM_AUXILIARIES = $(foreach DIR,$(GALLIUM_AUXILIARY_DIRS),$(TOP)/src/gallium/auxiliary/$(DIR)/lib$(DIR).a)
|
||||
GALLIUM_DRIVER_DIRS = softpipe i915simple i965simple failover trace
|
||||
GALLIUM_DRIVER_DIRS = softpipe #i915simple i965simple failover trace
|
||||
GALLIUM_DRIVERS = $(foreach DIR,$(GALLIUM_DRIVER_DIRS),$(TOP)/src/gallium/drivers/$(DIR)/lib$(DIR).a)
|
||||
GALLIUM_WINSYS_DIRS = xlib egl_xlib
|
||||
GALLIUM_WINSYS_DRM_DIRS =
|
||||
|
|
|
|||
|
|
@ -60,6 +60,7 @@ struct softpipe_vbuf_render
|
|||
struct softpipe_context *softpipe;
|
||||
uint prim;
|
||||
uint vertex_size;
|
||||
uint vertex_buffer_size;
|
||||
void *vertex_buffer;
|
||||
};
|
||||
|
||||
|
|
@ -80,26 +81,44 @@ sp_vbuf_get_vertex_info(struct vbuf_render *vbr)
|
|||
}
|
||||
|
||||
|
||||
static void *
|
||||
static boolean
|
||||
sp_vbuf_allocate_vertices(struct vbuf_render *vbr,
|
||||
ushort vertex_size, ushort nr_vertices)
|
||||
ushort vertex_size, ushort nr_vertices)
|
||||
{
|
||||
struct softpipe_vbuf_render *cvbr = softpipe_vbuf_render(vbr);
|
||||
assert(!cvbr->vertex_buffer);
|
||||
cvbr->vertex_buffer = align_malloc(vertex_size * nr_vertices, 16);
|
||||
unsigned size = vertex_size * nr_vertices;
|
||||
|
||||
if (cvbr->vertex_buffer_size < size) {
|
||||
align_free(cvbr->vertex_buffer);
|
||||
cvbr->vertex_buffer = align_malloc(size, 16);
|
||||
cvbr->vertex_buffer_size = size;
|
||||
}
|
||||
|
||||
cvbr->vertex_size = vertex_size;
|
||||
return cvbr->vertex_buffer != NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
sp_vbuf_release_vertices(struct vbuf_render *vbr)
|
||||
{
|
||||
/* keep the old allocation for next time */
|
||||
}
|
||||
|
||||
static void *
|
||||
sp_vbuf_map_vertices(struct vbuf_render *vbr)
|
||||
{
|
||||
struct softpipe_vbuf_render *cvbr = softpipe_vbuf_render(vbr);
|
||||
return cvbr->vertex_buffer;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
sp_vbuf_release_vertices(struct vbuf_render *vbr, void *vertices,
|
||||
unsigned vertex_size, unsigned vertices_used)
|
||||
static void
|
||||
sp_vbuf_unmap_vertices(struct vbuf_render *vbr,
|
||||
ushort min_index,
|
||||
ushort max_index )
|
||||
{
|
||||
struct softpipe_vbuf_render *cvbr = softpipe_vbuf_render(vbr);
|
||||
align_free(vertices);
|
||||
assert(vertices == cvbr->vertex_buffer);
|
||||
cvbr->vertex_buffer = NULL;
|
||||
assert( cvbr->vertex_buffer_size >= (max_index+1) * cvbr->vertex_size );
|
||||
/* do nothing */
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -115,8 +134,6 @@ sp_vbuf_set_primitive(struct vbuf_render *vbr, unsigned prim)
|
|||
|
||||
setup_prepare( setup_ctx );
|
||||
|
||||
|
||||
|
||||
cvbr->prim = prim;
|
||||
return TRUE;
|
||||
|
||||
|
|
@ -394,6 +411,8 @@ sp_init_vbuf(struct softpipe_context *sp)
|
|||
|
||||
sp->vbuf_render->base.get_vertex_info = sp_vbuf_get_vertex_info;
|
||||
sp->vbuf_render->base.allocate_vertices = sp_vbuf_allocate_vertices;
|
||||
sp->vbuf_render->base.map_vertices = sp_vbuf_map_vertices;
|
||||
sp->vbuf_render->base.unmap_vertices = sp_vbuf_unmap_vertices;
|
||||
sp->vbuf_render->base.set_primitive = sp_vbuf_set_primitive;
|
||||
sp->vbuf_render->base.draw = sp_vbuf_draw;
|
||||
sp->vbuf_render->base.draw_arrays = sp_vbuf_draw_arrays;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue