Mesa 10.5.1 Release Notes / March 13, 2015
==========================================

Mesa 10.5.1 is a bug fix release which fixes bugs found since the 10.5.0
release.

Mesa 10.5.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 **only** available if requested at context creation
because compatibility contexts are not supported.

SHA256 checksums
----------------

::

   b5b6256a6d46023e16a675257fd11a0f94d7b3e60a76cf112952da3d0fef8e9b  mesa-10.5.1.tar.gz
   ffc51943d15c6812ee7611d053d8980a683fbd6a4986cff567b12cc66637d679  mesa-10.5.1.tar.xz

New features
------------

None

Bug fixes
---------

This list is likely incomplete.

-  `Bug 79202 <https://bugs.freedesktop.org/show_bug.cgi?id=79202>`__ -
   valgrind errors in glsl-fs-uniform-array-loop-unroll.shader_test;
   random code generation
-  `Bug 84613 <https://bugs.freedesktop.org/show_bug.cgi?id=84613>`__ -
   [G965, bisected] piglit regressions : glslparsertest.glsl2
-  `Bug 86747 <https://bugs.freedesktop.org/show_bug.cgi?id=86747>`__ -
   Noise in Football Manager 2014 textures
-  `Bug 86974 <https://bugs.freedesktop.org/show_bug.cgi?id=86974>`__ -
   INTEL_DEBUG=shader_time always asserts in
   fs_generator::generate_code() when Mesa is built with --enable-debug
   (= with asserts)
-  `Bug 88246 <https://bugs.freedesktop.org/show_bug.cgi?id=88246>`__ -
   Commit 2881b12 causes 43 DrawElements test regressions
-  `Bug 88793 <https://bugs.freedesktop.org/show_bug.cgi?id=88793>`__ -
   [BDW/BSW Bisected]Piglit/shaders_glsl-max-varyings fails
-  `Bug 88883 <https://bugs.freedesktop.org/show_bug.cgi?id=88883>`__ -
   ir-a2xx.c: variable changed in assert statement
-  `Bug 88885 <https://bugs.freedesktop.org/show_bug.cgi?id=88885>`__ -
   Transform feedback uses incorrect interleaving if a previous draw did
   not write gl_Position
-  `Bug 89095 <https://bugs.freedesktop.org/show_bug.cgi?id=89095>`__ -
   [SNB/IVB/BYT Bisected]Webglc
   conformance/glsl/functions/glsl-function-mix-float.html fails
-  `Bug 89156 <https://bugs.freedesktop.org/show_bug.cgi?id=89156>`__ -
   r300g: GL_COMPRESSED_RED_RGTC1 / ATI1N support broken
-  `Bug 89224 <https://bugs.freedesktop.org/show_bug.cgi?id=89224>`__ -
   Incorrect rendering of Unigine Valley running in VM on VMware
   Workstation
-  `Bug 89292 <https://bugs.freedesktop.org/show_bug.cgi?id=89292>`__ -
   [regression,bisected] incomplete screenshots in some cases
-  `Bug 89311 <https://bugs.freedesktop.org/show_bug.cgi?id=89311>`__ -
   [regression, bisected] dEQP: Added entry points for
   glCompressedTextureSubImage*D.
-  `Bug 89312 <https://bugs.freedesktop.org/show_bug.cgi?id=89312>`__ -
   [regression, bisected] main: Added entry points for
   CopyTextureSubImage*D. (d6b7c40cecfe01)
-  `Bug 89315 <https://bugs.freedesktop.org/show_bug.cgi?id=89315>`__ -
   [HSW, regression, bisected] i965/fs: Emit MAD instructions when
   possible.
-  `Bug 89317 <https://bugs.freedesktop.org/show_bug.cgi?id=89317>`__ -
   [HSW, regression, bisected] i965: Add LINTERP/CINTERP to
   can_do_cmod() (d91390634)
-  `Bug 89416 <https://bugs.freedesktop.org/show_bug.cgi?id=89416>`__ -
   UE4Editor crash after load project
-  `Bug 89430 <https://bugs.freedesktop.org/show_bug.cgi?id=89430>`__ -
   [g965][bisected] arb_copy_image-targets gl_texture\* tests fail

Changes
-------

Andrey Sudnik (1):

