Mesa 7.10.2 Release Notes / April 6, 2011
=========================================

Mesa 7.10.2 is a bug fix release which fixes bugs found since the 7.10
release.

Mesa 7.10.2 implements the OpenGL 2.1 API, but the version reported by
glGetString(GL_VERSION) depends on the particular driver being used.
Some drivers don't support all the features required in OpenGL 2.1.

See the :doc:`Compiling/Installing page <../install>` for
prerequisites for DRI hardware acceleration.

MD5 checksums
-------------

::

   2f9f444265534a2cfd9a99d1a8291089  MesaLib-7.10.2.tar.gz
   f5de82852f1243f42cc004039e10b771  MesaLib-7.10.2.tar.bz2
   47836e37bab6fcafe3ac90c9544ba0e9  MesaLib-7.10.2.zip
   175120325828f313621cc5bc6c504803  MesaGLUT-7.10.2.tar.gz
   8c71d273f5f8d6c5eda4ffc39e0fe03e  MesaGLUT-7.10.2.tar.bz2
   03036c8efe7b791a90fa0f2c41b43f43  MesaGLUT-7.10.2.zip

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

None.

Bug fixes
---------

This list is likely incomplete.

-  `Bug 29172 <https://bugs.freedesktop.org/show_bug.cgi?id=29172>`__ -
   Arrandale - Pill Popper Pops Pills
-  `Bug 31159 <https://bugs.freedesktop.org/show_bug.cgi?id=31159>`__ -
   shadow problem in 0ad game
-  `Bug 32688 <https://bugs.freedesktop.org/show_bug.cgi?id=32688>`__ -
   [RADEON:KMS:R300G] some games have a wireframe or outline visible
-  `Bug 32949 <https://bugs.freedesktop.org/show_bug.cgi?id=32949>`__ -
   [glsl wine] Need for Speed renders incorrectly with GLSL enabled
-  `Bug 34203 <https://bugs.freedesktop.org/show_bug.cgi?id=34203>`__ -
   [GLSL] fail to call long chains across shaders
-  `Bug 34376 <https://bugs.freedesktop.org/show_bug.cgi?id=34376>`__ -
   [GLSL] allowing assignment to unsized array

   -  The commit message incorrectly lists `bug
      34367 <https://bugs.freedesktop.org/show_bug.cgi?id=34367>`__.

-  `Bug 34370 <https://bugs.freedesktop.org/show_bug.cgi?id=34370>`__ -
   [GLSL] "i<5 && i<4" in for loop fails
-  `Bug 34374 <https://bugs.freedesktop.org/show_bug.cgi?id=34374>`__ -
   [GLSL] fail to redeclare an array using initializer
-  `Bug 35073 <https://bugs.freedesktop.org/show_bug.cgi?id=35073>`__ -
   [GM45] Alpha test is broken when rendering to FBO with no color
   attachment
-  `Bug 35483 <https://bugs.freedesktop.org/show_bug.cgi?id=35483>`__ -
   util_blit_pixels_writemask: crash in line 322 of
   src/gallium/auxiliary/util/u_blit.c

Changes
-------

The full set of changes can be viewed by using the following GIT
command:

::

     git log mesa-7.10.1..mesa-7.10.2

.. note:: Reverted commits and the reverts are not included in this list.

Alex Deucher (2):

-  r600c: add new ontario pci ids
-  r600g: add some additional ontario pci ids

Benjamin Franzke (1):

-  st/dri: Fix surfaceless gl using contexts with previous bound
   surfaces

Brian Paul (9):

-  docs: pull 7.9.2 release notes into 7.10 branch
-  docs: update news.html with 7.10.1 and 7.9.2 releases
-  docs: fill in 7.10.1 release data
-  docs: add, fix release notes links
-  docs: update info about Mesa packaging/contents
-  docs: update prerequisites, remove old demo info
-  mesa: Guard against null pointer deref in fbo validation
-  st/mesa: Apply LOD bias from correct texture unit
-  glsl: silence warning in printf() with a cast

Chad Versace (1):

-  i965: Fix tex_swizzle when depth mode is GL_RED

Dave Airlie (1):

-  r600: don't close fd on failed load

Eric Anholt (2):

-  i965: Apply a workaround for the Ironlake "vertex flashing".
-  i965: Fix alpha testing when there is no color buffer in the FBO.

Fabian Bieler (1):

-  st/mesa: Apply LOD from texture object

Henri Verbeet (1):

-  st/mesa: Validate state before doing blits.

Ian Romanick (13):

-  docs: Add 7.10.1 md5sums
-  glsl: Refactor AST-to-HIR code handling variable initializers
-  glsl: Refactor AST-to-HIR code handling variable redeclarations
-  glsl: Process redeclarations before initializers
-  glsl: Function signatures cannot have NULL return type
-  glsl: Add several function / call related validations
-  linker: Add imported functions to the linked IR
-  glsl: Use insert_before for lists instead of open coding it
-  glsl: Only allow unsized array assignment in an initializer
-  glcpp: Refresh autogenerated lexer files
-  docs: Initial bits of 7.10.2 release notes
-  mesa: set version string to 7.10.2
-  mesa: Remove nonexistant files from \_FILES lists

Jerome Glisse (1):

-  r600g: move user fence into base radeon structure

José Fonseca (2):

-  mesa: Fix typo glGet*v(GL_TEXTURE_COORD_ARRAY_*).
-  mesa: More glGet\* fixes.

Kenneth Graunke (4):

-  glcpp: Rework lexer to use a SKIP state rather than REJECT.
-  glcpp: Remove trailing contexts from #if rules.
-  i965/fs: Fix linear gl_Color interpolation on pre-gen6 hardware.
-  glsl: Accept precision qualifiers on sampler types, but only in ES.

Marek Olšák (15):

-  st/mesa: fix crash when DrawBuffer->_ColorDrawBuffers[0] is NULL
-  st/mesa: fail to alloc a renderbuffer if
   st_choose_renderbuffer_format fails
-  r300/compiler: fix the saturate modifier when applied to TEX
   instructions
-  r300/compiler: fix translating the src negate bits in pair_translate
-  r300/compiler: Abs doesn't cancel Negate (in the conversion to native
   swizzles)
-  r300/compiler: TEX instructions don't support negation on source
   arguments
-  r300/compiler: do not set TEX_IGNORE_UNCOVERED on r500
-  r300/compiler: saturate Z before the shadow comparison
-  r300/compiler: fix equal and notequal shadow compare functions
-  r300/compiler: remove unused variables
-  st/mesa: fix crash when using both user and vbo buffers with the same
   stride
-  r300g: fix alpha-test with no colorbuffer
-  r300g: tell the GLSL compiler to lower the continue opcode
-  r300/compiler: propagate SaturateMode down to the result of shadow
   comparison
-  r300/compiler: apply the texture swizzle to shadow pass and fail
   values too

Michel Dänzer (1):

-  Use proper source row stride when getting depth/stencil texels.

Tom Stellard (4):

-  r300/compiler: Use a 4-bit writemask in pair instructions
-  prog_optimize: Fix reallocating registers for shaders with loops
-  r300/compiler: Fix vertex shader MAD instructions with constant
   swizzles
-  r300/compiler: Don't try to convert RGB to Alpha in full instructions
