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.
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 + + 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@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev