diff options
author | Erik Faye-Lund <erik.faye-lund@collabora.com> | 2020-09-28 21:38:38 +0200 |
---|---|---|
committer | Marge Bot <eric+marge@anholt.net> | 2020-09-29 10:14:39 +0000 |
commit | b4c07a8a87d06f2c347f204cac9fe708428e272d (patch) | |
tree | e31b63c70806d2fcb064a0f96bd079aa30914183 | |
parent | 69654f0918f0fb46466b81296e4030a9a63c6e4e (diff) |
gallium/util: allow scaling blits for stencil-fallback
We also need to be able to scale the stencil-blits, so let's pass the
full destination box instead of just the position.
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6898>
-rw-r--r-- | src/gallium/auxiliary/util/u_blitter.c | 18 | ||||
-rw-r--r-- | src/gallium/auxiliary/util/u_blitter.h | 3 |
2 files changed, 11 insertions, 10 deletions
diff --git a/src/gallium/auxiliary/util/u_blitter.c b/src/gallium/auxiliary/util/u_blitter.c index 25d9ad38d21..ddb00650660 100644 --- a/src/gallium/auxiliary/util/u_blitter.c +++ b/src/gallium/auxiliary/util/u_blitter.c @@ -2818,7 +2818,7 @@ void util_blitter_stencil_fallback(struct blitter_context *blitter, struct pipe_resource *dst, unsigned dst_level, - unsigned dstx, unsigned dsty, unsigned dstz, + const struct pipe_box *dstbox, struct pipe_resource *src, unsigned src_level, const struct pipe_box *srcbox) @@ -2835,7 +2835,7 @@ util_blitter_stencil_fallback(struct blitter_context *blitter, /* Initialize the surface. */ struct pipe_surface *dst_view, dst_templ; - util_blitter_default_dst_texture(&dst_templ, dst, dst_level, dstz); + util_blitter_default_dst_texture(&dst_templ, dst, dst_level, dstbox->z); dst_view = pipe->create_surface(pipe, dst, &dst_templ); /* Initialize the sampler view. */ @@ -2851,8 +2851,8 @@ util_blitter_stencil_fallback(struct blitter_context *blitter, /* set a framebuffer state */ struct pipe_framebuffer_state fb_state = { 0 }; - fb_state.width = srcbox->width; - fb_state.height = srcbox->height; + fb_state.width = dstbox->width; + fb_state.height = dstbox->height; fb_state.zsbuf = dst_view; pipe->set_framebuffer_state(pipe, &fb_state); pipe->set_sample_mask(pipe, ~0); @@ -2862,7 +2862,7 @@ util_blitter_stencil_fallback(struct blitter_context *blitter, blitter_set_dst_dimensions(ctx, dst_view->width, dst_view->height); pipe->clear_depth_stencil(pipe, dst_view, PIPE_CLEAR_STENCIL, 0.0, 0, - dstx, dsty, srcbox->width, srcbox->height, + dstbox->x, dstbox->y, dstbox->width, dstbox->height, true); pipe->set_sampler_views(pipe, PIPE_SHADER_FRAGMENT, 0, 1, &src_view); @@ -2894,9 +2894,11 @@ util_blitter_stencil_fallback(struct blitter_context *blitter, pipe->bind_depth_stencil_alpha_state(pipe, get_stencil_blit_fallback_dsa(ctx, i)); - blitter->draw_rectangle(blitter, ctx->velem_state, get_vs_passthrough_pos, - dstx, dsty, - dstx + srcbox->width, dsty + srcbox->height, + blitter->draw_rectangle(blitter, ctx->velem_state, + get_vs_passthrough_pos_generic, + dstbox->x, dstbox->y, + dstbox->x + dstbox->width, + dstbox->y + dstbox->height, 0, stencil_bits, UTIL_BLITTER_ATTRIB_TEXCOORD_XYZW, &coord); diff --git a/src/gallium/auxiliary/util/u_blitter.h b/src/gallium/auxiliary/util/u_blitter.h index b82609af65d..2ec113d5cdd 100644 --- a/src/gallium/auxiliary/util/u_blitter.h +++ b/src/gallium/auxiliary/util/u_blitter.h @@ -404,8 +404,7 @@ void util_blitter_custom_shader(struct blitter_context *blitter, void util_blitter_stencil_fallback(struct blitter_context *blitter, struct pipe_resource *dst, unsigned dst_level, - unsigned dstx, unsigned dsty, - unsigned dstz, + const struct pipe_box *dstbox, struct pipe_resource *src, unsigned src_level, const struct pipe_box *srcbox); |