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:
@@ -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;
|
||||
|
@@ -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) {
|
||||
|
Reference in New Issue
Block a user