summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gallium/auxiliary/indices/u_primconvert.c10
-rw-r--r--src/gallium/include/pipe/p_state.h2
2 files changed, 9 insertions, 3 deletions
diff --git a/src/gallium/auxiliary/indices/u_primconvert.c b/src/gallium/auxiliary/indices/u_primconvert.c
index 2bdfade8a54..1ffca4b593c 100644
--- a/src/gallium/auxiliary/indices/u_primconvert.c
+++ b/src/gallium/auxiliary/indices/u_primconvert.c
@@ -128,12 +128,15 @@ util_primconvert_draw_vbo(struct primconvert_context *pc,
new_info.primitive_restart = info->primitive_restart;
new_info.restart_index = info->restart_index;
if (info->indexed) {
+ enum pipe_prim_type mode = 0;
+
u_index_translator(pc->primtypes_mask,
info->mode, pc->saved_ib.index_size, info->count,
pc->api_pv, pc->api_pv,
info->primitive_restart ? PR_ENABLE : PR_DISABLE,
- &new_info.mode, &new_ib.index_size, &new_info.count,
+ &mode, &new_ib.index_size, &new_info.count,
&trans_func);
+ new_info.mode = mode;
src = ib->user_buffer;
if (!src) {
src = pipe_buffer_map(pc->pipe, ib->buffer,
@@ -142,11 +145,14 @@ util_primconvert_draw_vbo(struct primconvert_context *pc,
src = (const uint8_t *)src + ib->offset;
}
else {
+ enum pipe_prim_type mode = 0;
+
u_index_generator(pc->primtypes_mask,
info->mode, info->start, info->count,
pc->api_pv, pc->api_pv,
- &new_info.mode, &new_ib.index_size, &new_info.count,
+ &mode, &new_ib.index_size, &new_info.count,
&gen_func);
+ new_info.mode = mode;
}
u_upload_alloc(pc->pipe->stream_uploader, 0, new_ib.index_size * new_info.count, 4,
diff --git a/src/gallium/include/pipe/p_state.h b/src/gallium/include/pipe/p_state.h
index 45c213795c6..ce9ca34d295 100644
--- a/src/gallium/include/pipe/p_state.h
+++ b/src/gallium/include/pipe/p_state.h
@@ -644,7 +644,7 @@ struct pipe_index_buffer
struct pipe_draw_info
{
boolean indexed; /**< use index buffer */
- enum pipe_prim_type mode; /**< the mode of the primitive */
+ enum pipe_prim_type mode:8; /**< the mode of the primitive */
boolean primitive_restart;
ubyte vertices_per_patch; /**< the number of vertices per patch */