mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 21:50:12 +01:00
radeonsi: drop unfinished shader compilations when destroying shaders
If we enqueue too many jobs and destroy the GL context, it may take several seconds before the jobs finish. Just drop them instead. Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
parent
33e507ec23
commit
38bd468a78
2 changed files with 5 additions and 3 deletions
|
|
@ -860,7 +860,8 @@ static void si_delete_compute_state(struct pipe_context *ctx, void* state){
|
|||
}
|
||||
|
||||
if (program->ir_type == PIPE_SHADER_IR_TGSI) {
|
||||
util_queue_fence_wait(&program->ready);
|
||||
util_queue_drop_job(&sctx->screen->shader_compiler_queue,
|
||||
&program->ready);
|
||||
util_queue_fence_destroy(&program->ready);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2258,7 +2258,8 @@ static void si_bind_ps_shader(struct pipe_context *ctx, void *state)
|
|||
static void si_delete_shader(struct si_context *sctx, struct si_shader *shader)
|
||||
{
|
||||
if (shader->is_optimized) {
|
||||
util_queue_fence_wait(&shader->optimized_ready);
|
||||
util_queue_drop_job(&sctx->screen->shader_compiler_queue,
|
||||
&shader->optimized_ready);
|
||||
util_queue_fence_destroy(&shader->optimized_ready);
|
||||
}
|
||||
|
||||
|
|
@ -2315,7 +2316,7 @@ static void si_destroy_shader_selector(struct si_context *sctx,
|
|||
[PIPE_SHADER_FRAGMENT] = &sctx->ps_shader,
|
||||
};
|
||||
|
||||
util_queue_fence_wait(&sel->ready);
|
||||
util_queue_drop_job(&sctx->screen->shader_compiler_queue, &sel->ready);
|
||||
|
||||
if (current_shader[sel->type]->cso == sel) {
|
||||
current_shader[sel->type]->cso = NULL;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue