gallium/i915: ship all files in the tarball
[mesa.git] / src / gallium / targets / graw-xlib / graw_xlib.c
index 578086f8f9a03b6139a6eeef2ee349601679a8c2..db2637bd3c923883068733c75aa244d321e8ff82 100644 (file)
@@ -5,8 +5,9 @@
 #include "util/u_memory.h"
 #include "target-helpers/inline_sw_helper.h"
 #include "target-helpers/inline_debug_helper.h"
-#include "state_tracker/xlib_sw_winsys.h"
+#include "state_tracker/xlibsw_api.h"
 #include "state_tracker/graw.h"
+#include "sw/xlib/xlib_sw_winsys.h"
 
 #include <X11/Xlib.h>
 #include <X11/Xlibint.h>
@@ -66,9 +67,6 @@ graw_create_window_and_screen( int x,
    root = RootWindow( graw.display, scrnum );
 
 
-   if (format != PIPE_FORMAT_R8G8B8A8_UNORM)
-      goto fail;
-
    if (graw.display == NULL)
       goto fail;
 
@@ -88,6 +86,23 @@ graw_create_window_and_screen( int x,
       exit(1);
    }
 
+   /* See if the requirested pixel format matches the visual */
+   if (visinfo->red_mask == 0xff0000 &&
+       visinfo->green_mask == 0xff00 &&
+       visinfo->blue_mask == 0xff) {
+      if (format != PIPE_FORMAT_BGRA8888_UNORM)
+         goto fail;
+   }
+   else if (visinfo->red_mask == 0xff &&
+            visinfo->green_mask == 0xff00 &&
+            visinfo->blue_mask == 0xff0000) {
+      if (format != PIPE_FORMAT_RGBA8888_UNORM)
+         goto fail;
+   }
+   else {
+      goto fail;
+   }
+
    /* window attributes */
    attr.background_pixel = 0;
    attr.border_pixel = 0;
@@ -133,18 +148,16 @@ graw_create_window_and_screen( int x,
    if (screen == NULL)
       goto fail;
 
-   XFree(visinfo);
+   free(visinfo);
    return screen;
 
 fail:
    if (screen)
       screen->destroy(screen);
 
-   if (xlib_handle)
-      FREE(xlib_handle);
+   FREE(xlib_handle);
 
-   if (visinfo)
-      XFree(visinfo);
+   free(visinfo);
 
    if (win)
       XDestroyWindow(graw.display, win);