[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

mesa: Changes to 'upstream-unstable'



Rebased ref, commits from common ancestor:
commit 088d3501786a2ff0833de45951b63acbe6560a0f
Author: Emil Velikov <emil.l.velikov@gmail.com>
Date:   Mon Oct 13 00:16:59 2014 +0100

    Add release notes for the 10.3.1 release
    
    Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>

diff --git a/docs/relnotes/10.3.1.html b/docs/relnotes/10.3.1.html
new file mode 100644
index 0000000..ea8e297
--- /dev/null
+++ b/docs/relnotes/10.3.1.html
@@ -0,0 +1,156 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  <title>Mesa Release Notes</title>
+  <link rel="stylesheet" type="text/css" href="../mesa.css">
+</head>
+<body>
+
+<div class="header">
+  <h1>The Mesa 3D Graphics Library</h1>
+</div>
+
+<iframe src="../contents.html"></iframe>
+<div class="content">
+
+<h1>Mesa 10.3.1 Release Notes / October 12, 2014</h1>
+
+<p>
+Mesa 10.3.1 is a bug fix release which fixes bugs found since the 10.3 release.
+</p>
+<p>
+Mesa 10.3.1 implements the OpenGL 3.3 API, but the version reported by
+glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
+glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
+Some drivers don't support all the features required in OpenGL 3.3.  OpenGL
+3.3 is <strong>only</strong> available if requested at context creation
+because compatibility contexts are not supported.
+</p>
+
+<h2>SHA256 checksums</h2>
+<pre>
+TBA
+</pre>
+
+<h2>New features</h2>
+<p>None</p>
+
+<h2>Bug fixes</h2>
+
+<p>This list is likely incomplete.</p>
+
+<ul>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=79462";>Bug 79462</a> - [NVC0/Codegen] Shader compilation falis in spill logic</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=82932";>Bug 82932</a> - [SNB+ Bisected]Ogles3conform ES3-CTS.shaders.indexing.vector_subscript.vec3_static_loop_subscript_write_direct_read_vertex fails</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=83506";>Bug 83506</a> - [UBO] row_major layout ignored inside structures</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=83533";>Bug 83533</a> - [UBO] nested structures don't get appropriate padding</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=83570";>Bug 83570</a> - Glyphy demo throws unhandled Integer division by zero exception</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=83741";>Bug 83741</a> - [UBO] row_major layout partially ignored for arrays of structures</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=84178";>Bug 84178</a> - Big glamor regression in Xorg server 1.6.99.1 GIT: x11perf 1.5 Test: PutImage XY 500x500 Square</li>
+
+</ul>
+
+<h2>Changes</h2>
+
+<p>Andreas Pokorny (2):</p>
+<ul>
+  <li>egl/drm: expose KHR_image_pixmap extension</li>
+  <li>i915: Fix black buffers when importing prime fds</li>
+</ul>
+
+<p>Brian Paul (1):</p>
+<ul>
+  <li>mesa: fix prog_optimize.c assertions triggered by SWZ opcode</li>
+</ul>
+
+<p>Emil Velikov (2):</p>
+<ul>
+  <li>docs: Add 10.3 sha256 sums, news item and link release notes</li>
+  <li>Update VERSION to 10.3.1</li>
+</ul>
+
+<p>Ian Romanick (4):</p>
+<ul>
+  <li>glsl: Make sure fields after small structs have correct padding</li>
+  <li>glsl: Make sure row-major array-of-structure get correct layout</li>
+  <li>glsl: Round struct size up to at least 16 bytes</li>
+  <li>glsl: Strip arrayness from ir_type_dereference_variable too</li>
+</ul>
+
+<p>Ilia Mirkin (5):</p>
+<ul>
+  <li>nv50/ir: avoid deleting pseudo instructions too early</li>
+  <li>gm107/ir: fix manual TXD for array targets</li>
+  <li>gm107/ir: fix texture argument order</li>
+  <li>gm107/ir: add support for indirect const buffer selection</li>
+  <li>gm107/ir: take relative pfetch offset into account</li>
+</ul>
+
+<p>Keith Packard (1):</p>
+<ul>
+  <li>glx/dri3: Provide error diagnostics when DRI3 allocation fails</li>
+</ul>
+
+<p>Kenneth Graunke (2):</p>
+<ul>
+  <li>mesa: Use proper structure for glGet*(GL_TEXTURE_COORD_ARRAY*).</li>
+  <li>mesa: Set correct array element in vbo_exec_vtx_init.</li>
+</ul>
+
+<p>Marek Olšák (3):</p>
+<ul>
+  <li>radeonsi: release GS rings at context destruction</li>
+  <li>radeonsi: properly destroy the GS copy shader and scratch_bo for compute</li>
+  <li>st/dri: remove GALLIUM_MSAA and __GL_FSAA_MODE environment variables</li>
+</ul>
+
+<p>Michel Dänzer (1):</p>
+<ul>
+  <li>st/mesa: Use PIPE_USAGE_STAGING for GL_STATIC/DYNAMIC/STREAM_READ buffers</li>
+</ul>
+
+<p>Richard Sandiford (2):</p>
+<ul>
+  <li>mesa: Fix alpha component in unpack_R8G8B8X8_SRGB.</li>
+  <li>swrast: Fix handling of MESA_FORMAT_L8A8_SRGB for big-endian</li>
+</ul>
+
+<p>Roland Scheidegger (1):</p>
+<ul>
+  <li>gallivm: fix idiv</li>
+</ul>
+
+<p>Thomas Hellstrom (1):</p>
+<ul>
+  <li>st/xa: Fix regression in xa_yuv_planar_blit()</li>
+</ul>
+
+<p>Tom Stellard (2):</p>
+<ul>
+  <li>clover: Add support to mem objects for multiple destructor callbacks v2</li>
+  <li>configure.ac: Compute LLVM_VERSION_PATCH using llvm-config</li>
+</ul>
+
+<p>Tomasz Figa (3):</p>
+<ul>
+  <li>util: Include in Android builds</li>
+  <li>st/mesa: Generate format_info.c in Android builds</li>
+  <li>st/mesa: Fix paths used in Android builds</li>
+</ul>
+
+<p>rconde (1):</p>
+<ul>
+  <li>gallivm,tgsi: fix idiv by zero crash</li>
+</ul>
+
+</div>
+</body>
+</html>

commit 85421100fbba09a1c78e0ef6fea0d6c342b8a02a
Author: Emil Velikov <emil.l.velikov@gmail.com>
Date:   Sun Oct 12 21:44:45 2014 +0100

    Update VERSION to 10.3.1
    
    Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>

diff --git a/VERSION b/VERSION
index 0719d81..a936832 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-10.3.0
+10.3.1

commit c90cd077bd9c1c103d8ef36d6286599af5b3645e
Author: Tomasz Figa <tomasz.figa@gmail.com>
Date:   Sat Sep 27 16:20:01 2014 +0200

    st/mesa: Fix paths used in Android builds
    
    With current makefiles the build fails because source and build paths
    are generated incorrectly. With Android build system the top_srcdir and
    top_builddir variables are undefined and all paths are relative to where
    Android.mk is located. This ends up with path likes
    external/mesa/src/mesa/src/mesa/ for both source and build paths, which
    are obviously wrong.
    
    This patch fixes this by overriding resulting SRCDIR and BUILDDIR
    variables with empty string, so that paths end up being relative to
    Android.mk file again. Appending correct build path to generated files
    is already done in Android.gen.mk.
    
    Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
    CC: <mesa-stable@lists.freedesktop.org>
    Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
    (cherry picked from commit b4ffd19e6c9f61dfa4e0eda1f606cd255b27208f)

diff --git a/src/mesa/Android.libmesa_dricore.mk b/src/mesa/Android.libmesa_dricore.mk
index e1a5a17..1e6d948 100644
--- a/src/mesa/Android.libmesa_dricore.mk
+++ b/src/mesa/Android.libmesa_dricore.mk
@@ -32,6 +32,8 @@ LOCAL_PATH := $(call my-dir)
 #     MESA_FILES
 #     X86_FILES
 include $(LOCAL_PATH)/Makefile.sources
+SRCDIR :=
+BUILDDIR :=
 
 include $(CLEAR_VARS)
 
diff --git a/src/mesa/Android.libmesa_st_mesa.mk b/src/mesa/Android.libmesa_st_mesa.mk
index e486e1a..8b8d652 100644
--- a/src/mesa/Android.libmesa_st_mesa.mk
+++ b/src/mesa/Android.libmesa_st_mesa.mk
@@ -32,6 +32,8 @@ LOCAL_PATH := $(call my-dir)
 # 	MESA_GALLIUM_FILES.
 # 	X86_FILES
 include $(LOCAL_PATH)/Makefile.sources
+SRCDIR :=
+BUILDDIR :=
 
 include $(CLEAR_VARS)
 
diff --git a/src/mesa/program/Android.mk b/src/mesa/program/Android.mk
index a237b65..19c4be0 100644
--- a/src/mesa/program/Android.mk
+++ b/src/mesa/program/Android.mk
@@ -39,6 +39,8 @@ endef
 # Import the following variables:
 #     PROGRAM_FILES
 include $(MESA_TOP)/src/mesa/Makefile.sources
+SRCDIR :=
+BUILDDIR :=
 
 include $(CLEAR_VARS)
 

commit dffbee6668f93bbaa32c1f13c8f5d5f2ffbb5b12
Author: Tomasz Figa <tomasz.figa@gmail.com>
Date:   Sat Sep 27 16:20:00 2014 +0200

    st/mesa: Generate format_info.c in Android builds
    
    Current Android makefiles lack generation of format_info.c, which is
    a dependency of main/format.c. This patch adds necessary code to
    Android.gen.mk.
    
    Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
    CC: <mesa-stable@lists.freedesktop.org>
    Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
    (cherry picked from commit 98445fd25e4f0bd7dc4d7a2a843b7fbe76c9756d)

diff --git a/src/mesa/Android.gen.mk b/src/mesa/Android.gen.mk
index c6280f5..c7b7f7e 100644
--- a/src/mesa/Android.gen.mk
+++ b/src/mesa/Android.gen.mk
@@ -115,3 +115,12 @@ GET_HASH_GEN := $(LOCAL_PATH)/main/get_hash_generator.py
 $(intermediates)/main/get_hash.h: $(glapi)/gl_and_es_API.xml \
                $(LOCAL_PATH)/main/get_hash_params.py $(GET_HASH_GEN)
 	@$(MESA_PYTHON2) $(GET_HASH_GEN) -f $< > $@
+
+FORMAT_INFO := $(LOCAL_PATH)/main/format_info.py
+format_info_deps := \
+	$(LOCAL_PATH)/main/formats.csv \
+	$(LOCAL_PATH)/main/format_parser.py \
+	$(FORMAT_INFO)
+
+$(intermediates)/main/format_info.c: $(format_info_deps)
+	@$(MESA_PYTHON2) $(FORMAT_INFO) $< > $@

commit 58ba481e8e21c4300ba532ab4ba62ce1a4c62001
Author: Tomasz Figa <tomasz.figa@gmail.com>
Date:   Sat Sep 27 16:19:59 2014 +0200

    util: Include in Android builds
    
    This patch fixes Android build failures by including src/util directory
    in compilation. Files inside of this directory are compiled into
    libmesa_util static library and linked with resulting libGLES_mesa.
    
    Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
    CC: <mesa-stable@lists.freedesktop.org>
    Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
    (cherry picked from commit d703abf735bc2fe27af893d07e44598b8601b172)

diff --git a/Android.mk b/Android.mk
index 591c2fc..e190f74 100644
--- a/Android.mk
+++ b/Android.mk
@@ -81,6 +81,7 @@ SUBDIRS := \
 	src/mapi \
 	src/glsl \
 	src/mesa \
+	src/util \
 	src/egl/main
 
 ifeq ($(strip $(MESA_BUILD_CLASSIC)),true)
diff --git a/src/egl/main/Android.mk b/src/egl/main/Android.mk
index 8c37e79..8537381 100644
--- a/src/egl/main/Android.mk
+++ b/src/egl/main/Android.mk
@@ -143,6 +143,7 @@ LOCAL_STATIC_LIBRARIES := \
 	libmesa_st_egl \
 	$(gallium_DRIVERS) \
 	libmesa_st_mesa \
+	libmesa_util \
 	libmesa_glsl \
 	libmesa_glsl_utils \
 	libmesa_gallium \
diff --git a/src/gallium/auxiliary/Android.mk b/src/gallium/auxiliary/Android.mk
index 11fc225..8046943 100644
--- a/src/gallium/auxiliary/Android.mk
+++ b/src/gallium/auxiliary/Android.mk
@@ -30,7 +30,9 @@ include $(CLEAR_VARS)
 
 LOCAL_SRC_FILES := $(C_SOURCES)
 
-LOCAL_C_INCLUDES := $(GALLIUM_TOP)/auxiliary/util
+LOCAL_C_INCLUDES := \
+	$(GALLIUM_TOP)/auxiliary/util \
+	$(MESA_TOP)/src
 
 LOCAL_MODULE := libmesa_gallium
 
diff --git a/src/glsl/Android.mk b/src/glsl/Android.mk
index 7b1fa7e..1cbc5c6 100644
--- a/src/glsl/Android.mk
+++ b/src/glsl/Android.mk
@@ -39,6 +39,7 @@ LOCAL_SRC_FILES := \
 	$(LIBGLSL_FILES)
 
 LOCAL_C_INCLUDES := \
+	$(MESA_TOP)/src \
 	$(MESA_TOP)/src/mapi \
 	$(MESA_TOP)/src/mesa
 
@@ -59,10 +60,11 @@ LOCAL_SRC_FILES := \
 	$(GLSL_COMPILER_CXX_FILES)
 
 LOCAL_C_INCLUDES := \
+	$(MESA_TOP)/src \
 	$(MESA_TOP)/src/mapi \
 	$(MESA_TOP)/src/mesa
 
-LOCAL_STATIC_LIBRARIES := libmesa_glsl libmesa_glsl_utils
+LOCAL_STATIC_LIBRARIES := libmesa_glsl libmesa_glsl_utils libmesa_util
 
 LOCAL_MODULE_TAGS := eng
 LOCAL_MODULE := glsl_compiler
diff --git a/src/mesa/Android.libmesa_dricore.mk b/src/mesa/Android.libmesa_dricore.mk
index 28d6feb..e1a5a17 100644
--- a/src/mesa/Android.libmesa_dricore.mk
+++ b/src/mesa/Android.libmesa_dricore.mk
@@ -55,6 +55,7 @@ endif
 
 LOCAL_C_INCLUDES := \
 	$(call intermediates-dir-for STATIC_LIBRARIES,libmesa_program,,) \
+	$(MESA_TOP)/src \
 	$(MESA_TOP)/src/mapi \
 	$(MESA_TOP)/src/glsl \
 	$(MESA_TOP)/src/gallium/auxiliary
diff --git a/src/mesa/Android.libmesa_glsl_utils.mk b/src/mesa/Android.libmesa_glsl_utils.mk
index e93891f..a9f6ff5 100644
--- a/src/mesa/Android.libmesa_glsl_utils.mk
+++ b/src/mesa/Android.libmesa_glsl_utils.mk
@@ -36,11 +36,11 @@ include $(CLEAR_VARS)
 LOCAL_MODULE := libmesa_glsl_utils
 
 LOCAL_C_INCLUDES := \
+	$(MESA_TOP)/src \
 	$(MESA_TOP)/src/glsl \
 	$(MESA_TOP)/src/mapi
 
 LOCAL_SRC_FILES := \
-	main/hash_table.c \
 	main/imports.c \
 	program/prog_hash_table.c \
 	program/symbol_table.c
@@ -59,11 +59,11 @@ LOCAL_IS_HOST_MODULE := true
 LOCAL_CFLAGS := -D_POSIX_C_SOURCE=199309L
 
 LOCAL_C_INCLUDES := \
+	$(MESA_TOP)/src \
 	$(MESA_TOP)/src/glsl \
 	$(MESA_TOP)/src/mapi
 
 LOCAL_SRC_FILES := \
-	main/hash_table.c \
 	main/imports.c \
 	program/prog_hash_table.c \
 	program/symbol_table.c
diff --git a/src/mesa/Android.libmesa_st_mesa.mk b/src/mesa/Android.libmesa_st_mesa.mk
index e6374a6..e486e1a 100644
--- a/src/mesa/Android.libmesa_st_mesa.mk
+++ b/src/mesa/Android.libmesa_st_mesa.mk
@@ -50,6 +50,7 @@ LOCAL_C_INCLUDES := \
 	$(call intermediates-dir-for STATIC_LIBRARIES,libmesa_program,,) \
 	$(MESA_TOP)/src/gallium/auxiliary \
 	$(MESA_TOP)/src/gallium/include \
+	$(MESA_TOP)/src \
 	$(MESA_TOP)/src/glsl \
 	$(MESA_TOP)/src/mapi
 
diff --git a/src/mesa/program/Android.mk b/src/mesa/program/Android.mk
index e85afe6..a237b65 100644
--- a/src/mesa/program/Android.mk
+++ b/src/mesa/program/Android.mk
@@ -71,6 +71,7 @@ $(intermediates)/program/lex.yy.c: $(LOCAL_PATH)/program_lexer.l
 
 LOCAL_C_INCLUDES := \
 	$(intermediates) \
+	$(MESA_TOP)/src \
 	$(MESA_TOP)/src/mapi \
 	$(MESA_TOP)/src/mesa \
 	$(MESA_TOP)/src/glsl
diff --git a/src/util/Android.mk b/src/util/Android.mk
new file mode 100644
index 0000000..6b38cf9
--- /dev/null
+++ b/src/util/Android.mk
@@ -0,0 +1,102 @@
+# Mesa 3-D graphics library
+#
+# Copyright (C) 2014 Tomasz Figa <tomasz.figa@gmail.com>
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+# DEALINGS IN THE SOFTWARE.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(LOCAL_PATH)/Makefile.sources
+
+# ---------------------------------------
+# Build libmesa_util
+# ---------------------------------------
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := \
+	$(MESA_UTIL_FILES)
+
+LOCAL_C_INCLUDES := \
+	$(MESA_TOP)/src/mesa \
+	$(MESA_TOP)/src/mapi \
+	$(MESA_TOP)/src
+
+LOCAL_MODULE := libmesa_util
+
+# Generated sources
+
+ifeq ($(LOCAL_MODULE_CLASS),)
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+endif
+
+intermediates := $(call local-intermediates-dir)
+
+# This is the list of auto-generated files: sources and headers
+sources := $(addprefix $(intermediates)/, $(MESA_UTIL_GENERATED_FILES))
+
+LOCAL_GENERATED_SOURCES += $(sources)
+
+FORMAT_SRGB := $(LOCAL_PATH)/format_srgb.py
+
+$(intermediates)/format_srgb.c: $(FORMAT_SRGB)
+	@$(MESA_PYTHON2) $(FORMAT_SRGB) $< > $@
+
+include $(MESA_COMMON_MK)
+include $(BUILD_STATIC_LIBRARY)
+
+# ---------------------------------------
+# Build host libmesa_util
+# ---------------------------------------
+
+include $(CLEAR_VARS)
+
+LOCAL_IS_HOST_MODULE := true
+LOCAL_CFLAGS := -D_POSIX_C_SOURCE=199309L
+
+LOCAL_SRC_FILES := \
+	$(MESA_UTIL_FILES)
+
+LOCAL_C_INCLUDES := \
+	$(MESA_TOP)/src/mesa \
+	$(MESA_TOP)/src/mapi \
+	$(MESA_TOP)/src
+
+LOCAL_MODULE := libmesa_util
+
+# Generated sources
+
+ifeq ($(LOCAL_MODULE_CLASS),)
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+endif
+
+intermediates := $(call local-intermediates-dir)
+
+# This is the list of auto-generated files: sources and headers
+sources := $(addprefix $(intermediates)/, $(MESA_UTIL_GENERATED_FILES))
+
+LOCAL_GENERATED_SOURCES += $(sources)
+
+FORMAT_SRGB := $(LOCAL_PATH)/format_srgb.py
+
+$(intermediates)/format_srgb.c: $(FORMAT_SRGB)
+	@$(MESA_PYTHON2) $(FORMAT_SRGB) $< > $@
+
+include $(MESA_COMMON_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)

commit ccf908e382c6dbd4d44cbe6473cdaa0d405ea62f
Author: Keith Packard <keithp@keithp.com>
Date:   Tue Sep 30 20:03:29 2014 -0700

    glx/dri3: Provide error diagnostics when DRI3 allocation fails
    
    Instead of just segfaulting in the driver when a buffer allocation fails,
    report error messages indicating what went wrong so that we can debug things.
    
    As a simple example, chromium wraps Mesa in a sandbox which doesn't allow
    access to most syscalls, including the ability to create shared memory
    segments for fences. Before, you'd get a simple segfault in mesa and your 3D
    acceleration would fail. Now you get:
    
    $ chromium --disable-gpu-blacklist
    [10618:10643:0930/200525:ERROR:nss_util.cc(856)] After loading Root Certs, loaded==false: NSS error code: -8018
    libGL: pci id for fd 12: 8086:0a16, driver i965
    libGL: OpenDriver: trying /local-miki/src/mesa/mesa/lib/i965_dri.so
    libGL: Can't open configuration file /home/keithp/.drirc: Operation not permitted.
    libGL: Can't open configuration file /home/keithp/.drirc: Operation not permitted.
    libGL error: DRI3 Fence object allocation failure Operation not permitted
    [10618:10618:0930/200525:ERROR:command_buffer_proxy_impl.cc(153)] Could not send GpuCommandBufferMsg_Initialize.
    [10618:10618:0930/200525:ERROR:webgraphicscontext3d_command_buffer_impl.cc(236)] CommandBufferProxy::Initialize failed.
    [10618:10618:0930/200525:ERROR:webgraphicscontext3d_command_buffer_impl.cc(256)] Failed to initialize command buffer.
    
    This made it pretty easy to diagnose the problem in the referenced bug report.
    
    Bugzilla: https://code.google.com/p/chromium/issues/detail?id=415681
    Signed-off-by: Keith Packard <keithp@keithp.com>
    Cc: mesa-stable@lists.freedesktop.org
    Reviewed-by: Matt Turner <mattst88@gmail.com>
    (cherry picked from commit 3202926746298468805f54ac5b39d62f9585dabf)

diff --git a/src/glx/dri3_glx.c b/src/glx/dri3_glx.c
index e3fc4de..ed30094 100644
--- a/src/glx/dri3_glx.c
+++ b/src/glx/dri3_glx.c
@@ -813,11 +813,15 @@ dri3_alloc_render_buffer(struct glx_screen *glx_screen, Drawable draw,
     */
 
    fence_fd = xshmfence_alloc_shm();
-   if (fence_fd < 0)
+   if (fence_fd < 0) {
+      ErrorMessageF("DRI3 Fence object allocation failure %s\n", strerror(errno));
       return NULL;
+   }
    shm_fence = xshmfence_map_shm(fence_fd);
-   if (shm_fence == NULL)
+   if (shm_fence == NULL) {
+      ErrorMessageF("DRI3 Fence object map failure %s\n", strerror(errno));
       goto no_shm_fence;
+   }
 
    /* Allocate the image from the driver
     */
@@ -826,8 +830,10 @@ dri3_alloc_render_buffer(struct glx_screen *glx_screen, Drawable draw,
       goto no_buffer;
 
    buffer->cpp = dri3_cpp_for_format(format);
-   if (!buffer->cpp)
+   if (!buffer->cpp) {
+      ErrorMessageF("DRI3 buffer format %d invalid\n", format);
       goto no_image;
+   }
 
    if (!psc->is_different_gpu) {
       buffer->image = (*psc->image->createImage) (psc->driScreen,
@@ -838,8 +844,10 @@ dri3_alloc_render_buffer(struct glx_screen *glx_screen, Drawable draw,
                                                   buffer);
       pixmap_buffer = buffer->image;
 
-      if (!buffer->image)
+      if (!buffer->image) {
+         ErrorMessageF("DRI3 gpu image creation failure\n");
          goto no_image;
+      }
    } else {
       buffer->image = (*psc->image->createImage) (psc->driScreen,
                                                   width, height,
@@ -847,8 +855,10 @@ dri3_alloc_render_buffer(struct glx_screen *glx_screen, Drawable draw,
                                                   0,
                                                   buffer);
 
-      if (!buffer->image)
+      if (!buffer->image) {
+         ErrorMessageF("DRI3 other gpu image creation failure\n");
          goto no_image;
+      }
 
       buffer->linear_buffer = (*psc->image->createImage) (psc->driScreen,
                                                           width, height,
@@ -858,19 +868,25 @@ dri3_alloc_render_buffer(struct glx_screen *glx_screen, Drawable draw,
                                                           buffer);
       pixmap_buffer = buffer->linear_buffer;
 
-      if (!buffer->linear_buffer)
+      if (!buffer->linear_buffer) {
+         ErrorMessageF("DRI3 gpu linear image creation failure\n");
          goto no_linear_buffer;
+      }
    }
 
    /* X wants the stride, so ask the image for it
     */
-   if (!(*psc->image->queryImage)(pixmap_buffer, __DRI_IMAGE_ATTRIB_STRIDE, &stride))
+   if (!(*psc->image->queryImage)(pixmap_buffer, __DRI_IMAGE_ATTRIB_STRIDE, &stride)) {
+      ErrorMessageF("DRI3 get image stride failed\n");
       goto no_buffer_attrib;
+   }
 
    buffer->pitch = stride;
 
-   if (!(*psc->image->queryImage)(pixmap_buffer, __DRI_IMAGE_ATTRIB_FD, &buffer_fd))
+   if (!(*psc->image->queryImage)(pixmap_buffer, __DRI_IMAGE_ATTRIB_FD, &buffer_fd)) {
+      ErrorMessageF("DRI3 get image FD failed\n");
       goto no_buffer_attrib;
+   }
 
    xcb_dri3_pixmap_from_buffer(c,
                                (pixmap = xcb_generate_id(c)),
@@ -910,6 +926,7 @@ no_buffer:
    xshmfence_unmap_shm(shm_fence);
 no_shm_fence:
    close(fence_fd);
+   ErrorMessageF("DRI3 alloc_render_buffer failed\n");
    return NULL;
 }
 

commit ed440234d4111322ff8d23fa137db9944bcc5a72
Author: Thomas Hellstrom <thellstrom@vmware.com>
Date:   Sun Sep 28 17:17:22 2014 +0200

    st/xa: Fix regression in xa_yuv_planar_blit()
    
    Commit "st/xa: scissor to help tilers" broke xa_yuv_planar_blit() and vmwgfx
    textured video. Fix this by implementing scissors also in the yuv draw path.
    
    Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
    Reviewed-by: Sinclair Yeh <syeh@vmware.com>
    Cc: Rob Clark <robclark@freedesktop.org>
    Cc: "10.2 10.3" <mesa-stable@lists.freedesktop.org>
    (cherry picked from commit 46537f1d03ba6de83be70ac574f633bb4342a327)

diff --git a/src/gallium/state_trackers/xa/xa_renderer.c b/src/gallium/state_trackers/xa/xa_renderer.c
index 121d8ed..780b247 100644
--- a/src/gallium/state_trackers/xa/xa_renderer.c
+++ b/src/gallium/state_trackers/xa/xa_renderer.c
@@ -530,11 +530,22 @@ renderer_draw_yuv(struct xa_context *r,
                          src_x, src_y, src_w, src_h,
                          dst_x, dst_y, dst_w, dst_h, srf);
 
+   if (!r->scissor_valid) {
+       r->scissor.minx = 0;
+       r->scissor.miny = 0;
+       r->scissor.maxx = r->dst->tex->width0;
+       r->scissor.maxy = r->dst->tex->height0;
+   }
+
+   r->pipe->set_scissor_states(r->pipe, 0, 1, &r->scissor);
+
    cso_set_vertex_elements(r->cso, num_attribs, r->velems);
    util_draw_user_vertex_buffer(r->cso, r->buffer, PIPE_PRIM_QUADS,
                                 4,	/* verts */
                                 num_attribs);	/* attribs/vert */
    r->buffer_size = 0;
+
+   xa_scissor_reset(r);
 }
 
 void
diff --git a/src/gallium/state_trackers/xa/xa_yuv.c b/src/gallium/state_trackers/xa/xa_yuv.c
index 43f56ff..1519639 100644
--- a/src/gallium/state_trackers/xa/xa_yuv.c
+++ b/src/gallium/state_trackers/xa/xa_yuv.c
@@ -146,6 +146,7 @@ xa_yuv_planar_blit(struct xa_context *r,
 	int w = box->x2 - box->x1;
 	int h = box->y2 - box->y1;
 
+        xa_scissor_update(r, x, y, box->x2, box->y2);
 	renderer_draw_yuv(r,
 			  (float)src_x + scale_x * (x - dst_x),
 			  (float)src_y + scale_y * (y - dst_y),

commit d95520d2972b9b26192f1fc733e51af8dfad8e1d
Author: Marek Olšák <marek.olsak@amd.com>
Date:   Wed Sep 17 14:08:33 2014 +0200

    st/dri: remove GALLIUM_MSAA and __GL_FSAA_MODE environment variables
    
    Some users don't understand that these variables can break OpenGL.
    The general is rule is that if an app supports MSAA, you mustn't use
    GALLIUM_MSAA.
    
    For example, if an app has an 8xMSAA FBO and GALLIUM_MSAA=4
    is set, resolving the FBO to the back buffer will be rejected which will look
    like this on all gallium drivers:
    
    http://www.phoronix.com/scan.php?page=article&item=amd_radeonsi_msaa
    
    The environment variables also have no effect on modern apps like TF2, but
    there is still a performance hit due to wasted bandwidth and VRAM.
    
    In a nutshell, it does more harm than good.
    
    Cc: 10.2 10.3 <mesa-stable@lists.freedesktop.org>
    Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
    (cherry picked from commit 8449121971ce1db03fea19665d314e523fdc10dd)

diff --git a/src/gallium/state_trackers/dri/dri_screen.c b/src/gallium/state_trackers/dri/dri_screen.c
index fdcedcb..9cdebf8 100644
--- a/src/gallium/state_trackers/dri/dri_screen.c
+++ b/src/gallium/state_trackers/dri/dri_screen.c
@@ -227,37 +227,6 @@ dri_fill_in_modes(struct dri_screen *screen)
    return (const __DRIconfig **)configs;
 }
 
-/* The Gallium way to force MSAA. */
-DEBUG_GET_ONCE_NUM_OPTION(msaa, "GALLIUM_MSAA", 0);
-
-/* The NVIDIA way to force MSAA. The same variable is used by the NVIDIA
- * driver. */
-DEBUG_GET_ONCE_NUM_OPTION(msaa_nv, "__GL_FSAA_MODE", 0);
-
-static void
-dri_force_msaa_visual(struct st_visual *stvis,
-                      struct pipe_screen *screen)
-{
-   int i;
-   int samples = debug_get_option_msaa();
-
-   if (!samples)
-      samples = debug_get_option_msaa_nv();
-
-   if (samples <= 1)
-      return; /* nothing to do */
-
-   /* Choose a supported sample count greater than or equal to samples. */
-   for (i = samples; i <= MSAA_VISUAL_MAX_SAMPLES; i++) {
-      if (screen->is_format_supported(screen, stvis->color_format,
-                                      PIPE_TEXTURE_2D, i,
-                                      PIPE_BIND_RENDER_TARGET)) {
-         stvis->samples = i;
-         break;
-      }
-   }
-}
-
 /**
  * Roughly the converse of dri_fill_in_modes.
  */
@@ -282,10 +251,6 @@ dri_fill_st_visual(struct st_visual *stvis, struct dri_screen *screen,
    if (mode->sampleBuffers) {
       stvis->samples = mode->samples;
    }
-   else {
-      /* This must be done after stvis->color_format is set. */
-      dri_force_msaa_visual(stvis, screen->base.screen);
-   }
 
    switch (mode->depthBits) {
    default:

commit 3e980357c5dcc305d428762d53c375757adcf293
Author: Tom Stellard <thomas.stellard@amd.com>
Date:   Thu Sep 25 12:55:40 2014 -0700

    configure.ac: Compute LLVM_VERSION_PATCH using llvm-config
    
    This is the only guaranteed way get the patch level for llvm,
    since the define cannot always be found in config.h depending
    on the version of llvm or the build system used.
    
    CC: 10.2 10.3 <mesa-stable@lists.freedesktop.org>
    Reviewed-by: Jonathan Gray <jsg@jsg.id.au>
    (cherry picked from commit ec566e0f169dac33814463e913e5d844a782c61e)

diff --git a/configure.ac b/configure.ac
index 4320045..41b35a9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1704,11 +1704,10 @@ if test "x$enable_gallium_llvm" = xyes; then
         AC_COMPUTE_INT([LLVM_VERSION_MINOR], [LLVM_VERSION_MINOR],
             [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
 
-        dnl In LLVM 3.4.1 patch level was defined in config.h and not
-        dnl llvm-config.h
-        AC_COMPUTE_INT([LLVM_VERSION_PATCH], [LLVM_VERSION_PATCH],
-            [#include "${LLVM_INCLUDEDIR}/llvm/Config/config.h"],
-            LLVM_VERSION_PATCH=0) dnl Default if LLVM_VERSION_PATCH not found
+        LLVM_VERSION_PATCH=`echo $LLVM_VERSION | cut -d. -f3 | egrep -o '^[[0-9]]+'`
+        if test -z "$LLVM_VERSION_PATCH"; then
+            LLVM_VERSION_PATCH=0
+        fi
 
         if test -n "${LLVM_VERSION_MAJOR}"; then
             LLVM_VERSION_INT="${LLVM_VERSION_MAJOR}0${LLVM_VERSION_MINOR}"

commit 384816c6dbc3fa52a21d2d77e014ec2549b6ce87
Author: Ian Romanick <ian.d.romanick@intel.com>
Date:   Wed Sep 10 15:19:43 2014 -0700

    glsl: Strip arrayness from ir_type_dereference_variable too
    
    If the thing being dereferenced is a record or an array of records, it
    should be treated as row-major.  The ir_type_derference_record path
    already does this, and I think I intended to do the same for this path
    in b17a4d5d.
    
    Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
    Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=83741
    Cc: mesa-stable@lists.freedesktop.org
    (cherry picked from commit c3f17bb18f597d7f606805ae94363dae7fd51582)

diff --git a/src/glsl/lower_ubo_reference.cpp b/src/glsl/lower_ubo_reference.cpp
index f3920b3..43dd067 100644
--- a/src/glsl/lower_ubo_reference.cpp
+++ b/src/glsl/lower_ubo_reference.cpp
@@ -111,7 +111,7 @@ is_dereferenced_thing_row_major(const ir_dereference *deref)
          case GLSL_MATRIX_LAYOUT_COLUMN_MAJOR:
             return false;
          case GLSL_MATRIX_LAYOUT_ROW_MAJOR:
-            return matrix || deref->type->is_record();
+            return matrix || deref->type->without_array()->is_record();
          }
 
          unreachable("invalid matrix layout");

commit d556ed889d656639dc26d82d0d54467cb57210af
Author: Ian Romanick <ian.d.romanick@intel.com>
Date:   Wed Sep 10 10:54:55 2014 -0700

    glsl: Round struct size up to at least 16 bytes
    
    Per rule #9, the size of the structure is vec4 aligned.  The MAX2 in the
    loop ensures that sizes >= 16 bytes are vec4 aligned.  The new MAX2
    after the loop ensures that sizes < 16 bytes are vec4 aligned.
    
    Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
    Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=82932
    Cc: mesa-stable@lists.freedesktop.org
    (cherry picked from commit 2ab71e1486e76722154b48faef8216ff8173fd30)

diff --git a/src/glsl/glsl_types.cpp b/src/glsl/glsl_types.cpp
index 66e9b13..56b96f5 100644
--- a/src/glsl/glsl_types.cpp
+++ b/src/glsl/glsl_types.cpp
@@ -965,7 +965,7 @@ glsl_type::std140_size(bool row_major) const
          if (field_type->is_record() && (i + 1 < this->length))
             size = glsl_align(size, 16);
       }
-      size = glsl_align(size, max_align);
+      size = glsl_align(size, MAX2(max_align, 16));
       return size;
    }
 

commit d9444533aa0839b9661da8f98c0052f7c6ee5207
Author: Ian Romanick <ian.d.romanick@intel.com>
Date:   Mon Sep 8 18:25:15 2014 -0700

    glsl: Make sure row-major array-of-structure get correct layout
    
    Whether or not the field is row-major (because it might be a bvec2 or
    something) does not affect the array itself.  We need to know whether an
    array element in its entirety is row-major.
    
    Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
    Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=83506
    Cc: mesa-stable@lists.freedesktop.org
    (cherry picked from commit 5c75270c344815b15ef73e83421192fd7de35972)

diff --git a/src/glsl/lower_ubo_reference.cpp b/src/glsl/lower_ubo_reference.cpp
index 4ae1aac..f3920b3 100644
--- a/src/glsl/lower_ubo_reference.cpp
+++ b/src/glsl/lower_ubo_reference.cpp
@@ -301,7 +301,14 @@ lower_ubo_reference_visitor::handle_rvalue(ir_rvalue **rvalue)
             deref = deref_array->array->as_dereference();
             break;
 	 } else {
-	    array_stride = deref_array->type->std140_size(row_major);
+            /* Whether or not the field is row-major (because it might be a
+             * bvec2 or something) does not affect the array itself.  We need
+             * to know whether an array element in its entirety is row-major.
+             */
+            const bool array_row_major =
+               is_dereferenced_thing_row_major(deref_array);
+
+	    array_stride = deref_array->type->std140_size(array_row_major);
 	    array_stride = glsl_align(array_stride, 16);
 	 }
 

commit 9328440ef742e84092f0f418caebc4e1ea2a7c52
Author: Ian Romanick <ian.d.romanick@intel.com>
Date:   Mon Sep 8 12:23:39 2014 -0700

    glsl: Make sure fields after small structs have correct padding
    
    Previously the linker would correctly calculate the layout, but the
    lower_ubo_reference pass would not apply correct alignment to fields
    following small (less than 16-byte) nested structures.
    
    Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
    Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=83533
    Cc: mesa-stable@lists.freedesktop.org
    (cherry picked from commit 8e01c66da6c780601f941aa5b9939962c219fdbd)

diff --git a/src/glsl/lower_ubo_reference.cpp b/src/glsl/lower_ubo_reference.cpp
index 3cdfc04..4ae1aac 100644
--- a/src/glsl/lower_ubo_reference.cpp
+++ b/src/glsl/lower_ubo_reference.cpp
@@ -327,6 +327,15 @@ lower_ubo_reference_visitor::handle_rvalue(ir_rvalue **rvalue)
 	 const glsl_type *struct_type = deref_record->record->type;
 	 unsigned intra_struct_offset = 0;
 
+         /* glsl_type::std140_base_alignment doesn't grok interfaces.  Use
+          * 16-bytes for the alignment because that is the general minimum of
+          * std140.
+          */
+         const unsigned struct_alignment = struct_type->is_interface()
+            ? 16
+            : struct_type->std140_base_alignment(row_major);
+
+
 	 for (unsigned int i = 0; i < struct_type->length; i++) {
 	    const glsl_type *type = struct_type->fields.structure[i].type;
 
@@ -346,6 +355,19 @@ lower_ubo_reference_visitor::handle_rvalue(ir_rvalue **rvalue)
 		       deref_record->field) == 0)
 	       break;
             intra_struct_offset += type->std140_size(field_row_major);
+
+            /* If the field just examined was itself a structure, apply rule
+             * #9:
+             *
+             *     "The structure may have padding at the end; the base offset
+             *     of the member following the sub-structure is rounded up to
+             *     the next multiple of the base alignment of the structure."
+             */
+            if (type->without_array()->is_record()) {
+               intra_struct_offset = glsl_align(intra_struct_offset,
+                                                struct_alignment);
+
+            }
 	 }
 
 	 const_offset += intra_struct_offset;

commit 1ac204121b5836b4fe135433cbd11c608050bd74
Author: Michel Dänzer <michel.daenzer@amd.com>
Date:   Thu Sep 25 15:29:56 2014 +0900

    st/mesa: Use PIPE_USAGE_STAGING for GL_STATIC/DYNAMIC/STREAM_READ buffers
    
    Such buffers can only be useful by reading from them with the CPU, so we
    need to make sure CPU reads are fast.
    


Reply to: