i965: Fix haswell_upload_cut_index when there's no index buffer.
brw->ib.type is reset to -1 at the start of each batch. If there's no
index buffer, it won't get updated to a sensible value, resulting in
_mesa_primitive_restart_index's "Invalid index buffer type" assertion
tripping.
Fixes a regression since 7c87a3b5da
.
NOTE: This is a candidate for the 9.1 branch (and should be squashed).
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=65195
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
869c5d438f
commit
4405ff4055
|
@ -194,9 +194,21 @@ haswell_upload_cut_index(struct brw_context *brw)
|
||||||
ctx->Array._PrimitiveRestart ? HSW_CUT_INDEX_ENABLE : 0;
|
ctx->Array._PrimitiveRestart ? HSW_CUT_INDEX_ENABLE : 0;
|
||||||
|
|
||||||
/* BRW_NEW_INDEX_BUFFER */
|
/* BRW_NEW_INDEX_BUFFER */
|
||||||
|
unsigned cut_index;
|
||||||
|
if (brw->ib.ib) {
|
||||||
|
cut_index = _mesa_primitive_restart_index(ctx, brw->ib.type);
|
||||||
|
} else {
|
||||||
|
/* There's no index buffer, but primitive restart may still apply
|
||||||
|
* to glDrawArrays and such. FIXED_INDEX mode only applies to drawing
|
||||||
|
* operations that use an index buffer, so we can ignore it and use
|
||||||
|
* the GL restart index directly.
|
||||||
|
*/
|
||||||
|
cut_index = ctx->Array.RestartIndex;
|
||||||
|
}
|
||||||
|
|
||||||
BEGIN_BATCH(2);
|
BEGIN_BATCH(2);
|
||||||
OUT_BATCH(_3DSTATE_VF << 16 | cut_index_setting | (2 - 2));
|
OUT_BATCH(_3DSTATE_VF << 16 | cut_index_setting | (2 - 2));
|
||||||
OUT_BATCH(_mesa_primitive_restart_index(ctx, brw->ib.type));
|
OUT_BATCH(cut_index);
|
||||||
ADVANCE_BATCH();
|
ADVANCE_BATCH();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue