radeonsi: don't index si_context::shaders with enum gl_shader_stage

Fixes: a8373b3d38 "radeonsi: store si_context::xxx_shader members in union"

Reviewed-by: Zoltán Böszörményi <zboszor@gmail.com>
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9313>
This commit is contained in:
Marek Olšák
2021-02-26 18:01:19 -05:00
committed by Marge Bot
parent a0b7e3d83e
commit c97ebe1461
2 changed files with 5 additions and 3 deletions

View File

@@ -1051,6 +1051,7 @@ struct si_context {
struct si_shader_ctx_state tcs;
struct si_shader_ctx_state tes;
} shader;
/* indexed access using pipe_shader_type (not by MESA_SHADER_*) */
struct si_shader_ctx_state shaders[SI_NUM_GRAPHICS_SHADERS];
};
struct si_shader_ctx_state cs_prim_discard_state;

View File

@@ -3279,12 +3279,13 @@ static void si_destroy_shader_selector(struct pipe_context *ctx, void *cso)
struct si_context *sctx = (struct si_context *)ctx;
struct si_shader_selector *sel = (struct si_shader_selector *)cso;
struct si_shader *p = sel->first_variant, *c;
enum pipe_shader_type type = pipe_shader_type_from_mesa(sel->info.stage);
util_queue_drop_job(&sctx->screen->shader_compiler_queue, &sel->ready);
if (sctx->shaders[sel->info.stage].cso == sel) {
sctx->shaders[sel->info.stage].cso = NULL;
sctx->shaders[sel->info.stage].current = NULL;
if (sctx->shaders[type].cso == sel) {
sctx->shaders[type].cso = NULL;
sctx->shaders[type].current = NULL;
}
while (p) {