diff --git a/src/renderer.c b/src/renderer.c index c8eef14a1a887de8b79c801d8b4e463aa9e0d5b2..194633e354bc1b4600320767dc40d2bea6067fd4 100644 --- a/src/renderer.c +++ b/src/renderer.c @@ -1022,19 +1022,23 @@ static bool plane_av1_grain(struct pass_state *pass, int plane_idx, if (!grain_params.tex) return false; - struct pl_shader *sh = pl_dispatch_begin_ex(rr->dp, true); - if (!pl_shader_av1_grain(sh, &rr->grain_state[plane_idx], &grain_params)) { - pl_dispatch_abort(rr->dp, &sh); + img->sh = pl_dispatch_begin_ex(rr->dp, true); + if (!pl_shader_av1_grain(img->sh, &rr->grain_state[plane_idx], &grain_params)) { + pl_dispatch_abort(rr->dp, &img->sh); rr->disable_grain = true; return false; } + img->tex = NULL; if (!img_tex(pass, img)) { PL_ERR(rr, "Failed applying AV1 grain.. disabling!"); + pl_dispatch_abort(rr->dp, &img->sh); + img->tex = grain_params.tex; rr->disable_grain = true; return false; } + img->repr = repr; return true; }