From e8c0c80ecd713b1eff30fca423a9c31747669650 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Sun, 1 Nov 2020 13:01:30 -0500 Subject: [PATCH] mesa: index _RestartIndex with index_size_shift Reviewed-by: Pierre-Eric Pelloux-Prayer Part-of: --- src/mesa/drivers/dri/i965/genX_state_upload.c | 2 +- src/mesa/main/enable.c | 2 +- src/mesa/main/mtypes.h | 2 +- src/mesa/state_tracker/st_draw.c | 4 ++-- src/mesa/state_tracker/st_draw_feedback.c | 2 +- src/mesa/vbo/vbo_minmax_index.c | 2 +- src/mesa/vbo/vbo_primitive_restart.c | 2 +- src/mesa/vbo/vbo_save_api.c | 2 +- 8 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/mesa/drivers/dri/i965/genX_state_upload.c b/src/mesa/drivers/dri/i965/genX_state_upload.c index f1cda59..46c9477 100644 --- a/src/mesa/drivers/dri/i965/genX_state_upload.c +++ b/src/mesa/drivers/dri/i965/genX_state_upload.c @@ -905,7 +905,7 @@ genX(upload_cut_index)(struct brw_context *brw) brw_batch_emit(brw, GENX(3DSTATE_VF), vf) { if (ctx->Array._PrimitiveRestart[brw->ib.ib->index_size_shift] && brw->ib.ib) { vf.IndexedDrawCutIndexEnable = true; - vf.CutIndex = ctx->Array._RestartIndex[brw->ib.index_size - 1]; + vf.CutIndex = ctx->Array._RestartIndex[brw->ib.ib->index_size_shift]; } } } diff --git a/src/mesa/main/enable.c b/src/mesa/main/enable.c index 4fc8daf..0a6632d 100644 --- a/src/mesa/main/enable.c +++ b/src/mesa/main/enable.c @@ -57,7 +57,7 @@ _mesa_update_derived_primitive_restart_state(struct gl_context *ctx) ctx->Array._RestartIndex[0] = restart_index[0]; ctx->Array._RestartIndex[1] = restart_index[1]; - ctx->Array._RestartIndex[3] = restart_index[2]; + ctx->Array._RestartIndex[2] = restart_index[2]; /* Enable primitive restart only when the restart index can have an * effect. This is required for correctness in AMD GFX8 support. diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 6bdbbb9..bd0ae96 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -1633,7 +1633,7 @@ struct gl_array_attrib GLboolean PrimitiveRestartFixedIndex; GLboolean _PrimitiveRestart[3]; /**< Enable indexed by index_size_shift. */ GLuint RestartIndex; - GLuint _RestartIndex[4]; /**< Restart indices for index_size - 1. */ + GLuint _RestartIndex[3]; /**< Restart indices indexed by index_size_shift. */ /*@}*/ /* GL_ARB_vertex_buffer_object */ diff --git a/src/mesa/state_tracker/st_draw.c b/src/mesa/state_tracker/st_draw.c index ac50dd0..e189fd9 100644 --- a/src/mesa/state_tracker/st_draw.c +++ b/src/mesa/state_tracker/st_draw.c @@ -192,7 +192,7 @@ st_draw_vbo(struct gl_context *ctx, info.index.user = ib->ptr; } - info.restart_index = ctx->Array._RestartIndex[info.index_size - 1]; + info.restart_index = ctx->Array._RestartIndex[ib->index_size_shift]; info.primitive_restart = ctx->Array._PrimitiveRestart[ib->index_size_shift]; } else { @@ -266,7 +266,7 @@ st_indirect_draw_vbo(struct gl_context *ctx, info.index.resource = st_buffer_object(bufobj)->buffer; draw.start = pointer_to_offset(ib->ptr) >> ib->index_size_shift; - info.restart_index = ctx->Array._RestartIndex[info.index_size - 1]; + info.restart_index = ctx->Array._RestartIndex[ib->index_size_shift]; info.primitive_restart = ctx->Array._PrimitiveRestart[ib->index_size_shift]; } diff --git a/src/mesa/state_tracker/st_draw_feedback.c b/src/mesa/state_tracker/st_draw_feedback.c index ba77869..5d0d44c 100644 --- a/src/mesa/state_tracker/st_draw_feedback.c +++ b/src/mesa/state_tracker/st_draw_feedback.c @@ -214,7 +214,7 @@ st_feedback_draw_vbo(struct gl_context *ctx, index_size, ~0); info.primitive_restart = ctx->Array._PrimitiveRestart[ib->index_size_shift]; - info.restart_index = ctx->Array._RestartIndex[index_size - 1]; + info.restart_index = ctx->Array._RestartIndex[ib->index_size_shift]; } else { info.index_size = 0; info.has_user_indices = false; diff --git a/src/mesa/vbo/vbo_minmax_index.c b/src/mesa/vbo/vbo_minmax_index.c index d92bf19..914257b 100644 --- a/src/mesa/vbo/vbo_minmax_index.c +++ b/src/mesa/vbo/vbo_minmax_index.c @@ -328,7 +328,7 @@ vbo_get_minmax_index(struct gl_context *ctx, { const GLboolean restart = ctx->Array._PrimitiveRestart[ib->index_size_shift]; const GLuint restartIndex = - ctx->Array._RestartIndex[(1 << ib->index_size_shift) - 1]; + ctx->Array._RestartIndex[ib->index_size_shift]; const char *indices; GLintptr offset = 0; diff --git a/src/mesa/vbo/vbo_primitive_restart.c b/src/mesa/vbo/vbo_primitive_restart.c index 3df8110..dd6a25b 100644 --- a/src/mesa/vbo/vbo_primitive_restart.c +++ b/src/mesa/vbo/vbo_primitive_restart.c @@ -177,7 +177,7 @@ vbo_sw_primitive_restart(struct gl_context *ctx, GLuint sub_prim_num; GLuint end_index; GLuint sub_end_index; - GLuint restart_index = ctx->Array._RestartIndex[(1 << ib->index_size_shift) - 1]; + GLuint restart_index = ctx->Array._RestartIndex[ib->index_size_shift]; struct _mesa_prim temp_prim; GLboolean map_ib = ib->obj && !ib->obj->Mappings[MAP_INTERNAL].Pointer; const void *ptr; diff --git a/src/mesa/vbo/vbo_save_api.c b/src/mesa/vbo/vbo_save_api.c index a83c641..0b1714f 100644 --- a/src/mesa/vbo/vbo_save_api.c +++ b/src/mesa/vbo/vbo_save_api.c @@ -1388,7 +1388,7 @@ array_element(struct gl_context *ctx, * then we call PrimitiveRestartNV and return. */ if (ctx->Array._PrimitiveRestart[index_size_shift] && - elt == ctx->Array._RestartIndex[(1 << index_size_shift) - 1]) { + elt == ctx->Array._RestartIndex[index_size_shift]) { CALL_PrimitiveRestartNV(ctx->CurrentServerDispatch, ()); return; } -- 2.7.4