Mesa 18.3.2 Release Notes / January 17, 2019
============================================

Mesa 18.3.2 is a bug fix release which fixes bugs found since the 18.3.1
release.

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

::

   1cde4fafd40cd1ad4ee3a13b364b7a0175a08b7afdd127fb46f918c1e1dfd4b0  mesa-18.3.2.tar.gz
   f7ce7181c07b6d8e0132da879af1729523a6c8aa87f79a9d59dfd064024cfb35  mesa-18.3.2.tar.xz

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

None

Bug fixes
---------

-  `Bug 106595 <https://bugs.freedesktop.org/show_bug.cgi?id=106595>`__
   - [RADV] Rendering distortions only when MSAA is enabled
-  `Bug 107728 <https://bugs.freedesktop.org/show_bug.cgi?id=107728>`__
   - Wrong background in Sascha Willem's Multisampling Demo
-  `Bug 108114 <https://bugs.freedesktop.org/show_bug.cgi?id=108114>`__
   - [vulkancts] new VK_KHR_16bit_storage tests fail.
-  `Bug 108116 <https://bugs.freedesktop.org/show_bug.cgi?id=108116>`__
   - [vulkancts] stencil partial clear tests fail.
-  `Bug 108624 <https://bugs.freedesktop.org/show_bug.cgi?id=108624>`__
   - [regression][bisected] "nir: Copy propagation between blocks"
   regression
-  `Bug 108910 <https://bugs.freedesktop.org/show_bug.cgi?id=108910>`__
   - Vkd3d test failure test_multisample_array_texture()
-  `Bug 108911 <https://bugs.freedesktop.org/show_bug.cgi?id=108911>`__
   - Vkd3d test failure test_clear_render_target_view()
-  `Bug 108943 <https://bugs.freedesktop.org/show_bug.cgi?id=108943>`__
   - Build fails on ppc64le with meson
-  `Bug 109072 <https://bugs.freedesktop.org/show_bug.cgi?id=109072>`__
   - GPU hang in blender 2.80
-  `Bug 109081 <https://bugs.freedesktop.org/show_bug.cgi?id=109081>`__
   - [bisected] [HSW] Regression in clipping.user_defined.clip\_\*
   vulkancts tests
-  `Bug 109151 <https://bugs.freedesktop.org/show_bug.cgi?id=109151>`__
   - [KBL-G][vulkan]
   dEQP-VK.texture.explicit_lod.2d.sizes.31x55_nearest_linear_mipmap_nearest_repeat
   failed verification.
-  `Bug 109202 <https://bugs.freedesktop.org/show_bug.cgi?id=109202>`__
   - nv50_ir.cpp:749:19: error: cannot use typeid with -fno-rtti
-  `Bug 109204 <https://bugs.freedesktop.org/show_bug.cgi?id=109204>`__
   - [regression, bisected] retroarch's crt-royale shader crash radv

Changes
-------

Alex Deucher (3):

-  pci_ids: add new vega10 pci ids
-  pci_ids: add new vega20 pci id
-  pci_ids: add new VegaM pci id

Alexander von Gluck IV (1):

-  egl/haiku: Fix reference to disp vs dpy

Andres Gomez (2):

-  glsl: correct typo in GLSL compilation error message
-  glsl/linker: specify proper direction in location aliasing error

Axel Davy (3):

-  st/nine: Fix volumetexture dtor on ctor failure
-  st/nine: Bind src not dst in nine_context_box_upload
-  st/nine: Add src reference to nine_context_range_upload

Bas Nieuwenhuizen (5):

-  radv: Do a cache flush if needed before reading predicates.
-  radv: Implement buffer stores with less than 4 components.
-  anv/android: Do not reject storage images.
-  radv: Fix rasterization precision bits.
-  spirv: Fix matrix parameters in function calls.

Caio Marcelo de Oliveira Filho (3):

-  nir: properly clear the entry sources in copy_prop_vars
-  nir: properly find the entry to keep in copy_prop_vars
-  nir: remove dead code from copy_prop_vars

Dave Airlie (2):

-  radv/xfb: fix counter buffer bounds checks.
-  virgl/vtest: fix front buffer flush with protocol version 0.

Dylan Baker (6):

