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.
This commit is contained in:
Eric Anholt
2015-04-08 13:11:01 -07:00
parent 39b6f7e76c
commit adae027260
+31 -13
View File
@@ -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;