# The Mesa 3D Graphics Library

# Mesa 12.0.2 Release Notes / September 2, 2016

Mesa 12.0.2 is a bug fix release which fixes bugs found since the 12.0.1 release.

Mesa 12.0.2 implements the OpenGL 4.3 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.3. OpenGL 4.3 is only available if requested at context creation because compatibility contexts are not supported.

## SHA256 checksums

    TBD

## New features

None

## Bug fixes

This list is likely incomplete.

- Bug 69622 - eglTerminate then eglMakeCurrent crahes
- Bug 89599 - symbol 'x86_64_entry_start' is already defined when building with LLVM/clang
- Bug 91342 - Very dark textures on some objects in indoors environments in Postal 2
- Bug 92306 - GL Excess demo renders incorrectly on nv43
- Bug 94148 - Framebuffer considered invalid when a draw call is done before glCheckFramebufferStatus
- Bug 96274 - [NVC0] Failure when compiling compute shader: Assertion `bb->getFirst()->serial <= bb->getExit()->serial' failed
- Bug 96358 - SSO: wrong interface validation between GS and VS (regresion due to latest gles 3.1)
- Bug 96381 - Texture artifacts with immutable texture storage and mipmaps
- Bug 96762 - [radeonsi,apitrace] Firewatch: nothing rendered in scrollable (text) areas
- Bug 96835 - "gallium: Force blend color to 16-byte alignment" crash with "-march=native -O3" causes some 32bit games to crash
- Bug 96850 - Crucible tests fail for 32bit mesa
- Bug 96908 - [radeonsi] MSAA causes graphical artifacts
- Bug 96911 - webgl2 conformance2/textures/misc/tex-mipmap-levels.html crashes 12.1 Intel driver
- Bug 96971 - invariant qualifier is not valid for shader inputs
- Bug 97039 - The Talos Principle and Serious Sam 3 GPU faults
- Bug 97207 - [IVY BRIDGE] Fragment shader discard writing to depth
- Bug 97214 - X not running with error "Failed to make EGL context current"
- Bug 97225 - [i965 on HD4600 Haswell] xcom switch to ingame cinematics cause segmentation fault
- Bug 97231 - GL_DEPTH_CLAMP doesn't clamp to the far plane
- Bug 97307 - glsl/glcpp/tests/glcpp-test regression
- Bug 97331 - glDrawElementsBaseVertex doesn't work in display list on i915
- Bug 97351 - DrawElementsBaseVertex with VBO ignores base vertex on Intel GMA 9xx in some cases
- Bug 97426 - glScissor gives vertically inverted result
- Bug 97476 - Shader binaries should not be stored in the PipelineCache
- Bug 97567 - [SNB, ILK] ctl, piglit regressions in mesa 12.0.2rc1

## Changes

Andreas Boll (1):

- configure.ac: Use ${datarootdir} for --with-vulkan-icddir help string too

Bernard Kilarski (1):

- glx: fix error code when there is no context bound

Brian Paul (4):

- svga: handle mismatched number of samplers, sampler views
- mesa: use _mesa_clear_texture_image() in clear_texture_fields()
- swrast: fix incorrectly positioned putImage() in swrast driver
- mesa: fix format conversion bug in get_tex_rgba_uncompressed()

Chad Versace (2):

- i965: Fix miptree layout for EGLImage-based renderbuffers
- i965: Respect miptree offsets in intel_readpixels_tiled_memcpy()

Christian König (1):

- st/mesa: fix reference counting bug in st_vdpau

Chuck Atkins (1):

- swr: Refactor checks for compiler feature flags

Daniel Scharrer (1):

- mesa: Fix fixed function spot lighting on newer hardware (again)

Dave Airlie (2):

- anv: fix writemask on blit fragment shader.
- st/glsl_to_tgsi: fix st_src_reg_for_double constant.

Emil Velikov (15):

- docs: add sha256 checksums for 12.0.1
- mesa: automake: list builddir before srcdir
- mesa: scons: list builddir before srcdir
- i965: store reference to the context within struct brw_fence (v2)
- anv: remove internal 'validate' layer
- anv: automake: use VISIBILITY_CFLAGS to restrict symbol visibility
- anv: automake: build with -Bsymbolic
- anv: do not export the Vulkan API
- anv: remove dummy VK_DEBUG_MARKER_EXT entry points
- isl: automake: use VISIBILITY_CFLAGS to restrict symbol visibility
- cherry-ignore: temporary(?) drop "a4xx: make sure to actually clamp depth"
- i915: Check return value of screen->image.loader->getBuffers
- Revert "i965/miptree: Set logical_depth0 == 6 for cube maps"
- glx/glvnd: list the strcmp arguments in correct order
- Update version to 12.0.2

Eric Anholt (4):

- vc4: Close our screen's fd on screen close.
- vc4: Disable early Z with computed depth.
- vc4: Fix a leak of the src[] array of VPM reads in optimization.
- vc4: Fix leak of the bo_handles table.

Francisco Jerez (3):

- i965: Emit SKL VF cache invalidation W/A from brw_emit_pipe_control_flush.
- i965: Make room in the batch epilogue for three more pipe controls.
- i965: Fix remaining flush vs invalidate race conditions in brw_emit_pipe_control_flush.

Haixia Shi (1):

- platform_android: prevent deadlock in droid_swap_buffers

Ian Romanick (5):

- mesa: Strip arrayness from interface block names in some IO validation
- glsl: Pack integer and double varyings as flat even if interpolation mode is none
- glcpp: Track the actual version instead of just the version_resolved flag
- glcpp: Only disallow #undef of pre-defined macros on GLSL ES >= 3.00 shaders
- glsl: Mark cube map array sampler types as reserved in GLSL ES 3.10

Ilia Mirkin (16):

- mesa: etc2 online compression is unsupported, don't attempt it
- st/mesa: return appropriate mesa format for ETC texture formats
- mesa: set _NEW_BUFFERS when updating texture bound to current buffers
- nv50,nvc0: srgb rendering is only available for rgba/bgra
- vbo: allow DrawElementsBaseVertex in display lists
- gallium/util: add helper to compute zmin/zmax for a viewport state
- nv50,nvc0: fix depth range when halfz is enabled
- nv50/ir: fix bb positions after exit instructions
- vbo: add basevertex when looking up elements for vbo splitting
- a4xx: only disable depth clipping, not all clipping, when requested
- nv50/ir: make sure cfg iterator always hits all blocks
- main: add missing EXTRA_END in OES_sample_variables get check
- nouveau: always enable at least one RC
- nv30: only bail on color/depth bpp mismatch when surfaces are swizzled
- a4xx: make sure to actually clamp depth as requested
- gk110/ir: fix quadop dall emission

Jan Ziak (2):

- egl/x11: avoid using freed memory if dri2 init fails
- loader: fix memory leak in loader_dri3_open

Jason Ekstrand (31):

- nir/spirv: Don't multiply the push constant block size by 4
- anv: Add a stub for CmdCopyQueryPoolResults on Ivy Bridge
- glsl/types: Fix function type comparison function
- glsl/types: Use _mesa_hash_data for hashing function types
- genxml: Make gen6-7 blending look more like gen8
- anv/pipeline: Unify blend state setup between gen7 and gen8
- anv: Enable independentBlend on gen7
- anv: Add an align_down_npot_u32 helper
- anv: Handle VK_WHOLE_SIZE properly for buffer views
- i965/miptree: Enforce that height == 1 for 1-D array textures
- i965/miptree: Set logical_depth0 == 6 for cube maps
- nir: Add a nir_deref_foreach_leaf helper
- nir/inline: Constant-initialize local variables in the callee if needed
- anv/pipeline: Set up point coord enables
- i965/miptree: Stop multiplying cube depth by 6 in HiZ calculations
- i965/vec4: Make opt_vector_float reset at the top of each block
- anv/blit2d: Add a format parameter to bind_dst and create_iview
- anv/blit2d: Add support for RGB destinations
- anv/clear: Make cmd_clear_image take an actual VkClearValue
- anv/clear: Clear E5B9G9R9 images as R32_UINT
- anv: Include the pipeline layout in the shader hash
- isl: Allow multisampled array textures
- anv/descriptor_set: memset anv_descriptor_set_layout
- anv/pipeline: Fix bind maps for fragment output arrays
- anv/allocator: Correctly set the number of buckets
- anv/pipeline: Properly handle OOM during shader compilation
- anv: Remove unused fields from anv_pipeline_bind_map
- anv: Add pipeline_has_stage guards a few places
- anv: Add a struct for storing a compiled shader
- anv/pipeline: Add support for caching the push constant map
- anv: Rework pipeline caching

José Fonseca (2):

- appveyor: Install pywin32 extensions.
- appveyor: Force Visual Studio 2013 image.

Kenneth Graunke (21):

- genxml: Add CLIPMODE_* prefix to 3DSTATE_CLIP's "Clip Mode" enum values.
- genxml: Add APIMODE_D3D missing enum values and improve consistency.
- anv: Fix near plane clipping on Gen7/7.5.
- anv: Enable early culling on Gen7.
- anv: Unify 3DSTATE_CLIP code across generations.
- genxml: Rename "API Rendering Disable" to "Rendering Disable".
- anv: Properly call gen75_emit_state_base_address on Haswell.
- i965: Include VUE handles for GS with invocations > 1.
- nir: Add a base const_index to shared atomic intrinsics.
- i965: Fix shared atomic intrinsics to pay attention to base.
- mesa: Add GL_BGRA_EXT to the list of GenerateMipmap internal formats.
- mesa: Don't call GenerateMipmap if Width or Height == 0.
- glsl: Delete bogus ir_set_program_inouts assert.
- glsl: Fix the program resource names of gl_TessLevelOuter/Inner[].
- glsl: Fix location bias for patch variables.
- glsl: Fix invariant matching in GLSL 4.30 and GLSL ES 1.00.
- mesa: Fix uf10_to_f32() scale factor in the E == 0 and M != 0 case.
- nir/builder: Add bany_inequal and bany helpers.
- i965: Implement the WaPreventHSTessLevelsInterference workaround.
- i965: Fix execution size of scalar TCS barrier setup code.
- i965: Fix barrier count shift in scalar TCS backend.

Leo Liu (2):

- st/omx/enc: check uninitialized list from task release
- vl/dri3: fix a memory leak from front buffer

Marek Olšák (7):

- glsl_to_tgsi: don't use the negate modifier in integer ops after bitcast
- radeonsi: add a workaround for a compute VGPR-usage LLVM bug
- winsys/amdgpu: disallow DCC with mipmaps
- gallium/util: fix align64
- radeonsi: only set dual source blending for MRT0
- radeonsi: fix VM faults due NULL internal const buffers on CIK
- radeonsi: disable SDMA texture copying on Carrizo

Matt Turner (4):

- mapi: Massage code to allow clang to compile.
- i965/vec4: Ignore swizzle of VGRF for use by var_range_end().
- mesa: Use AC_HEADER_MAJOR to include correct header for major().
- nir: Walk blocks in source code order in lower_vars_to_ssa.

Michel Dänzer (1):

- glx: Don't use current context in __glXSendError

Miklós Máté (1):

- vbo: set draw_id

Nanley Chery (5):

- anv/descriptor_set: Fix binding partly undefined descriptor sets
- isl: Fix assert on raw buffer surface state size
- anv/device: Fix max buffer range limits
- isl: Fix isl_tiling_is_any_y()
- anv/gen7_pipeline: Set PixelShaderKillPixel for discards

Nicolai Hähnle (7):

- radeonsi: explicitly choose center locations for 1xAA on Polaris
- radeonsi: fix Polaris MSAA regression
- radeonsi: ensure sample locations are set for line and polygon smoothing
- st_glsl_to_tgsi: only skip over slots of an input array that are present
- glsl: fix optimization of discard nested multiple levels
- radeonsi: flush TC L2 cache for indirect draw data
- radeonsi: add si_set_rw_buffer to be used for internal descriptors

Nicolas Boichat (6):

- egl/dri2: dri2_make_current: Set EGL error if bindContext fails
- egl/wayland: Set disp->DriverData to NULL on error
- egl/surfaceless: Set disp->DriverData to NULL on error
- egl/drm: Set disp->DriverData to NULL on error
- egl/android: Set dpy->DriverData to NULL on error
- egl/dri2: Add reference count for dri2_egl_display

Rob Herring (3):

- Android: add missing u_math.h include path for libmesa_isl
- vc4: fix vc4_resource_from_handle() stride calculation
- vc4: add hash table look-up for exported dmabufs

Samuel Pitoiset (7):

- nvc0/ir: fix images indirect access on Fermi
- nvc0: fix the driver cb size when draw parameters are used
- gm107/ir: add missing NEG modifier for IADD32I
- gm107/ir: make use of ADD32I for all immediates
- nvc0: upload sample locations on GM20x
- nvc0: invalidate textures/samplers on GK104+
- nv50/ir: always emit the NDV bit for OP_QUADOP

Stefan Dirsch (1):

- Avoid overflow in 'last' variable of FindGLXFunction(...)

Stencel, Joanna (1):

- egl/wayland-egl: Fix for segfault in dri2_wl_destroy_surface.

Tim Rowley (2):

- Revert "gallium: Force blend color to 16-byte alignment"
- swr: switch from overriding -march to selecting features

Tomasz Figa (8):

- gallium/dri: Add shared glapi to LIBADD on Android
- egl/android: Remove unused variables
- egl/android: Check return value of dri2_get_dri_config()
- egl/android: Stop leaking DRI images
- gallium/winsys/kms: Fix double refcount when importing from prime FD (v2)
- gallium/winsys/kms: Fully initialize kms_sw_dt at prime import time (v2)
- gallium/winsys/kms: Move display target handle lookup to separate function
- gallium/winsys/kms: Look up the GEM handle after importing a prime FD