+
+static void swap_banked(void *pixels)
+{
+ int i, sz;
+ unsigned int pending;
+ unsigned char *pptr = pixels;
+ uint32_t offs = 0;
+
+ wait_vsync();
+
+ /* assume window is always at 0 at the beginning */
+ pending = fb_size;
+ while(pending > 0) {
+ sz = pending > vmode->bank_size ? vmode->bank_size : pending;
+ memcpy(vmem, pptr, sz);
+ pptr += sz;
+ pending -= sz;
+ vbe_setwin(0, ++offs);
+ }
+
+ vbe_setwin(0, 0);
+}