gl: updated glxext.h to version 27
[mesa.git] / src / gallium / drivers / nv40 / nv40_surface.c
index 576af7c59eec7f78f34e5dd65f56a4c12ed1a3e5..02ecfd7bbb77caa8a6a8243e2f834bacaaeec01d 100644 (file)
  * 
  **************************************************************************/
 
-#include "nv40_context.h"
 #include "pipe/p_defines.h"
-#include "pipe/p_winsys.h"
-#include "pipe/p_inlines.h"
+#include "util/u_inlines.h"
 
 #include "util/u_tile.h"
 
+#include "nv40_context.h"
+
 static void
-nv40_surface_copy(struct pipe_context *pipe, boolean do_flip,
+nv40_surface_copy(struct pipe_context *pipe,
                  struct pipe_surface *dest, unsigned destx, unsigned desty,
                  struct pipe_surface *src, unsigned srcx, unsigned srcy,
                  unsigned width, unsigned height)
 {
        struct nv40_context *nv40 = nv40_context(pipe);
-       struct nouveau_winsys *nvws = nv40->nvws;
+       struct nv04_surface_2d *eng2d = nv40->screen->eng2d;
 
-       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);
-       }
+       eng2d->copy(eng2d, dest, destx, desty, src, srcx, srcy, width, height);
 }
 
 static void
@@ -64,9 +51,9 @@ nv40_surface_fill(struct pipe_context *pipe, struct pipe_surface *dest,
                  unsigned height, unsigned value)
 {
        struct nv40_context *nv40 = nv40_context(pipe);
-       struct nouveau_winsys *nvws = nv40->nvws;
+       struct nv04_surface_2d *eng2d = nv40->screen->eng2d;
 
-       nvws->surface_fill(nvws, dest, destx, desty, width, height, value);
+       eng2d->fill(eng2d, dest, destx, desty, width, height, value);
 }
 
 void