zink: don't trigger shader variants on pcp change if driver supports dynamic pcp
this otherwise pointlessly creates and binds shader variants that do nothing Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22365>
This commit is contained in:
committed by
Marge Bot
parent
172054e305
commit
472fcf74e2
@@ -677,6 +677,7 @@ update_gfx_program_optimal(struct zink_context *ctx, struct zink_gfx_program *pr
|
||||
}
|
||||
}
|
||||
if (prog->shaders[MESA_SHADER_TESS_CTRL] && prog->shaders[MESA_SHADER_TESS_CTRL]->non_fs.is_generated &&
|
||||
!zink_screen(ctx->base.screen)->info.dynamic_state2_feats.extendedDynamicState2PatchControlPoints &&
|
||||
ctx->gfx_pipeline_state.shader_keys_optimal.key.tcs_bits != optimal_key->tcs_bits) {
|
||||
assert(!prog->is_separable);
|
||||
bool changed = update_gfx_shader_module_optimal(ctx, prog, MESA_SHADER_TESS_CTRL);
|
||||
|
||||
@@ -299,7 +299,8 @@ zink_set_tcs_key_patches(struct zink_context *ctx, uint8_t patch_vertices)
|
||||
&ctx->gfx_pipeline_state.shader_keys.key[MESA_SHADER_TESS_CTRL].key.tcs;
|
||||
if (tcs->patch_vertices == patch_vertices)
|
||||
return false;
|
||||
ctx->dirty_gfx_stages |= BITFIELD_BIT(MESA_SHADER_TESS_CTRL);
|
||||
if (!zink_screen(ctx->base.screen)->info.dynamic_state2_feats.extendedDynamicState2PatchControlPoints)
|
||||
ctx->dirty_gfx_stages |= BITFIELD_BIT(MESA_SHADER_TESS_CTRL);
|
||||
tcs->patch_vertices = patch_vertices;
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user