Mesa 18.3.5 Release Notes / March 18, 2019
==========================================

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

Mesa 18.3.5 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
----------------

::

   5f40a336cb2af9b1d66fa243bb03c2c8a3f9b3f067aab6aaaad4316d1bc0e58b  mesa-18.3.5.tar.gz
   4027aea82cc63240b3fcf60eec9eea882955f098c989b29357b01d1695747953  mesa-18.3.5.tar.xz

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

None

Bug fixes
---------

-  `Bug 104297 <https://bugs.freedesktop.org/show_bug.cgi?id=104297>`__
   - [i965] Downward causes GPU hangs and misrendering on Haswell
-  `Bug 104602 <https://bugs.freedesktop.org/show_bug.cgi?id=104602>`__
   - [apitrace] Graphical artifacts in Civilization VI on RX Vega
-  `Bug 107052 <https://bugs.freedesktop.org/show_bug.cgi?id=107052>`__
   - [Regression][bisected]. Crookz - The Big Heist Demo can't be
   launched despite the "true" flag in "drirc"
-  `Bug 107563 <https://bugs.freedesktop.org/show_bug.cgi?id=107563>`__
   - [RADV] Broken rendering in Unity demos
-  `Bug 108457 <https://bugs.freedesktop.org/show_bug.cgi?id=108457>`__
   - [OpenGL CTS]
   KHR-GL46.tessellation_shader.single.xfb_captures_data_from_correct_stage
   fails
-  `Bug 108999 <https://bugs.freedesktop.org/show_bug.cgi?id=108999>`__
   - Calculating the scissors fields when the y is flipped (0 on top)
   can generate negative numbers that will cause assertion failure later
   on.
-  `Bug 109328 <https://bugs.freedesktop.org/show_bug.cgi?id=109328>`__
   - [BSW BXT GLK] dEQP-VK.subgroups.arithmetic.subgroup regressions
-  `Bug 109443 <https://bugs.freedesktop.org/show_bug.cgi?id=109443>`__
   - Build failure with MSVC when using Scons >= 3.0.2
-  `Bug 109451 <https://bugs.freedesktop.org/show_bug.cgi?id=109451>`__
   - [IVB,SNB] LINE_STRIPs following a TRIANGLE_FAN fail to use
   primitive restart
-  `Bug 109594 <https://bugs.freedesktop.org/show_bug.cgi?id=109594>`__
   - totem assert failure: totem: src/intel/genxml/gen9_pack.h:72:
   \__gen_uint: La declaración \`v <= max' no se cumple.
-  `Bug 109597 <https://bugs.freedesktop.org/show_bug.cgi?id=109597>`__
   - wreckfest issues with transparent objects & skybox
-  `Bug 109601 <https://bugs.freedesktop.org/show_bug.cgi?id=109601>`__
   - [Regression] RuneLite GPU rendering broken on 18.3.x
-  `Bug 109698 <https://bugs.freedesktop.org/show_bug.cgi?id=109698>`__
   - dri.pc contents invalid when built with meson
-  `Bug 109735 <https://bugs.freedesktop.org/show_bug.cgi?id=109735>`__
   - [Regression] broken font with mesa_vulkan_overlay

Changes
-------

Alok Hota (1):

-  swr/rast: bypass size limit for non-sampled textures

Andrii Simiklit (1):

-  i965: re-emit index buffer state on a reset option change.

Axel Davy (2):

-  st/nine: Ignore window size if error
-  st/nine: Ignore multisample quality level if no ms

Bas Nieuwenhuizen (4):

-  radv: Sync ETC2 whitelisted devices.
-  radv: Fix float16 interpolation set up.
-  radv: Allow interpolation on non-float types.
-  radv: Interpolate less aggressively.

Carlos Garnacho (1):

-  wayland/egl: Ensure EGL surface is resized on DRI update_buffers()

Danylo Piliaiev (1):

-  glsl/linker: Fix unmatched TCS outputs being reduced to local
   variable

David Shao (1):

-  meson: ensure that xmlpool_options.h is generated for gallium targets
   that need it

Eleni Maria Stea (1):

-  i965: fixed clamping in set_scissor_bits when the y is flipped

