[Mesa-dev] [PATCH v2 01/17] docs/specs: Add GL_MESA_program_binary_formats extension spec
Jordan Justen
jordan.l.justen at intel.com
Mon Nov 20 22:27:27 UTC 2017
Similar idea to Tim's "spec: MESA_program_binary", but simplified and
written to support both ARB_get_program_binary and
OES_get_program_binary.
This spec was merged into the OpenGL Registry in version
667c5a253781834b40a6ae9eb19d05af4542cfe1.
Ref: https://github.com/KhronosGroup/OpenGL-Registry/pull/127
Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
Cc: Ian Romanick <idr at freedesktop.org>
Cc: Timothy Arceri <tarceri at itsqueeze.com>
Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>
---
docs/specs/MESA_program_binary_formats.txt | 88 ++++++++++++++++++++++++++++++
docs/specs/enums.txt | 3 +
src/mapi/glapi/registry/gl.xml | 7 ++-
3 files changed, 97 insertions(+), 1 deletion(-)
create mode 100644 docs/specs/MESA_program_binary_formats.txt
diff --git a/docs/specs/MESA_program_binary_formats.txt b/docs/specs/MESA_program_binary_formats.txt
new file mode 100644
index 00000000000..937e8ef4bf3
--- /dev/null
+++ b/docs/specs/MESA_program_binary_formats.txt
@@ -0,0 +1,88 @@
+Name
+
+ MESA_program_binary_formats
+
+Name Strings
+
+ GL_MESA_program_binary_formats
+
+Contributors
+
+ Ian Romanick
+ Jordan Justen
+ Timothy Arceri
+
+Contact
+
+ Jordan Justen (jordan.l.justen 'at' intel.com)
+
+Status
+
+ Complete.
+
+Version
+
+ Last Modified Date: November 10, 2017
+ Revision: #2
+
+Number
+
+ OpenGL Extension #516
+ OpenGL ES Extension #294
+
+Dependencies
+
+ For use with the OpenGL ARB_get_program_binary extension, or the
+ OpenGL ES OES_get_program_binary extension.
+
+Overview
+
+ The get_program_binary exensions require a GLenum binaryFormat.
+ This extension documents that format for use with Mesa.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ GL_PROGRAM_BINARY_FORMAT_MESA 0x875F
+
+ For ARB_get_program_binary, GL_PROGRAM_BINARY_FORMAT_MESA may be
+ returned from GetProgramBinary calls in the <binaryFormat>
+ parameter and when retrieving the value of PROGRAM_BINARY_FORMATS.
+
+ For OES_get_program_binary, GL_PROGRAM_BINARY_FORMAT_MESA may be
+ returned from GetProgramBinaryOES calls in the <binaryFormat>
+ parameter and when retrieving the value of
+ PROGRAM_BINARY_FORMATS_OES.
+
+New State
+
+ None.
+
+Issues
+
+ (1) Should we have a different format for each driver?
+
+ RESOLVED. Since Mesa supports multiple hardware drivers, having
+ a single format may cause separate drivers to have to reject a
+ binary for another type of hardware on the same machine. This
+ could lead to an application having to invalidate and get a new
+ binary more often.
+
+ This extension, at least initially, does not to attempt to
+ define a new token for each driver since systems that run
+ multiple drivers are not the common case.
+
+ Additionally, drivers in Mesa are now gaining the ability to
+ transparently cache shader programs. Therefore, although they
+ may need to provide the application with a new binary more
+ often, they likely can retrieve the program from the cache
+ rather than performing an expensive recompile.
+
+Revision History
+
+ #02 11/10/2017 Jordan Justen Add Issues (1) suggested by Ian
+
+ #01 10/28/2017 Jordan Justen First draft.
diff --git a/docs/specs/enums.txt b/docs/specs/enums.txt
index eb4aa396c56..bf3ca9c1762 100644
--- a/docs/specs/enums.txt
+++ b/docs/specs/enums.txt
@@ -63,6 +63,9 @@ GL_MESAX_texture_stack:
GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D
GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E
+GL_MESA_program_binary_formats:
+ GL_PROGRAM_BINARY_FORMAT_MESA 0x875F
+
GL_MESA_tile_raster_order
GL_TILE_RASTER_ORDER_FIXED_MESA 0x8BB8
GL_TILE_RASTER_ORDER_INCREASING_X_MESA 0x8BB9
diff --git a/src/mapi/glapi/registry/gl.xml b/src/mapi/glapi/registry/gl.xml
index cbabe11b398..833478aa515 100644
--- a/src/mapi/glapi/registry/gl.xml
+++ b/src/mapi/glapi/registry/gl.xml
@@ -5505,7 +5505,7 @@ typedef unsigned int GLhandleARB;
<enum value="0x875C" name="GL_PROXY_TEXTURE_2D_STACK_MESAX"/>
<enum value="0x875D" name="GL_TEXTURE_1D_STACK_BINDING_MESAX"/>
<enum value="0x875E" name="GL_TEXTURE_2D_STACK_BINDING_MESAX"/>
- <unused start="0x875F" vendor="MESA"/>
+ <enum value="0x875F" name="GL_PROGRAM_BINARY_FORMAT_MESA"/>
</enums>
<enums namespace="GL" start="0x8760" end="0x883F" vendor="AMD">
@@ -44361,6 +44361,11 @@ typedef unsigned int GLhandleARB;
<enum name="GL_PACK_INVERT_MESA"/>
</require>
</extension>
+ <extension name="GL_MESA_program_binary_formats" supported="gl|gles2">
+ <require>
+ <enum name="GL_PROGRAM_BINARY_FORMAT_MESA"/>
+ </require>
+ </extension>
<extension name="GL_MESA_resize_buffers" supported="gl">
<require>
<command name="glResizeBuffersMESA"/>
--
2.14.1
More information about the mesa-dev
mailing list