Here is a diff that updates Mesa to 9.2.3 a bug fix release.
Release notes can be found at http://www.mesa3d.org/relnotes/9.2.3.html

Index: dist/Mesa/Android.common.mk
===================================================================
RCS file: /cvs/xenocara/dist/Mesa/Android.common.mk,v
retrieving revision 1.1.1.3
diff -u -p -r1.1.1.3 Android.common.mk
--- dist/Mesa/Android.common.mk 9 Nov 2013 02:25:51 -0000       1.1.1.3
+++ dist/Mesa/Android.common.mk 18 Nov 2013 00:49:24 -0000
@@ -35,7 +35,7 @@ LOCAL_C_INCLUDES += \
 
 # define ANDROID_VERSION (e.g., 4.0.x => 0x0400)
 LOCAL_CFLAGS += \
-       -DPACKAGE_VERSION=\"9.2.2\" \
+       -DPACKAGE_VERSION=\"9.2.3\" \
        
-DPACKAGE_BUGREPORT=\"https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa\"; 
\
        
-DANDROID_VERSION=0x0$(MESA_ANDROID_MAJOR_VERSION)0$(MESA_ANDROID_MINOR_VERSION)
 
Index: dist/Mesa/SConstruct
===================================================================
RCS file: /cvs/xenocara/dist/Mesa/SConstruct,v
retrieving revision 1.6
diff -u -p -r1.6 SConstruct
--- dist/Mesa/SConstruct        9 Nov 2013 02:46:54 -0000       1.6
+++ dist/Mesa/SConstruct        18 Nov 2013 00:49:24 -0000
@@ -70,7 +70,7 @@ if env['gles']:
 # Environment setup
 
 env.Append(CPPDEFINES = [
-    ('PACKAGE_VERSION', '\\"9.2.2\\"'),
+    ('PACKAGE_VERSION', '\\"9.2.3\\"'),
     ('PACKAGE_BUGREPORT', 
'\\"https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa\\";'),
 ])
 
Index: dist/Mesa/configure.ac
===================================================================
RCS file: /cvs/xenocara/dist/Mesa/configure.ac,v
retrieving revision 1.9
diff -u -p -r1.9 configure.ac
--- dist/Mesa/configure.ac      9 Nov 2013 02:46:54 -0000       1.9
+++ dist/Mesa/configure.ac      18 Nov 2013 00:49:28 -0000
@@ -6,7 +6,7 @@ dnl Tell the user about autoconf.html in
 m4_divert_once([HELP_END], [
 See docs/autoconf.html for more details on the options for Mesa.])
 
-AC_INIT([Mesa], [9.2.2],
+AC_INIT([Mesa], [9.2.3],
     [https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa])
 AC_CONFIG_AUX_DIR([bin])
 AC_CONFIG_MACRO_DIR([m4])
Index: dist/Mesa/bin/get-pick-list.sh
===================================================================
RCS file: /cvs/xenocara/dist/Mesa/bin/get-pick-list.sh,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 get-pick-list.sh
--- dist/Mesa/bin/get-pick-list.sh      5 Sep 2013 13:09:11 -0000       1.1.1.1
+++ dist/Mesa/bin/get-pick-list.sh      18 Nov 2013 00:49:28 -0000
@@ -14,7 +14,7 @@ git log --reverse --grep="cherry picked 
        sed -e 's/^[[:space:]]*(cherry picked from commit[[:space:]]*//' -e 
's/)//' > already_picked
 
 # Grep for commits that were marked as a candidate for the stable tree.
-git log --reverse --pretty=%H -i --grep='^\([[:space:]]*NOTE: 
.*[Cc]andidate\|CC:.*mesa-stable\)' HEAD..origin/master |\
+git log --reverse --pretty=%H -i --grep='^\([[:space:]]*NOTE: 
.*[Cc]andidate.*9\.2\|CC:.*9\.2.*mesa-stable\)' HEAD..origin/master |\
 while read sha
 do
        # Check to see whether the patch is on the ignore list.
Index: dist/Mesa/docs/relnotes/9.2.2.html
===================================================================
RCS file: /cvs/xenocara/dist/Mesa/docs/relnotes/9.2.2.html,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 9.2.2.html
--- dist/Mesa/docs/relnotes/9.2.2.html  9 Nov 2013 02:37:06 -0000       1.1.1.1
+++ dist/Mesa/docs/relnotes/9.2.2.html  18 Nov 2013 00:49:28 -0000
@@ -31,6 +31,9 @@ because GL_ARB_compatibility is not supp
 
 <h2>MD5 checksums</h2>
 <pre>
+df801a975045150790e10e2ccf32193f  MesaLib-9.2.2.tar.gz
+20887f8020db7d1736a01ae9cd5d8c38  MesaLib-9.2.2.tar.bz2
+1676f4f1b157c838d077dadd31ba6c84  MesaLib-9.2.2.zip
 </pre>
 
 
Index: dist/Mesa/include/c99/stdbool.h
===================================================================
RCS file: /cvs/xenocara/dist/Mesa/include/c99/stdbool.h,v
retrieving revision 1.1
diff -u -p -r1.1 stdbool.h
--- dist/Mesa/include/c99/stdbool.h     22 May 2010 20:05:54 -0000      1.1
+++ dist/Mesa/include/c99/stdbool.h     18 Nov 2013 00:49:28 -0000
@@ -35,7 +35,8 @@
 #define bool    _Bool
 
 /* For compilers that don't have the builtin _Bool type. */
-#if defined(_MSC_VER) || (__STDC_VERSION__ < 199901L && __GNUC__ < 3)
+#if (defined(_MSC_VER) && _MSC_VER < 1800) || \
+    (defined __GNUC__&& __STDC_VERSION__ < 199901L && __GNUC__ < 3)
 typedef unsigned char _Bool;
 #endif
 
