Mesa 13.0.4 Release Notes / February 1, 2017
============================================

Mesa 13.0.4 is a bug fix release which fixes bugs found since the 13.0.3
release.

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

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

::

   a78518030b0b7d77a6c426ac3ff40f4b27fb0e2cdb0dfbe685024a46cae59bad  mesa-13.0.4.tar.gz
   a95d7ce8f7bd5f88585e4be3144a341236d8c0fc91f6feaec59bb8ba3120e726  mesa-13.0.4.tar.xz

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

None

Bug fixes
---------

-  `Bug 92634 <https://bugs.freedesktop.org/show_bug.cgi?id=92634>`__ -
   gallium's vl_mpeg12_decoder does not work with st/va
-  `Bug 94512 <https://bugs.freedesktop.org/show_bug.cgi?id=94512>`__ -
   X segfaults with glx-tls enabled in a x32 environment
-  `Bug 94900 <https://bugs.freedesktop.org/show_bug.cgi?id=94900>`__ -
   HD6950 GPU lockup loop with various steam games (octodad[always],
   saints row 4[always], dead island[always], grid autosport[sometimes])
-  `Bug 98263 <https://bugs.freedesktop.org/show_bug.cgi?id=98263>`__ -
   [radv] The Talos Principle fails to launch with "Fatal error: Cannot
   set display mode."
-  `Bug 98914 <https://bugs.freedesktop.org/show_bug.cgi?id=98914>`__ -
   mesa-vdpau-drivers: breaks vdpau for mpeg2video
-  `Bug 98975 <https://bugs.freedesktop.org/show_bug.cgi?id=98975>`__ -
   Wasteland 2 Directors Cut: Hangs. GPU fault
-  `Bug 99030 <https://bugs.freedesktop.org/show_bug.cgi?id=99030>`__ -
   [HSW, regression] transform feedback fails on Linux 4.8
-  `Bug 99085 <https://bugs.freedesktop.org/show_bug.cgi?id=99085>`__ -
   [EGL] dEQP-EGL.functional.sharing.gles2.multithread intermittent
-  `Bug 99097 <https://bugs.freedesktop.org/show_bug.cgi?id=99097>`__ -
   [vulkancts] dEQP-VK.image.store regression
-  `Bug 99100 <https://bugs.freedesktop.org/show_bug.cgi?id=99100>`__ -
   [SKL,BDW,BSW,KBL]
   dEQP-VK.glsl.return.return_in_dynamic_loop_dynamic_vertex regression
-  `Bug 99144 <https://bugs.freedesktop.org/show_bug.cgi?id=99144>`__ -
   Incorrect rendering using glDrawArraysInstancedBaseInstance and first
   != 0 on Skylake
-  `Bug 99154 <https://bugs.freedesktop.org/show_bug.cgi?id=99154>`__ -
   Link time error when using multiple builtin functions
-  `Bug 99158 <https://bugs.freedesktop.org/show_bug.cgi?id=99158>`__ -
   vdpau segfaults and gpu locks with kodi on R9285
-  `Bug 99185 <https://bugs.freedesktop.org/show_bug.cgi?id=99185>`__ -
   dEQP-EGL.functional.image.modify.tex_rgb5_a1_tex_subimage_rgba8
-  `Bug 99188 <https://bugs.freedesktop.org/show_bug.cgi?id=99188>`__ -
   dEQP-EGL.functional.create_context_ext.robust_gl_30.rgb565_no_depth_no_stencil
-  `Bug 99210 <https://bugs.freedesktop.org/show_bug.cgi?id=99210>`__ -
   ES3-CTS.functional.texture.mipmap.cube.generate.rgba5551\_\*
-  `Bug 99354 <https://bugs.freedesktop.org/show_bug.cgi?id=99354>`__ -
   [G71] "Assertion \`bkref' failed" reproducible with glmark2
-  `Bug 99450 <https://bugs.freedesktop.org/show_bug.cgi?id=99450>`__ -
   [amdgpu] Payday 2 visual glitches on some models
-  `Bug 99451 <https://bugs.freedesktop.org/show_bug.cgi?id=99451>`__ -
   polygon offset use after free

Changes
-------

Andres Rodriguez (2):

-  vulkan/wsi: clarify the severity of lack of DRI3 v2
-  radv: fix include order for installed headers v2

Arda Coskunses (2):

