[Mesa-dev] [PATCH 06/17] mesa: Add blend barrier entry point and driver hook.

Francisco Jerez currojerez at riseup.net
Sat Aug 13 01:08:42 UTC 2016


Kenneth Graunke <kenneth at whitecape.org> writes:

> On Wednesday, July 20, 2016 9:49:36 PM PDT Francisco Jerez wrote:
>> Both MESA_shader_framebuffer_fetch_non_coherent and the non-coherent
>> variant of KHR_blend_equation_advanced will use this driver hook to
>> request coherency between framebuffer reads and writes.  This
>> intentionally doesn't hook up glBlendBarrierMESA to the dispatch layer
>> since the extension isn't exposed to applications yet, see [1]
>> for more details.
>> 
>> [1] https://lists.freedesktop.org/archives/mesa-dev/2016-July/124028.html
>> ---
>>  src/mesa/main/barrier.c | 14 ++++++++++++++
>>  src/mesa/main/barrier.h |  3 +++
>>  src/mesa/main/dd.h      | 12 ++++++++++++
>>  3 files changed, 29 insertions(+)
>> 
>> diff --git a/src/mesa/main/barrier.c b/src/mesa/main/barrier.c
>> index 7ae8fc6..42a5e0f 100644
>> --- a/src/mesa/main/barrier.c
>> +++ b/src/mesa/main/barrier.c
>> @@ -108,3 +108,17 @@ _mesa_MemoryBarrierByRegion(GLbitfield barriers)
>>        ctx->Driver.MemoryBarrier(ctx, barriers);
>>     }
>>  }
>> +
>> +void GLAPIENTRY
>> +_mesa_BlendBarrierMESA(void)
>> +{
>> +   GET_CURRENT_CONTEXT(ctx);
>> +
>> +   if (!ctx->Extensions.MESA_shader_framebuffer_fetch_non_coherent) {
>> +      _mesa_error(ctx, GL_INVALID_OPERATION,
>> +                  "glBlendBarrier(not supported)");
>> +      return;
>> +   }
>> +
>> +   ctx->Driver.BlendBarrier(ctx);
>> +}
>> diff --git a/src/mesa/main/barrier.h b/src/mesa/main/barrier.h
>> index 8eee583..21dce90 100644
>> --- a/src/mesa/main/barrier.h
>> +++ b/src/mesa/main/barrier.h
>> @@ -47,4 +47,7 @@ _mesa_MemoryBarrier(GLbitfield barriers);
>>  void GLAPIENTRY
>>  _mesa_MemoryBarrierByRegion(GLbitfield barriers);
>>  
>> +void GLAPIENTRY
>> +_mesa_BlendBarrierMESA(void);
>> +
>>  #endif /* BARRIER_H */
>> diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h
>> index 114cbd2..807cb2a 100644
>> --- a/src/mesa/main/dd.h
>> +++ b/src/mesa/main/dd.h
>> @@ -959,6 +959,18 @@ struct dd_function_table {
>>     /** @} */
>>  
>>     /**
>> +    * GL_MESA_shader_framebuffer_fetch_non_coherent rendering barrier.
>> +    *
>> +    * On return from this function any framebuffer contents written by
>> +    * previous draw commands are guaranteed to be visible from subsequent
>> +    * fragment shader invocations using the
>> +    * MESA_shader_framebuffer_fetch_non_coherent interface.
>> +    */
>> +   /** @{ */
>> +   void (*BlendBarrier)(struct gl_context *ctx);
>> +   /** @} */
>> +
>> +   /**
>>      * \name GL_ARB_compute_shader interface
>>      */
>>     /*@{*/
>> 
>
> Don't you need to add this to the glapi XML?  Otherwise, it probably
> won't actually be exposed.

Yeah, that was intentional, see the commit message ;).  I split the
glapi changes into a separate commit because glBlendBarrier is still not
exposed through any externally visible extension.  We can probably hook
it up as soon as either KHR_blend_equation_advanced or
MESA_shader_framebuffer_fetch_non_coherent lands, whichever comes first.

Here's the other half of this commit I was intending to send together
with the remaining core changes to expose the MESA FB fetch extensions,
for the case it's useful to you.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-glapi-Hook-up-glBlendBarrierMESA-to-the-dispatch-gen.patch
Type: text/x-diff
Size: 2339 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160812/752431be/attachment.patch>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 212 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160812/752431be/attachment.sig>


More information about the mesa-dev mailing list