mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-08 23:40:12 +01:00
mesa/st: cope with non-ibo index data in st_draw_feedback.c
Previously only non-indexed or indicies-in-a-vbo cases were handled in this code. This change adds the missing regular indices-in-memory case.
This commit is contained in:
parent
4a333c64fa
commit
01280cff53
1 changed files with 15 additions and 8 deletions
|
|
@ -196,13 +196,10 @@ st_feedback_draw_vbo(GLcontext *ctx,
|
|||
draw_set_vertex_elements(draw, vp->num_inputs, velements);
|
||||
|
||||
if (ib) {
|
||||
unsigned indexSize;
|
||||
struct gl_buffer_object *bufobj = ib->obj;
|
||||
struct st_buffer_object *stobj = st_buffer_object(bufobj);
|
||||
unsigned indexSize;
|
||||
void *map;
|
||||
|
||||
index_buffer_handle = stobj->buffer;
|
||||
|
||||
switch (ib->type) {
|
||||
case GL_UNSIGNED_INT:
|
||||
indexSize = 4;
|
||||
|
|
@ -215,9 +212,19 @@ st_feedback_draw_vbo(GLcontext *ctx,
|
|||
return;
|
||||
}
|
||||
|
||||
map = pipe_buffer_map(pipe->screen, index_buffer_handle,
|
||||
PIPE_BUFFER_USAGE_CPU_READ);
|
||||
draw_set_mapped_element_buffer(draw, indexSize, map);
|
||||
if (bufobj && bufobj->Name) {
|
||||
struct st_buffer_object *stobj = st_buffer_object(bufobj);
|
||||
|
||||
index_buffer_handle = stobj->buffer;
|
||||
|
||||
map = pipe_buffer_map(pipe->screen, index_buffer_handle,
|
||||
PIPE_BUFFER_USAGE_CPU_READ);
|
||||
|
||||
draw_set_mapped_element_buffer(draw, indexSize, map);
|
||||
}
|
||||
else {
|
||||
draw_set_mapped_element_buffer(draw, indexSize, (void *) ib->ptr);
|
||||
}
|
||||
}
|
||||
else {
|
||||
/* no index/element buffer */
|
||||
|
|
@ -252,7 +259,7 @@ st_feedback_draw_vbo(GLcontext *ctx,
|
|||
draw_set_mapped_vertex_buffer(draw, i, NULL);
|
||||
}
|
||||
}
|
||||
if (ib) {
|
||||
if (index_buffer_handle) {
|
||||
pipe_buffer_unmap(pipe->screen, index_buffer_handle);
|
||||
draw_set_mapped_element_buffer(draw, 0, NULL);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue