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