This series implements version 7 of the EXT_shader_framebuffer_fetch
specification, which includes a number of changes I had originally
planned for a MESA extension but which ended up queued for inclusion
into an EXT extension after months-long discussion with several
Khronos members. The most important changes are desktop GL support
(the original EXT extension only targeted GLES) and a non-coherent
extension with more relaxed memory ordering guarantees that allows
wider hardware support and/or better performance than the coherent
extension. The GLSL front-end has been relying on non-coherent
framebuffer fetch functionality internally for a while in order to
implement KHR_blend_equation_advanced, so most of the back-end code is
already there, but it wasn't exposed directly to the user until now.
The updated EXT_shader_framebuffer_fetch extension hasn't made it into
the public Khronos registry page yet but it's been merged into
Khronos' private repository of the registry already .
Patch 1 of the series fixes a regression in the i965 driver that broke
KHR_blend_equation_advanced with some render targets. This wasn't
caught earlier because of test coverage gaps of the
KHR_blend_equation_advanced extension. The problem would have led to
failures in some tests I've written for the
EXT_shader_framebuffer_fetch_non_coherent extension I'm about to send
to the Piglit mailing list shortly. Patches 2-3 and 9 are cleaning up
remnants of the MESA framebuffer fetch extension that was being used
internally in order to implement KHR_blend_equation_advanced. Patches
6-8 are required to make room for additional qualifier flags in the
ast_type_qualifier object, which has run out of bits in the uint64_t
mask preventing the definition of additional type qualifiers (IIRC
this was the main reason the ARB_fragment_shader_interlock series was
shot down last year?). The remaining patches are implementing
features of the updated extension that weren't already implemented for
the MESA extension.
[PATCH 01/15] i965: Fix KHR_blend_equation_advanced with some render targets.
[PATCH 02/15] mesa: Rename dd_function_table::BlendBarrier to match latest EXT
[PATCH 03/15] mesa: Rename MESA_shader_framebuffer_fetch gl_extensions bits to
[PATCH 04/15] glapi: Update XML for last revision of
[PATCH 05/15] mesa: Implement glFramebufferFetchBarrierEXT entry point.
[PATCH 06/15] util: Add EXPLICIT_CONVERSION macro.
[PATCH 07/15] util/bitset: Add C++ wrapper for static-size bitsets.
[PATCH 08/15] glsl: Switch ast_type_qualifier to a 128-bit bitset.
[PATCH 09/15] glsl: Replace MESA_shader_framebuffer_fetch extension flags with
[PATCH 10/15] glsl: Initialize ir_variable_data::fb_fetch_output earlier for
[PATCH 11/15] glsl: Allow layout token for
[PATCH 12/15] glsl: Add support for the framebuffer fetch layout(noncoherent)
[PATCH 13/15] glsl: Specify framebuffer fetch coherency mode in
[PATCH 14/15] glsl: Silence warnings when reading from a framebuffer fetch
[PATCH 15/15] mesa: Expose EXT_shader_framebuffer_fetch(_non_coherent) on
desktop and embedded GL.
mesa-dev mailing list