tests: Use staging buffer for WritePPM
diff --git a/tests/xgltestframework.cpp b/tests/xgltestframework.cpp
index 72e8de5..a2ffd66 100644
--- a/tests/xgltestframework.cpp
+++ b/tests/xgltestframework.cpp
@@ -177,7 +177,11 @@
 {
     string filename;
     XGL_RESULT err;
-        int x, y;
+    int x, y;
+    XglImage displayImage(image->device());
+
+    displayImage.init(image->extent().width, image->extent().height, image->format(), 0, XGL_LINEAR_TILING);
+    displayImage.CopyImage(*image);
 
     filename.append(basename);
     filename.append(".ppm");
@@ -194,36 +198,33 @@
     ASSERT_XGL_SUCCESS( err );
     ASSERT_EQ(data_size, sizeof(sr_layout));
 
-    const char *ptr;
-
-    err = xglMapMemory( image->memory(), 0, (void **) &ptr );
-    ASSERT_XGL_SUCCESS( err );
-
+    char *ptr;
+    ptr = (char *) displayImage.map();
     ptr += sr_layout.offset;
 
     ofstream file (filename.c_str());
     ASSERT_TRUE(file.is_open()) << "Unable to open file: " << filename;
 
     file << "P6\n";
-    file << image->width() << "\n";
-    file << image->height() << "\n";
+    file << displayImage.width() << "\n";
+    file << displayImage.height() << "\n";
     file << 255 << "\n";
 
-    for (y = 0; y < image->height(); y++) {
+    for (y = 0; y < displayImage.height(); y++) {
         const int *row = (const int *) ptr;
         int swapped;
 
-        if (image->format() == XGL_FMT_B8G8R8A8_UNORM)
+        if (displayImage.format() == XGL_FMT_B8G8R8A8_UNORM)
         {
-            for (x = 0; x < image->width(); x++) {
+            for (x = 0; x < displayImage.width(); x++) {
                 swapped = (*row & 0xff00ff00) | (*row & 0x000000ff) << 16 | (*row & 0x00ff0000) >> 16;
                 file.write((char *) &swapped, 3);
                 row++;
             }
         }
-        else if (image->format() == XGL_FMT_R8G8B8A8_UNORM)
+        else if (displayImage.format() == XGL_FMT_R8G8B8A8_UNORM)
         {
-            for (x = 0; x < image->width(); x++) {
+            for (x = 0; x < displayImage.width(); x++) {
                 file.write((char *) row, 3);
                 row++;
             }
@@ -237,9 +238,7 @@
     }
 
     file.close();
-
-    err = xglUnmapMemory( image->memory() );
-    ASSERT_XGL_SUCCESS( err );
+    displayImage.unmap();
 }
 
 void XglTestFramework::Compare(const char *basename, XglImage *image )