-  vulkan/wsi/x11: don't crash on null visual
-  vulkan/wsi/x11: don't crash on null wsi x11 connection

Bas Nieuwenhuizen (1):

-  radv: Support loader interface version 3.

Chad Versace (10):

-  egl: Check config's surface types in eglCreate*Surface()
-  dri: Add \__DRI_IMAGE_FORMAT_ARGB1555
-  mesa/texformat: Handle GL_RGBA + GL_UNSIGNED_SHORT_5_5_5_1
-  egl: Emit correct error when robust context creation fails
-  anv: Handle vkGetPhysicalDeviceQueueFamilyProperties with count == 0
-  mesa/shaderobj: Fix races on refcounts
-  meta: Disable dithering during glGenerateMipmap
-  vulkan: Add new cast macros for VkIcd types
-  vulkan: Update vk_icd.h to interface version 3
-  anv: Support loader interface version 3 (patch v2)

Christian König (1):

-  vl/zscan: fix "Fix trivial sign compare warnings"

Chuck Atkins (1):

-  glx: Add missing glproto dependency for gallium-xlib glx

Damien Grassart (1):

-  anv: return count of queue families written

Dave Airlie (1):

-  radv: flush smem for uniform buffer bit.

Emil Velikov (10):

-  docs: add sha256 checksums for 13.0.3
-  cherry-ignore: add couple of intel_miptree_copy related patches
-  cherry-ignore: add radv: Call nir_lower_constant_initializers."
-  get-typod-pick-list.sh: add new script
-  cherry-ignore: add "_mesa_ClampColor extension/version fix"
-  cherry-ignore: add wayland race condition fix
-  egl/wayland: use the destroy_window_callback for swrast
-  automake: use shared llvm libs for make distcheck
-  get-pick-list.sh: Require explicit "13.0" for nominating stable
   patches
-  Update version to 13.0.4

Francisco Jerez (1):

-  anv: Fix uniform and storage buffer offset alignment limits.

Fredrik Höglund (2):

-  radv: fix dual source blending
-  dri3: Fix MakeCurrent without a default framebuffer

Grazvydas Ignotas (1):

-  mapi: update the asm code to support x32

Heiko Przybyl (1):

-  r600/sb: Fix loop optimization related hangs on eg

Ilia Mirkin (1):

-  nouveau: take extra push space into account for pushbuf_space calls

Jason Ekstrand (4):

-  i965/generator/tex: Handle an immediate sampler with an indirect
   texture
-  anv/formats: Use the real format for B4G4R4A4_UNORM_PACK16 on gen8
-  nir/search: Only allow matching SSA values
-  isl: Mark A4B4G4R4_UNORM as supported on gen8

Jonas Ådahl (1):

-  egl/wayland: Cleanup private display connection when init fails

Kenneth Graunke (7):

-  i965: Don't bail on vertex element processing if we need draw params.
-  i965: Fix last slot calculations
-  i965: Fix texturing in the vec4 TCS and GS backends.
-  spirv: Move cursor before calling vtn_ssa_value() in phi 2nd pass.
-  i965: Make BLORP disable the NP Z PMA stall fix.
-  glsl: Use ir_var_temporary when generating inline functions.
-  i965: Properly flush in hsw_pause_transform_feedback().

Marek Olšák (4):

-  vdpau: call texture_get_handle while the mutex is being held
-  va: call texture_get_handle while the mutex is being held
-  radeonsi: for the tess barrier, only use emit_waitcnt on SI and LLVM
   3.9+
-  radeonsi: don't forget to add HTILE to the buffer list for texturing

Michel Dänzer (1):

-  cso: Don't restore nr_samplers in cso_restore_fragment_samplers

Nanley Chery (3):

-  anv/cmd_buffer: Fix arrayed depth/stencil attachments
-  anv/cmd_buffer: Fix programmed HiZ qpitch
-  anv/image: Disable HiZ for depth buffer arrays

Nayan Deshmukh (1):

-  st/va: delay calling begin_frame until we have all parameters

Rob Clark (1):

-  freedreno: some fence cleanup

Samuel Pitoiset (1):

-  gallium/hud: add missing break in hud_cpufreq_graph_install()

Timothy Arceri (3):

-  nir: Turn imov/fmov of undef into undef
-  glsl: fix opt_minmax redundancy checks against baserange
-  util: fix list_is_singular()

Zachary Michaels (1):

-  radeonsi: Always leave poly_offset in a valid state
