nv40: respect do_flip in surface_copy()

This commit is contained in:
Ben Skeggs 2008-03-25 12:57:36 +11:00
parent 9e1f7b2c57
commit ce64778ed1

View file

@ -42,8 +42,20 @@ nv40_surface_copy(struct pipe_context *pipe, unsigned do_flip,
struct nv40_context *nv40 = nv40_context(pipe);
struct nouveau_winsys *nvws = nv40->nvws;
nvws->surface_copy(nvws, dest, destx, desty, src, srcx, srcy,
width, height);
if (do_flip) {
/*XXX: This dodgyness will do for now for correctness. But,
* need to investigate whether the 2D engine is able to
* manage a flip (perhaps SIFM?), if not, use the 3D engine
*/
desty += height;
while (height--) {
nvws->surface_copy(nvws, dest, destx, desty--, src,
srcx, srcy++, width, 1);
}
} else {
nvws->surface_copy(nvws, dest, destx, desty, src, srcx, srcy,
width, height);
}
}
static void