<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <title>Mesa Release Notes</title>
  <link rel="stylesheet" type="text/css" href="../mesa.css">
</head>
<body>

<div class="header">
  <h1>The Mesa 3D Graphics Library</h1>
</div>

<iframe src="../contents.html"></iframe>
<div class="content">

<h1>Mesa 17.3.9 Release Notes / April 18, 2018</h1>

<p>
Mesa 17.3.9 is a bug fix release which fixes bugs found since the 17.3.8 release.
</p>
<p>
Mesa 17.3.9 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 <strong>only</strong> available if requested at context creation
because compatibility contexts are not supported.
</p>


<h2>SHA256 checksums</h2>
<pre>
4d625f65a1ff4cd8cfeb39e38f047507c6dea047502a0d53113c96f54588f340  mesa-17.3.9.tar.gz
c5beb5fc05f0e0c294fefe1a393ee118cb67e27a4dca417d77c297f7d4b6e479  mesa-17.3.9.tar.xz
</pre>


<h2>New features</h2>
<p>None</p>


<h2>Bug fixes</h2>

<ul>

<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=98281">Bug 98281</a> - 'message's in ctx-&gt;Debug.LogMessages[] seem to leak.</li>

<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=101408">Bug 101408</a> - [Gen8+] Xonotic fails to render one of the weapons</li>

<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=102342">Bug 102342</a> - mesa-17.1.7/src/gallium/auxiliary/pipebuffer/pb_cache.c:169]: (style) Suspicious condition</li>

<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105317">Bug 105317</a> - The GPU Vega 56 was hang while try to pass #GraphicsFuzz shader15 test</li>

<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105440">Bug 105440</a> - GEN7: rendering issue on citra</li>

<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105442">Bug 105442</a> - Hang when running nine ff lighting shader with radeonsi</li>

<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=105994">Bug 105994</a> - surface state leak when creating and destroying image views with aspectMask depth and stencil</li>

</ul>


<h2>Changes</h2>

<p>Andres Gomez (2):</p>
<ul>
  <li>dri_util: when overriding, always reset the core version</li>
  <li>mesa: adds some comments regarding MESA_GLES_VERSION_OVERRIDE usage</li>
</ul>

<p>Axel Davy (2):</p>
<ul>
  <li>st/nine: Declare lighting consts for ff shaders</li>
  <li>st/nine: Do not use scratch for face register</li>
</ul>

<p>Bas Nieuwenhuizen (1):</p>
<ul>
  <li>ac/nir: Add workaround for GFX9 buffer views.</li>
</ul>

<p>Daniel Stone (1):</p>
<ul>
  <li>st/dri: Initialise modifier to INVALID for DRI2</li>
</ul>

<p>Emil Velikov (1):</p>
<ul>
  <li>glsl: remove unreachable assert()</li>
</ul>

<p>Eric Engestrom (1):</p>
<ul>
  <li>gbm: remove never-implemented function</li>
</ul>

<p>Henri Verbeet (1):</p>
<ul>
  <li>mesa: Inherit texture view multi-sample information from the original texture images.</li>
</ul>

<p>Iago Toral Quiroga (1):</p>
<ul>
  <li>compiler/spirv: set is_shadow for depth comparitor sampling opcodes</li>
</ul>

<p>Jason Ekstrand (4):</p>
<ul>
  <li>nir/vars_to_ssa: Remove copies from the correct set</li>
  <li>nir/lower_indirect_derefs: Support interp_var_at intrinsics</li>
  <li>intel/vec4: Set channel_sizes for MOV_INDIRECT sources</li>
  <li>nir/lower_vec_to_movs: Only coalesce if the vec had a SSA destination</li>
</ul>

<p>Juan A. Suarez Romero (3):</p>
<ul>
  <li>docs: add sha256 checksums for 17.3.8</li>
  <li>cherry-ignore: Explicit 18.0 only nominations</li>
  <li>Update version to 17.3.9</li>
</ul>

<p>Lionel Landwerlin (1):</p>
<ul>
  <li>anv: fix number of planes for depth &amp; stencil</li>
</ul>

<p>Marek Olšák (1):</p>
<ul>
  <li>mesa: simplify MESA_GL_VERSION_OVERRIDE behavior of API override</li>
</ul>

<p>Samuel Pitoiset (1):</p>
<ul>
  <li>radv: fix picking the method for resolve subpass</li>
</ul>

<p>Sergii Romantsov (1):</p>
<ul>
  <li>i965: Extend the negative 32-bit deltas to 64-bits</li>
</ul>

<p>Timothy Arceri (6):</p>
<ul>
  <li>gallium/pipebuffer: fix parenthesis location</li>
  <li>glsl: always call do_lower_jumps() after loop unrolling</li>
  <li>ac: add if/loop build helpers</li>
  <li>radeonsi: make use of if/loop build helpers in ac</li>
  <li>ac: make use of if/loop build helpers</li>
  <li>mesa: free debug messages when destroying the debug state</li>
</ul>

<p>Xiong, James (1):</p>
<ul>
  <li>i965: return the fourcc saved in __DRIimage when possible</li>
</ul>


</div>
</body>
</html>