Index: dist/Mesa/src/egl/drivers/dri2/egl_dri2.c
===================================================================
RCS file: /cvs/xenocara/dist/Mesa/src/egl/drivers/dri2/egl_dri2.c,v
retrieving revision 1.4
diff -u -p -r1.4 egl_dri2.c
--- dist/Mesa/src/egl/drivers/dri2/egl_dri2.c   5 Sep 2013 13:59:22 -0000       
1.4
+++ dist/Mesa/src/egl/drivers/dri2/egl_dri2.c   18 Nov 2013 00:49:28 -0000
@@ -1203,7 +1203,7 @@ dri2_create_image_wayland_wl_buffer(_EGL
    EGLint err;
    int32_t plane;
 
-   if (!wayland_buffer_is_drm(&buffer->buffer))
+   if (!wayland_buffer_is_drm(dri2_dpy->wl_server_drm, &buffer->buffer))
        return NULL;
 
    err = _eglParseImageAttribList(&attrs, disp, attr_list);
@@ -1585,6 +1585,11 @@ dri2_bind_wayland_display_wl(_EGLDriver 
    if (!dri2_dpy->wl_server_drm)
           return EGL_FALSE;
 
+#ifdef HAVE_DRM_PLATFORM
+   if (dri2_dpy->gbm_dri)
+      dri2_dpy->gbm_dri->wl_drm = dri2_dpy->wl_server_drm;
+#endif
+
    return EGL_TRUE;
 }
 
@@ -1611,9 +1616,10 @@ dri2_query_wayland_buffer_wl(_EGLDriver 
                              EGLint attribute, EGLint *value)
 {
    struct wl_drm_buffer *buffer = (struct wl_drm_buffer *) _buffer;
+   struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
    const struct wl_drm_components_descriptor *format;
 
-   if (!wayland_buffer_is_drm(&buffer->buffer))
+   if (!wayland_buffer_is_drm(dri2_dpy->wl_server_drm, &buffer->buffer))
       return EGL_FALSE;
 
    format = buffer->driver_format;
Index: dist/Mesa/src/egl/wayland/wayland-drm/wayland-drm.c
===================================================================
RCS file: /cvs/xenocara/dist/Mesa/src/egl/wayland/wayland-drm/wayland-drm.c,v
retrieving revision 1.2
diff -u -p -r1.2 wayland-drm.c
--- dist/Mesa/src/egl/wayland/wayland-drm/wayland-drm.c 5 Sep 2013 13:59:26 
-0000       1.2
+++ dist/Mesa/src/egl/wayland/wayland-drm/wayland-drm.c 18 Nov 2013 00:49:28 
-0000
@@ -45,6 +45,7 @@ struct wl_drm {
         uint32_t flags;
 
        struct wayland_drm_callbacks *callbacks;
+        struct wl_buffer_interface buffer_interface;
 };
 
 static void
@@ -63,10 +64,6 @@ buffer_destroy(struct wl_client *client,
        wl_resource_destroy(resource);
 }
 
-const static struct wl_buffer_interface drm_buffer_interface = {
-       buffer_destroy
-};
-
 static void
 create_buffer(struct wl_client *client, struct wl_resource *resource,
               uint32_t id, uint32_t name, int fd,
@@ -107,7 +104,7 @@ create_buffer(struct wl_client *client, 
        buffer->buffer.resource.object.id = id;
        buffer->buffer.resource.object.interface = &wl_buffer_interface;
        buffer->buffer.resource.object.implementation =
-               (void (**)(void)) &drm_buffer_interface;
+               (void (**)(void)) &drm->buffer_interface;
        buffer->buffer.resource.data = buffer;
 
        buffer->buffer.resource.destroy = destroy_buffer;
@@ -246,6 +243,7 @@ wayland_drm_init(struct wl_display *disp
        drm->callbacks = callbacks;
        drm->user_data = user_data;
         drm->flags = flags;
+        drm->buffer_interface.destroy = buffer_destroy;
 
        wl_display_add_global(display, &wl_drm_interface, drm, bind_drm);
 
@@ -263,10 +261,10 @@ wayland_drm_uninit(struct wl_drm *drm)
 }
 
 int
-wayland_buffer_is_drm(struct wl_buffer *buffer)
+wayland_buffer_is_drm(struct wl_drm *drm, struct wl_buffer *buffer)
 {
        return buffer->resource.object.implementation == 
-               (void (**)(void)) &drm_buffer_interface;
+               (void (**)(void)) &drm->buffer_interface;
 }
 
 uint32_t
Index: dist/Mesa/src/egl/wayland/wayland-drm/wayland-drm.h
===================================================================
RCS file: /cvs/xenocara/dist/Mesa/src/egl/wayland/wayland-drm/wayland-drm.h,v
retrieving revision 1.2
diff -u -p -r1.2 wayland-drm.h
--- dist/Mesa/src/egl/wayland/wayland-drm/wayland-drm.h 5 Sep 2013 13:59:26 
-0000       1.2
+++ dist/Mesa/src/egl/wayland/wayland-drm/wayland-drm.h 18 Nov 2013 00:49:28 
-0000
@@ -99,7 +99,7 @@ void
 wayland_drm_uninit(struct wl_drm *drm);
 
 int
-wayland_buffer_is_drm(struct wl_buffer *buffer);
+wayland_buffer_is_drm(struct wl_drm *drm, struct wl_buffer *buffer);
 
 uint32_t
 wayland_drm_buffer_get_format(struct wl_buffer *buffer_base);
Index: dist/Mesa/src/gallium/drivers/radeonsi/r600_blit.c
===================================================================
RCS file: /cvs/xenocara/dist/Mesa/src/gallium/drivers/radeonsi/r600_blit.c,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 r600_blit.c
--- dist/Mesa/src/gallium/drivers/radeonsi/r600_blit.c  5 Sep 2013 13:12:37 
-0000       1.1.1.1
+++ dist/Mesa/src/gallium/drivers/radeonsi/r600_blit.c  18 Nov 2013 00:49:28 
-0000
@@ -322,6 +322,21 @@ static void r600_compressed_to_blittable
        rtex->surface.level[0].npix_y = util_format_get_nblocksy(orig->format, 
orig->npix0_y);
        rtex->surface.level[level].npix_x = 
util_format_get_nblocksx(orig->format, orig->npix_x);
        rtex->surface.level[level].npix_y = 
util_format_get_nblocksy(orig->format, orig->npix_y);
+
+       /* By dividing the dimensions by 4, we effectively decrement
+        * last_level by 2, therefore the last 2 mipmap levels disappear and
+        * aren't blittable. Note that the last 3 mipmap levels (4x4, 2x2,
+        * 1x1) have equal slice sizes, which is an important assumption
+        * for this to work.
+        *
+        * In order to make the last 2 mipmap levels blittable, we have to
+        * add the slice size of the last mipmap level to the texture
+        * address, so that even though the hw thinks it reads last_level-2,
+        * it will actually read last_level-1, and if we add the slice size*2,
+        * it will read last_level. That's how this workaround works.
+        */
+       if (level > rtex->resource.b.b.last_level-2)
+               rtex->mipmap_shift = level - (rtex->resource.b.b.last_level-2);
 }
 
 static void r600_change_format(struct pipe_resource *tex,
@@ -355,6 +370,7 @@ static void r600_reset_blittable_to_orig
        rtex->surface.level[0].npix_y = orig->npix0_y;
        rtex->surface.level[level].npix_x = orig->npix_x;
        rtex->surface.level[level].npix_y = orig->npix_y;
+       rtex->mipmap_shift = 0;
 }
 
 static void r600_resource_copy_region(struct pipe_context *ctx,
Index: dist/Mesa/src/gallium/drivers/radeonsi/r600_resource.h
===================================================================
RCS file: /cvs/xenocara/dist/Mesa/src/gallium/drivers/radeonsi/r600_resource.h,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 r600_resource.h
--- dist/Mesa/src/gallium/drivers/radeonsi/r600_resource.h      5 Sep 2013 
13:12:38 -0000       1.1.1.1
+++ dist/Mesa/src/gallium/drivers/radeonsi/r600_resource.h      18 Nov 2013 
00:49:28 -0000
@@ -53,6 +53,8 @@ struct r600_resource_texture {
        struct r600_resource_texture    *flushed_depth_texture;
        boolean                         is_flushing_texture;
        struct radeon_surface           surface;
+
+       unsigned mipmap_shift;
 };
 
 struct r600_surface {
Index: dist/Mesa/src/gallium/drivers/radeonsi/si_state.c
===================================================================
RCS file: /cvs/xenocara/dist/Mesa/src/gallium/drivers/radeonsi/si_state.c,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 si_state.c
--- dist/Mesa/src/gallium/drivers/radeonsi/si_state.c   5 Sep 2013 13:12:41 
-0000       1.1.1.1
+++ dist/Mesa/src/gallium/drivers/radeonsi/si_state.c   18 Nov 2013 00:49:28 
-0000
@@ -2394,6 +2394,7 @@ static struct pipe_sampler_view *si_crea
 
        va = r600_resource_va(ctx->screen, texture);
        va += surflevel[0].offset;
+       va += tmp->mipmap_shift * surflevel[texture->last_level].slice_size;
        view->state[0] = va >> 8;
        view->state[1] = (S_008F14_BASE_ADDRESS_HI(va >> 40) |
                          S_008F14_DATA_FORMAT(format) |
@@ -2404,8 +2405,8 @@ static struct pipe_sampler_view *si_crea
                          S_008F1C_DST_SEL_Y(si_map_swizzle(swizzle[1])) |
                          S_008F1C_DST_SEL_Z(si_map_swizzle(swizzle[2])) |
                          S_008F1C_DST_SEL_W(si_map_swizzle(swizzle[3])) |
-                         S_008F1C_BASE_LEVEL(state->u.tex.first_level) |
-                         S_008F1C_LAST_LEVEL(state->u.tex.last_level) |
+                         S_008F1C_BASE_LEVEL(state->u.tex.first_level - 
tmp->mipmap_shift) |
+                         S_008F1C_LAST_LEVEL(state->u.tex.last_level - 
tmp->mipmap_shift) |
                          S_008F1C_TILING_INDEX(si_tile_mode_index(tmp, 0, 
false)) |
                          S_008F1C_POW2_PAD(texture->last_level > 0) |
                          S_008F1C_TYPE(si_tex_dim(texture->target)));
Index: dist/Mesa/src/gallium/state_trackers/egl/common/native.h
===================================================================
RCS file: 
/cvs/xenocara/dist/Mesa/src/gallium/state_trackers/egl/common/native.h,v
retrieving revision 1.4
diff -u -p -r1.4 native.h
--- dist/Mesa/src/gallium/state_trackers/egl/common/native.h    5 Sep 2013 
14:01:45 -0000       1.4
+++ dist/Mesa/src/gallium/state_trackers/egl/common/native.h    18 Nov 2013 
00:49:28 -0000
@@ -246,6 +246,10 @@ struct native_display {
    const struct native_display_buffer *buffer;
    const struct native_display_modeset *modeset;
    const struct native_display_wayland_bufmgr *wayland_bufmgr;
+
+#ifdef HAVE_WAYLAND_BACKEND
+   struct wl_drm *wl_server_drm; /* for EGL_WL_bind_wayland_display */
+#endif
 };
 
 /**
Index: 
dist/Mesa/src/gallium/state_trackers/egl/common/native_wayland_drm_bufmgr_helper.c
===================================================================
RCS file: 
/cvs/xenocara/dist/Mesa/src/gallium/state_trackers/egl/common/native_wayland_drm_bufmgr_helper.c,v
retrieving revision 1.2
diff -u -p -r1.2 native_wayland_drm_bufmgr_helper.c
--- 
dist/Mesa/src/gallium/state_trackers/egl/common/native_wayland_drm_bufmgr_helper.c
  5 Sep 2013 14:01:46 -0000       1.2
+++ 
dist/Mesa/src/gallium/state_trackers/egl/common/native_wayland_drm_bufmgr_helper.c
  18 Nov 2013 00:49:28 -0000
@@ -77,7 +77,7 @@ egl_g3d_wl_drm_common_query_buffer(struc
    struct wl_drm_buffer *buffer = (struct wl_drm_buffer *) _buffer;
    struct pipe_resource *resource = buffer->driver_buffer;
 
-   if (!wayland_buffer_is_drm(&buffer->buffer))
+   if (!wayland_buffer_is_drm(ndpy->wl_server_drm, &buffer->buffer))
       return EGL_FALSE;
 
    switch (attribute) {
Index: dist/Mesa/src/gallium/state_trackers/egl/drm/native_drm.c
===================================================================
RCS file: 
/cvs/xenocara/dist/Mesa/src/gallium/state_trackers/egl/drm/native_drm.c,v
retrieving revision 1.3
diff -u -p -r1.3 native_drm.c
--- dist/Mesa/src/gallium/state_trackers/egl/drm/native_drm.c   5 Sep 2013 
14:01:46 -0000       1.3
+++ dist/Mesa/src/gallium/state_trackers/egl/drm/native_drm.c   18 Nov 2013 
00:49:28 -0000
@@ -39,6 +39,10 @@
 #include <libudev.h>
 #endif
 
+#ifdef HAVE_WAYLAND_BACKEND
+#include "common/native_wayland_drm_bufmgr_helper.h"
+#endif
+
 static boolean
 drm_display_is_format_supported(struct native_display *ndpy,
                                 enum pipe_format fmt, boolean is_color)
@@ -207,14 +211,14 @@ drm_display_bind_wayland_display(struct 
 {
    struct drm_display *drmdpy = drm_display(ndpy);
 
-   if (drmdpy->wl_server_drm)
+   if (ndpy->wl_server_drm)
       return FALSE;
 
-   drmdpy->wl_server_drm = wayland_drm_init(wl_dpy,
+   ndpy->wl_server_drm = wayland_drm_init(wl_dpy,
          drmdpy->device_name,
          &wl_drm_callbacks, ndpy, 0);
 
-   if (!drmdpy->wl_server_drm)
+   if (!ndpy->wl_server_drm)
       return FALSE;
    
    return TRUE;
@@ -224,13 +228,11 @@ static boolean
 drm_display_unbind_wayland_display(struct native_display *ndpy,
                                     struct wl_display *wl_dpy)
 {
-   struct drm_display *drmdpy = drm_display(ndpy);
-
-   if (!drmdpy->wl_server_drm)
+   if (!ndpy->wl_server_drm)
       return FALSE;
 
-   wayland_drm_uninit(drmdpy->wl_server_drm);
-   drmdpy->wl_server_drm = NULL;
+   wayland_drm_uninit(ndpy->wl_server_drm);
+   ndpy->wl_server_drm = NULL;
 
    return TRUE;
 }
Index: dist/Mesa/src/gallium/state_trackers/egl/drm/native_drm.h
===================================================================
RCS file: 
/cvs/xenocara/dist/Mesa/src/gallium/state_trackers/egl/drm/native_drm.h,v
retrieving revision 1.3
diff -u -p -r1.3 native_drm.h
--- dist/Mesa/src/gallium/state_trackers/egl/drm/native_drm.h   5 Sep 2013 
14:01:46 -0000       1.3
+++ dist/Mesa/src/gallium/state_trackers/egl/drm/native_drm.h   18 Nov 2013 
00:49:28 -0000
@@ -36,10 +36,6 @@
 #include "common/native.h"
 #include "common/native_helper.h"
 
-#ifdef HAVE_WAYLAND_BACKEND
-#include "common/native_wayland_drm_bufmgr_helper.h"
-#endif
-
 #include "gbm_gallium_drmint.h"
 
 struct drm_config;
@@ -67,10 +63,6 @@ struct drm_display {
    struct drm_surface **shown_surfaces;
    /* save the original settings of the CRTCs */
    struct drm_crtc *saved_crtcs;
-
-#ifdef HAVE_WAYLAND_BACKEND
-   struct wl_drm *wl_server_drm; /* for EGL_WL_bind_wayland_display */
-#endif
 };
 
 struct drm_config {
Index: dist/Mesa/src/gallium/state_trackers/egl/wayland/native_drm.c
===================================================================
RCS file: 
/cvs/xenocara/dist/Mesa/src/gallium/state_trackers/egl/wayland/native_drm.c,v
retrieving revision 1.2
diff -u -p -r1.2 native_drm.c
--- dist/Mesa/src/gallium/state_trackers/egl/wayland/native_drm.c       5 Sep 
2013 14:01:47 -0000       1.2
+++ dist/Mesa/src/gallium/state_trackers/egl/wayland/native_drm.c       18 Nov 
2013 00:49:28 -0000
@@ -268,7 +268,7 @@ wayland_drm_display_bind_wayland_display
    if (drmdpy->wl_server_drm)
       return FALSE;
 
-   drmdpy->wl_server_drm =
+   ndpy->wl_server_drm =
       wayland_drm_init(wl_dpy, drmdpy->device_name,
                        &wl_drm_callbacks, ndpy, 0);
 
Index: dist/Mesa/src/gallium/state_trackers/egl/x11/native_dri2.c
===================================================================
RCS file: 
/cvs/xenocara/dist/Mesa/src/gallium/state_trackers/egl/x11/native_dri2.c,v
retrieving revision 1.4
diff -u -p -r1.4 native_dri2.c
--- dist/Mesa/src/gallium/state_trackers/egl/x11/native_dri2.c  5 Sep 2013 
14:01:47 -0000       1.4
+++ dist/Mesa/src/gallium/state_trackers/egl/x11/native_dri2.c  18 Nov 2013 
00:49:28 -0000
@@ -858,7 +858,7 @@ dri2_display_bind_wayland_display(struct
    if (dri2dpy->wl_server_drm)
       return FALSE;
 
-   dri2dpy->wl_server_drm = wayland_drm_init(wl_dpy,
+   ndpy->wl_server_drm = wayland_drm_init(wl_dpy,
          x11_screen_get_device_name(dri2dpy->xscr),
          &wl_drm_callbacks, ndpy, 0);
 
Index: dist/Mesa/src/gbm/backends/dri/gbm_dri.c
===================================================================
RCS file: /cvs/xenocara/dist/Mesa/src/gbm/backends/dri/gbm_dri.c,v
retrieving revision 1.2
diff -u -p -r1.2 gbm_dri.c
--- dist/Mesa/src/gbm/backends/dri/gbm_dri.c    5 Sep 2013 14:02:21 -0000       
1.2
+++ dist/Mesa/src/gbm/backends/dri/gbm_dri.c    18 Nov 2013 00:49:28 -0000
@@ -376,7 +376,10 @@ gbm_dri_bo_import(struct gbm_device *gbm
    {
       struct wl_drm_buffer *wb = (struct wl_drm_buffer *) buffer;
 
-      if (!wayland_buffer_is_drm(buffer))
+      if (dri->wl_drm == NULL)
+         return NULL;
+
+      if (!wayland_buffer_is_drm(dri->wl_drm, buffer))
          return NULL;
 
       image = wb->driver_buffer;
Index: dist/Mesa/src/gbm/backends/dri/gbm_driint.h
===================================================================
RCS file: /cvs/xenocara/dist/Mesa/src/gbm/backends/dri/gbm_driint.h,v
retrieving revision 1.2
diff -u -p -r1.2 gbm_driint.h
--- dist/Mesa/src/gbm/backends/dri/gbm_driint.h 5 Sep 2013 14:02:21 -0000       
1.2
+++ dist/Mesa/src/gbm/backends/dri/gbm_driint.h 18 Nov 2013 00:49:28 -0000
@@ -66,6 +66,8 @@ struct gbm_dri_device {
                             int *width, int *height,
                             unsigned int *attachments, int count,
                             int *out_count, void *data);
+
+   struct wl_drm *wl_drm;
 };
 
 struct gbm_dri_bo {
Index: dist/Mesa/src/mesa/drivers/common/meta.c
===================================================================
RCS file: /cvs/xenocara/dist/Mesa/src/mesa/drivers/common/meta.c,v
retrieving revision 1.6
diff -u -p -r1.6 meta.c
--- dist/Mesa/src/mesa/drivers/common/meta.c    5 Oct 2013 09:53:58 -0000       
1.6
+++ dist/Mesa/src/mesa/drivers/common/meta.c    18 Nov 2013 00:49:28 -0000
@@ -1515,6 +1515,9 @@ setup_glsl_blit_framebuffer(struct gl_co
                                    sizeof(struct vertex), OFFSET(x));
       _mesa_VertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE,
                                    sizeof(struct vertex), OFFSET(s));
+
+      _mesa_EnableVertexAttribArray(0);
+      _mesa_EnableVertexAttribArray(1);
    }
 
    /* Generate a relevant fragment shader program for the texture target */
@@ -1591,8 +1594,6 @@ setup_glsl_blit_framebuffer(struct gl_co
    _mesa_DeleteObjectARB(vs);
    _mesa_BindAttribLocation(ShaderProg, 0, "position");
    _mesa_BindAttribLocation(ShaderProg, 1, "texcoords");
-   _mesa_EnableVertexAttribArray(0);
-   _mesa_EnableVertexAttribArray(1);
    link_program_with_debug(ctx, ShaderProg);
    ralloc_free(mem_ctx);
    if (texture_2d)
Index: dist/Mesa/src/mesa/drivers/dri/i965/brw_misc_state.c
===================================================================
RCS file: /cvs/xenocara/dist/Mesa/src/mesa/drivers/dri/i965/brw_misc_state.c,v
retrieving revision 1.8
diff -u -p -r1.8 brw_misc_state.c
--- dist/Mesa/src/mesa/drivers/dri/i965/brw_misc_state.c        5 Sep 2013 
14:04:19 -0000       1.8
+++ dist/Mesa/src/mesa/drivers/dri/i965/brw_misc_state.c        18 Nov 2013 
00:49:28 -0000
@@ -48,6 +48,10 @@ static void upload_drawing_rect(struct b
 {
    struct gl_context *ctx = &brw->ctx;
 
+   /* 3DSTATE_DRAWING_RECTANGLE is non-pipelined. */
+   if (brw->gen == 6)
+      intel_emit_post_sync_nonzero_flush(brw);
+
    BEGIN_BATCH(4);
    OUT_BATCH(_3DSTATE_DRAWING_RECTANGLE << 16 | (4 - 2));
    OUT_BATCH(0); /* xmin, ymin */
Index: dist/Mesa/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
===================================================================
RCS file: 
/cvs/xenocara/dist/Mesa/src/mesa/drivers/dri/i965/brw_wm_surface_state.c,v
retrieving revision 1.7
diff -u -p -r1.7 brw_wm_surface_state.c
--- dist/Mesa/src/mesa/drivers/dri/i965/brw_wm_surface_state.c  5 Sep 2013 
14:04:23 -0000       1.7
+++ dist/Mesa/src/mesa/drivers/dri/i965/brw_wm_surface_state.c  18 Nov 2013 
00:49:28 -0000
@@ -259,6 +259,7 @@ brw_update_texture_surface(struct gl_con
    uint32_t *surf;
    uint32_t tile_x, tile_y;
 
+   /* BRW_NEW_UNIFORM_BUFFER */
    if (tObj->Target == GL_TEXTURE_BUFFER) {
       brw_update_buffer_texture_surface(ctx, unit, binding_table, surf_index);
       return;
@@ -797,6 +798,7 @@ const struct brw_tracked_state brw_textu
    .dirty = {
       .mesa = _NEW_TEXTURE,
       .brw = BRW_NEW_BATCH |
+             BRW_NEW_UNIFORM_BUFFER |
              BRW_NEW_VERTEX_PROGRAM |
              BRW_NEW_FRAGMENT_PROGRAM,
       .cache = 0
Index: dist/Mesa/src/mesa/drivers/dri/i965/gen6_blorp.cpp
===================================================================
RCS file: /cvs/xenocara/dist/Mesa/src/mesa/drivers/dri/i965/gen6_blorp.cpp,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 gen6_blorp.cpp
--- dist/Mesa/src/mesa/drivers/dri/i965/gen6_blorp.cpp  5 Sep 2013 13:15:42 
-0000       1.1.1.1
+++ dist/Mesa/src/mesa/drivers/dri/i965/gen6_blorp.cpp  18 Nov 2013 00:49:28 
-0000
@@ -924,6 +924,18 @@ gen6_blorp_emit_depth_disable(struct brw
    OUT_BATCH(0);
    OUT_BATCH(0);
    ADVANCE_BATCH();
+
+   BEGIN_BATCH(3);
+   OUT_BATCH(_3DSTATE_HIER_DEPTH_BUFFER << 16 | (3 - 2));
+   OUT_BATCH(0);
+   OUT_BATCH(0);
+   ADVANCE_BATCH();
+
+   BEGIN_BATCH(3);
+   OUT_BATCH(_3DSTATE_STENCIL_BUFFER << 16 | (3 - 2));
+   OUT_BATCH(0);
+   OUT_BATCH(0);
+   ADVANCE_BATCH();
 }
 
 
@@ -951,6 +963,9 @@ void
 gen6_blorp_emit_drawing_rectangle(struct brw_context *brw,
                                   const brw_blorp_params *params)
 {
+   if (brw->gen == 6)
+      intel_emit_post_sync_nonzero_flush(brw);
+
    BEGIN_BATCH(4);
    OUT_BATCH(_3DSTATE_DRAWING_RECTANGLE << 16 | (4 - 2));
    OUT_BATCH(0);
Index: dist/Mesa/src/mesa/drivers/dri/i965/gen6_multisample_state.c
===================================================================
RCS file: 
/cvs/xenocara/dist/Mesa/src/mesa/drivers/dri/i965/gen6_multisample_state.c,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 gen6_multisample_state.c
--- dist/Mesa/src/mesa/drivers/dri/i965/gen6_multisample_state.c        5 Sep 
2013 13:15:43 -0000       1.1.1.1
+++ dist/Mesa/src/mesa/drivers/dri/i965/gen6_multisample_state.c        18 Nov 
2013 00:49:28 -0000
@@ -128,6 +128,9 @@ gen6_emit_3dstate_multisample(struct brw
       break;
    }
 
+   /* 3DSTATE_MULTISAMPLE is nonpipelined. */
+   intel_emit_post_sync_nonzero_flush(brw);
+
    int len = brw->gen >= 7 ? 4 : 3;
    BEGIN_BATCH(len);
    OUT_BATCH(_3DSTATE_MULTISAMPLE << 16 | (len - 2));
@@ -182,9 +185,6 @@ static void upload_multisample_state(str
          sample_mask = ctx->Multisample.SampleMaskValue;
       }
    }
-
-   /* 3DSTATE_MULTISAMPLE is nonpipelined. */
-   intel_emit_post_sync_nonzero_flush(brw);
 
    gen6_emit_3dstate_multisample(brw, num_samples);
    gen6_emit_3dstate_sample_mask(brw, num_samples, coverage,
Index: dist/Mesa/src/mesa/drivers/dri/i965/gen6_queryobj.c
===================================================================
RCS file: /cvs/xenocara/dist/Mesa/src/mesa/drivers/dri/i965/gen6_queryobj.c,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 gen6_queryobj.c
--- dist/Mesa/src/mesa/drivers/dri/i965/gen6_queryobj.c 5 Sep 2013 13:15:43 
-0000       1.1.1.1
+++ dist/Mesa/src/mesa/drivers/dri/i965/gen6_queryobj.c 18 Nov 2013 00:49:28 
-0000
@@ -115,14 +115,14 @@ write_reg(struct brw_context *brw,
    BEGIN_BATCH(3);
    OUT_BATCH(MI_STORE_REGISTER_MEM | (3 - 2));
    OUT_BATCH(reg);
-   OUT_RELOC(query_bo, I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
+   OUT_RELOC(query_bo, I915_GEM_DOMAIN_INSTRUCTION, 
I915_GEM_DOMAIN_INSTRUCTION,
              idx * sizeof(uint64_t));
    ADVANCE_BATCH();
 
    BEGIN_BATCH(3);
    OUT_BATCH(MI_STORE_REGISTER_MEM | (3 - 2));
    OUT_BATCH(reg + sizeof(uint32_t));
-   OUT_RELOC(query_bo, I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
+   OUT_RELOC(query_bo, I915_GEM_DOMAIN_INSTRUCTION, 
I915_GEM_DOMAIN_INSTRUCTION,
              sizeof(uint32_t) + idx * sizeof(uint64_t));
    ADVANCE_BATCH();
 }
Index: dist/Mesa/src/mesa/drivers/dri/i965/gen6_sol.c
===================================================================
RCS file: /cvs/xenocara/dist/Mesa/src/mesa/drivers/dri/i965/gen6_sol.c,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 gen6_sol.c
--- dist/Mesa/src/mesa/drivers/dri/i965/gen6_sol.c      5 Sep 2013 13:15:43 
-0000       1.1.1.1
+++ dist/Mesa/src/mesa/drivers/dri/i965/gen6_sol.c      18 Nov 2013 00:49:28 
-0000
@@ -153,6 +153,9 @@ brw_begin_transform_feedback(struct gl_c
       = _mesa_compute_max_transform_feedback_vertices(xfb_obj,
                                                       linked_xfb_info);
 
+   /* 3DSTATE_GS_SVB_INDEX is non-pipelined. */
+   intel_emit_post_sync_nonzero_flush(brw);
+
    /* Initialize the SVBI 0 register to zero and set the maximum index. */
    BEGIN_BATCH(4);
    OUT_BATCH(_3DSTATE_GS_SVB_INDEX << 16 | (4 - 2));
Index: dist/Mesa/src/mesa/drivers/dri/i965/gen7_blorp.cpp
===================================================================
RCS file: /cvs/xenocara/dist/Mesa/src/mesa/drivers/dri/i965/gen7_blorp.cpp,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 gen7_blorp.cpp
--- dist/Mesa/src/mesa/drivers/dri/i965/gen7_blorp.cpp  5 Sep 2013 13:15:44 
-0000       1.1.1.1
+++ dist/Mesa/src/mesa/drivers/dri/i965/gen7_blorp.cpp  18 Nov 2013 00:49:28 
-0000
@@ -763,6 +763,18 @@ gen7_blorp_emit_depth_disable(struct brw
    OUT_BATCH(0);
    OUT_BATCH(0);
    ADVANCE_BATCH();
+
+   BEGIN_BATCH(3);
+   OUT_BATCH(GEN7_3DSTATE_HIER_DEPTH_BUFFER << 16 | (3 - 2));
+   OUT_BATCH(0);
+   OUT_BATCH(0);
+   ADVANCE_BATCH();
+
+   BEGIN_BATCH(3);
+   OUT_BATCH(GEN7_3DSTATE_STENCIL_BUFFER << 16 | (3 - 2));
+   OUT_BATCH(0);
+   OUT_BATCH(0);
+   ADVANCE_BATCH();
 }
 
 
Index: dist/Mesa/src/mesa/drivers/osmesa/osmesa.c
===================================================================
RCS file: /cvs/xenocara/dist/Mesa/src/mesa/drivers/osmesa/osmesa.c,v
retrieving revision 1.6
diff -u -p -r1.6 osmesa.c
--- dist/Mesa/src/mesa/drivers/osmesa/osmesa.c  5 Sep 2013 14:05:58 -0000       
1.6
+++ dist/Mesa/src/mesa/drivers/osmesa/osmesa.c  18 Nov 2013 00:49:28 -0000
@@ -197,6 +197,14 @@ osmesa_choose_line_function( struct gl_c
    const OSMesaContext osmesa = OSMESA_CONTEXT(ctx);
    const SWcontext *swrast = SWRAST_CONTEXT(ctx);
 
+   if (ctx->DrawBuffer &&
+       ctx->DrawBuffer->Visual.redBits == 32) {
+      /* the special-case line functions in this file don't work
+       * for float color channels.
+       */
+      return NULL;
+   }
+
    if (ctx->RenderMode != GL_RENDER)      return NULL;
    if (ctx->Line.SmoothFlag)              return NULL;
    if (ctx->Texture._EnabledUnits)        return NULL;
@@ -297,6 +305,14 @@ osmesa_choose_triangle_function( struct 
 {
    const OSMesaContext osmesa = OSMESA_CONTEXT(ctx);
    const SWcontext *swrast = SWRAST_CONTEXT(ctx);
+
+   if (ctx->DrawBuffer &&
+       ctx->DrawBuffer->Visual.redBits == 32) {
+      /* the special-case triangle functions in this file don't work
+       * for float color channels.
+       */
+      return (swrast_tri_func) NULL;
+   }
 
    if (ctx->RenderMode != GL_RENDER)    return (swrast_tri_func) NULL;
    if (ctx->Polygon.SmoothFlag)         return (swrast_tri_func) NULL;
Index: dist/Mesa/src/mesa/main/querymatrix.c
===================================================================
RCS file: /cvs/xenocara/dist/Mesa/src/mesa/main/querymatrix.c,v
retrieving revision 1.1.1.2
diff -u -p -r1.1.1.2 querymatrix.c
--- dist/Mesa/src/mesa/main/querymatrix.c       5 Sep 2013 13:16:47 -0000       
1.1.1.2
+++ dist/Mesa/src/mesa/main/querymatrix.c       18 Nov 2013 00:49:28 -0000
@@ -38,6 +38,7 @@
 #define FLOAT_TO_FIXED(x) ((GLfixed) ((x) * 65536.0))
 
 #if defined(_MSC_VER)
+#if _MSC_VER < 1800  /* Not required on VS2013 and above. */
 /* Oddly, the fpclassify() function doesn't exist in such a form
  * on MSVC.  This is an implementation using slightly different
  * lower-level Windows functions.
@@ -70,6 +71,7 @@ fpclassify(double x)
             return FP_NAN;
     }
 }
+#endif  /* _MSC_VER < 1800 */
 
 #elif defined(__APPLE__) || defined(__CYGWIN__) || defined(__FreeBSD__) || \
      defined(__OpenBSD__) || defined(__NetBSD__) || defined(__DragonFly__) || \
Index: dist/Mesa/src/mesa/main/queryobj.c
===================================================================
RCS file: /cvs/xenocara/dist/Mesa/src/mesa/main/queryobj.c,v
retrieving revision 1.6
diff -u -p -r1.6 queryobj.c
--- dist/Mesa/src/mesa/main/queryobj.c  5 Sep 2013 14:06:26 -0000       1.6
+++ dist/Mesa/src/mesa/main/queryobj.c  18 Nov 2013 00:49:28 -0000
@@ -201,13 +201,6 @@ _mesa_GenQueries(GLsizei n, GLuint *ids)
       return;
    }
 
-   /* No query objects can be active at this time! */
-   if (ctx->Query.CurrentOcclusionObject ||
-       ctx->Query.CurrentTimerObject) {
-      _mesa_error(ctx, GL_INVALID_OPERATION, "glGenQueriesARB");
-      return;
-   }
-
    first = _mesa_HashFindFreeKeyBlock(ctx->Query.QueryObjects, n);
    if (first) {
       GLsizei i;
@@ -240,18 +233,20 @@ _mesa_DeleteQueries(GLsizei n, const GLu
       return;
    }
 
-   /* No query objects can be active at this time! */
-   if (ctx->Query.CurrentOcclusionObject ||
-       ctx->Query.CurrentTimerObject) {
-      _mesa_error(ctx, GL_INVALID_OPERATION, "glDeleteQueriesARB");
-      return;
-   }
-
    for (i = 0; i < n; i++) {
       if (ids[i] > 0) {
          struct gl_query_object *q = _mesa_lookup_query_object(ctx, ids[i]);
          if (q) {
-            ASSERT(!q->Active); /* should be caught earlier */
+            if (q->Active) {
+               struct gl_query_object **bindpt;
+               bindpt = get_query_binding_point(ctx, q->Target);
+               assert(bindpt); /* Should be non-null for active q. */
+               if (bindpt) {
+                  *bindpt = NULL;
+               }
+               q->Active = GL_FALSE;
+               ctx->Driver.EndQuery(ctx, q);
+            }
             _mesa_HashRemove(ctx->Query.QueryObjects, ids[i]);
             ctx->Driver.DeleteQuery(ctx, q);
          }
Index: dist/Mesa/src/mesa/state_tracker/st_draw.c
===================================================================
RCS file: /cvs/xenocara/dist/Mesa/src/mesa/state_tracker/st_draw.c,v
retrieving revision 1.4
diff -u -p -r1.4 st_draw.c
--- dist/Mesa/src/mesa/state_tracker/st_draw.c  5 Sep 2013 14:06:45 -0000       
1.4
+++ dist/Mesa/src/mesa/state_tracker/st_draw.c  18 Nov 2013 00:49:28 -0000
@@ -209,9 +209,6 @@ st_draw_vbo(struct gl_context *ctx,
    if (st->dirty.st || ctx->NewDriverState) {
       st_validate_state(st);
 
-      if (st->vertex_array_out_of_memory)
-         return;
-
 #if 0
       if (MESA_VERBOSE & VERBOSE_GLSL) {
          check_uniforms(ctx);
@@ -219,6 +216,10 @@ st_draw_vbo(struct gl_context *ctx,
 #else
       (void) check_uniforms;
 #endif
+   }
+
+   if (st->vertex_array_out_of_memory) {
+      return;
    }
 
    util_draw_init_info(&info);
Index: lib/libEGL/Makefile
===================================================================
RCS file: /cvs/xenocara/lib/libEGL/Makefile,v
retrieving revision 1.4
diff -u -p -r1.4 Makefile
--- lib/libEGL/Makefile 9 Nov 2013 02:54:53 -0000       1.4
+++ lib/libEGL/Makefile 18 Nov 2013 00:52:32 -0000
@@ -9,7 +9,7 @@ MESA_INCLUDE=   ${.CURDIR}/../../dist/Mesa
 
 MESA_MAJOR=    9
 MESA_MINOR=    2
-MESA_TINY=     2
+MESA_TINY=     3
 
 DRI_DRIVER_INSTALL_DIR=        ${X11BASE}/lib/modules/dri
 EGL_DRIVER_SEARCH_DIR= ${X11BASE}/lib/modules/egl
Index: lib/libGL/Makefile
===================================================================
RCS file: /cvs/xenocara/lib/libGL/Makefile,v
retrieving revision 1.39
diff -u -p -r1.39 Makefile
--- lib/libGL/Makefile  9 Nov 2013 02:54:53 -0000       1.39
+++ lib/libGL/Makefile  18 Nov 2013 00:52:43 -0000
@@ -22,7 +22,7 @@ MESA_DRI=     ${.CURDIR}/../../dist/Mesa/src
 # this needs to be updated in mesa/Makefile.inc as well
 MESA_MAJOR=    9
 MESA_MINOR=    2
-MESA_TINY=     2
+MESA_TINY=     3
 
 DRI_DRIVER_INSTALL_DIR=        ${X11BASE}/lib/modules/dri
 
Index: lib/libGL/mesa/Makefile.inc
===================================================================
RCS file: /cvs/xenocara/lib/libGL/mesa/Makefile.inc,v
retrieving revision 1.5
diff -u -p -r1.5 Makefile.inc
--- lib/libGL/mesa/Makefile.inc 9 Nov 2013 02:54:53 -0000       1.5
+++ lib/libGL/mesa/Makefile.inc 18 Nov 2013 02:22:25 -0000
@@ -9,7 +9,7 @@ MESA_INCLUDE=   ${.CURDIR}/../../../../dis
 
 MESA_MAJOR=    9
 MESA_MINOR=    2
-MESA_TINY=     2
+MESA_TINY=     3
 
 CPP=   cpp -notraditional
 
Index: lib/libGLESv1_CM/Makefile
===================================================================
RCS file: /cvs/xenocara/lib/libGLESv1_CM/Makefile,v
retrieving revision 1.3
diff -u -p -r1.3 Makefile
--- lib/libGLESv1_CM/Makefile   9 Nov 2013 02:54:53 -0000       1.3
+++ lib/libGLESv1_CM/Makefile   18 Nov 2013 00:52:52 -0000
@@ -10,7 +10,7 @@ MESA_INCLUDE= ${.CURDIR}/../../dist/Mesa
 
 MESA_MAJOR=    9
 MESA_MINOR=    2
-MESA_TINY=     2
+MESA_TINY=     3
 
 INCSDIR=       ${X11BASE}/include/GLES
 
Index: lib/libGLESv2/Makefile
===================================================================
RCS file: /cvs/xenocara/lib/libGLESv2/Makefile,v
retrieving revision 1.3
diff -u -p -r1.3 Makefile
--- lib/libGLESv2/Makefile      9 Nov 2013 02:54:53 -0000       1.3
+++ lib/libGLESv2/Makefile      18 Nov 2013 00:53:01 -0000
@@ -10,7 +10,7 @@ MESA_INCLUDE= ${.CURDIR}/../../dist/Mesa
 
 MESA_MAJOR=    9
 MESA_MINOR=    2
-MESA_TINY=     2
+MESA_TINY=     3
 
 INCSDIR=       ${X11BASE}/include/GLES2
 INCSDIR3=      ${X11BASE}/include/GLES3

Reply via email to