Mesa 19.0.4 Release Notes / May 9, 2019
=======================================

Mesa 19.0.4 is a bug fix release which fixes bugs found since the 19.0.3
release.

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

::

   de361c76bf7aae09219f571b9ae77a34864a1cd9f6ba24c845b18b3cd5e4b9a2  mesa-19.0.4.tar.gz
   39f9f32f448d77388ef817c6098d50eb0c1595815ce7e895dec09dd68774ce47  mesa-19.0.4.tar.xz

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

N/A

Bug fixes
---------

-  `Bug 99781 <https://bugs.freedesktop.org/show_bug.cgi?id=99781>`__ -
   Some Unity games fail assertion on startup in
   glXCreateContextAttribsARB
-  `Bug 100239 <https://bugs.freedesktop.org/show_bug.cgi?id=100239>`__
   - Incorrect rendering in CS:GO
-  `Bug 108540 <https://bugs.freedesktop.org/show_bug.cgi?id=108540>`__
   - vkAcquireNextImageKHR blocks when timeout=0 in Wayland
-  `Bug 110143 <https://bugs.freedesktop.org/show_bug.cgi?id=110143>`__
   - Doom 3: BFG Edition - Steam and GOG.com - white flickering screen
-  `Bug 110291 <https://bugs.freedesktop.org/show_bug.cgi?id=110291>`__
   - Vega 64 GPU hang running Space Engineers
-  `Bug 110355 <https://bugs.freedesktop.org/show_bug.cgi?id=110355>`__
   - radeonsi: GTK elements become invisible in some applications (GIMP,
   LibreOffice)
-  `Bug 110573 <https://bugs.freedesktop.org/show_bug.cgi?id=110573>`__
   - Mesa vulkan-radeon 19.0.3 system freeze and visual artifacts (RADV)
-  `Bug 110590 <https://bugs.freedesktop.org/show_bug.cgi?id=110590>`__
   - [Regression][Bisected] GTAⅣ under wine fails with GLXBadFBConfig
-  `Bug 110632 <https://bugs.freedesktop.org/show_bug.cgi?id=110632>`__
   - "glx: Fix synthetic error generation in \__glXSendError" broke wine
   games on 32-bit

Changes
-------

Alejandro Piñeiro (1):

-  docs: document MESA_GLSL=errors keyword

Andrii Simiklit (1):

-  egl: return correct error code for a case req ver < 3 with
   forward-compatible

Axel Davy (1):

-  st/nine: Fix D3DWindowBuffer_release for old wine nine support

Bas Nieuwenhuizen (1):

-  radv: Disable VK_EXT_descriptor_indexing.

Brian Paul (1):

-  svga: add SVGA_NO_LOGGING env var (v2)

Caio Marcelo de Oliveira Filho (1):

-  spirv: Handle SpvOpDecorateId

Charmaine Lee (1):

-  svga: move host logging to winsys

Chuck Atkins (1):

-  meson: Fix missing glproto dependency for gallium-glx

Daniel Stone (1):

-  vulkan/wsi/wayland: Respect non-blocking AcquireNextImage

Dave Airlie (2):

-  r600: reset tex array override even when no view bound
-  util/bitset: fix bitset range mask calculations.

Dylan Baker (7):

-  docs: Add SHA256 sums for mesa 19.0.3
-  cherry-ignore: Add a patch that was manually backported
-  cherry-ignore: Add more backported patches
-  cherry-ignore: Add another patch
-  cherry-ignore: Add more patches
-  meson: Force the use of config-tool for llvm
-  VERSION: bump for 19.0.4 release

Emil Velikov (3):

-  vulkan/wsi: check if the display_fd given is master
-  vulkan/wsi: don't use DUMB_CLOSE for normal GEM handles
-  configure.ac: check for libdrm when using VL with X11

Erik Faye-Lund (2):

-  softpipe: setup pixel_offset for all primitive types
-  draw: flush when setting stream-out targets

Francisco Jerez (2):

-  intel/fs: Lower integer multiply correctly when destination stride
   equals 4.
-  intel/fs: Cap dst-aligned region stride to maximum representable
   hstride value.

Hal Gentz (1):

-  glx: Fix synthetic error generation in \__glXSendError

Ian Romanick (2):

-  glsl: Silence may unused parameter warnings in glsl/ir.h
-  mesa: Add missing display list support for GL_FOG_COORDINATE_SOURCE

Jason Ekstrand (1):

-  anv/descriptor_set: Destroy sets before pool finalization

Jon Turney (1):

-  meson: Force '.so' extension for DRI drivers

Juan A. Suarez Romero (2):

-  spirv: add missing SPV_EXT_descriptor_indexing capabilities
-  radv: enable descriptor indexing capabilities

Kenneth Graunke (6):

-  glsl: Allow gl_nir_lower_samplers*() without a gl_shader_program
-  glsl: Don't look at sampler uniform storage for internal vars
-  i965: Ignore uniform storage for samplers or images, use binding info
-  i965: Fix BRW_MEMZONE_LOW_4G heap size.
-  i965: Force VMA alignment to be a multiple of the page size.
-  i965: leave the top 4Gb of the high heap VMA unused

Lionel Landwerlin (4):

-  anv: store heap address bounds when initializing physical device
-  anv: leave the top 4Gb of the high heap VMA unused
-  anv: fix argument name for vkCmdEndQuery
-  anv: rework queries writes to ensure ordering memory writes

Marek Olšák (2):

-  radeonsi/gfx9: set that window_rectangles always roll the context
-  radeonsi/gfx9: rework the gfx9 scissor bug workaround (v2)

Nicolai Hähnle (1):

-  radeonsi: add si_debug_options for convenient adding/removing of
   options

Rhys Perry (1):

-  radv: fix set_output_usage_mask() with composite and 64-bit types

Ross Burton (1):

-  Revert "meson: drop GLESv1 .so version back to 1.0.0"

Samuel Pitoiset (8):

-  radv: add missing VEGA20 chip in radv_get_device_name()
-  radv: do not need to force emit the TCS regs on Vega20
-  radv: fix color conversions for normalized uint/sint formats
-  radv: implement a workaround for VK_EXT_conditional_rendering
-  radv: set WD_SWITCH_ON_EOP=1 when drawing primitives from a stream
   output buffer
-  radv: only need to force emit the TCS regs on Vega10 and Raven1
-  radv: apply the indexing workaround for atomic buffer operations on
   GFX9
-  radv: fix setting the number of rectangles when it's dyanmic

Tapani Pälli (1):

-  anv: expose VK_EXT_queue_family_foreign on Android

Timothy Arceri (4):

-  nir: fix nir_remove_unused_varyings()
-  util/drirc: add workarounds for bugs in Doom 3: BFG
-  radeonsi: add config entry for Counter-Strike Global Offensive
-  Revert "glx: Fix synthetic error generation in \__glXSendError"