-  meson: Fix ppc64 little endian detection
-  meson: Add support for gnu hurd
-  meson: Add toggle for glx-direct
-  meson: Override C++ standard to gnu++11 when building with altivec on
   ppc64
-  meson: Error out if building nouveau and using LLVM without rtti
-  autotools: Remove tegra vdpau driver

Emil Velikov (12):

-  docs: add sha256 checksums for 18.3.1
-  bin/get-pick-list.sh: rework handing of sha nominations
-  bin/get-pick-list.sh: warn when commit lists invalid sha
-  cherry-ignore: meson: libfreedreno depends upon libdrm (for fence
   support)
-  glx: mandate xf86vidmode only for "drm" dri platforms
-  meson: don't require glx/egl/gbm with gallium drivers
-  pipe-loader: meson: reference correct library
-  TODO: glx: meson: build dri based glx tests, only with -Dglx=dri
-  glx: meson: drop includes from a link-only library
-  glx: meson: wire up the dispatch-index-check test
-  glx/test: meson: assorted include fixes
-  Update version to 18.3.2

Eric Anholt (6):

-  v3d: Fix a leak of the transfer helper on screen destroy.
-  vc4: Fix a leak of the transfer helper on screen destroy.
-  v3d: Fix a leak of the disassembled instruction string during debug
   dumps.
-  v3d: Make sure that a thrsw doesn't split a multop from its umul24.
-  v3d: Add missing flagging of SYNCB as a TSY op.
-  gallium/ttn: Fix setup of outputs_written.

Erik Faye-Lund (2):

-  virgl: wrap vertex element state in a struct
-  virgl: work around bad assumptions in virglrenderer

Francisco Jerez (5):

-  intel/fs: Handle source modifiers in lower_integer_multiplication().
-  intel/fs: Implement quad swizzles on ICL+.
-  intel/fs: Fix bug in lower_simd_width while splitting an instruction
   which was already split.
-  intel/eu/gen7: Fix brw_MOV() with DF destination and strided source.
-  intel/fs: Respect CHV/BXT regioning restrictions in copy propagation
   pass.

Ian Romanick (2):

-  i965/vec4/dce: Don't narrow the write mask if the flags are used
-  Revert "nir/lower_indirect: Bail early if modes == 0"

Jan Vesely (1):

-  clover: Fix build after clang r348827

Jason Ekstrand (6):

-  nir/constant_folding: Fix source bit size logic
-  intel/blorp: Be more conservative about copying clear colors
-  spirv: Handle any bit size in vector_insert/extract
-  anv/apply_pipeline_layout: Set the cursor in
   lower_res_reindex_intrinsic
-  spirv: Sign-extend array indices
-  intel/peephole_ffma: Fix swizzle propagation

Karol Herbst (1):

-  nv50/ir: fix use-after-free in ConstantFolding::visit

Kirill Burtsev (1):

-  loader: free error state, when checking the drawable type

Lionel Landwerlin (5):

-  anv: don't do partial resolve on layer > 0
-  i965: include draw_params/derived_draw_params for VF cache workaround
-  i965: add CS stall on VF invalidation workaround
-  anv: explictly specify format for blorp ccs/mcs op
-  anv: flush fast clear colors into compressed surfaces

Marek Olšák (1):

-  st/mesa: don't leak pipe_surface if pipe_context is not current

Mario Kleiner (1):

-  radeonsi: Fix use of 1- or 2- component GL_DOUBLE vbo's.

Nicolai Hähnle (1):

-  meson: link LLVM 'native' component when LLVM is available

Rhys Perry (3):

-  radv: don't set surf_index for stencil-only images
-  ac/nir,radv,radeonsi/nir: use correct indices for interpolation
   intrinsics
-  ac: split 16-bit ssbo loads that may not be dword aligned

Rob Clark (2):

-  freedreno/drm: fix memory leak
-  mesa/st/nir: fix missing nir_compact_varyings

Samuel Pitoiset (1):

-  radv: switch on EOP when primitive restart is enabled with triangle
   strips

Timothy Arceri (2):

-  tgsi/scan: fix loop exit point in tgsi_scan_tess_ctrl()
-  tgsi/scan: correctly walk instructions in tgsi_scan_tess_ctrl()

Vinson Lee (2):

-  meson: Fix typo.
-  meson: Fix libsensors detection.
