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 [1].

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.

[1] 
https://gitlab.khronos.org/opengl/registry/blob/master/extensions/EXT/EXT_shader_framebuffer_fetch.txt

[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 
spec.
[PATCH 03/15] mesa: Rename MESA_shader_framebuffer_fetch gl_extensions bits to 
EXT.
[PATCH 04/15] glapi: Update XML for last revision of 
EXT_shader_framebuffer_fetch.
[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 
EXT ones.
[PATCH 10/15] glsl: Initialize ir_variable_data::fb_fetch_output earlier for 
GL(ES) 2.
[PATCH 11/15] glsl: Allow layout token for 
EXT_shader_framebuffer_fetch_non_coherent.
[PATCH 12/15] glsl: Add support for the framebuffer fetch layout(noncoherent) 
qualifier.
[PATCH 13/15] glsl: Specify framebuffer fetch coherency mode in 
lower_blend_equation_advanced().
[PATCH 14/15] glsl: Silence warnings when reading from a framebuffer fetch 
output.
[PATCH 15/15] mesa: Expose EXT_shader_framebuffer_fetch(_non_coherent) on 
desktop and embedded GL.
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to