Mesa 11.0.5 Release Notes / November 11, 2015
=============================================

Mesa 11.0.5 is a bug fix release which fixes bugs found since the 11.0.4
release.

Mesa 11.0.5 implements the OpenGL 4.1 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
4.1. OpenGL 4.1 is **only** available if requested at context creation
because compatibility contexts are not supported.

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

::

   8495ef5c06f7f726452462b7d408a5b40048373ff908f2283a3b4d1f49b45ee6  mesa-11.0.5.tar.gz
   9c255a2a6695fcc6ef4a279e1df0aeaf417dc142f39ee59dfb533d80494bb67a  mesa-11.0.5.tar.xz

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

None

Bug fixes
---------

This list is likely incomplete.

-  `Bug 91993 <https://bugs.freedesktop.org/show_bug.cgi?id=91993>`__ -
   Graphical glitch in Astromenace (open-source game).
-  `Bug 92214 <https://bugs.freedesktop.org/show_bug.cgi?id=92214>`__ -
   Flightgear crashes during splashboot with R600 driver, LLVM 3.7.0 and
   mesa 11.0.2
-  `Bug 92437 <https://bugs.freedesktop.org/show_bug.cgi?id=92437>`__ -
   osmesa: Expose GL entry points for Windows build, via .def file
-  `Bug 92476 <https://bugs.freedesktop.org/show_bug.cgi?id=92476>`__ -
   [cts] ES2-CTS.gtf.GL2ExtensionTests.egl_image.egl_image fails
-  `Bug 92623 <https://bugs.freedesktop.org/show_bug.cgi?id=92623>`__ -
   Differences in prog_data ignored when caching fragment programs
   (causes hangs)

Changes
-------

Alex Deucher (1):

-  radeon/uvd: don't expose HEVC on old UVD hw (v3)

Ben Widawsky (1):

-  i965/skl: Add GT4 PCI IDs

Emil Velikov (4):

-  docs: add sha256 checksums for 11.0.4
-  cherry-ignore: ignore a possible wrong nomination
-  Revert "mesa/glformats: Undo code changes from
   \_mesa_base_tex_format() move"
-  Update version to 11.0.5

Emmanuel Gil Peyrot (1):

-  gbm.h: Add a missing stddef.h include for size_t.

Eric Anholt (1):

-  vc4: When the create ioctl fails, free our cache and try again.

Ian Romanick (1):

-  i965: Fix is-renderable check in
   intel_image_target_renderbuffer_storage

Ilia Mirkin (3):

-  nvc0: respect edgeflag attribute width
-  nouveau: set MaxDrawBuffers to the same value as MaxColorAttachments
-  nouveau: relax fence emit space assert

Ivan Kalvachev (1):

-  r600g: Fix special negative immediate constants when using ABS
   modifier.

Jason Ekstrand (2):

-  nir/lower_vec_to_movs: Pass the shader around directly
-  nir: Report progress from lower_vec_to_movs().

Jose Fonseca (2):

-  gallivm: Translate all util_cpu_caps bits to LLVM attributes.
-  gallivm: Explicitly disable unsupported CPU features.

Julien Isorce (4):

-  st/va: pass picture desc to begin and decode
-  nvc0: fix crash when nv50_miptree_from_handle fails
-  st/va: do not destroy old buffer when new one failed
-  st/va: add more errors checks in vlVaBufferSetNumElements and
   vlVaMapBuffer

Kenneth Graunke (6):

-  i965: Fix missing BRW_NEW_*_PROG_DATA flagging caused by cache reuse.
-  nir: Report progress from nir_split_var_copies().
-  nir: Properly invalidate metadata in nir_split_var_copies().
-  nir: Properly invalidate metadata in nir_opt_copy_prop().
-  nir: Properly invalidate metadata in nir_lower_vec_to_movs().
-  nir: Properly invalidate metadata in nir_opt_remove_phis().

Marek Olšák (1):

-  radeonsi: add register definitions for Stoney

Nanley Chery (1):

-  mesa/glformats: Undo code changes from \_mesa_base_tex_format() move

Nicolai Hähnle (1):

-  st/mesa: fix mipmap generation for immutable textures with incomplete
   pyramids

Nigel Stewart (1):

-  osmesa: Expose GL entry points for Windows build via DEF file.

Roland Scheidegger (1):

-  gallivm: disable f16c when not using AVX

Samuel Li (2):

-  radeonsi: add support for Stoney asics (v3)
-  radeonsi: add Stoney pci ids