Emil Velikov (7):

-  docs: add sha256 checksums for 18.3.4
-  meson: egl: correctly manage loader/xmlconfig
-  cherry-ignore: add 19.0 only anv/push buffer nominations
-  cherry-ignore: add gitlab-ci fixup commit
-  cherry-ignore: ignore glsl_types memory cleanup patch
-  cherry-ignore: add explicit 19.0 performance optimisations
-  Update version to 18.3.5

Eric Engestrom (1):

-  egl: fix libdrm-less builds

Francisco Jerez (1):

-  intel/fs: Implement extended strides greater than 4 for IR source
   regions.

Ian Romanick (2):

-  intel/fs: nir_op_extract_i8 extracts a byte, not a word
-  intel/fs: Fix extract_u8 of an odd byte from a 64-bit integer

Ilia Mirkin (1):

-  glsl: fix recording of variables for XFB in TCS shaders

Jason Ekstrand (10):

-  intel/fs: Bail in optimize_extract_to_float if we have modifiers
-  compiler/types: Add a contains_64bit helper
-  nir/xfb: Properly align 64-bit values
-  nir/xfb: Work in terms of components rather than slots
-  nir/xfb: Handle compact arrays in gather_xfb_info
-  anv: Count surfaces for non-YCbCr images in
   GetDescriptorSetLayoutSupport
-  spirv: OpImageQueryLod requires a sampler
-  spirv: Pull offset/stride from the pointer for OpArrayLength
-  glsl/list: Add a list variant of insert_after
-  glsl/lower_vector_derefs: Don't use a temporary for TCS outputs

Jose Maria Casanova Crespo (1):

-  glsl: TCS outputs can not be transform feedback candidates on GLES

José Fonseca (1):

-  scons: Workaround failures with MSVC when using SCons 3.0.[2-4].

Juan A. Suarez Romero (3):

-  genxml: add missing field values for 3DSTATE_SF
-  anv: advertise 8 subpixel precision bits
-  anv: destroy descriptor sets when pool gets reset

Kenneth Graunke (1):

-  intel/fs: Fix opt_peephole_csel to not throw away saturates.

Kevin Strasser (1):

-  egl/dri: Avoid out of bounds array access

Lionel Landwerlin (1):

-  intel: fix urb size for CFL GT1

Marek Olšák (5):

-  radeonsi: add driconf option radeonsi_enable_nir
-  radeonsi: always enable NIR for Civilization 6 to fix corruption
-  driconf: add Civ6Sub executable for Civilization 6
-  tgsi: don't set tgsi_info::uses_bindless_images for constbufs and hw
   atomics
-  radeonsi: compile clear and copy buffer compute shaders on demand

Mauro Rossi (2):

-  android: anv: fix generated files depedencies (v2)
-  android: anv: fix libexpat shared dependency

Ray Zhang (1):

-  glx: fix shared memory leak in X11

Rhys Perry (2):

-  radv: bitcast 16-bit outputs to integers
-  radv: ensure export arguments are always float

Samuel Pitoiset (8):

-  radv: write the alpha channel of MRT0 when alpha coverage is enabled
-  radv: fix writing the alpha channel of MRT0 when alpha coverage is
   enabled
-  radv: fix clearing attachments in secondary command buffers
-  radv: fix out-of-bounds access when copying descriptors BO list
-  radv: don't copy buffer descriptors list for samplers
-  radv: properly align the fence and EOP bug VA on GFX9
-  radv: fix pointSizeRange limits
-  radv: always initialize HTILE when the src layout is UNDEFINED

Sergii Romantsov (2):

-  dri: meson: do not prefix user provided dri-drivers-path
-  d3d: meson: do not prefix user provided d3d-drivers-path

Tapani Pälli (3):

-  nir: initialize value in copy_prop_vars_block
-  anv: retain the is_array state in create_plane_tex_instr_implicit
-  anv: destroy descriptor sets when pool gets destroyed

Timothy Arceri (1):

-  glsl: fix shader cache for packed param list

Yevhenii Kolesnikov (1):

-  i965: Fix allow_higher_compat_version workaround limited by OpenGL
   3.0

pal1000 (1):

-  scons: Compatibility with Scons development version string
