Mesa 20.3.4 Release Notes / 2021-01-29
======================================

Mesa 20.3.4 is a bug fix release which fixes bugs found since the 20.3.3 release.

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

Mesa 20.3.4 implements the Vulkan 1.2 API, but the version reported by
the apiVersion property of the VkPhysicalDeviceProperties struct
depends on the particular driver being used.

SHA256 checksum
---------------

::

    TBD.


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

- None


Bug fixes
---------

- \[TGL\] Elder Scrolls Online misrenders
- \[ANV\] System hang with GRVK demos
- \[bdw][icl][iris\] fails new test \`clearbuffer-depth-cs-probe\`
- ANV: Not handling separate stencil layouts properly
- \[Regression][Intel][OpenGL][Bisected\] Copying whole 2D array texture failed on latest driver
- Mesa 20.3.x crashes pidgin on AMD RX480
- timespec_get used unconditionally / build fails when targeting macOS 10.14 or earlier
- libunwind not located / used on macOS
- Some games using FNA framework show blank screen
- Intel Vulkan regression of angle_end2end_tests
- Defer lavapipe warning to queue / command / swapchain buffer creation


Changes
-------

Andrii Simiklit (1):

- st/mesa: fix pbo upload/download for arrays of textures with only 1 layer

Caio Marcelo de Oliveira Filho (3):

- spirv: Don't remove variables used by resource indexing intrinsics
- nir: Add a data pointer to the callback in nir_remove_dead_variables
- compiler: Use util/bitset.h for system_values_read

Christian Gmeiner (1):

- etnaviv: handle NULL views in set_sampler_views

Daniel Schürmann (2):

- aco/optimizer: don't propagate subdword temps of different size
- aco/optimizer: don't copy-prop logical phis

Dave Airlie (2):

- device-select-layer: update for vulkan 1.2
- lavapipe: fix missing piece of VK_KHR_get_physical_device_properties2

David McFarland (1):

- radv: fix divide by zero with no tesselation params

Dylan Baker (8):

- docs: Add sha256sum for 20.3.3
- .pick_status.json: Update to 184bbef33d1fff3520958c130f2b8e4fce17379c
- .pick_status.json: Update to c27347b2e1883a30e023347a36bdcf86cdec4a7c
- .pick_status.json: Update to 3e13c1f8dfef4a4c0fd5e79bbc364f9e5f998856
- .pick_status.json: Update to af9977a3d5f3378c297965e21389e36491f47e1b
- .pick_status.json: Update to 3ef89b245e3e1ac4e67fea9c1b13ebeda75769d0
- .pick_status.json: Update to 9052819ebbff07d82c3eb9adf414144df4868644
- .pick_status.json: Update to f01ea0aef8a50d2732eb0c64153903e52ed2a757

Eric Anholt (4):

- util/format: Fix pack/unpack of A1R5G5B5_UINT.
- swr: Don't report support for shader images.
- panfrost: Stub out set_shader_images().
- gallium: Fix leak of shader images on context destruction.

Erik Faye-Lund (5):

- zink: handle NULL views in zink_set_sampler_views
- zink: respect feature-cap for independent blending
- zink: respect feature-cap for sample-shading
- zink: make all xfb caps depend on extension
- mesa/main: remove leftover bumpmap code

Francisco Jerez (1):

- intel/gen12: Fix memory corruption issues in fused Gen12 parts.

Icecream95 (2):

- pan/decode: Free mapped memory objects on BO unreference
- panfrost: Use normal malloc/free instead of ralloc for surfaces

Ilia Mirkin (1):

- glsl: only expose int64 atomics when extension is enabled

Jason Ekstrand (2):

- intel/compiler: Return 1 for immediates in regs_read
- intel/fs: QUAD_SWIZZLE requires packed data

Jeremy Huddleston (2):

- util: Fix pointer to integer conversion error when using libunwind
- Fall back on clock_gettime when timespec_get() is unavailable

Juan A. Suarez Romero (1):

- v3d: fix dest offset in TFU setup

Keith Packard (1):

- glx: Provide glvnd wrapper for glXSwapIntervalEXT

Kenneth Graunke (1):

- iris: Consider resolves after changing a resource's aux state

Lionel Landwerlin (4):

- anv: add transfer usage for color/depth/stencil attachments
- intel/mi_builder: fix self modifying batches
- anv: Fix stencil layout in render passes
- anv: fix invalid programming of BLEND_STATE

Marek Olšák (1):

- mesa: fix alpha channel of ETC2_SRGB8 decompression for !bgra

Pierre-Eric Pelloux-Prayer (1):

- radeonsi: invalidate compute sgprs in si_rebind_buffer

Rhys Perry (2):

- aco: fix convert_to_SDWA() check in add_subdword_definition()
- aco: don't consider a phi trivial if same's register doesn't match the def

Sagar Ghuge (2):

- anv: Invalidate the correct AUX-TT entry
- anv: Skip CCS ambiguate which preceed fast-clears

Samuel Pitoiset (2):

- ci: exclude one CTS test that timeout most of the time for RADV CI
- radv: fix a sync issue with geometry shader primitives query on GFX10+

Thong Thai (1):

- frontends/va: Return an error if non-interlaced buffer is not supported

Víctor Manuel Jáquez Leal (1):

- frontends/va/context: don't set max_references with num_render_targets

Witold Baryluk (1):

- lavapipe: Defer lavapipe warning to CreateDevice

Yevhenii Kolesnikov (1):

- iris: only set point sprite overrides if actually using points

jzielins (1):

- swr: fix crashes caused by incorrectly reporting SSBO support
