Mesa 17.0.3 Release Notes / April 1, 2017
=========================================

Mesa 17.0.3 is a bug fix release which fixes bugs found since the 17.0.2
release.

Mesa 17.0.3 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
because compatibility contexts are not supported.

SHA256 checksums
----------------

::

   8253edf1bdd7b14ab63d5982349143a5c9ac3767f39a63257cc9d7e7d92f60f1  mesa-17.0.3.tar.gz
   ca646f5075a002d60ef9123c8a4331cede155c01712ef945a65c59a5e69fe7ed  mesa-17.0.3.tar.xz

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

None

Bug fixes
---------

-  `Bug 96743 <https://bugs.freedesktop.org/show_bug.cgi?id=96743>`__ -
   [BYT, HSW, SKL, BXT, KBL] GPU hangs with GfxBench 4.0 CarChase
-  `Bug 99246 <https://bugs.freedesktop.org/show_bug.cgi?id=99246>`__ -
   [d3dadapter+radeonsi & bisect] EVE-Online : hang on wormhole sight
-  `Bug 100061 <https://bugs.freedesktop.org/show_bug.cgi?id=100061>`__
   - LODQ instruction generated with invalid dst mask
-  `Bug 100182 <https://bugs.freedesktop.org/show_bug.cgi?id=100182>`__
   - Flickering in The Talos Principle on Sky Lake GT4.
-  `Bug 100201 <https://bugs.freedesktop.org/show_bug.cgi?id=100201>`__
   - Windows scons build with MSVC toolchain and LLVM 4.0 fails

Changes
-------

Alex Deucher (1):

-  radeonsi: add new polaris12 pci id

Andres Gomez (5):

-  glsl: on UBO/SSBOs link error reset the number of active blocks to 0
-  cherry-ignore: add the Invalidate L2 for TRANSFER_WRITE barriers fix
-  cherry-ignore: add the Flush after unmap in gbm/dri fix
-  cherry-ignore: corrected typo in the Flush after unmap in gbm/dri fix
-  Update version to 17.0.3

Axel Davy (2):

-  st/nine: Resolve deadlock in surface/volume dtors when using csmt
-  st/nine: Use atomics for available_texture_mem

Bas Nieuwenhuizen (1):

-  radv: flush DB cache before and after HTILE decompress.

Dave Airlie (1):

-  radv: fix primitive reset index emission

Emil Velikov (1):

-  docs: add sha256 checksums for 17.0.2

Ilia Mirkin (1):

-  st/mesa: set result writemask based on ir type

Jan Vesely (1):

-  clover: use pipe_resource references

Jason Ekstrand (9):

-  anv/query: Invalidate the correct range
-  anv/GetQueryPoolResults: Actually implement the spec
-  anv/image: Return early when unbinding an image
-  anv/query: Fix the location of timestamp availability
-  anv: Make anv_get_layerCount a macro
-  anv/blorp: Use anv_get_layerCount everywhere
-  anv/cmd_buffer: Apply flush operations prior to executing secondaries
-  anv/cmd_buffer: Fix bad indentation
-  anv: Flush caches prior to PIPELINE_SELECT on all gens

José Fonseca (1):

-  c11/threads: Include thr/xtimec.h for xtime definition when building
   with MSVC.

Juan A. Suarez Romero (1):

-  tests/cache_test: allow crossing mount points

Karol Herbst (1):

-  nvc0/ir: treat FMA like MAD for operand propagation

Kenneth Graunke (1):

-  i965: Fall back to GL 4.2/4.3 on Haswell if the kernel isn't new
   enough.

Marek Olšák (1):

-  radeonsi: don't hang on shader compile failure

Matt Turner (1):

-  i965/fs: Don't emit SEL instructions for type-converting MOVs.

Nanley Chery (1):

-  intel: Correct the BDW surface state size

Nicolai Hähnle (1):

-  mesa/main: fix MultiDrawElements[BaseVertex] validation of primcount

Rob Clark (1):

-  freedreno: fix memory leak

Tim Rowley (1):

-  swr: [rasterizer jitter] fix llvm >= 5.0 build break

Timothy Arceri (2):

-  glsl: fix lower jumps for returns when loop is inside an if
-  mesa: update lower_jumps tests after bug fix

Topi Pohjolainen (1):

-  i965/gen8+: Do full stall when switching pipeline

Xu Randy (2):

-  anv/blorp: Fix a crash in CmdClearColorImage
-  anv/genX: Solve the vkCreateGraphicsPipelines crash
