this is going to be more flexible than just checking for separable+EXT
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22725>
else
zink_gfx_program_update(ctx);
bool pipeline_changed = false;
- if (ctx->curr_program->is_separable && screen->info.have_EXT_shader_object) {
+ if (ctx->curr_program->base.uses_shobj) {
if (BATCH_CHANGED || shaders_changed || !ctx->shobj_draw) {
VkShaderStageFlagBits stages[] = {
VK_SHADER_STAGE_VERTEX_BIT,
prog->ctx = ctx;
prog->is_separable = true;
prog->gfx_hash = ctx->gfx_hash;
+ prog->base.uses_shobj = screen->info.have_EXT_shader_object;
prog->stages_remaining = prog->stages_present = ctx->shader_stages;
memcpy(prog->shaders, stages, sizeof(prog->shaders));
struct zink_batch_usage *batch_uses;
bool is_compute;
bool can_precompile;
+ bool uses_shobj; //whether shader objects are used; programs CANNOT mix shader objects and shader modules
struct zink_program_descriptor_data dd;