[Mesa-dev] Potential spec change request for EXT_buffer_storage

Ian Romanick idr at freedesktop.org
Tue Nov 10 08:59:35 PST 2015


On 11/09/2015 04:10 PM, Ian Romanick wrote:
> On 11/04/2015 03:26 PM, Ryan Houdek wrote:
>> I'm hoping to potentially convince about lowering the minimum
>> requirement of EXT_buffer_storage from ES 3.1 to ES 3.0.
>> The only thing that causes it to require ES 3.1 is glMemoryBarrier,
>> which shouldn't really be a hard requirement since the extension can be
>> used without it.
>> This is also a similar situation with ARB_buffer_storage which Mesa
>> currently exposes to all GL versions even though it should require GL 4.2.
>> I have my attempt at a change to the spec as follows. I've never tried
>> changing a spec page before so it's a bit new to me.
> 
> I think all of the drivers that support ARB_buffer_storage also support
> ARB_texture_barrier.  At the very least I think you'd need to require
> GL_MAP_CHOERENT_BIT with GL_MAP_PERSISTENT_BIT.
> 
> Also... Mesa is really close to getting OpenGL ES 3.1.  Are there any
> drivers with which you want to use this extension that won't have GLES 3.1?
> 
>> diff --git a/EXT_buffer_storage.txt b/EXT_buffer_storage.txt
>> index 03fcd6e..ea16fae 100644
>> --- a/EXT_buffer_storage.txt
>> +++ b/EXT_buffer_storage.txt
>> @@ -30,8 +30,8 @@ Status
>>  
>>  Version
>>  
>> -    Last Modified Date:   May 1, 2015
>> -    Author Revision:      3
>> +    Last Modified Date:   November 4, 2015
>> +    Author Revision:      4
>>  
>>  Number
>>  
>> @@ -39,10 +39,12 @@ Number
>>  
>>  Dependencies
>>  
>> -    OpenGL ES 3.1 is required.
>> -
>>      This extension is written against the OpenGL ES 3.1 (June 4, 2014)
>> -    Specification.
>> +    Specification, but can apply to prior specifications
>> +
>> +    Requires OpenGL ES 3.0
> 
> I think I'd just change the above to replace the current "required" line
> with
> 
>    OpenGL ES 3.0 is required.
> 
> and leave the rest alone.
> 
> I think the rest of the edits look good.

Follow-up question... should the actual requirement be

    OpenGL ES 3.0 or GL_EXT_map_buffer_range is required.

Also... you should add yourself to the "Contributors" section.  That
creates a mapping between rhoudek in the history and an actual human. :)

>> +
>> +    This extension interacts with OpenGL ES 3.1.
>>  
>>      The definition of this extension is affected by the presence of
>>      GL_EXT_direct_state_access.
>> @@ -350,6 +352,50 @@ Additions to Chapter 7 of the OpenGL ES 3.1
>> Specification,
>>            by shaders prior to the barrier. Note that this may cause
>> additional
>>            synchronization operations.
>>  
>> +Dependencies on OpenGL ES 3.1
>> +
>> +    If OpenGL ES 3.1 is not supported apply the following modifications
>> to the
>> +    OpenGL ES 3.0.4 specification:
>> +
>> +    Append to the first paragraph of Section 2.10, "Buffer Objects", p. 32:
>> +
>> +    Under certain circumstances, the data store of a buffer object may
>> +    be shared between the client and server and accessed simultaneously
>> +    by both.
>> +
>> +    Modify Section 2.10.1 (Creating and Binding Buffer Objects)
>> +
>> +    Append to Table 2.7, "Buffer object parameters and their values", p.34:
>> +
>> +      
>>  +------------------------------+---------+---------+------------------+
>> +        |                              |         | Initial | Legal    
>>        |
>> +        | Name                         | Type    | Value   | Values    
>>       |
>> +      
>>  +------------------------------+---------+---------+------------------+
>> +        | BUFFER_IMMUTABLE_STORAGE_EXT | boolean | FALSE   | TRUE,
>> FALSE      |
>> +        | BUFFER_STORAGE_FLAGS_EXT     | int     | 0       | See
>> section 6.2  |
>> +      
>>  +------------------------------+---------+---------+------------------+
>> +
>> +    Edits to section 6.2 "Creating and Modifying Buffer Object Data
>> Stores" in
>> +    ES 3.1 become edits to section 2.10.2 "Creating Buffer Object Data
>> Stores"
>> +    in ES 3.0.4.
>> +
>> +    Edits to section 6.3, "Mapping and Unmapping Buffer Data" in ES 3.1
>> become
>> +    edits in section 2.10.3 "Mapping and Unmapping Buffer Data" in ES 3.0.4
>> +
>> +    Edits to p.56, FlushMappedBufferRange, in ES 3.1 become edits in p.40
>> +    in ES 3.0.4
>> +
>> +    Edits to section 6.3.2, "Effects of Mapping Buffers on Other GL
>> Commands"
>> +    in ES 3.1 become edits in p.41 in ES 3.0.4
>> +
>> +    Edits in section 6.7, "Buffer Object State" in ES 3.1 become edits in
>> +    section 2.10.8 "Buffer Object State" in ES 3.0.4
>> +
>> +    Edits in section 20.4, "Buffer Object State", p.355 become edits in
>> +    section 6.4, "Buffer Object State", p.247 in ES 3.0.4
>> +
>> +    If OpenGL ES 3.1 is not supported, ignore all references to
>> MemoryBarrier
>> +
>>  New State
>>  
>>      Append to Table 20.4, "Buffer Object State", p.355:
>> @@ -521,3 +567,5 @@ Revision History
>>                                to make CPU writes visible to the GPU in
>>                                this case without an explicit flush (Bug
>>                                13578, sync w/ ARB_buffer_storage v.25).
>> +
>> +    4    04/11/15  rhoudek    Lower minimum dependency to ES 3.0
>>
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
> 



More information about the mesa-dev mailing list