diff --git a/src/gallium/auxiliary/util/u_blitter.c b/src/gallium/auxiliary/util/u_blitter.c index 91bc6741238..8b2bfecf816 100644 --- a/src/gallium/auxiliary/util/u_blitter.c +++ b/src/gallium/auxiliary/util/u_blitter.c @@ -1801,7 +1801,7 @@ void util_blitter_copy_texture(struct blitter_context *blitter, util_blitter_blit_generic(blitter, dst_view, &dstbox, src_view, srcbox, src->width0, src->height0, PIPE_MASK_RGBAZS, PIPE_TEX_FILTER_NEAREST, NULL, - false, false, 0); + false, false, 0, NULL); pipe_surface_reference(&dst_view, NULL); pipe_sampler_view_reference(&src_view, NULL); @@ -2011,7 +2011,8 @@ void util_blitter_blit_generic(struct blitter_context *blitter, unsigned mask, unsigned filter, const struct pipe_scissor_state *scissor, bool alpha_blend, bool sample0_only, - unsigned dst_sample) + unsigned dst_sample, + void *fs_override) { struct blitter_context_priv *ctx = (struct blitter_context_priv*)blitter; unsigned count = 0; @@ -2094,36 +2095,40 @@ void util_blitter_blit_generic(struct blitter_context *blitter, blitter_check_saved_fb_state(ctx); blitter_disable_render_cond(ctx); + void *fs = fs_override; + /* Blend, DSA, fragment shader. */ if (dst_has_depth && dst_has_stencil) { pipe->bind_blend_state(pipe, ctx->blend[0][0]); pipe->bind_depth_stencil_alpha_state(pipe, ctx->dsa_write_depth_stencil); - if (src_has_color) { - assert(use_txf); - ctx->bind_fs_state(pipe, - blitter_get_fs_pack_color_zs(ctx, src_target, - src_samples, dst->format, false)); - } else { - ctx->bind_fs_state(pipe, - blitter_get_fs_texfetch_depthstencil(ctx, src_target, src_samples, - dst_samples, use_txf)); + + if (!fs) { + if (src_has_color) { + assert(use_txf); + fs = blitter_get_fs_pack_color_zs(ctx, src_target, + src_samples, dst->format, false); + } else { + fs = blitter_get_fs_texfetch_depthstencil(ctx, src_target, + src_samples, dst_samples, + use_txf); + } } } else if (dst_has_depth) { pipe->bind_blend_state(pipe, ctx->blend[0][0]); pipe->bind_depth_stencil_alpha_state(pipe, ctx->dsa_write_depth_keep_stencil); - if (src_has_color && - (src->format == PIPE_FORMAT_R32_UINT || - src->format == PIPE_FORMAT_R32G32_UINT)) { - assert(use_txf); - ctx->bind_fs_state(pipe, - blitter_get_fs_pack_color_zs(ctx, src_target, - src_samples, dst->format, false)); - } else { - ctx->bind_fs_state(pipe, - blitter_get_fs_texfetch_depth(ctx, src_target, src_samples, - dst_samples, use_txf)); + if (!fs) { + if (src_has_color && + (src->format == PIPE_FORMAT_R32_UINT || + src->format == PIPE_FORMAT_R32G32_UINT)) { + assert(use_txf); + fs = blitter_get_fs_pack_color_zs(ctx, src_target, src_samples, + dst->format, false); + } else { + fs = blitter_get_fs_texfetch_depth(ctx, src_target, src_samples, + dst_samples, use_txf); + } } } else if (dst_has_stencil) { pipe->bind_blend_state(pipe, ctx->blend[0][0]); @@ -2131,30 +2136,33 @@ void util_blitter_blit_generic(struct blitter_context *blitter, ctx->dsa_keep_depth_write_stencil); assert(src_has_stencil); /* unpacking from color is unsupported */ - ctx->bind_fs_state(pipe, - blitter_get_fs_texfetch_stencil(ctx, src_target, src_samples, - dst_samples, use_txf)); + if (!fs) { + fs = blitter_get_fs_texfetch_stencil(ctx, src_target, src_samples, + dst_samples, use_txf); + } } else { unsigned colormask = mask & PIPE_MASK_RGBA; pipe->bind_blend_state(pipe, ctx->blend[colormask][alpha_blend]); pipe->bind_depth_stencil_alpha_state(pipe, ctx->dsa_keep_depth_stencil); - if (src_has_depth && - (dst->format == PIPE_FORMAT_R32_UINT || - dst->format == PIPE_FORMAT_R32G32_UINT)) { - assert(use_txf); - ctx->bind_fs_state(pipe, - blitter_get_fs_pack_color_zs(ctx, src_target, - src_samples, src->format, true)); - } else { - ctx->bind_fs_state(pipe, - blitter_get_fs_texfetch_col(ctx, src->format, dst->format, src_target, - src_samples, dst_samples, filter, - use_txf)); + if (!fs) { + if (src_has_depth && + (dst->format == PIPE_FORMAT_R32_UINT || + dst->format == PIPE_FORMAT_R32G32_UINT)) { + assert(use_txf); + fs = blitter_get_fs_pack_color_zs(ctx, src_target, src_samples, + src->format, true); + } else { + fs = blitter_get_fs_texfetch_col(ctx, src->format, dst->format, + src_target, src_samples, + dst_samples, filter, use_txf); + } } } + ctx->bind_fs_state(pipe, fs); + /* Set the linear filter only for scaled color non-MSAA blits. */ if (filter == PIPE_TEX_FILTER_LINEAR) { if (src_target == PIPE_TEXTURE_RECT && ctx->has_texrect) { @@ -2237,7 +2245,8 @@ out: void util_blitter_blit(struct blitter_context *blitter, - const struct pipe_blit_info *info) + const struct pipe_blit_info *info, + void *fs_override) { struct pipe_resource *dst = info->dst.resource; struct pipe_resource *src = info->src.resource; @@ -2263,7 +2272,7 @@ util_blitter_blit(struct blitter_context *blitter, info->mask, info->filter, info->scissor_enable ? &info->scissor : NULL, info->alpha_blend, info->sample0_only, - info->dst_sample); + info->dst_sample, fs_override); pipe_surface_reference(&dst_view, NULL); pipe_sampler_view_reference(&src_view, NULL); diff --git a/src/gallium/auxiliary/util/u_blitter.h b/src/gallium/auxiliary/util/u_blitter.h index 2746b704f16..b0162e3a215 100644 --- a/src/gallium/auxiliary/util/u_blitter.h +++ b/src/gallium/auxiliary/util/u_blitter.h @@ -272,10 +272,12 @@ void util_blitter_blit_generic(struct blitter_context *blitter, unsigned mask, unsigned filter, const struct pipe_scissor_state *scissor, bool alpha_blend, bool sample0_only, - unsigned dst_sample); + unsigned dst_sample, + void *fs_override); void util_blitter_blit(struct blitter_context *blitter, - const struct pipe_blit_info *info); + const struct pipe_blit_info *info, + void *fs_override); void util_blitter_generate_mipmap(struct blitter_context *blitter, struct pipe_resource *tex, diff --git a/src/gallium/drivers/asahi/agx_blit.c b/src/gallium/drivers/asahi/agx_blit.c index 3887544fa9e..1015d4bf241 100644 --- a/src/gallium/drivers/asahi/agx_blit.c +++ b/src/gallium/drivers/asahi/agx_blit.c @@ -391,7 +391,7 @@ agx_blit(struct pipe_context *pipe, const struct pipe_blit_info *info) agx_flush_writer(ctx, agx_resource(info->dst.resource), "Blit"); agx_blitter_save(ctx, ctx->blitter, info->render_condition_enable); - util_blitter_blit(ctx->blitter, info); + util_blitter_blit(ctx->blitter, info, NULL); } static bool diff --git a/src/gallium/drivers/crocus/crocus_blit.c b/src/gallium/drivers/crocus/crocus_blit.c index bb59faabf65..48fbb1f12c5 100644 --- a/src/gallium/drivers/crocus/crocus_blit.c +++ b/src/gallium/drivers/crocus/crocus_blit.c @@ -373,7 +373,7 @@ crocus_u_blitter(struct crocus_context *ice, if (!util_format_has_alpha(dinfo.dst.resource->format)) dinfo.mask &= ~PIPE_MASK_A; crocus_blitter_begin(ice, CROCUS_SAVE_FRAMEBUFFER | CROCUS_SAVE_TEXTURES | CROCUS_SAVE_FRAGMENT_STATE, info->render_condition_enable); - util_blitter_blit(ice->blitter, &dinfo); + util_blitter_blit(ice->blitter, &dinfo, NULL); } /** @@ -412,7 +412,7 @@ crocus_blit(struct pipe_context *ctx, const struct pipe_blit_info *info) struct pipe_blit_info depth_blit = *info; depth_blit.mask = PIPE_MASK_Z; crocus_blitter_begin(ice, CROCUS_SAVE_FRAMEBUFFER | CROCUS_SAVE_TEXTURES | CROCUS_SAVE_FRAGMENT_STATE, info->render_condition_enable); - util_blitter_blit(ice->blitter, &depth_blit); + util_blitter_blit(ice->blitter, &depth_blit, NULL); struct pipe_surface *dst_view, dst_templ; util_blitter_default_dst_texture(&dst_templ, info->dst.resource, info->dst.level, info->dst.box.z); diff --git a/src/gallium/drivers/d3d12/d3d12_blit.cpp b/src/gallium/drivers/d3d12/d3d12_blit.cpp index 7bf411476d7..c9e0219e1dd 100644 --- a/src/gallium/drivers/d3d12/d3d12_blit.cpp +++ b/src/gallium/drivers/d3d12/d3d12_blit.cpp @@ -295,7 +295,7 @@ util_blit(struct d3d12_context *ctx, { util_blit_save_state(ctx); - util_blitter_blit(ctx->blitter, info); + util_blitter_blit(ctx->blitter, info, NULL); } static bool diff --git a/src/gallium/drivers/etnaviv/etnaviv_clear_blit.c b/src/gallium/drivers/etnaviv/etnaviv_clear_blit.c index 30f0086170d..28121674035 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_clear_blit.c +++ b/src/gallium/drivers/etnaviv/etnaviv_clear_blit.c @@ -127,7 +127,7 @@ etna_blit(struct pipe_context *pctx, const struct pipe_blit_info *blit_info) } etna_blit_save_state(ctx, info.render_condition_enable); - util_blitter_blit(ctx->blitter, &info); + util_blitter_blit(ctx->blitter, &info, NULL); success: if (info.dst.resource->bind & PIPE_BIND_SAMPLER_VIEW) diff --git a/src/gallium/drivers/freedreno/freedreno_blitter.c b/src/gallium/drivers/freedreno/freedreno_blitter.c index 43f08f40d81..f19736a3ab7 100644 --- a/src/gallium/drivers/freedreno/freedreno_blitter.c +++ b/src/gallium/drivers/freedreno/freedreno_blitter.c @@ -168,7 +168,8 @@ fd_blitter_blit(struct fd_context *ctx, const struct pipe_blit_info *info) util_blitter_blit_generic( ctx->blitter, dst_view, &info->dst.box, src_view, &info->src.box, src->width0, src->height0, info->mask, info->filter, - info->scissor_enable ? &info->scissor : NULL, info->alpha_blend, false, 0); + info->scissor_enable ? &info->scissor : NULL, info->alpha_blend, false, 0, + NULL); pipe_surface_reference(&dst_view, NULL); pipe_sampler_view_reference(&src_view, NULL); diff --git a/src/gallium/drivers/i915/i915_surface.c b/src/gallium/drivers/i915/i915_surface.c index fd94e8f5d82..f0275af7bbf 100644 --- a/src/gallium/drivers/i915/i915_surface.c +++ b/src/gallium/drivers/i915/i915_surface.c @@ -119,7 +119,8 @@ i915_surface_copy_render(struct pipe_context *pipe, struct pipe_resource *dst, util_blitter_blit_generic(i915->blitter, dst_view, &dstbox, src_view, src_box, src_width0, src_height0, PIPE_MASK_RGBAZS, - PIPE_TEX_FILTER_NEAREST, NULL, false, false, 0); + PIPE_TEX_FILTER_NEAREST, NULL, false, false, 0, + NULL); return; fallback: @@ -274,7 +275,7 @@ i915_blit(struct pipe_context *pipe, const struct pipe_blit_info *blit_info) i915_util_blitter_save_states(i915); - util_blitter_blit(i915->blitter, &info); + util_blitter_blit(i915->blitter, &info, NULL); } static void diff --git a/src/gallium/drivers/lima/lima_resource.c b/src/gallium/drivers/lima/lima_resource.c index 1e263e95e57..0e9f30f5c64 100644 --- a/src/gallium/drivers/lima/lima_resource.c +++ b/src/gallium/drivers/lima/lima_resource.c @@ -879,7 +879,7 @@ lima_blit(struct pipe_context *pctx, const struct pipe_blit_info *blit_info) lima_util_blitter_save_states(ctx); - util_blitter_blit(ctx->blitter, &info); + util_blitter_blit(ctx->blitter, &info, NULL); } static void diff --git a/src/gallium/drivers/llvmpipe/lp_surface.c b/src/gallium/drivers/llvmpipe/lp_surface.c index cf5e4a48cdd..7bde398dd8b 100644 --- a/src/gallium/drivers/llvmpipe/lp_surface.c +++ b/src/gallium/drivers/llvmpipe/lp_surface.c @@ -191,7 +191,7 @@ lp_blit(struct pipe_context *pipe, util_blitter_save_render_condition(lp->blitter, lp->render_cond_query, lp->render_cond_cond, lp->render_cond_mode); - util_blitter_blit(lp->blitter, &info); + util_blitter_blit(lp->blitter, &info, NULL); } diff --git a/src/gallium/drivers/nouveau/nv30/nv30_miptree.c b/src/gallium/drivers/nouveau/nv30/nv30_miptree.c index e81585f4a12..bd5898d38f3 100644 --- a/src/gallium/drivers/nouveau/nv30/nv30_miptree.c +++ b/src/gallium/drivers/nouveau/nv30/nv30_miptree.c @@ -268,7 +268,7 @@ nv30_blit(struct pipe_context *pipe, nv30->fragprog.num_textures, nv30->fragprog.textures); util_blitter_save_render_condition(nv30->blitter, nv30->render_cond_query, nv30->render_cond_cond, nv30->render_cond_mode); - util_blitter_blit(nv30->blitter, &info); + util_blitter_blit(nv30->blitter, &info, NULL); } void diff --git a/src/gallium/drivers/panfrost/pan_blit.c b/src/gallium/drivers/panfrost/pan_blit.c index cbc96e903db..45bf1befd42 100644 --- a/src/gallium/drivers/panfrost/pan_blit.c +++ b/src/gallium/drivers/panfrost/pan_blit.c @@ -90,7 +90,7 @@ panfrost_blit_no_afbc_legalization(struct pipe_context *pipe, panfrost_blitter_save(ctx, info->render_condition_enable ? PAN_RENDER_BLIT_COND : PAN_RENDER_BLIT); - util_blitter_blit(ctx->blitter, info); + util_blitter_blit(ctx->blitter, info, NULL); } void diff --git a/src/gallium/drivers/r300/r300_blit.c b/src/gallium/drivers/r300/r300_blit.c index dd858964400..8dd37865d43 100644 --- a/src/gallium/drivers/r300/r300_blit.c +++ b/src/gallium/drivers/r300/r300_blit.c @@ -669,7 +669,7 @@ static void r300_resource_copy_region(struct pipe_context *pipe, util_blitter_blit_generic(r300->blitter, dst_view, &dstbox, src_view, src_box, src_width0, src_height0, PIPE_MASK_RGBAZS, PIPE_TEX_FILTER_NEAREST, NULL, - false, false, 0); + false, false, 0, NULL); r300_blitter_end(r300); pipe_surface_reference(&dst_view, NULL); @@ -791,7 +791,7 @@ static void r300_msaa_resolve(struct pipe_context *pipe, blit.src.box.z = 0; r300_blitter_begin(r300, R300_BLIT | R300_IGNORE_RENDER_COND); - util_blitter_blit(r300->blitter, &blit); + util_blitter_blit(r300->blitter, &blit, NULL); r300_blitter_end(r300); pipe_resource_reference(&tmp, NULL); @@ -859,7 +859,7 @@ static void r300_blit(struct pipe_context *pipe, r300_blitter_begin(r300, R300_BLIT | (info.render_condition_enable ? 0 : R300_IGNORE_RENDER_COND)); - util_blitter_blit(r300->blitter, &info); + util_blitter_blit(r300->blitter, &info, NULL); r300_blitter_end(r300); } diff --git a/src/gallium/drivers/r600/r600_blit.c b/src/gallium/drivers/r600/r600_blit.c index e32e5c18401..64adfd9b428 100644 --- a/src/gallium/drivers/r600/r600_blit.c +++ b/src/gallium/drivers/r600/r600_blit.c @@ -790,7 +790,7 @@ void r600_resource_copy_region(struct pipe_context *ctx, util_blitter_blit_generic(rctx->blitter, dst_view, &dstbox, src_view, src_box, src_width0, src_height0, PIPE_MASK_RGBAZS, PIPE_TEX_FILTER_NEAREST, NULL, - false, false, 0); + false, false, 0, NULL); r600_blitter_end(ctx); pipe_surface_reference(&dst_view, NULL); @@ -884,7 +884,7 @@ static bool do_hardware_msaa_resolve(struct pipe_context *ctx, r600_blitter_begin(ctx, R600_BLIT | (info->render_condition_enable ? 0 : R600_DISABLE_RENDER_COND)); - util_blitter_blit(rctx->blitter, &blit); + util_blitter_blit(rctx->blitter, &blit, NULL); r600_blitter_end(ctx); pipe_resource_reference(&tmp, NULL); @@ -935,7 +935,7 @@ static void r600_blit(struct pipe_context *ctx, r600_blitter_begin(ctx, R600_BLIT | (info->render_condition_enable ? 0 : R600_DISABLE_RENDER_COND)); - util_blitter_blit(rctx->blitter, info); + util_blitter_blit(rctx->blitter, info, NULL); r600_blitter_end(ctx); } diff --git a/src/gallium/drivers/radeonsi/si_blit.c b/src/gallium/drivers/radeonsi/si_blit.c index 5a9ac89a5c1..3520ae283e4 100644 --- a/src/gallium/drivers/radeonsi/si_blit.c +++ b/src/gallium/drivers/radeonsi/si_blit.c @@ -1056,7 +1056,7 @@ void si_gfx_copy_image(struct si_context *sctx, struct pipe_resource *dst, si_blitter_begin(sctx, SI_COPY); util_blitter_blit_generic(sctx->blitter, dst_view, &dstbox, src_view, src_box, src->width0, src->height0, PIPE_MASK_RGBAZS, PIPE_TEX_FILTER_NEAREST, NULL, - false, false, 0); + false, false, 0, NULL); si_blitter_end(sctx); pipe_surface_reference(&dst_view, NULL); @@ -1259,7 +1259,7 @@ void si_gfx_blit(struct pipe_context *ctx, const struct pipe_blit_info *info) sctx->sqtt_next_event = EventCmdBlitImage; si_blitter_begin(sctx, SI_BLIT | (info->render_condition_enable ? 0 : SI_DISABLE_RENDER_COND)); - util_blitter_blit(sctx->blitter, info); + util_blitter_blit(sctx->blitter, info, NULL); si_blitter_end(sctx); } diff --git a/src/gallium/drivers/softpipe/sp_surface.c b/src/gallium/drivers/softpipe/sp_surface.c index d25247a5e1d..d8ba29afd52 100644 --- a/src/gallium/drivers/softpipe/sp_surface.c +++ b/src/gallium/drivers/softpipe/sp_surface.c @@ -84,7 +84,7 @@ static void sp_blit(struct pipe_context *pipe, sp->sampler_views[PIPE_SHADER_FRAGMENT]); util_blitter_save_render_condition(sp->blitter, sp->render_cond_query, sp->render_cond_cond, sp->render_cond_mode); - util_blitter_blit(sp->blitter, info); + util_blitter_blit(sp->blitter, info, NULL); } static void diff --git a/src/gallium/drivers/svga/svga_pipe_blit.c b/src/gallium/drivers/svga/svga_pipe_blit.c index 5eaa1b06a2f..6c9d3bb16e8 100644 --- a/src/gallium/drivers/svga/svga_pipe_blit.c +++ b/src/gallium/drivers/svga/svga_pipe_blit.c @@ -690,7 +690,7 @@ try_blit(struct svga_context *svga, const struct pipe_blit_info *blit_info) svga_toggle_render_condition(svga, blit.render_condition_enable, false); - util_blitter_blit(svga->blitter, &blit); + util_blitter_blit(svga->blitter, &blit, NULL); svga_toggle_render_condition(svga, blit.render_condition_enable, true); diff --git a/src/gallium/drivers/v3d/v3d_blit.c b/src/gallium/drivers/v3d/v3d_blit.c index e8ddf103d55..0c60f19e729 100644 --- a/src/gallium/drivers/v3d/v3d_blit.c +++ b/src/gallium/drivers/v3d/v3d_blit.c @@ -127,7 +127,7 @@ v3d_render_blit(struct pipe_context *ctx, struct pipe_blit_info *info) } v3d_blitter_save(v3d, true, info->render_condition_enable); - util_blitter_blit(v3d->blitter, info); + util_blitter_blit(v3d->blitter, info, NULL); pipe_resource_reference(&tiled, NULL); info->mask = 0; @@ -203,7 +203,7 @@ v3d_stencil_blit(struct pipe_context *ctx, struct pipe_blit_info *info) PIPE_MASK_R, PIPE_TEX_FILTER_NEAREST, info->scissor_enable ? &info->scissor : NULL, - info->alpha_blend, false, 0); + info->alpha_blend, false, 0, NULL); pipe_surface_reference(&dst_surf, NULL); pipe_sampler_view_reference(&src_view, NULL); diff --git a/src/gallium/drivers/vc4/vc4_blit.c b/src/gallium/drivers/vc4/vc4_blit.c index c15e537a5a9..f0e22e70d58 100644 --- a/src/gallium/drivers/vc4/vc4_blit.c +++ b/src/gallium/drivers/vc4/vc4_blit.c @@ -458,7 +458,7 @@ vc4_render_blit(struct pipe_context *ctx, struct pipe_blit_info *info) } vc4_blitter_save(vc4); - util_blitter_blit(vc4->blitter, info); + util_blitter_blit(vc4->blitter, info, NULL); info->mask = 0; } @@ -528,7 +528,7 @@ vc4_stencil_blit(struct pipe_context *ctx, struct pipe_blit_info *info) PIPE_MASK_RGBA : PIPE_MASK_R, PIPE_TEX_FILTER_NEAREST, info->scissor_enable ? &info->scissor : NULL, - info->alpha_blend, false, 0); + info->alpha_blend, false, 0, NULL); pipe_surface_reference(&dst_surf, NULL); pipe_sampler_view_reference(&src_view, NULL); diff --git a/src/gallium/drivers/zink/zink_blit.c b/src/gallium/drivers/zink/zink_blit.c index 7153da6b07b..0ea97375e7c 100644 --- a/src/gallium/drivers/zink/zink_blit.c +++ b/src/gallium/drivers/zink/zink_blit.c @@ -361,7 +361,7 @@ zink_blit(struct pipe_context *pctx, depth_blit.mask = PIPE_MASK_Z; if (util_blitter_is_blit_supported(ctx->blitter, &depth_blit)) { zink_blit_begin(ctx, ZINK_BLIT_SAVE_FB | ZINK_BLIT_SAVE_FS | ZINK_BLIT_SAVE_TEXTURES); - util_blitter_blit(ctx->blitter, &depth_blit); + util_blitter_blit(ctx->blitter, &depth_blit, NULL); } else { mesa_loge("ZINK: depth blit unsupported %s -> %s", util_format_short_name(info->src.resource->format), @@ -465,7 +465,7 @@ zink_blit(struct pipe_context *pctx, } else { struct pipe_blit_info new_info = *info; new_info.src.resource = &use_src->base.b; - util_blitter_blit(ctx->blitter, &new_info); + util_blitter_blit(ctx->blitter, &new_info, NULL); } ctx->blitting = false; ctx->rp_clears_enabled = rp_clears_enabled; diff --git a/src/gallium/drivers/zink/zink_render_pass.c b/src/gallium/drivers/zink/zink_render_pass.c index 3d6e75d7ed7..0c798846c7f 100644 --- a/src/gallium/drivers/zink/zink_render_pass.c +++ b/src/gallium/drivers/zink/zink_render_pass.c @@ -809,7 +809,7 @@ zink_begin_render_pass(struct zink_context *ctx) util_blitter_blit_generic(ctx->blitter, dst_view, &dstbox, src_view, &dstbox, ctx->fb_state.width, ctx->fb_state.height, PIPE_MASK_RGBAZS, PIPE_TEX_FILTER_NEAREST, NULL, - false, false, 0); + false, false, 0, NULL); ctx->clears_enabled = clears_enabled; ctx->rp_clears_enabled = rp_clears_enabled; ctx->blitting = false;