zink: use EXT_primitive_restart_index

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40784>
This commit is contained in:
Mike Blumenkrantz 2026-03-13 10:00:12 -04:00 committed by Marge Bot
parent 76cdbcb96a
commit 166c68914b
4 changed files with 11 additions and 2 deletions

View file

@ -505,7 +505,8 @@
"VK_EXT_primitives_generated_query": 1,
"VK_EXT_color_write_enable": 1,
"VK_EXT_extended_dynamic_state3": 1,
"VK_EXT_descriptor_buffer": 1
"VK_EXT_descriptor_buffer": 1,
"VK_EXT_primitive_restart_index": 1
},
"features": {
"VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT": {
@ -525,6 +526,9 @@
},
"VkPhysicalDeviceDescriptorBufferFeaturesEXT": {
"descriptorBuffer": true
},
"VkPhysicalDevicePrimitiveRestartIndexFeaturesEXT": {
"primitiveRestartIndex": true
}
}
},

View file

@ -330,6 +330,9 @@ EXTENSIONS = [
alias="list_restart",
features=True,
conditions=["$feats.primitiveTopologyListRestart"]),
Extension("VK_EXT_primitive_restart_index",
alias="restart_index",
features=True),
Extension("VK_KHR_dedicated_allocation",
alias="dedicated"),
Extension("VK_EXT_descriptor_indexing",

View file

@ -778,6 +778,8 @@ zink_draw(struct pipe_context *pctx,
VKCTX(CmdSetPrimitiveRestartEnable)(bs->cmdbuf, dinfo->primitive_restart);
ctx->primitive_restart = dinfo->primitive_restart;
}
if (dinfo->primitive_restart && screen->info.have_EXT_primitive_restart_index)
VKCTX(CmdSetPrimitiveRestartIndexEXT)(bs->cmdbuf, dinfo->restart_index);
if (zink_program_has_descriptors(&ctx->curr_program->base) && (BATCH_CHANGED || ctx->dd.push_state_changed[0] || ctx->dd.state_changed[0] || pipeline_changed))
zink_descriptors_update(ctx, ZINK_PIPELINE_GFX);

View file

@ -731,7 +731,7 @@ zink_init_screen_caps(struct zink_screen *screen)
caps->texrect = false;
caps->multi_draw_indirect_partial_stride = false;
caps->anisotropic_filter = screen->info.feats.features.samplerAnisotropy;
caps->emulate_nonfixed_primitive_restart = true;
caps->emulate_nonfixed_primitive_restart = !screen->info.have_EXT_primitive_restart_index;
{
uint32_t modes = BITFIELD_BIT(MESA_PRIM_LINE_STRIP) |
BITFIELD_BIT(MESA_PRIM_TRIANGLE_STRIP) |