summaryrefslogtreecommitdiffstats
path: root/gpu/command_buffer/build_gles2_cmd_buffer.py
diff options
context:
space:
mode:
authorphajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-27 21:47:55 +0000
committerphajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-27 21:47:55 +0000
commitc0716012e40ccbcac067205edcb9ad7b76507296 (patch)
tree79359da760adff38b6ae6cde931b9801ac7ac1df /gpu/command_buffer/build_gles2_cmd_buffer.py
parentdb174431f52fedec88dafd0f5c45ff0f101439a4 (diff)
downloadchromium_src-c0716012e40ccbcac067205edcb9ad7b76507296.zip
chromium_src-c0716012e40ccbcac067205edcb9ad7b76507296.tar.gz
chromium_src-c0716012e40ccbcac067205edcb9ad7b76507296.tar.bz2
Extract Chromium-specific parts out of third_party/khronos/GLES2 .
BUG=161389 Review URL: https://codereview.chromium.org/11679005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@174699 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu/command_buffer/build_gles2_cmd_buffer.py')
-rwxr-xr-xgpu/command_buffer/build_gles2_cmd_buffer.py266
1 files changed, 261 insertions, 5 deletions
diff --git a/gpu/command_buffer/build_gles2_cmd_buffer.py b/gpu/command_buffer/build_gles2_cmd_buffer.py
index 9babf73..99acbc4 100755
--- a/gpu/command_buffer/build_gles2_cmd_buffer.py
+++ b/gpu/command_buffer/build_gles2_cmd_buffer.py
@@ -2313,6 +2313,197 @@ _FUNCTION_INFO = {
}
+_CHROMIUM_SPECIFIC_CONSTANTS = {
+ 'GL_CONTEXT_LOST': '0x300E', # TODO(gman): What value?
+}
+
+
+_CHROMIUM_SPECIFIC_EXTENSIONS = {
+ 'GL_EXT_framebuffer_multisample': {
+ 'constants': {
+ 'GL_DRAW_FRAMEBUFFER_BINDING': '0x8CA6',
+ 'GL_DRAW_FRAMEBUFFER_BINDING_EXT': 'GL_DRAW_FRAMEBUFFER_BINDING',
+ 'GL_FRAMEBUFFER_BINDING': '0x8CA6',
+ 'GL_FRAMEBUFFER_BINDING_EXT': 'GL_FRAMEBUFFER_BINDING',
+ 'GL_RENDERBUFFER_BINDING': '0x8CA7',
+ 'GL_RENDERBUFFER_BINDING_EXT': 'GL_RENDERBUFFER_BINDING',
+ 'GL_READ_FRAMEBUFFER': '0x8CA8',
+ 'GL_READ_FRAMEBUFFER_EXT': 'GL_READ_FRAMEBUFFER',
+ 'GL_DRAW_FRAMEBUFFER': '0x8CA9',
+ 'GL_DRAW_FRAMEBUFFER_EXT': 'GL_DRAW_FRAMEBUFFER',
+ 'GL_READ_FRAMEBUFFER_BINDING': '0x8CAA',
+ 'GL_READ_FRAMEBUFFER_BINDING_EXT': 'GL_READ_FRAMEBUFFER_BINDING',
+ 'GL_RENDERBUFFER_SAMPLES': '0x8CAB',
+ 'GL_RENDERBUFFER_SAMPLES_EXT': 'GL_RENDERBUFFER_SAMPLES',
+ 'GL_MAX_SAMPLES': '0x8D57',
+ 'GL_MAX_SAMPLES_EXT': 'GL_MAX_SAMPLES',
+ 'GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE': '0x8D56',
+ 'GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT':
+ 'GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE',
+ },
+ },
+ 'GL_EXT_framebuffer_blit': {
+ 'functions': [
+ 'BlitFramebufferEXT',
+ ],
+ },
+ 'GL_CHROMIUM_map_sub': {
+ 'constants': {
+ 'GL_READ_ONLY': '0x88B8',
+ 'GL_WRITE_ONLY': '0x88B9',
+ },
+ 'functions': [
+ 'MapBufferSubDataCHROMIUM',
+ 'UnmapBufferSubDataCHROMIUM',
+ 'MapTexSubImage2DCHROMIUM',
+ 'UnmapTexSubImage2DCHROMIUM',
+ ],
+ },
+ 'GL_CHROMIUM_resize': {
+ 'functions': [
+ 'ResizeCHROMIUM',
+ ],
+ },
+ 'GL_CHROMIUM_request_extension': {
+ 'functions': [
+ 'GetRequestableExtensionsCHROMIUM',
+ 'RequestExtensionCHROMIUM',
+ ],
+ },
+ 'GL_CHROMIUM_rate_limit_offscreen_context': {
+ 'functions': [
+ 'RateLimitOffscreenContextCHROMIUM',
+ ],
+ },
+ 'GL_CHROMIUM_get_multiple': {
+ 'functions': [
+ 'GetMultipleIntegervCHROMIUM',
+ 'GetProgramInfoCHROMIUM',
+ ],
+ },
+ 'GL_CHROMIUM_flipy': {
+ 'constants': {
+ 'GL_UNPACK_FLIP_Y_CHROMIUM': '0x9240',
+ },
+ },
+ 'GL_CHROMIUM_texture_compression_dxt3': {
+ 'constants': {
+ 'GL_COMPRESSED_RGBA_S3TC_DXT3_EXT': '0x83F2',
+ },
+ },
+ 'GL_CHROMIUM_texture_compression_dxt5': {
+ 'constants': {
+ 'GL_COMPRESSED_RGBA_S3TC_DXT5_EXT': '0x83F3',
+ },
+ },
+ 'GL_CHROMIUM_enable_feature': {
+ 'functions': [
+ 'EnableFeatureCHROMIUM',
+ ],
+ },
+ 'GL_CHROMIUM_post_sub_buffer': {
+ 'functions': [
+ 'PostSubBufferCHROMIUM',
+ ],
+ },
+ 'GL_CHROMIUM_front_buffer_cached': {
+ },
+ 'GL_CHROMIUM_gpu_memory_manager': {
+ 'constants': {
+ 'GL_TEXTURE_POOL_CHROMIUM': '0x6000',
+ 'GL_TEXTURE_POOL_MANAGED_CHROMIUM': '0x6001',
+ 'GL_TEXTURE_POOL_UNMANAGED_CHROMIUM': '0x6002',
+ },
+ },
+ 'GL_ARB_robustness': {
+ 'constants': {
+ 'GL_GUILTY_CONTEXT_RESET_ARB': '0x8253',
+ 'GL_INNOCENT_CONTEXT_RESET_ARB': '0x8254',
+ 'GL_UNKNOWN_CONTEXT_RESET_ARB': '0x8255',
+ },
+ },
+ 'GL_ARB_texture_rectangle': {
+ 'constants': {
+ 'GL_TEXTURE_RECTANGLE_ARB': '0x84F5',
+ 'GL_TEXTURE_BINDING_RECTANGLE_ARB': '0x84F6',
+ 'GL_SAMPLER_2D_RECT_ARB': '0x8B63',
+ },
+ },
+ 'GL_CHROMIUM_iosurface': {
+ 'functions': [
+ 'TexImageIOSurface2DCHROMIUM',
+ ],
+ },
+ 'GL_CHROMIUM_copy_texture': {
+ 'constants': {
+ 'GL_UNPACK_PREMULTIPLY_ALPHA_CHROMIUM': '0x9241',
+ 'GL_UNPACK_UNPREMULTIPLY_ALPHA_CHROMIUM': '0x9242',
+ 'GL_UNPACK_COLORSPACE_CONVERSION_CHROMIUM': '0x9243',
+ },
+ 'functions': [
+ 'CopyTextureCHROMIUM',
+ ],
+ },
+ 'GL_CHROMIUM_command_buffer_query': {
+ 'constants': {
+ # TODO(gman): Get official numbers for these constants.
+ 'GL_COMMANDS_ISSUED_CHROMIUM': '0x84F2',
+ },
+ },
+ 'GL_CHROMIUM_get_error_query': {
+ 'constants': {
+ # TODO(gman): Get official numbers for these constants.
+ 'GL_GET_ERROR_QUERY_CHROMIUM': '0x84F3',
+ },
+ },
+ 'GL_CHROMIUM_command_buffer_latency_query': {
+ 'constants': {
+ # TODO(gman): Get official numbers for these constants.
+ 'GL_LATENCY_QUERY_CHROMIUM': '0x84F4',
+ },
+ },
+ 'GL_CHROMIUM_texture_mailbox': {
+ 'constants': {
+ 'GL_MAILBOX_SIZE_CHROMIUM': '64',
+ },
+ 'functions': [
+ 'GenMailboxCHROMIUM',
+ 'ProduceTextureCHROMIUM',
+ 'ConsumeTextureCHROMIUM',
+ ],
+ },
+ 'GL_CHROMIUM_bind_uniform_location': {
+ 'functions': [
+ 'BindUniformLocationCHROMIUM',
+ ],
+ },
+ 'GL_CHROMIUM_texture_from_image': {
+ 'functions': [
+ 'BindTexImage2DCHROMIUM',
+ 'ReleaseTexImage2DCHROMIUM',
+ ],
+ },
+ 'GL_CHROMIUM_pixel_transfer_buffer_object': {
+ 'constants': {
+ # TODO(reveman): Get official numbers for these constants.
+ 'GL_PIXEL_UNPACK_TRANSFER_BUFFER_CHROMIUM': '0x88EC',
+ 'GL_PIXEL_UNPACK_TRANSFER_BUFFER_BINDING_CHROMIUM': '0x88EF',
+ },
+ },
+ 'GL_CHROMIUM_async_pixel_transfers': {
+ 'constants': {
+ # TODO(reveman): Get official numbers for these constants.
+ 'GL_ASYNC_PIXEL_TRANSFERS_COMPLETED_CHROMIUM': '0x84F5',
+ },
+ },
+ 'GL_CHROMIUM_lose_context': {
+ 'functions': [
+ 'LoseContextCHROMIUM',
+ ],
+ },
+}
+
+
def Grouper(n, iterable, fillvalue=None):
"""Collect data into fixed-length chunks or blocks"""
args = [iter(iterable)] * n
@@ -7081,11 +7272,17 @@ void GLES2DecoderTestBase::SetupInitStateExpectations() {
"""Writes the GLES2 header."""
file = CHeaderWriter(
filename,
- "// Because we are using both the real system GL and our own.\n"
- "// emulated GL we need to use different names to avoid conflicts.\n"
- "\n")
+ "// This file contains Chromium-specific GLES2 declarations.\n\n")
+
+ file.Write("#include <GLES2/gl2platform.h>\n")
- file.Write("""#if defined(GLES2_USE_CPP_BINDINGS)
+ for name, value in _CHROMIUM_SPECIFIC_CONSTANTS.iteritems():
+ file.Write("#define %s %s\n" % (name, value))
+
+ file.Write("""
+// Because we are using both the real system GL and our own
+// emulated GL we need to use different names to avoid conflicts.
+#if defined(GLES2_USE_CPP_BINDINGS)
#define GLES2_GET_FUN(name) gles2::GetGLContext()->name
#else
#define GLES2_GET_FUN(name) GLES2 ## name
@@ -7099,6 +7296,62 @@ void GLES2DecoderTestBase::SetupInitStateExpectations() {
file.Write("\n")
file.Close()
+ def WriteGLES2ExtHeader(self, filename):
+ """Writes the GLES2 extensions header."""
+ file = CHeaderWriter(
+ filename,
+ "// This file contains Chromium-specific "
+ "GLES2 extensions declarations.\n\n")
+
+ file.Write("#include <GLES2/gl2chromium.h>\n")
+ file.Write("""#ifdef __cplusplus
+extern "C" {
+#endif
+""")
+
+ for ext_name, ext_dict in _CHROMIUM_SPECIFIC_EXTENSIONS.iteritems():
+ file.Write("""
+/* %(name)s */
+#ifndef %(name)s
+#define %(name)s 1
+""" % {'name' : ext_name})
+ for name, value in ext_dict.get('constants', {}).iteritems():
+ file.Write("""
+#ifndef %(name)s
+#define %(name)s %(value)s
+#endif
+""" % {'name': name, 'value': value})
+
+ for name in ext_dict.get('functions', []):
+ found = False
+ for function in self.original_functions:
+ if function.name != name:
+ continue
+ file.Write("#ifdef GL_GLEXT_PROTOTYPES\n")
+ file.Write("GL_APICALL %s GL_APIENTRY gl%s(%s);\n" % (
+ function.return_type,
+ function.name,
+ function.MakeTypedOriginalArgString(prefix='')))
+ file.Write("#endif\n")
+ file.Write("typedef %s (GL_APIENTRYP %s) (%s);\n" % (
+ function.return_type,
+ 'PFNGL%sPROC' % function.name.upper(),
+ function.MakeTypedOriginalArgString(prefix='')))
+ found = True
+ break
+ if not found:
+ self.Error("Function '%s' not found." % name)
+
+ file.Write("#endif /* %s */\n" % ext_name)
+
+ file.Write("""#ifdef __cplusplus
+}
+#endif
+""")
+
+ file.Write("\n")
+ file.Close()
+
def WriteGLES2CLibImplementation(self, filename):
"""Writes the GLES2 c lib implementation."""
file = CHeaderWriter(
@@ -7240,7 +7493,9 @@ NameToFunc g_gles2_function_table[] = {
enum_re = re.compile(r'\#define\s+(GL_[a-zA-Z0-9_]+)\s+([0-9A-Fa-fx]+)')
dict = {}
for fname in ['../../third_party/khronos/GLES2/gl2.h',
- '../../third_party/khronos/GLES2/gl2ext.h']:
+ '../../third_party/khronos/GLES2/gl2ext.h',
+ '../../gpu/GLES2/gl2chromium.h',
+ '../../gpu/GLES2/gl2extchromium.h']:
lines = open(fname).readlines()
for line in lines:
m = enum_re.match(line)
@@ -7578,6 +7833,7 @@ def main(argv):
gen.WriteCommonUtilsHeader("common/gles2_cmd_utils_autogen.h")
gen.WriteCommonUtilsImpl("common/gles2_cmd_utils_implementation_autogen.h")
gen.WriteGLES2Header("../GLES2/gl2chromium.h")
+ gen.WriteGLES2ExtHeader("../GLES2/gl2extchromium.h")
if gen.errors > 0:
print "%d errors" % gen.errors