offsetof(struct zink_push_constant, draw_mode_is_indexed), sizeof(unsigned),
&draw_mode_is_indexed);
}
+ if (BITSET_TEST(ctx->gfx_stages[PIPE_SHADER_VERTEX]->nir->info.system_values_read, SYSTEM_VALUE_DRAW_ID) &&
+ dinfo->drawid != 0) {
+ unsigned draw_id = dinfo->drawid;
+ vkCmdPushConstants(batch->cmdbuf, gfx_program->layout, VK_SHADER_STAGE_VERTEX_BIT,
+ offsetof(struct zink_push_constant, draw_id), sizeof(unsigned),
+ &draw_id);
+ }
if (gfx_program->shaders[PIPE_SHADER_TESS_CTRL] && gfx_program->shaders[PIPE_SHADER_TESS_CTRL]->is_generated)
vkCmdPushConstants(batch->cmdbuf, gfx_program->layout, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,
offsetof(struct zink_push_constant, default_inner_level), sizeof(float) * 6,
VkPushConstantRange pcr[2] = {};
pcr[0].stageFlags = VK_SHADER_STAGE_VERTEX_BIT;
pcr[0].offset = offsetof(struct zink_push_constant, draw_mode_is_indexed);
- pcr[0].size = sizeof(unsigned);
+ pcr[0].size = 2 * sizeof(unsigned);
pcr[1].stageFlags = VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT;
pcr[1].offset = offsetof(struct zink_push_constant, default_inner_level);
pcr[1].size = sizeof(float) * 6;