Mesa 20.2.1 Release Notes / 2020-10-14
======================================

Mesa 20.2.1 is a bug fix release which fixes bugs found since the 20.2.0 release.

Mesa 20.2.1 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.2.1 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
---------------

::

    d1a46d9a3f291bc0e0374600bdcb59844fa3eafaa50398e472a36fc65fd0244a  mesa-20.2.1.tar.xz


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

- None


Bug fixes
---------

- RADV ACO - ground line corruption in Path of Exile with Vulkan renderer
- Graphics corruption in Super Mega Baseball 2 with RADV on Navi
- Running Amber test leads to VK_DEVICE_LOST
- omx/tizonia build broken with latest mesa git
- [hsw][bisected][regression] gpu hangs on dEQP-VK.subgroups.(shuffle|quad) tests
- TGL B0 Stepping gpu hangs on many dEQP-VK.subgroups.quad nonconst tests
- [spirv-fuzz] Shader generates a wrong image


Changes
-------

Alyssa Rosenzweig (2):

- pan/bi: Handle vector moves
- pan/bi: Fix simple txl test

Anuj Phogat (1):

- intel/gen9: Enable MSC RAW Hazard Avoidance

Bas Nieuwenhuizen (3):

- radv,radeonsi: Disable compression on interop depth images
- radv: Use atomics to read query results.
- radv: Fix mipmap extent adjustment on GFX9+.

Christian Gmeiner (1):

- etnaviv: simplify linear stride implementation

Connor Abbott (1):

- nir/lower_io_arrays: Fix xfb_offset bug

Danylo Piliaiev (1):

- intel/fs: Disable sample mask predication for scratch stores

Dylan Baker (12):

- docs: add release notes for 20.2.0
- docs: Add sh256 sums for 20.2.0
- .pick_status.json: Update to 291cfb1e41513008a5be08be95399373a7de206d
- meson/anv: Use variable that checks for --build-id
- .pick_status.json: Update to 7dbb1f7462433940951ce6c3fa22f6368aeafd50
- .pick_status.json: Update to e3b814d5e9e414839d5e4de3a76bb2899cbb7249
- .pick_status.json: Update to b32a8f83dce3b8789f2e8790ab41b8a63c9bedc6
- .pick_status.json: Mark b23013db0aa6845d661c2da5d4003615b064e01f as denominated
- .pick_status.json: Mark 4790811d78011d45830d9543ad6e7401391cfb15 as denominated
- glsl/xxd.py: fix imports
- .pick_status.json: Update to e1efc534e6c452e3e606d663864896a654acc185
- retab ac_surface.h so that backports apply

Eric Engestrom (1):

- radv: add missing u_atomic.h include

Erik Faye-Lund (1):

- st/mesa: use roundf instead of floorf for lod-bias rounding

Jason Ekstrand (6):

- nir/liveness: Consider if uses in nir_ssa_defs_interfere
- nir/cf: Better handle intra-block splits
- intel/fs: NoMask initialize the address register for shuffles
- nir/opt_load_store_vectorize: Use bit sizes when checking mask compatibility
- intel/fs: Don't use NoDDClk/NoDDClr for split SHUFFLEs
- intel/nir: Don't try to emit vector load_scratch instructions

Jose Maria Casanova Crespo (3):

- vc4: Avoid negative scissor caused by no intersection
- nir/algebraic: optimize iand/ior of (n)eq zero when umax/umin not available
- vc4: Enable lower_umax and lower_umin

Lionel Landwerlin (1):

- intel/perf: fix crash when no perf queries are supported

Lucas Stach (1):

- etnaviv: stop leaking the dummy texure descriptor BO

Marek Olšák (4):

- radeonsi: fix indirect dispatches with variable block sizes
- radeonsi: Fix dead lock with aux_context_lock in si_screen_clear_buffer.
- gallium/u_threaded_context: fix use-after-free in transfer_unmap
- ac/surface: fix valgrind warnings in DCC retile tile lookups

Nanley Chery (3):

- blorp: Ensure aligned HIZ_CCS_WT partial clears
- iris: Fix a fast-clear skipping optimization
- anv: Enable multi-layer aux-map init for HIZ+CCS

Philipp Zabel (1):

- meson: fix power8 option

Pierre-Eric Pelloux-Prayer (3):

- gallium/vl: do not call transfer_unmap if transfer is NULL
- gallium/vl: add chroma_format arg to vl_video_buffer functions
- omx/tizonia: fix build

Rhys Perry (4):

- spirv: add and use a generator id enum
- android: fix SPIR-V -> NIR build
- scons: fix SPIR-V -> NIR build
- spirv: replace discard with demote for incorrect HLSL->SPIR-V translations

Samuel Pitoiset (1):

- aco: implement missing nir_op_unpack_half_2x16_split_{x,y}_flush_to_zero

Timothy Arceri (1):

- glsl: don't duplicate state vars as uniforms in the NIR linker

Vinson Lee (2):

- gallium/dri2: Move image->texture assignment after image NULL check.
- freedreno: Move rsc NULL check to before rsc dereferences.