-  i965/vec4: Don't lose the saturate modifier in copy propagation.

Chris Forbes (1):

-  i965/gs: Check newly-generated GS-out VUE map against correct stage

Daniel Stone (1):

-  egl: Take alpha bits into account when selecting GBM formats

Emil Velikov (5):

-  docs: Add sha256 sums for the 10.5.0 release
-  egl/main: no longer export internal function
-  cherry-ignore: ignore a few more commits picked without -x
-  mapi: fix commit 90411b56f6bc817e229d8801ac0adad6d4e3fb7a
-  Update version to 10.5.1

Frank Henigman (1):

-  intel: fix EGLImage renderbuffer \_BaseFormat

Iago Toral Quiroga (1):

-  i965: Fix out-of-bounds accesses into pull_constant_loc array

Ian Romanick (1):

-  i965/fs/nir: Use emit_math for nir_op_fpow

Ilia Mirkin (3):

-  freedreno: move fb state copy after checking for size change
-  freedreno/ir3: fix array count returned by TXQ
-  freedreno/ir3: get the # of miplevels from getinfo

Jason Ekstrand (2):

-  meta/TexSubImage: Stash everything other than PIXEL_TRANSFER/store in
   meta_begin
-  main/base_tex_format: Properly handle STENCIL_INDEX1/4/16

Kenneth Graunke (8):

-  i965: Split Gen4-5 BlitFramebuffer code; prefer BLT over Meta.
-  glsl: Mark array access when copying to a temporary for the ?:
   operator.
-  i965/fs: Set force_writemask_all on shader_time instructions.
-  i965/fs: Set smear on shader_time diff register.
-  i965/fs: Make emit_shader_time_write return rather than emit.
-  i965/fs: Make get_timestamp() pass back the MOV rather than emitting
   it.
-  i965/fs: Make emit_shader_time_end() insert before EOT.
-  i965/fs: Don't issue FB writes for bound but unwritten color targets.

Laura Ekstrand (2):

-  main: Fix target checking for CompressedTexSubImage*D.
-  main: Fix target checking for CopyTexSubImage*D.

Marc-Andre Lureau (1):

-  gallium/auxiliary/indices: fix start param

Marek Olšák (3):

-  r300g: fix RGTC1 and LATC1 SNORM formats
-  r300g: fix a crash when resolving into an sRGB texture
-  r300g: fix sRGB->sRGB blits

Matt Turner (12):

-  i965/vec4: Fix implementation of i2b.
-  mesa: Indent break statements and add a missing one.
-  mesa: Free memory allocated for luminance in readpixels.
-  mesa: Correct backwards NULL check.
-  i965: Consider scratch writes to have side effects.
-  i965/fs: Don't use backend_visitor::instructions after creating the
   CFG.
-  r300g: Use PATH_MAX instead of limiting ourselves to 100 chars.
-  r300g: Check return value of snprintf().
-  i965/fs: Don't propagate cmod to inst with different type.
-  i965: Tell intel_get_memcpy() which direction the memcpy() is going.
-  Revert SHA1 additions.
-  i965: Avoid applying negate to wrong MAD source.

Neil Roberts (4):

-  meta: In pbo_{Get,}TexSubImage don't repeatedly rebind the source tex
-  Revert "common: Fix PBOs for 1D_ARRAY."
-  meta: Allow GL_UN/PACK_IMAGE_HEIGHT in
   \_mesa_meta_pbo_Get/TexSubImage
-  meta: Fix the y offset for 1D_ARRAY in \_mesa_meta_pbo_TexSubImage

Rob Clark (11):

-  freedreno/ir3: fix silly typo for binning pass shaders
-  freedreno/a2xx: fix increment in assert
-  freedreno/a4xx: bit of cleanup
-  freedreno: update generated headers
-  freedreno/a4xx: set PC_PRIM_VTX_CNTL.VAROUT properly
-  freedreno: update generated headers
-  freedreno/a4xx: aniso filtering
-  freedreno/ir3: fix up cat6 instruction encodings
-  freedreno/ir3: add support for memory (cat6) instructions
-  freedreno/ir3: handle flat bypass for a4xx
-  freedreno/ir3: fix failed assert in grouping

Stefan Dösinger (1):

-  r300g: Fix the ATI1N swizzle (RGTC1 and LATC1)
