summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErik Faye-Lund <erik.faye-lund@collabora.com>2020-09-28 21:38:38 +0200
committerMarge Bot <eric+marge@anholt.net>2020-09-29 10:14:39 +0000
commitb4c07a8a87d06f2c347f204cac9fe708428e272d (patch)
treee31b63c70806d2fcb064a0f96bd079aa30914183
parent69654f0918f0fb46466b81296e4030a9a63c6e4e (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.c18
-rw-r--r--src/gallium/auxiliary/util/u_blitter.h3
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);