Mesa 18.3.6 Release Notes / April 5, 2019
=========================================

Mesa 18.3.6 is a bug fix release which fixes bugs found since the 18.3.5
release.

Mesa 18.3.6 implements the OpenGL 4.5 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.5. OpenGL 4.5 is **only** available if requested at context creation.
Compatibility contexts may report a lower version depending on each
driver.

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

::

   4619d92afadf7072f7956599a2ccd0934fc45b4ddbc2eb865bdcb50ddf963f87  mesa-18.3.6.tar.gz
   aaf17638dcf5a90b93b6389e152fdc9ef147768b09598f24d2c5cf482fcfc705  mesa-18.3.6.tar.xz

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

None

Bug fixes
---------

-  `Bug 100316 <https://bugs.freedesktop.org/show_bug.cgi?id=100316>`__
   - Linking GLSL 1.30 shaders with invariant and deprecated variables
   triggers an 'mismatching invariant qualifiers' error
-  `Bug 108766 <https://bugs.freedesktop.org/show_bug.cgi?id=108766>`__
   - Mesa built with meson has RPATH entries
-  `Bug 109648 <https://bugs.freedesktop.org/show_bug.cgi?id=109648>`__
   - AMD Raven hang during va-api decoding
-  `Bug 109980 <https://bugs.freedesktop.org/show_bug.cgi?id=109980>`__
   - [i915 CI][HSW]
   spec@arb_fragment_shader_interlock@arb_fragment_shader_interlock-image-load-store
   - fail
-  `Bug 110211 <https://bugs.freedesktop.org/show_bug.cgi?id=110211>`__
   - If DESTDIR is set to an empty string, the dri drivers are not
   installed
-  `Bug 110221 <https://bugs.freedesktop.org/show_bug.cgi?id=110221>`__
   - build error with meson
-  `Bug 110259 <https://bugs.freedesktop.org/show_bug.cgi?id=110259>`__
   - radv: Sampling depth-stencil image in GENERAL layout returns
   nothing but zero (regression, bisected)

Changes
-------

Andres Gomez (4):

-  glsl: correctly validate component layout qualifier for dvec{3,4}
-  glsl/linker: don't fail non static used inputs without matching
   outputs
-  glsl/linker: simplify xfb_offset vs xfb_stride overflow check
-  Revert "glsl: relax input->output validation for SSO programs"

Bas Nieuwenhuizen (2):

-  radv: Use correct image view comparison for fast clears.
-  ac/nir: Return frag_coord as integer.

Danylo Piliaiev (1):

-  glsl: Cross validate variable's invariance by explicit invariance
   only

Dave Airlie (1):

-  softpipe: fix texture view crashes

Dylan Baker (1):

-  bin/install_megadrivers.py: Correctly handle DESTDIR=''

Emil Velikov (2):

-  docs: add sha256 checksums for 18.3.5
-  Update version to 18.3.6

Eric Anholt (1):

-  dri3: Return the current swap interval from glXGetSwapIntervalMESA().

Eric Engestrom (1):

-  meson: strip rpath from megadrivers

Jason Ekstrand (2):

-  anv/pass: Flag the need for a RT flush for resolve attachments
-  Revert "anv/radv: release memory allocated by glsl types during
   spirv_to_nir"

Józef Kucia (2):

-  mesa: Fix GL_NUM_DEVICE_UUIDS_EXT
-  radv: Fix driverUUID

Leo Liu (2):

-  radeon/vcn: add H.264 constrained baseline support
-  radeon/vcn/vp9: search the render target from the whole list

Marek Olšák (1):

-  radeonsi: fix assertion failure by using the correct type

Mark Janes (1):

-  mesa: properly report the length of truncated log messages

Plamena Manolova (1):

-  i965: Disable ARB_fragment_shader_interlock for platforms prior to
   GEN9

Samuel Pitoiset (2):

-  radv: fix binding transform feedback buffers
-  radv: do not always initialize HTILE in compressed state

Tapani Pälli (1):

-  anv/radv: release memory allocated by glsl types during spirv_to_nir

Timothy Arceri (1):

-  st/glsl_to_nir: fix incorrect arrary access

Tobias Klausmann (1):

-  vulkan/util: meson build - add wayland client include
