From: Eric Anholt Date: Wed, 8 Apr 2015 20:11:01 +0000 (-0700) Subject: vc4: Use the blit interface for updating shadow textures. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=adae027260bedc7af73e5cc7a74af3cafa4ab460;p=mesa.git vc4: Use the blit interface for updating shadow textures. This lets us plug in a better blit implementation and have it impact the shadow update, too. --- diff --git a/src/gallium/drivers/vc4/vc4_resource.c b/src/gallium/drivers/vc4/vc4_resource.c index cbb334ff13a..10e1d6c34ed 100644 --- a/src/gallium/drivers/vc4/vc4_resource.c +++ b/src/gallium/drivers/vc4/vc4_resource.c @@ -651,20 +651,38 @@ vc4_update_shadow_baselevel_texture(struct pipe_context *pctx, return; for (int i = 0; i <= shadow->base.b.last_level; i++) { - struct pipe_box box = { - .x = 0, - .y = 0, - .z = 0, - .width = u_minify(shadow->base.b.width0, i), - .height = u_minify(shadow->base.b.height0, i), - .depth = 1, + unsigned width = u_minify(shadow->base.b.width0, i); + unsigned height = u_minify(shadow->base.b.height0, i); + struct pipe_blit_info info = { + .dst = { + .resource = &shadow->base.b, + .level = i, + .box = { + .x = 0, + .y = 0, + .z = 0, + .width = width, + .height = height, + .depth = 1, + }, + .format = shadow->base.b.format, + }, + .src = { + .resource = &orig->base.b, + .level = view->u.tex.first_level + i, + .box = { + .x = 0, + .y = 0, + .z = 0, + .width = width, + .height = height, + .depth = 1, + }, + .format = orig->base.b.format, + }, + .mask = ~0, }; - - util_resource_copy_region(pctx, - &shadow->base.b, i, 0, 0, 0, - &orig->base.b, - view->u.tex.first_level + i, - &box); + pctx->blit(pctx, &info); } shadow->writes = orig->writes;