Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(10960)

Unified Diff: gpu/command_buffer/build_gles2_cmd_buffer.py

Issue 1265023002: Refactor gpu code generation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@python-pep8-file
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gpu/command_buffer/build_gles2_cmd_buffer.py
diff --git a/gpu/command_buffer/build_gles2_cmd_buffer.py b/gpu/command_buffer/build_gles2_cmd_buffer.py
index 4ee3d8e9b4308e9263b58b1de4cba66d777d5973..f1f2012f9d39d12980e930f3d3760aeb87794c47 100755
--- a/gpu/command_buffer/build_gles2_cmd_buffer.py
+++ b/gpu/command_buffer/build_gles2_cmd_buffer.py
@@ -4244,65 +4244,61 @@ def GetGLGetTypeConversion(result_type, value_type, value):
return 'static_cast<GLint>(round(%s))' % value
return 'static_cast<%s>(%s)' % (result_type, value)
+
class CWriter(object):
- """Writes to a file formatting it for Google's style guidelines."""
+ """Context manager that creates a C source file.
+
+ To be used with the `with` statement. Returns a normal `file` type, open only
+ for writing - any existing files with that name will be overwritten. It will
+ automatically write the contents of `_LICENSE` and `_DO_NOT_EDIT_WARNING`
+ at the beginning.
+ Example:
+ with CWriter("file.cpp") as myfile:
+ myfile.write("hello")
+ # type(myfile) == file
+ """
def __init__(self, filename):
self.filename = filename
- self.content = []
-
- def write(self, string):
- """Writes a string to a file spliting if it's > 80 characters."""
- lines = string.splitlines()
- num_lines = len(lines)
- for ii in range(0, num_lines):
- self.content.append(lines[ii])
- if ii < (num_lines - 1) or string[-1] == '\n':
- self.content.append('\n')
-
- def close(self):
- """Close the file."""
- content = "".join(self.content)
- write_file = True
- if os.path.exists(self.filename):
- old_file = open(self.filename, "rb");
- old_content = old_file.read()
- old_file.close();
- if content == old_content:
- write_file = False
- if write_file:
- f = open(self.filename, "wb")
- f.write(content)
- f.close()
+ self._file = open(filename, 'w')
+ self._ENTER_MSG = _LICENSE + _DO_NOT_EDIT_WARNING
+ self._EXIT_MSG = ""
+ def __enter__(self):
+ self._file.write(self._ENTER_MSG)
+ return self._file
-class CHeaderWriter(CWriter):
- """Writes a C Header file."""
+ def __exit__(self, exc_type, exc_value, traceback):
+ self._file.write(self._EXIT_MSG)
+ self._file.close()
- _non_alnum_re = re.compile(r'[^a-zA-Z0-9]')
- def __init__(self, filename, file_comment = None):
- CWriter.__init__(self, filename)
+class CHeaderWriter(CWriter):
+ """Context manager that creates a C header file.
- base = os.path.abspath(filename)
+ Works the same way as CWriter, except it will also add the #ifdef guard
+ around it. If `file_comment` is set, it will write that before the #ifdef
+ guard.
+ """
+ def __init__(self, filename, file_comment=None):
+ super(CHeaderWriter, self).__init__(filename)
+ guard = self._get_guard()
+ if file_comment is None:
+ file_comment = ""
+ self._ENTER_MSG = self._ENTER_MSG + file_comment \
+ + "#ifndef %s\n#define %s\n\n" % (guard, guard)
+ self._EXIT_MSG = self._EXIT_MSG + "#endif // %s\n" % guard
+
+ def _get_guard(self):
+ non_alnum_re = re.compile(r'[^a-zA-Z0-9]')
+ base = os.path.abspath(self.filename)
while os.path.basename(base) != 'src':
new_base = os.path.dirname(base)
assert new_base != base # Prevent infinite loop.
base = new_base
+ hpath = os.path.relpath(self.filename, base)
+ return non_alnum_re.sub('_', hpath).upper() + '_'
- hpath = os.path.relpath(filename, base)
- self.guard = self._non_alnum_re.sub('_', hpath).upper() + '_'
-
- self.write(_LICENSE)
- self.write(_DO_NOT_EDIT_WARNING)
- if not file_comment == None:
- self.write(file_comment)
- self.write("#ifndef %s\n" % self.guard)
- self.write("#define %s\n\n" % self.guard)
-
- def close(self):
- self.write("#endif // %s\n\n" % self.guard)
- CWriter.close(self)
class TypeHandler(object):
"""This class emits code for a particular type of function."""
@@ -9898,9 +9894,8 @@ class GLGenerator(object):
def ParseGLH(self, filename):
"""Parses the cmd_buffer_functions.txt file and extracts the functions"""
- f = open(filename, "r")
- functions = f.read()
- f.close()
+ with open(filename, "r") as f:
+ functions = f.read()
for line in functions.splitlines():
match = self._function_re.match(line)
if match:
@@ -9953,165 +9948,147 @@ class GLGenerator(object):
def WriteCommandIds(self, filename):
"""Writes the command buffer format"""
- f = CHeaderWriter(filename)
- f.write("#define GLES2_COMMAND_LIST(OP) \\\n")
- id = 256
- for func in self.functions:
- f.write(" %-60s /* %d */ \\\n" %
- ("OP(%s)" % func.name, id))
- id += 1
- f.write("\n")
+ with CHeaderWriter(filename) as f:
+ f.write("#define GLES2_COMMAND_LIST(OP) \\\n")
+ id = 256
+ for func in self.functions:
+ f.write(" %-60s /* %d */ \\\n" %
+ ("OP(%s)" % func.name, id))
+ id += 1
+ f.write("\n")
- f.write("enum CommandId {\n")
- f.write(" kStartPoint = cmd::kLastCommonId, "
- "// All GLES2 commands start after this.\n")
- f.write("#define GLES2_CMD_OP(name) k ## name,\n")
- f.write(" GLES2_COMMAND_LIST(GLES2_CMD_OP)\n")
- f.write("#undef GLES2_CMD_OP\n")
- f.write(" kNumCommands\n")
- f.write("};\n")
- f.write("\n")
- f.close()
- self.generated_cpp_filenames.append(f.filename)
+ f.write("enum CommandId {\n")
+ f.write(" kStartPoint = cmd::kLastCommonId, "
+ "// All GLES2 commands start after this.\n")
+ f.write("#define GLES2_CMD_OP(name) k ## name,\n")
+ f.write(" GLES2_COMMAND_LIST(GLES2_CMD_OP)\n")
+ f.write("#undef GLES2_CMD_OP\n")
+ f.write(" kNumCommands\n")
+ f.write("};\n")
+ f.write("\n")
+ self.generated_cpp_filenames.append(filename)
def WriteFormat(self, filename):
"""Writes the command buffer format"""
- f = CHeaderWriter(filename)
- # Forward declaration of a few enums used in constant argument
- # to avoid including GL header files.
- enum_defines = {
- 'GL_SYNC_GPU_COMMANDS_COMPLETE': '0x9117',
- 'GL_SYNC_FLUSH_COMMANDS_BIT': '0x00000001',
- }
- f.write('\n')
- for enum in enum_defines:
- f.write("#define %s %s\n" % (enum, enum_defines[enum]))
- f.write('\n')
- for func in self.functions:
- if True:
- #gen_cmd = func.GetInfo('gen_cmd')
- #if gen_cmd == True or gen_cmd == None:
- func.WriteStruct(f)
- f.write("\n")
- f.close()
- self.generated_cpp_filenames.append(f.filename)
+ with CHeaderWriter(filename) as f:
+ # Forward declaration of a few enums used in constant argument
+ # to avoid including GL header files.
+ enum_defines = {
+ 'GL_SYNC_GPU_COMMANDS_COMPLETE': '0x9117',
+ 'GL_SYNC_FLUSH_COMMANDS_BIT': '0x00000001',
+ }
+ f.write('\n')
+ for enum in enum_defines:
+ f.write("#define %s %s\n" % (enum, enum_defines[enum]))
+ f.write('\n')
+ for func in self.functions:
+ if True:
+ #gen_cmd = func.GetInfo('gen_cmd')
+ #if gen_cmd == True or gen_cmd == None:
+ func.WriteStruct(f)
+ f.write("\n")
+ self.generated_cpp_filenames.append(filename)
def WriteDocs(self, filename):
"""Writes the command buffer doc version of the commands"""
- f = CWriter(filename)
- for func in self.functions:
- if True:
- #gen_cmd = func.GetInfo('gen_cmd')
- #if gen_cmd == True or gen_cmd == None:
- func.WriteDocs(f)
- f.write("\n")
- f.close()
- self.generated_cpp_filenames.append(f.filename)
+ with CHeaderWriter(filename) as f:
+ for func in self.functions:
+ if True:
+ #gen_cmd = func.GetInfo('gen_cmd')
+ #if gen_cmd == True or gen_cmd == None:
+ func.WriteDocs(f)
+ f.write("\n")
+ self.generated_cpp_filenames.append(filename)
def WriteFormatTest(self, filename):
"""Writes the command buffer format test."""
- f = CHeaderWriter(
- filename,
- "// This file contains unit tests for gles2 commmands\n"
- "// It is included by gles2_cmd_format_test.cc\n"
- "\n")
-
- for func in self.functions:
- if True:
- #gen_cmd = func.GetInfo('gen_cmd')
- #if gen_cmd == True or gen_cmd == None:
- func.WriteFormatTest(f)
-
- f.close()
- self.generated_cpp_filenames.append(f.filename)
+ comment = ("// This file contains unit tests for gles2 commmands\n"
+ "// It is included by gles2_cmd_format_test.cc\n\n")
+ with CHeaderWriter(filename, comment) as f:
+ for func in self.functions:
+ if True:
+ #gen_cmd = func.GetInfo('gen_cmd')
+ #if gen_cmd == True or gen_cmd == None:
+ func.WriteFormatTest(f)
+ self.generated_cpp_filenames.append(filename)
def WriteCmdHelperHeader(self, filename):
"""Writes the gles2 command helper."""
- f = CHeaderWriter(filename)
-
- for func in self.functions:
- if True:
- #gen_cmd = func.GetInfo('gen_cmd')
- #if gen_cmd == True or gen_cmd == None:
- func.WriteCmdHelper(f)
-
- f.close()
- self.generated_cpp_filenames.append(f.filename)
+ with CHeaderWriter(filename) as f:
+ for func in self.functions:
+ if True:
+ #gen_cmd = func.GetInfo('gen_cmd')
+ #if gen_cmd == True or gen_cmd == None:
+ func.WriteCmdHelper(f)
+ self.generated_cpp_filenames.append(filename)
def WriteServiceContextStateHeader(self, filename):
"""Writes the service context state header."""
- f = CHeaderWriter(
- filename,
- "// It is included by context_state.h\n")
- f.write("struct EnableFlags {\n")
- f.write(" EnableFlags();\n")
- for capability in _CAPABILITY_FLAGS:
- f.write(" bool %s;\n" % capability['name'])
- f.write(" bool cached_%s;\n" % capability['name'])
- f.write("};\n\n")
-
- for state_name in sorted(_STATES.keys()):
- state = _STATES[state_name]
- for item in state['states']:
- if isinstance(item['default'], list):
- f.write("%s %s[%d];\n" % (item['type'], item['name'],
- len(item['default'])))
- else:
- f.write("%s %s;\n" % (item['type'], item['name']))
+ comment = "// It is included by context_state.h\n"
+ with CHeaderWriter(filename, comment) as f:
+ f.write("struct EnableFlags {\n")
+ f.write(" EnableFlags();\n")
+ for capability in _CAPABILITY_FLAGS:
+ f.write(" bool %s;\n" % capability['name'])
+ f.write(" bool cached_%s;\n" % capability['name'])
+ f.write("};\n\n")
- if item.get('cached', False):
+ for state_name in sorted(_STATES.keys()):
+ state = _STATES[state_name]
+ for item in state['states']:
if isinstance(item['default'], list):
- f.write("%s cached_%s[%d];\n" % (item['type'], item['name'],
- len(item['default'])))
+ f.write("%s %s[%d];\n" % (item['type'], item['name'],
+ len(item['default'])))
else:
- f.write("%s cached_%s;\n" % (item['type'], item['name']))
+ f.write("%s %s;\n" % (item['type'], item['name']))
- f.write("\n")
+ if item.get('cached', False):
+ if isinstance(item['default'], list):
+ f.write("%s cached_%s[%d];\n" % (item['type'], item['name'],
+ len(item['default'])))
+ else:
+ f.write("%s cached_%s;\n" % (item['type'], item['name']))
+
+ f.write("\n")
+ f.write("""
+ inline void SetDeviceCapabilityState(GLenum cap, bool enable) {
+ switch (cap) {
+ """)
+ for capability in _CAPABILITY_FLAGS:
+ f.write("""\
+ case GL_%s:
+ """ % capability['name'].upper())
+ f.write("""\
+ if (enable_flags.cached_%(name)s == enable &&
+ !ignore_cached_state)
+ return;
+ enable_flags.cached_%(name)s = enable;
+ break;
+ """ % capability)
- f.write("""
- inline void SetDeviceCapabilityState(GLenum cap, bool enable) {
- switch (cap) {
- """)
- for capability in _CAPABILITY_FLAGS:
- f.write("""\
- case GL_%s:
- """ % capability['name'].upper())
f.write("""\
- if (enable_flags.cached_%(name)s == enable &&
- !ignore_cached_state)
+ default:
+ NOTREACHED();
return;
- enable_flags.cached_%(name)s = enable;
- break;
- """ % capability)
-
- f.write("""\
- default:
- NOTREACHED();
- return;
+ }
+ if (enable)
+ glEnable(cap);
+ else
+ glDisable(cap);
}
- if (enable)
- glEnable(cap);
- else
- glDisable(cap);
- }
- """)
-
- f.close()
- self.generated_cpp_filenames.append(f.filename)
+ """)
+ self.generated_cpp_filenames.append(filename)
def WriteClientContextStateHeader(self, filename):
"""Writes the client context state header."""
- f = CHeaderWriter(
- filename,
- "// It is included by client_context_state.h\n")
- f.write("struct EnableFlags {\n")
- f.write(" EnableFlags();\n")
- for capability in _CAPABILITY_FLAGS:
- f.write(" bool %s;\n" % capability['name'])
- f.write("};\n\n")
-
- f.close()
- self.generated_cpp_filenames.append(f.filename)
+ comment = "// It is included by client_context_state.h\n"
+ with CHeaderWriter(filename, comment) as f:
+ f.write("struct EnableFlags {\n")
+ f.write(" EnableFlags();\n")
+ for capability in _CAPABILITY_FLAGS:
+ f.write(" bool %s;\n" % capability['name'])
+ f.write("};\n\n")
+ self.generated_cpp_filenames.append(filename)
def WriteContextStateGetters(self, f, class_name):
"""Writes the state getters."""
@@ -10174,394 +10151,384 @@ bool %s::GetStateAs%s(
def WriteServiceContextStateImpl(self, filename):
"""Writes the context state service implementation."""
- f = CHeaderWriter(
- filename,
- "// It is included by context_state.cc\n")
- code = []
- for capability in _CAPABILITY_FLAGS:
- code.append("%s(%s)" %
- (capability['name'],
- ('false', 'true')['default' in capability]))
- code.append("cached_%s(%s)" %
- (capability['name'],
- ('false', 'true')['default' in capability]))
- f.write("ContextState::EnableFlags::EnableFlags()\n : %s {\n}\n" %
- ",\n ".join(code))
- f.write("\n")
+ comment = "// It is included by context_state.cc\n"
+ with CHeaderWriter(filename, comment) as f:
+ code = []
+ for capability in _CAPABILITY_FLAGS:
+ code.append("%s(%s)" %
+ (capability['name'],
+ ('false', 'true')['default' in capability]))
+ code.append("cached_%s(%s)" %
+ (capability['name'],
+ ('false', 'true')['default' in capability]))
+ f.write("ContextState::EnableFlags::EnableFlags()\n : %s {\n}\n" %
+ ",\n ".join(code))
+ f.write("\n")
- f.write("void ContextState::Initialize() {\n")
- for state_name in sorted(_STATES.keys()):
- state = _STATES[state_name]
- for item in state['states']:
- if isinstance(item['default'], list):
- for ndx, value in enumerate(item['default']):
- f.write(" %s[%d] = %s;\n" % (item['name'], ndx, value))
- else:
- f.write(" %s = %s;\n" % (item['name'], item['default']))
- if item.get('cached', False):
+ f.write("void ContextState::Initialize() {\n")
+ for state_name in sorted(_STATES.keys()):
+ state = _STATES[state_name]
+ for item in state['states']:
if isinstance(item['default'], list):
for ndx, value in enumerate(item['default']):
- f.write(" cached_%s[%d] = %s;\n" % (item['name'], ndx, value))
+ f.write(" %s[%d] = %s;\n" % (item['name'], ndx, value))
else:
- f.write(" cached_%s = %s;\n" % (item['name'], item['default']))
- f.write("}\n")
+ f.write(" %s = %s;\n" % (item['name'], item['default']))
+ if item.get('cached', False):
+ if isinstance(item['default'], list):
+ for ndx, value in enumerate(item['default']):
+ f.write(" cached_%s[%d] = %s;\n" % (item['name'], ndx, value))
+ else:
+ f.write(" cached_%s = %s;\n" % (item['name'], item['default']))
+ f.write("}\n")
- f.write("""
+ f.write("""
void ContextState::InitCapabilities(const ContextState* prev_state) const {
""")
- def WriteCapabilities(test_prev, es3_caps):
- for capability in _CAPABILITY_FLAGS:
- capability_name = capability['name']
- capability_es3 = 'es3' in capability and capability['es3'] == True
- if capability_es3 and not es3_caps or not capability_es3 and es3_caps:
- continue
- if test_prev:
- f.write(""" if (prev_state->enable_flags.cached_%s !=
- enable_flags.cached_%s) {\n""" %
- (capability_name, capability_name))
- f.write(" EnableDisable(GL_%s, enable_flags.cached_%s);\n" %
- (capability_name.upper(), capability_name))
- if test_prev:
- f.write(" }")
-
- f.write(" if (prev_state) {")
- WriteCapabilities(True, False)
- f.write(" if (feature_info_->IsES3Capable()) {\n")
- WriteCapabilities(True, True)
- f.write(" }\n")
- f.write(" } else {")
- WriteCapabilities(False, False)
- f.write(" if (feature_info_->IsES3Capable()) {\n")
- WriteCapabilities(False, True)
- f.write(" }\n")
- f.write(" }")
-
- f.write("""}
+ def WriteCapabilities(test_prev, es3_caps):
+ for capability in _CAPABILITY_FLAGS:
+ capability_name = capability['name']
+ capability_es3 = 'es3' in capability and capability['es3'] == True
+ if capability_es3 and not es3_caps or not capability_es3 and es3_caps:
+ continue
+ if test_prev:
+ f.write(""" if (prev_state->enable_flags.cached_%s !=
+ enable_flags.cached_%s) {\n""" %
+ (capability_name, capability_name))
+ f.write(" EnableDisable(GL_%s, enable_flags.cached_%s);\n" %
+ (capability_name.upper(), capability_name))
+ if test_prev:
+ f.write(" }")
+
+ f.write(" if (prev_state) {")
+ WriteCapabilities(True, False)
+ f.write(" if (feature_info_->IsES3Capable()) {\n")
+ WriteCapabilities(True, True)
+ f.write(" }\n")
+ f.write(" } else {")
+ WriteCapabilities(False, False)
+ f.write(" if (feature_info_->IsES3Capable()) {\n")
+ WriteCapabilities(False, True)
+ f.write(" }\n")
+ f.write(" }")
+ f.write("""}
void ContextState::InitState(const ContextState *prev_state) const {
""")
- def WriteStates(test_prev):
- # We need to sort the keys so the expectations match
- for state_name in sorted(_STATES.keys()):
- state = _STATES[state_name]
- if state['type'] == 'FrontBack':
- num_states = len(state['states'])
- for ndx, group in enumerate(Grouper(num_states / 2, state['states'])):
+ def WriteStates(test_prev):
+ # We need to sort the keys so the expectations match
+ for state_name in sorted(_STATES.keys()):
+ state = _STATES[state_name]
+ if state['type'] == 'FrontBack':
+ num_states = len(state['states'])
+ for ndx, group in enumerate(Grouper(num_states / 2,
+ state['states'])):
+ if test_prev:
+ f.write(" if (")
+ args = []
+ for place, item in enumerate(group):
+ item_name = CachedStateName(item)
+ args.append('%s' % item_name)
+ if test_prev:
+ if place > 0:
+ f.write(' ||\n')
+ f.write("(%s != prev_state->%s)" % (item_name, item_name))
+ if test_prev:
+ f.write(")\n")
+ f.write(
+ " gl%s(%s, %s);\n" %
+ (state['func'], ('GL_FRONT', 'GL_BACK')[ndx],
+ ", ".join(args)))
+ elif state['type'] == 'NamedParameter':
+ for item in state['states']:
+ item_name = CachedStateName(item)
+
+ if 'extension_flag' in item:
+ f.write(" if (feature_info_->feature_flags().%s) {\n " %
+ item['extension_flag'])
+ if test_prev:
+ if isinstance(item['default'], list):
+ f.write(" if (memcmp(prev_state->%s, %s, "
+ "sizeof(%s) * %d)) {\n" %
+ (item_name, item_name, item['type'],
+ len(item['default'])))
+ else:
+ f.write(" if (prev_state->%s != %s) {\n " %
+ (item_name, item_name))
+ if 'gl_version_flag' in item:
+ item_name = item['gl_version_flag']
+ inverted = ''
+ if item_name[0] == '!':
+ inverted = '!'
+ item_name = item_name[1:]
+ f.write(" if (%sfeature_info_->gl_version_info().%s) {\n" %
+ (inverted, item_name))
+ f.write(" gl%s(%s, %s);\n" %
+ (state['func'],
+ (item['enum_set']
+ if 'enum_set' in item else item['enum']),
+ item['name']))
+ if 'gl_version_flag' in item:
+ f.write(" }\n")
+ if test_prev:
+ if 'extension_flag' in item:
+ f.write(" ")
+ f.write(" }")
+ if 'extension_flag' in item:
+ f.write(" }")
+ else:
+ if 'extension_flag' in state:
+ f.write(" if (feature_info_->feature_flags().%s)\n " %
+ state['extension_flag'])
if test_prev:
f.write(" if (")
args = []
- for place, item in enumerate(group):
+ for place, item in enumerate(state['states']):
item_name = CachedStateName(item)
args.append('%s' % item_name)
if test_prev:
if place > 0:
f.write(' ||\n')
- f.write("(%s != prev_state->%s)" % (item_name, item_name))
- if test_prev:
- f.write(")\n")
- f.write(
- " gl%s(%s, %s);\n" %
- (state['func'], ('GL_FRONT', 'GL_BACK')[ndx], ", ".join(args)))
- elif state['type'] == 'NamedParameter':
- for item in state['states']:
- item_name = CachedStateName(item)
-
- if 'extension_flag' in item:
- f.write(" if (feature_info_->feature_flags().%s) {\n " %
- item['extension_flag'])
- if test_prev:
- if isinstance(item['default'], list):
- f.write(" if (memcmp(prev_state->%s, %s, "
- "sizeof(%s) * %d)) {\n" %
- (item_name, item_name, item['type'],
- len(item['default'])))
- else:
- f.write(" if (prev_state->%s != %s) {\n " %
+ f.write("(%s != prev_state->%s)" %
(item_name, item_name))
- if 'gl_version_flag' in item:
- item_name = item['gl_version_flag']
- inverted = ''
- if item_name[0] == '!':
- inverted = '!'
- item_name = item_name[1:]
- f.write(" if (%sfeature_info_->gl_version_info().%s) {\n" %
- (inverted, item_name))
- f.write(" gl%s(%s, %s);\n" %
- (state['func'],
- (item['enum_set']
- if 'enum_set' in item else item['enum']),
- item['name']))
- if 'gl_version_flag' in item:
- f.write(" }\n")
if test_prev:
- if 'extension_flag' in item:
- f.write(" ")
- f.write(" }")
- if 'extension_flag' in item:
- f.write(" }")
- else:
- if 'extension_flag' in state:
- f.write(" if (feature_info_->feature_flags().%s)\n " %
- state['extension_flag'])
- if test_prev:
- f.write(" if (")
- args = []
- for place, item in enumerate(state['states']):
- item_name = CachedStateName(item)
- args.append('%s' % item_name)
- if test_prev:
- if place > 0:
- f.write(' ||\n')
- f.write("(%s != prev_state->%s)" %
- (item_name, item_name))
- if test_prev:
- f.write(" )\n")
- f.write(" gl%s(%s);\n" % (state['func'], ", ".join(args)))
-
- f.write(" if (prev_state) {")
- WriteStates(True)
- f.write(" } else {")
- WriteStates(False)
- f.write(" }")
- f.write("}\n")
+ f.write(" )\n")
+ f.write(" gl%s(%s);\n" % (state['func'], ", ".join(args)))
- f.write("""bool ContextState::GetEnabled(GLenum cap) const {
+ f.write(" if (prev_state) {")
+ WriteStates(True)
+ f.write(" } else {")
+ WriteStates(False)
+ f.write(" }")
+ f.write("}\n")
+
+ f.write("""bool ContextState::GetEnabled(GLenum cap) const {
switch (cap) {
""")
- for capability in _CAPABILITY_FLAGS:
- f.write(" case GL_%s:\n" % capability['name'].upper())
- f.write(" return enable_flags.%s;\n" % capability['name'])
- f.write(""" default:
+ for capability in _CAPABILITY_FLAGS:
+ f.write(" case GL_%s:\n" % capability['name'].upper())
+ f.write(" return enable_flags.%s;\n" % capability['name'])
+ f.write(""" default:
NOTREACHED();
return false;
}
}
""")
-
- self.WriteContextStateGetters(f, "ContextState")
- f.close()
- self.generated_cpp_filenames.append(f.filename)
+ self.WriteContextStateGetters(f, "ContextState")
+ self.generated_cpp_filenames.append(filename)
def WriteClientContextStateImpl(self, filename):
"""Writes the context state client side implementation."""
- f = CHeaderWriter(
- filename,
- "// It is included by client_context_state.cc\n")
- code = []
- for capability in _CAPABILITY_FLAGS:
- code.append("%s(%s)" %
- (capability['name'],
- ('false', 'true')['default' in capability]))
- f.write(
- "ClientContextState::EnableFlags::EnableFlags()\n : %s {\n}\n" %
- ",\n ".join(code))
- f.write("\n")
+ comment = "// It is included by client_context_state.cc\n"
+ with CHeaderWriter(filename, comment) as f:
+ code = []
+ for capability in _CAPABILITY_FLAGS:
+ code.append("%s(%s)" %
+ (capability['name'],
+ ('false', 'true')['default' in capability]))
+ f.write(
+ "ClientContextState::EnableFlags::EnableFlags()\n : %s {\n}\n" %
+ ",\n ".join(code))
+ f.write("\n")
- f.write("""
+ f.write("""
bool ClientContextState::SetCapabilityState(
GLenum cap, bool enabled, bool* changed) {
*changed = false;
switch (cap) {
""")
- for capability in _CAPABILITY_FLAGS:
- f.write(" case GL_%s:\n" % capability['name'].upper())
- f.write(""" if (enable_flags.%(name)s != enabled) {
+ for capability in _CAPABILITY_FLAGS:
+ f.write(" case GL_%s:\n" % capability['name'].upper())
+ f.write(""" if (enable_flags.%(name)s != enabled) {
*changed = true;
enable_flags.%(name)s = enabled;
}
return true;
""" % capability)
- f.write(""" default:
+ f.write(""" default:
return false;
}
}
""")
- f.write("""bool ClientContextState::GetEnabled(
+ f.write("""bool ClientContextState::GetEnabled(
GLenum cap, bool* enabled) const {
switch (cap) {
""")
- for capability in _CAPABILITY_FLAGS:
- f.write(" case GL_%s:\n" % capability['name'].upper())
- f.write(" *enabled = enable_flags.%s;\n" % capability['name'])
- f.write(" return true;\n")
- f.write(""" default:
+ for capability in _CAPABILITY_FLAGS:
+ f.write(" case GL_%s:\n" % capability['name'].upper())
+ f.write(" *enabled = enable_flags.%s;\n" % capability['name'])
+ f.write(" return true;\n")
+ f.write(""" default:
return false;
}
}
""")
- f.close()
- self.generated_cpp_filenames.append(f.filename)
+ self.generated_cpp_filenames.append(filename)
def WriteServiceImplementation(self, filename):
"""Writes the service decorder implementation."""
- f = CHeaderWriter(
- filename,
- "// It is included by gles2_cmd_decoder.cc\n")
-
- for func in self.functions:
- if True:
- #gen_cmd = func.GetInfo('gen_cmd')
- #if gen_cmd == True or gen_cmd == None:
- func.WriteServiceImplementation(f)
+ comment = "// It is included by gles2_cmd_decoder.cc\n"
+ with CHeaderWriter(filename, comment) as f:
+ for func in self.functions:
+ if True:
+ #gen_cmd = func.GetInfo('gen_cmd')
+ #if gen_cmd == True or gen_cmd == None:
+ func.WriteServiceImplementation(f)
- f.write("""
+ f.write("""
bool GLES2DecoderImpl::SetCapabilityState(GLenum cap, bool enabled) {
switch (cap) {
""")
- for capability in _CAPABILITY_FLAGS:
- f.write(" case GL_%s:\n" % capability['name'].upper())
- if 'state_flag' in capability:
-
- f.write("""\
- state_.enable_flags.%(name)s = enabled;
- if (state_.enable_flags.cached_%(name)s != enabled
- || state_.ignore_cached_state) {
- %(state_flag)s = true;
- }
- return false;
- """ % capability)
- else:
- f.write("""\
- state_.enable_flags.%(name)s = enabled;
- if (state_.enable_flags.cached_%(name)s != enabled
- || state_.ignore_cached_state) {
- state_.enable_flags.cached_%(name)s = enabled;
- return true;
- }
- return false;
- """ % capability)
- f.write(""" default:
+ for capability in _CAPABILITY_FLAGS:
+ f.write(" case GL_%s:\n" % capability['name'].upper())
+ if 'state_flag' in capability:
+
+ f.write("""\
+ state_.enable_flags.%(name)s = enabled;
+ if (state_.enable_flags.cached_%(name)s != enabled
+ || state_.ignore_cached_state) {
+ %(state_flag)s = true;
+ }
+ return false;
+ """ % capability)
+ else:
+ f.write("""\
+ state_.enable_flags.%(name)s = enabled;
+ if (state_.enable_flags.cached_%(name)s != enabled
+ || state_.ignore_cached_state) {
+ state_.enable_flags.cached_%(name)s = enabled;
+ return true;
+ }
+ return false;
+ """ % capability)
+ f.write(""" default:
NOTREACHED();
return false;
}
}
""")
- f.close()
- self.generated_cpp_filenames.append(f.filename)
+ self.generated_cpp_filenames.append(filename)
- def WriteServiceUnitTests(self, filename):
+ def WriteServiceUnitTests(self, filename_pattern):
"""Writes the service decorder unit tests."""
num_tests = len(self.functions)
FUNCTIONS_PER_FILE = 98 # hard code this so it doesn't change.
count = 0
for test_num in range(0, num_tests, FUNCTIONS_PER_FILE):
count += 1
- name = filename % count
- f = CHeaderWriter(
- name,
- "// It is included by gles2_cmd_decoder_unittest_%d.cc\n" % count)
- test_name = 'GLES2DecoderTest%d' % count
- end = test_num + FUNCTIONS_PER_FILE
- if end > num_tests:
- end = num_tests
- for idx in range(test_num, end):
- func = self.functions[idx]
-
- # Do any filtering of the functions here, so that the functions
- # will not move between the numbered files if filtering properties
- # are changed.
- if func.GetInfo('extension_flag'):
- continue
+ filename = filename_pattern % count
+ comment = "// It is included by gles2_cmd_decoder_unittest_%d.cc\n" \
+ % count
+ with CHeaderWriter(filename, comment) as f:
+ test_name = 'GLES2DecoderTest%d' % count
+ end = test_num + FUNCTIONS_PER_FILE
+ if end > num_tests:
+ end = num_tests
+ for idx in range(test_num, end):
+ func = self.functions[idx]
+
+ # Do any filtering of the functions here, so that the functions
+ # will not move between the numbered files if filtering properties
+ # are changed.
+ if func.GetInfo('extension_flag'):
+ continue
- if True:
- #gen_cmd = func.GetInfo('gen_cmd')
- #if gen_cmd == True or gen_cmd == None:
- if func.GetInfo('unit_test') == False:
- f.write("// TODO(gman): %s\n" % func.name)
- else:
- func.WriteServiceUnitTest(f, {
- 'test_name': test_name
- })
- f.close()
- self.generated_cpp_filenames.append(f.filename)
- f = CHeaderWriter(
- filename % 0,
- "// It is included by gles2_cmd_decoder_unittest_base.cc\n")
- f.write(
+ if True:
+ #gen_cmd = func.GetInfo('gen_cmd')
+ #if gen_cmd == True or gen_cmd == None:
+ if func.GetInfo('unit_test') == False:
+ f.write("// TODO(gman): %s\n" % func.name)
+ else:
+ func.WriteServiceUnitTest(f, {
+ 'test_name': test_name
+ })
+ self.generated_cpp_filenames.append(filename)
+
+ comment = "// It is included by gles2_cmd_decoder_unittest_base.cc\n"
+ filename = filename_pattern % 0
+ with CHeaderWriter(filename, comment) as f:
+ f.write(
"""void GLES2DecoderTestBase::SetupInitCapabilitiesExpectations(
bool es3_capable) {""")
- for capability in _CAPABILITY_FLAGS:
- capability_es3 = 'es3' in capability and capability['es3'] == True
- if not capability_es3:
- f.write(" ExpectEnableDisable(GL_%s, %s);\n" %
- (capability['name'].upper(),
- ('false', 'true')['default' in capability]))
-
- f.write(" if (es3_capable) {")
- for capability in _CAPABILITY_FLAGS:
- capability_es3 = 'es3' in capability and capability['es3'] == True
- if capability_es3:
- f.write(" ExpectEnableDisable(GL_%s, %s);\n" %
- (capability['name'].upper(),
- ('false', 'true')['default' in capability]))
- f.write(""" }
+ for capability in _CAPABILITY_FLAGS:
+ capability_es3 = 'es3' in capability and capability['es3'] == True
+ if not capability_es3:
+ f.write(" ExpectEnableDisable(GL_%s, %s);\n" %
+ (capability['name'].upper(),
+ ('false', 'true')['default' in capability]))
+
+ f.write(" if (es3_capable) {")
+ for capability in _CAPABILITY_FLAGS:
+ capability_es3 = 'es3' in capability and capability['es3'] == True
+ if capability_es3:
+ f.write(" ExpectEnableDisable(GL_%s, %s);\n" %
+ (capability['name'].upper(),
+ ('false', 'true')['default' in capability]))
+ f.write(""" }
}
void GLES2DecoderTestBase::SetupInitStateExpectations() {
""")
+ # We need to sort the keys so the expectations match
+ for state_name in sorted(_STATES.keys()):
+ state = _STATES[state_name]
+ if state['type'] == 'FrontBack':
+ num_states = len(state['states'])
+ for ndx, group in enumerate(Grouper(num_states / 2, state['states'])):
+ args = []
+ for item in group:
+ if 'expected' in item:
+ args.append(item['expected'])
+ else:
+ args.append(item['default'])
+ f.write(
+ " EXPECT_CALL(*gl_, %s(%s, %s))\n" %
+ (state['func'], ('GL_FRONT', 'GL_BACK')[ndx], ", ".join(args)))
+ f.write(" .Times(1)\n")
+ f.write(" .RetiresOnSaturation();\n")
+ elif state['type'] == 'NamedParameter':
+ for item in state['states']:
+ if 'extension_flag' in item:
+ f.write(" if (group_->feature_info()->feature_flags().%s) {\n" %
+ item['extension_flag'])
+ f.write(" ")
+ expect_value = item['default']
+ if isinstance(expect_value, list):
+ # TODO: Currently we do not check array values.
+ expect_value = "_"
- # We need to sort the keys so the expectations match
- for state_name in sorted(_STATES.keys()):
- state = _STATES[state_name]
- if state['type'] == 'FrontBack':
- num_states = len(state['states'])
- for ndx, group in enumerate(Grouper(num_states / 2, state['states'])):
+ f.write(
+ " EXPECT_CALL(*gl_, %s(%s, %s))\n" %
+ (state['func'],
+ (item['enum_set']
+ if 'enum_set' in item else item['enum']),
+ expect_value))
+ f.write(" .Times(1)\n")
+ f.write(" .RetiresOnSaturation();\n")
+ if 'extension_flag' in item:
+ f.write(" }\n")
+ else:
+ if 'extension_flag' in state:
+ f.write(" if (group_->feature_info()->feature_flags().%s) {\n" %
+ state['extension_flag'])
+ f.write(" ")
args = []
- for item in group:
+ for item in state['states']:
if 'expected' in item:
args.append(item['expected'])
else:
args.append(item['default'])
- f.write(
- " EXPECT_CALL(*gl_, %s(%s, %s))\n" %
- (state['func'], ('GL_FRONT', 'GL_BACK')[ndx], ", ".join(args)))
- f.write(" .Times(1)\n")
- f.write(" .RetiresOnSaturation();\n")
- elif state['type'] == 'NamedParameter':
- for item in state['states']:
- if 'extension_flag' in item:
- f.write(" if (group_->feature_info()->feature_flags().%s) {\n" %
- item['extension_flag'])
- f.write(" ")
- expect_value = item['default']
- if isinstance(expect_value, list):
- # TODO: Currently we do not check array values.
- expect_value = "_"
-
- f.write(
- " EXPECT_CALL(*gl_, %s(%s, %s))\n" %
- (state['func'],
- (item['enum_set']
- if 'enum_set' in item else item['enum']),
- expect_value))
+ # TODO: Currently we do not check array values.
+ args = ["_" if isinstance(arg, list) else arg for arg in args]
+ f.write(" EXPECT_CALL(*gl_, %s(%s))\n" %
+ (state['func'], ", ".join(args)))
f.write(" .Times(1)\n")
f.write(" .RetiresOnSaturation();\n")
- if 'extension_flag' in item:
+ if 'extension_flag' in state:
f.write(" }\n")
- else:
- if 'extension_flag' in state:
- f.write(" if (group_->feature_info()->feature_flags().%s) {\n" %
- state['extension_flag'])
- f.write(" ")
- args = []
- for item in state['states']:
- if 'expected' in item:
- args.append(item['expected'])
- else:
- args.append(item['default'])
- # TODO: Currently we do not check array values.
- args = ["_" if isinstance(arg, list) else arg for arg in args]
- f.write(" EXPECT_CALL(*gl_, %s(%s))\n" %
- (state['func'], ", ".join(args)))
- f.write(" .Times(1)\n")
- f.write(" .RetiresOnSaturation();\n")
- if 'extension_flag' in state:
- f.write(" }\n")
- f.write("""}
-""")
- f.close()
- self.generated_cpp_filenames.append(f.filename)
+ f.write("}\n")
+ self.generated_cpp_filenames.append(filename)
def WriteServiceUnitTestsForExtensions(self, filename):
"""Writes the service decorder unit tests for functions with extension_flag.
@@ -10570,80 +10537,64 @@ void GLES2DecoderTestBase::SetupInitStateExpectations() {
baseclass to turn on the extension.
"""
functions = [f for f in self.functions if f.GetInfo('extension_flag')]
- f = CHeaderWriter(
- filename,
- "// It is included by gles2_cmd_decoder_unittest_extensions.cc\n")
- for func in functions:
- if True:
- if func.GetInfo('unit_test') == False:
- f.write("// TODO(gman): %s\n" % func.name)
- else:
- extension = ToCamelCase(
- ToGLExtensionString(func.GetInfo('extension_flag')))
- func.WriteServiceUnitTest(f, {
- 'test_name': 'GLES2DecoderTestWith%s' % extension
- })
-
- f.close()
- self.generated_cpp_filenames.append(f.filename)
+ comment = "// It is included by gles2_cmd_decoder_unittest_extensions.cc\n"
+ with CHeaderWriter(filename, comment) as f:
+ for func in functions:
+ if True:
+ if func.GetInfo('unit_test') == False:
+ f.write("// TODO(gman): %s\n" % func.name)
+ else:
+ extension = ToCamelCase(
+ ToGLExtensionString(func.GetInfo('extension_flag')))
+ func.WriteServiceUnitTest(f, {
+ 'test_name': 'GLES2DecoderTestWith%s' % extension
+ })
+ self.generated_cpp_filenames.append(filename)
def WriteGLES2Header(self, filename):
"""Writes the GLES2 header."""
- f = CHeaderWriter(
- filename,
- "// This file contains Chromium-specific GLES2 declarations.\n\n")
-
- for func in self.original_functions:
- func.WriteGLES2Header(f)
-
- f.write("\n")
- f.close()
- self.generated_cpp_filenames.append(f.filename)
+ comment = "// This file contains Chromium-specific GLES2 declarations.\n\n"
+ with CHeaderWriter(filename, comment) as f:
+ for func in self.original_functions:
+ func.WriteGLES2Header(f)
+ f.write("\n")
+ self.generated_cpp_filenames.append(filename)
def WriteGLES2CLibImplementation(self, filename):
"""Writes the GLES2 c lib implementation."""
- f = CHeaderWriter(
- filename,
- "// These functions emulate GLES2 over command buffers.\n")
-
- for func in self.original_functions:
- func.WriteGLES2CLibImplementation(f)
-
- f.write("""
+ comment = "// These functions emulate GLES2 over command buffers.\n"
+ with CHeaderWriter(filename, comment) as f:
+ for func in self.original_functions:
+ func.WriteGLES2CLibImplementation(f)
+ f.write("""
namespace gles2 {
extern const NameToFunc g_gles2_function_table[] = {
""")
- for func in self.original_functions:
- f.write(
- ' { "gl%s", reinterpret_cast<GLES2FunctionPointer>(gl%s), },\n' %
- (func.name, func.name))
- f.write(""" { NULL, NULL, },
+ for func in self.original_functions:
+ f.write(
+ ' { "gl%s", reinterpret_cast<GLES2FunctionPointer>(gl%s), },\n' %
+ (func.name, func.name))
+ f.write(""" { NULL, NULL, },
};
} // namespace gles2
""")
- f.close()
- self.generated_cpp_filenames.append(f.filename)
+ self.generated_cpp_filenames.append(filename)
def WriteGLES2InterfaceHeader(self, filename):
"""Writes the GLES2 interface header."""
- f = CHeaderWriter(
- filename,
- "// This file is included by gles2_interface.h to declare the\n"
- "// GL api functions.\n")
- for func in self.original_functions:
- func.WriteGLES2InterfaceHeader(f)
- f.close()
- self.generated_cpp_filenames.append(f.filename)
+ comment = ("// This file is included by gles2_interface.h to declare the\n"
+ "// GL api functions.\n")
+ with CHeaderWriter(filename, comment) as f:
+ for func in self.original_functions:
+ func.WriteGLES2InterfaceHeader(f)
+ self.generated_cpp_filenames.append(filename)
def WriteMojoGLES2ImplHeader(self, filename):
"""Writes the Mojo GLES2 implementation header."""
- f = CHeaderWriter(
- filename,
- "// This file is included by gles2_interface.h to declare the\n"
- "// GL api functions.\n")
-
+ comment = ("// This file is included by gles2_interface.h to declare the\n"
+ "// GL api functions.\n")
code = """
#include "gpu/command_buffer/client/gles2_interface.h"
#include "third_party/mojo/src/mojo/public/c/gles2/gles2.h"
@@ -10657,26 +10608,22 @@ class MojoGLES2Impl : public gpu::gles2::GLES2Interface {
}
~MojoGLES2Impl() override {}
"""
- f.write(code);
- for func in self.original_functions:
- func.WriteMojoGLES2ImplHeader(f)
- code = """
+ with CHeaderWriter(filename, comment) as f:
+ f.write(code);
+ for func in self.original_functions:
+ func.WriteMojoGLES2ImplHeader(f)
+ code = """
private:
MojoGLES2Context context_;
};
} // namespace mojo
- """
- f.write(code);
- f.close()
- self.generated_cpp_filenames.append(f.filename)
+ """
+ f.write(code);
+ self.generated_cpp_filenames.append(filename)
def WriteMojoGLES2Impl(self, filename):
"""Writes the Mojo GLES2 implementation."""
- f = CWriter(filename)
- f.write(_LICENSE)
- f.write(_DO_NOT_EDIT_WARNING)
-
code = """
#include "mojo/gpu/mojo_gles2_impl_autogen.h"
@@ -10694,183 +10641,169 @@ class MojoGLES2Impl : public gpu::gles2::GLES2Interface {
namespace mojo {
"""
- f.write(code);
- for func in self.original_functions:
- func.WriteMojoGLES2Impl(f)
- code = """
+ with CWriter(filename) as f:
+ f.write(code);
+ for func in self.original_functions:
+ func.WriteMojoGLES2Impl(f)
+ code = """
} // namespace mojo
"""
- f.write(code);
- f.close()
- self.generated_cpp_filenames.append(f.filename)
+ f.write(code);
+ self.generated_cpp_filenames.append(filename)
def WriteGLES2InterfaceStub(self, filename):
"""Writes the GLES2 interface stub header."""
- f = CHeaderWriter(
- filename,
- "// This file is included by gles2_interface_stub.h.\n")
- for func in self.original_functions:
- func.WriteGLES2InterfaceStub(f)
- f.close()
- self.generated_cpp_filenames.append(f.filename)
+ comment = "// This file is included by gles2_interface_stub.h.\n"
+ with CHeaderWriter(filename, comment) as f:
+ for func in self.original_functions:
+ func.WriteGLES2InterfaceStub(f)
+ self.generated_cpp_filenames.append(filename)
def WriteGLES2InterfaceStubImpl(self, filename):
"""Writes the GLES2 interface header."""
- f = CHeaderWriter(
- filename,
- "// This file is included by gles2_interface_stub.cc.\n")
- for func in self.original_functions:
- func.WriteGLES2InterfaceStubImpl(f)
- f.close()
- self.generated_cpp_filenames.append(f.filename)
+ comment = "// This file is included by gles2_interface_stub.cc.\n"
+ with CHeaderWriter(filename, comment) as f:
+ for func in self.original_functions:
+ func.WriteGLES2InterfaceStubImpl(f)
+ self.generated_cpp_filenames.append(filename)
def WriteGLES2ImplementationHeader(self, filename):
"""Writes the GLES2 Implementation header."""
- f = CHeaderWriter(
- filename,
- "// This file is included by gles2_implementation.h to declare the\n"
- "// GL api functions.\n")
- for func in self.original_functions:
- func.WriteGLES2ImplementationHeader(f)
- f.close()
- self.generated_cpp_filenames.append(f.filename)
+ comment = \
+ ("// This file is included by gles2_implementation.h to declare the\n"
+ "// GL api functions.\n")
+ with CHeaderWriter(filename, comment) as f:
+ for func in self.original_functions:
+ func.WriteGLES2ImplementationHeader(f)
+ self.generated_cpp_filenames.append(filename)
def WriteGLES2Implementation(self, filename):
"""Writes the GLES2 Implementation."""
- f = CHeaderWriter(
- filename,
- "// This file is included by gles2_implementation.cc to define the\n"
- "// GL api functions.\n")
- for func in self.original_functions:
- func.WriteGLES2Implementation(f)
- f.close()
- self.generated_cpp_filenames.append(f.filename)
+ comment = \
+ ("// This file is included by gles2_implementation.cc to define the\n"
+ "// GL api functions.\n")
+ with CHeaderWriter(filename, comment) as f:
+ for func in self.original_functions:
+ func.WriteGLES2Implementation(f)
+ self.generated_cpp_filenames.append(filename)
def WriteGLES2TraceImplementationHeader(self, filename):
"""Writes the GLES2 Trace Implementation header."""
- f = CHeaderWriter(
- filename,
- "// This file is included by gles2_trace_implementation.h\n")
- for func in self.original_functions:
- func.WriteGLES2TraceImplementationHeader(f)
- f.close()
- self.generated_cpp_filenames.append(f.filename)
+ comment = "// This file is included by gles2_trace_implementation.h\n"
+ with CHeaderWriter(filename, comment) as f:
+ for func in self.original_functions:
+ func.WriteGLES2TraceImplementationHeader(f)
+ self.generated_cpp_filenames.append(filename)
def WriteGLES2TraceImplementation(self, filename):
"""Writes the GLES2 Trace Implementation."""
- f = CHeaderWriter(
- filename,
- "// This file is included by gles2_trace_implementation.cc\n")
- for func in self.original_functions:
- func.WriteGLES2TraceImplementation(f)
- f.close()
- self.generated_cpp_filenames.append(f.filename)
+ comment = "// This file is included by gles2_trace_implementation.cc\n"
+ with CHeaderWriter(filename, comment) as f:
+ for func in self.original_functions:
+ func.WriteGLES2TraceImplementation(f)
+ self.generated_cpp_filenames.append(filename)
def WriteGLES2ImplementationUnitTests(self, filename):
"""Writes the GLES2 helper header."""
- f = CHeaderWriter(
- filename,
- "// This file is included by gles2_implementation.h to declare the\n"
- "// GL api functions.\n")
- for func in self.original_functions:
- func.WriteGLES2ImplementationUnitTest(f)
- f.close()
- self.generated_cpp_filenames.append(f.filename)
+ comment = \
+ ("// This file is included by gles2_implementation.h to declare the\n"
+ "// GL api functions.\n")
+ with CHeaderWriter(filename, comment) as f:
+ for func in self.original_functions:
+ func.WriteGLES2ImplementationUnitTest(f)
+ self.generated_cpp_filenames.append(filename)
def WriteServiceUtilsHeader(self, filename):
"""Writes the gles2 auto generated utility header."""
- f = CHeaderWriter(filename)
- for name in sorted(_NAMED_TYPE_INFO.keys()):
- named_type = NamedType(_NAMED_TYPE_INFO[name])
- if named_type.IsConstant():
- continue
- f.write("ValueValidator<%s> %s;\n" %
- (named_type.GetType(), ToUnderscore(name)))
- f.write("\n")
- f.close()
- self.generated_cpp_filenames.append(f.filename)
+ with CHeaderWriter(filename) as f:
+ for name in sorted(_NAMED_TYPE_INFO.keys()):
+ named_type = NamedType(_NAMED_TYPE_INFO[name])
+ if named_type.IsConstant():
+ continue
+ f.write("ValueValidator<%s> %s;\n" %
+ (named_type.GetType(), ToUnderscore(name)))
+ f.write("\n")
+ self.generated_cpp_filenames.append(filename)
def WriteServiceUtilsImplementation(self, filename):
"""Writes the gles2 auto generated utility implementation."""
- f = CHeaderWriter(filename)
- names = sorted(_NAMED_TYPE_INFO.keys())
- for name in names:
- named_type = NamedType(_NAMED_TYPE_INFO[name])
- if named_type.IsConstant():
- continue
- if named_type.GetValidValues():
- f.write("static const %s valid_%s_table[] = {\n" %
- (named_type.GetType(), ToUnderscore(name)))
- for value in named_type.GetValidValues():
- f.write(" %s,\n" % value)
- f.write("};\n")
- f.write("\n")
- if named_type.GetValidValuesES3():
- f.write("static const %s valid_%s_table_es3[] = {\n" %
- (named_type.GetType(), ToUnderscore(name)))
- for value in named_type.GetValidValuesES3():
- f.write(" %s,\n" % value)
- f.write("};\n")
- f.write("\n")
- if named_type.GetDeprecatedValuesES3():
- f.write("static const %s deprecated_%s_table_es3[] = {\n" %
- (named_type.GetType(), ToUnderscore(name)))
- for value in named_type.GetDeprecatedValuesES3():
- f.write(" %s,\n" % value)
- f.write("};\n")
- f.write("\n")
- f.write("Validators::Validators()")
- pre = ' : '
- for count, name in enumerate(names):
- named_type = NamedType(_NAMED_TYPE_INFO[name])
- if named_type.IsConstant():
- continue
- if named_type.GetValidValues():
- code = """%(pre)s%(name)s(
- valid_%(name)s_table, arraysize(valid_%(name)s_table))"""
- else:
- code = "%(pre)s%(name)s()"
- f.write(code % {
- 'name': ToUnderscore(name),
- 'pre': pre,
- })
- pre = ',\n '
- f.write(" {\n");
- f.write("}\n\n");
-
- f.write("void Validators::UpdateValuesES3() {\n")
- for name in names:
- named_type = NamedType(_NAMED_TYPE_INFO[name])
- if named_type.GetDeprecatedValuesES3():
- code = """ %(name)s.RemoveValues(
- deprecated_%(name)s_table_es3, arraysize(deprecated_%(name)s_table_es3));
-"""
+ with CHeaderWriter(filename) as f:
+ names = sorted(_NAMED_TYPE_INFO.keys())
+ for name in names:
+ named_type = NamedType(_NAMED_TYPE_INFO[name])
+ if named_type.IsConstant():
+ continue
+ if named_type.GetValidValues():
+ f.write("static const %s valid_%s_table[] = {\n" %
+ (named_type.GetType(), ToUnderscore(name)))
+ for value in named_type.GetValidValues():
+ f.write(" %s,\n" % value)
+ f.write("};\n")
+ f.write("\n")
+ if named_type.GetValidValuesES3():
+ f.write("static const %s valid_%s_table_es3[] = {\n" %
+ (named_type.GetType(), ToUnderscore(name)))
+ for value in named_type.GetValidValuesES3():
+ f.write(" %s,\n" % value)
+ f.write("};\n")
+ f.write("\n")
+ if named_type.GetDeprecatedValuesES3():
+ f.write("static const %s deprecated_%s_table_es3[] = {\n" %
+ (named_type.GetType(), ToUnderscore(name)))
+ for value in named_type.GetDeprecatedValuesES3():
+ f.write(" %s,\n" % value)
+ f.write("};\n")
+ f.write("\n")
+ f.write("Validators::Validators()")
+ pre = ' : '
+ for count, name in enumerate(names):
+ named_type = NamedType(_NAMED_TYPE_INFO[name])
+ if named_type.IsConstant():
+ continue
+ if named_type.GetValidValues():
+ code = """%(pre)s%(name)s(
+ valid_%(name)s_table, arraysize(valid_%(name)s_table))"""
+ else:
+ code = "%(pre)s%(name)s()"
f.write(code % {
'name': ToUnderscore(name),
+ 'pre': pre,
})
- if named_type.GetValidValuesES3():
- code = """ %(name)s.AddValues(
+ pre = ',\n '
+ f.write(" {\n");
+ f.write("}\n\n");
+
+ f.write("void Validators::UpdateValuesES3() {\n")
+ for name in names:
+ named_type = NamedType(_NAMED_TYPE_INFO[name])
+ if named_type.GetDeprecatedValuesES3():
+ code = """ %(name)s.RemoveValues(
+ deprecated_%(name)s_table_es3, arraysize(deprecated_%(name)s_table_es3));
+"""
+ f.write(code % {
+ 'name': ToUnderscore(name),
+ })
+ if named_type.GetValidValuesES3():
+ code = """ %(name)s.AddValues(
valid_%(name)s_table_es3, arraysize(valid_%(name)s_table_es3));
"""
- f.write(code % {
- 'name': ToUnderscore(name),
- })
- f.write("}\n\n");
- f.close()
- self.generated_cpp_filenames.append(f.filename)
+ f.write(code % {
+ 'name': ToUnderscore(name),
+ })
+ f.write("}\n\n");
+ self.generated_cpp_filenames.append(filename)
def WriteCommonUtilsHeader(self, filename):
"""Writes the gles2 common utility header."""
- f = CHeaderWriter(filename)
- type_infos = sorted(_NAMED_TYPE_INFO.keys())
- for type_info in type_infos:
- if _NAMED_TYPE_INFO[type_info]['type'] == 'GLenum':
- f.write("static std::string GetString%s(uint32_t value);\n" %
- type_info)
- f.write("\n")
- f.close()
- self.generated_cpp_filenames.append(f.filename)
+ with CHeaderWriter(filename) as f:
+ type_infos = sorted(_NAMED_TYPE_INFO.keys())
+ for type_info in type_infos:
+ if _NAMED_TYPE_INFO[type_info]['type'] == 'GLenum':
+ f.write("static std::string GetString%s(uint32_t value);\n" %
+ type_info)
+ f.write("\n")
+ self.generated_cpp_filenames.append(filename)
def WriteCommonUtilsImpl(self, filename):
"""Writes the gles2 common utility header."""
@@ -10896,12 +10829,12 @@ namespace mojo {
self.Error("code collision: %s and %s have the same code %s" %
(dict[value], name, value))
- f = CHeaderWriter(filename)
- f.write("static const GLES2Util::EnumToString "
- "enum_to_string_table[] = {\n")
- for value in dict:
- f.write(' { %s, "%s", },\n' % (value, dict[value]))
- f.write("""};
+ with CHeaderWriter(filename) as f:
+ f.write("static const GLES2Util::EnumToString "
+ "enum_to_string_table[] = {\n")
+ for value in dict:
+ f.write(' { %s, "%s", },\n' % (value, dict[value]))
+ f.write("""};
const GLES2Util::EnumToString* const GLES2Util::enum_to_string_table_ =
enum_to_string_table;
@@ -10910,256 +10843,229 @@ const size_t GLES2Util::enum_to_string_table_len_ =
""")
- enums = sorted(_NAMED_TYPE_INFO.keys())
- for enum in enums:
- if _NAMED_TYPE_INFO[enum]['type'] == 'GLenum':
- f.write("std::string GLES2Util::GetString%s(uint32_t value) {\n" %
- enum)
- valid_list = _NAMED_TYPE_INFO[enum]['valid']
- if 'valid_es3' in _NAMED_TYPE_INFO[enum]:
- valid_list = valid_list + _NAMED_TYPE_INFO[enum]['valid_es3']
- assert len(valid_list) == len(set(valid_list))
- if len(valid_list) > 0:
- f.write(" static const EnumToString string_table[] = {\n")
- for value in valid_list:
- f.write(' { %s, "%s" },\n' % (value, value))
- f.write(""" };
+ enums = sorted(_NAMED_TYPE_INFO.keys())
+ for enum in enums:
+ if _NAMED_TYPE_INFO[enum]['type'] == 'GLenum':
+ f.write("std::string GLES2Util::GetString%s(uint32_t value) {\n" %
+ enum)
+ valid_list = _NAMED_TYPE_INFO[enum]['valid']
+ if 'valid_es3' in _NAMED_TYPE_INFO[enum]:
+ valid_list = valid_list + _NAMED_TYPE_INFO[enum]['valid_es3']
+ assert len(valid_list) == len(set(valid_list))
+ if len(valid_list) > 0:
+ f.write(" static const EnumToString string_table[] = {\n")
+ for value in valid_list:
+ f.write(' { %s, "%s" },\n' % (value, value))
+ f.write(""" };
return GLES2Util::GetQualifiedEnumString(
string_table, arraysize(string_table), value);
}
""")
- else:
- f.write(""" return GLES2Util::GetQualifiedEnumString(
+ else:
+ f.write(""" return GLES2Util::GetQualifiedEnumString(
NULL, 0, value);
}
""")
- f.close()
- self.generated_cpp_filenames.append(f.filename)
+ self.generated_cpp_filenames.append(filename)
def WritePepperGLES2Interface(self, filename, dev):
"""Writes the Pepper OpenGLES interface definition."""
- f = CWriter(filename)
- f.write(_LICENSE)
- f.write(_DO_NOT_EDIT_WARNING)
-
- f.write("label Chrome {\n")
- f.write(" M39 = 1.0\n")
- f.write("};\n\n")
-
- if not dev:
- # Declare GL types.
- f.write("[version=1.0]\n")
- f.write("describe {\n")
- for gltype in ['GLbitfield', 'GLboolean', 'GLbyte', 'GLclampf',
- 'GLclampx', 'GLenum', 'GLfixed', 'GLfloat', 'GLint',
- 'GLintptr', 'GLshort', 'GLsizei', 'GLsizeiptr',
- 'GLubyte', 'GLuint', 'GLushort']:
- f.write(" %s;\n" % gltype)
- f.write(" %s_ptr_t;\n" % gltype)
+ with CWriter(filename) as f:
+ f.write("label Chrome {\n")
+ f.write(" M39 = 1.0\n")
f.write("};\n\n")
- # C level typedefs.
- f.write("#inline c\n")
- f.write("#include \"ppapi/c/pp_resource.h\"\n")
- if dev:
- f.write("#include \"ppapi/c/ppb_opengles2.h\"\n\n")
- else:
- f.write("\n#ifndef __gl2_h_\n")
- for (k, v) in _GL_TYPES.iteritems():
- f.write("typedef %s %s;\n" % (v, k))
- f.write("#ifdef _WIN64\n")
- for (k, v) in _GL_TYPES_64.iteritems():
- f.write("typedef %s %s;\n" % (v, k))
- f.write("#else\n")
- for (k, v) in _GL_TYPES_32.iteritems():
- f.write("typedef %s %s;\n" % (v, k))
- f.write("#endif // _WIN64\n")
- f.write("#endif // __gl2_h_\n\n")
- f.write("#endinl\n")
-
- for interface in self.pepper_interfaces:
- if interface.dev != dev:
- continue
- # Historically, we provide OpenGLES2 interfaces with struct
- # namespace. Not to break code which uses the interface as
- # "struct OpenGLES2", we put it in struct namespace.
- f.write('\n[macro="%s", force_struct_namespace]\n' %
- interface.GetInterfaceName())
- f.write("interface %s {\n" % interface.GetStructName())
- for func in self.original_functions:
- if not func.InPepperInterface(interface):
+ if not dev:
+ # Declare GL types.
+ f.write("[version=1.0]\n")
+ f.write("describe {\n")
+ for gltype in ['GLbitfield', 'GLboolean', 'GLbyte', 'GLclampf',
+ 'GLclampx', 'GLenum', 'GLfixed', 'GLfloat', 'GLint',
+ 'GLintptr', 'GLshort', 'GLsizei', 'GLsizeiptr',
+ 'GLubyte', 'GLuint', 'GLushort']:
+ f.write(" %s;\n" % gltype)
+ f.write(" %s_ptr_t;\n" % gltype)
+ f.write("};\n\n")
+
+ # C level typedefs.
+ f.write("#inline c\n")
+ f.write("#include \"ppapi/c/pp_resource.h\"\n")
+ if dev:
+ f.write("#include \"ppapi/c/ppb_opengles2.h\"\n\n")
+ else:
+ f.write("\n#ifndef __gl2_h_\n")
+ for (k, v) in _GL_TYPES.iteritems():
+ f.write("typedef %s %s;\n" % (v, k))
+ f.write("#ifdef _WIN64\n")
+ for (k, v) in _GL_TYPES_64.iteritems():
+ f.write("typedef %s %s;\n" % (v, k))
+ f.write("#else\n")
+ for (k, v) in _GL_TYPES_32.iteritems():
+ f.write("typedef %s %s;\n" % (v, k))
+ f.write("#endif // _WIN64\n")
+ f.write("#endif // __gl2_h_\n\n")
+ f.write("#endinl\n")
+
+ for interface in self.pepper_interfaces:
+ if interface.dev != dev:
continue
+ # Historically, we provide OpenGLES2 interfaces with struct
+ # namespace. Not to break code which uses the interface as
+ # "struct OpenGLES2", we put it in struct namespace.
+ f.write('\n[macro="%s", force_struct_namespace]\n' %
+ interface.GetInterfaceName())
+ f.write("interface %s {\n" % interface.GetStructName())
+ for func in self.original_functions:
+ if not func.InPepperInterface(interface):
+ continue
- ret_type = func.MapCTypeToPepperIdlType(func.return_type,
- is_for_return_type=True)
- func_prefix = " %s %s(" % (ret_type, func.GetPepperName())
- f.write(func_prefix)
- f.write("[in] PP_Resource context")
- for arg in func.MakeTypedPepperIdlArgStrings():
- f.write(",\n" + " " * len(func_prefix) + arg)
- f.write(");\n")
- f.write("};\n\n")
-
-
- f.close()
+ ret_type = func.MapCTypeToPepperIdlType(func.return_type,
+ is_for_return_type=True)
+ func_prefix = " %s %s(" % (ret_type, func.GetPepperName())
+ f.write(func_prefix)
+ f.write("[in] PP_Resource context")
+ for arg in func.MakeTypedPepperIdlArgStrings():
+ f.write(",\n" + " " * len(func_prefix) + arg)
+ f.write(");\n")
+ f.write("};\n\n")
def WritePepperGLES2Implementation(self, filename):
"""Writes the Pepper OpenGLES interface implementation."""
+ with CWriter(filename) as f:
+ f.write("#include \"ppapi/shared_impl/ppb_opengles2_shared.h\"\n\n")
+ f.write("#include \"base/logging.h\"\n")
+ f.write("#include \"gpu/command_buffer/client/gles2_implementation.h\"\n")
+ f.write("#include \"ppapi/shared_impl/ppb_graphics_3d_shared.h\"\n")
+ f.write("#include \"ppapi/thunk/enter.h\"\n\n")
+
+ f.write("namespace ppapi {\n\n")
+ f.write("namespace {\n\n")
+
+ f.write("typedef thunk::EnterResource<thunk::PPB_Graphics3D_API>"
+ " Enter3D;\n\n")
+
+ f.write("gpu::gles2::GLES2Implementation* ToGles2Impl(Enter3D*"
+ " enter) {\n")
+ f.write(" DCHECK(enter);\n")
+ f.write(" DCHECK(enter->succeeded());\n")
+ f.write(" return static_cast<PPB_Graphics3D_Shared*>(enter->object())->"
+ "gles2_impl();\n");
+ f.write("}\n\n");
- f = CWriter(filename)
- f.write(_LICENSE)
- f.write(_DO_NOT_EDIT_WARNING)
-
- f.write("#include \"ppapi/shared_impl/ppb_opengles2_shared.h\"\n\n")
- f.write("#include \"base/logging.h\"\n")
- f.write("#include \"gpu/command_buffer/client/gles2_implementation.h\"\n")
- f.write("#include \"ppapi/shared_impl/ppb_graphics_3d_shared.h\"\n")
- f.write("#include \"ppapi/thunk/enter.h\"\n\n")
-
- f.write("namespace ppapi {\n\n")
- f.write("namespace {\n\n")
-
- f.write("typedef thunk::EnterResource<thunk::PPB_Graphics3D_API>"
- " Enter3D;\n\n")
-
- f.write("gpu::gles2::GLES2Implementation* ToGles2Impl(Enter3D*"
- " enter) {\n")
- f.write(" DCHECK(enter);\n")
- f.write(" DCHECK(enter->succeeded());\n")
- f.write(" return static_cast<PPB_Graphics3D_Shared*>(enter->object())->"
- "gles2_impl();\n");
- f.write("}\n\n");
-
- for func in self.original_functions:
- if not func.InAnyPepperExtension():
- continue
+ for func in self.original_functions:
+ if not func.InAnyPepperExtension():
+ continue
- original_arg = func.MakeTypedPepperArgString("")
- context_arg = "PP_Resource context_id"
- if len(original_arg):
- arg = context_arg + ", " + original_arg
- else:
- arg = context_arg
- f.write("%s %s(%s) {\n" %
- (func.return_type, func.GetPepperName(), arg))
- f.write(" Enter3D enter(context_id, true);\n")
- f.write(" if (enter.succeeded()) {\n")
-
- return_str = "" if func.return_type == "void" else "return "
- f.write(" %sToGles2Impl(&enter)->%s(%s);\n" %
- (return_str, func.original_name,
- func.MakeOriginalArgString("")))
- f.write(" }")
- if func.return_type == "void":
+ original_arg = func.MakeTypedPepperArgString("")
+ context_arg = "PP_Resource context_id"
+ if len(original_arg):
+ arg = context_arg + ", " + original_arg
+ else:
+ arg = context_arg
+ f.write("%s %s(%s) {\n" %
+ (func.return_type, func.GetPepperName(), arg))
+ f.write(" Enter3D enter(context_id, true);\n")
+ f.write(" if (enter.succeeded()) {\n")
+
+ return_str = "" if func.return_type == "void" else "return "
+ f.write(" %sToGles2Impl(&enter)->%s(%s);\n" %
+ (return_str, func.original_name,
+ func.MakeOriginalArgString("")))
+ f.write(" }")
+ if func.return_type == "void":
+ f.write("\n")
+ else:
+ f.write(" else {\n")
+ f.write(" return %s;\n" % func.GetErrorReturnString())
+ f.write(" }\n")
+ f.write("}\n\n")
+
+ f.write("} // namespace\n")
+
+ for interface in self.pepper_interfaces:
+ f.write("const %s* PPB_OpenGLES2_Shared::Get%sInterface() {\n" %
+ (interface.GetStructName(), interface.GetName()))
+ f.write(" static const struct %s "
+ "ppb_opengles2 = {\n" % interface.GetStructName())
+ f.write(" &")
+ f.write(",\n &".join(
+ f.GetPepperName() for f in self.original_functions
+ if f.InPepperInterface(interface)))
f.write("\n")
- else:
- f.write(" else {\n")
- f.write(" return %s;\n" % func.GetErrorReturnString())
- f.write(" }\n")
- f.write("}\n\n")
-
- f.write("} // namespace\n")
-
- for interface in self.pepper_interfaces:
- f.write("const %s* PPB_OpenGLES2_Shared::Get%sInterface() {\n" %
- (interface.GetStructName(), interface.GetName()))
- f.write(" static const struct %s "
- "ppb_opengles2 = {\n" % interface.GetStructName())
- f.write(" &")
- f.write(",\n &".join(
- f.GetPepperName() for f in self.original_functions
- if f.InPepperInterface(interface)))
- f.write("\n")
- f.write(" };\n")
- f.write(" return &ppb_opengles2;\n")
- f.write("}\n")
+ f.write(" };\n")
+ f.write(" return &ppb_opengles2;\n")
+ f.write("}\n")
- f.write("} // namespace ppapi\n")
- f.close()
- self.generated_cpp_filenames.append(f.filename)
+ f.write("} // namespace ppapi\n")
+ self.generated_cpp_filenames.append(filename)
def WriteGLES2ToPPAPIBridge(self, filename):
"""Connects GLES2 helper library to PPB_OpenGLES2 interface"""
+ with CWriter(filename) as f:
+ f.write("#ifndef GL_GLEXT_PROTOTYPES\n")
+ f.write("#define GL_GLEXT_PROTOTYPES\n")
+ f.write("#endif\n")
+ f.write("#include <GLES2/gl2.h>\n")
+ f.write("#include <GLES2/gl2ext.h>\n")
+ f.write("#include \"ppapi/lib/gl/gles2/gl2ext_ppapi.h\"\n\n")
- f = CWriter(filename)
- f.write(_LICENSE)
- f.write(_DO_NOT_EDIT_WARNING)
-
- f.write("#ifndef GL_GLEXT_PROTOTYPES\n")
- f.write("#define GL_GLEXT_PROTOTYPES\n")
- f.write("#endif\n")
- f.write("#include <GLES2/gl2.h>\n")
- f.write("#include <GLES2/gl2ext.h>\n")
- f.write("#include \"ppapi/lib/gl/gles2/gl2ext_ppapi.h\"\n\n")
-
- for func in self.original_functions:
- if not func.InAnyPepperExtension():
- continue
+ for func in self.original_functions:
+ if not func.InAnyPepperExtension():
+ continue
- interface = self.interface_info[func.GetInfo('pepper_interface') or '']
-
- f.write("%s GL_APIENTRY gl%s(%s) {\n" %
- (func.return_type, func.GetPepperName(),
- func.MakeTypedPepperArgString("")))
- return_str = "" if func.return_type == "void" else "return "
- interface_str = "glGet%sInterfacePPAPI()" % interface.GetName()
- original_arg = func.MakeOriginalArgString("")
- context_arg = "glGetCurrentContextPPAPI()"
- if len(original_arg):
- arg = context_arg + ", " + original_arg
- else:
- arg = context_arg
- if interface.GetName():
- f.write(" const struct %s* ext = %s;\n" %
- (interface.GetStructName(), interface_str))
- f.write(" if (ext)\n")
- f.write(" %sext->%s(%s);\n" %
- (return_str, func.GetPepperName(), arg))
- if return_str:
- f.write(" %s0;\n" % return_str)
- else:
- f.write(" %s%s->%s(%s);\n" %
- (return_str, interface_str, func.GetPepperName(), arg))
- f.write("}\n\n")
- f.close()
- self.generated_cpp_filenames.append(f.filename)
+ interface = self.interface_info[func.GetInfo('pepper_interface') or '']
+
+ f.write("%s GL_APIENTRY gl%s(%s) {\n" %
+ (func.return_type, func.GetPepperName(),
+ func.MakeTypedPepperArgString("")))
+ return_str = "" if func.return_type == "void" else "return "
+ interface_str = "glGet%sInterfacePPAPI()" % interface.GetName()
+ original_arg = func.MakeOriginalArgString("")
+ context_arg = "glGetCurrentContextPPAPI()"
+ if len(original_arg):
+ arg = context_arg + ", " + original_arg
+ else:
+ arg = context_arg
+ if interface.GetName():
+ f.write(" const struct %s* ext = %s;\n" %
+ (interface.GetStructName(), interface_str))
+ f.write(" if (ext)\n")
+ f.write(" %sext->%s(%s);\n" %
+ (return_str, func.GetPepperName(), arg))
+ if return_str:
+ f.write(" %s0;\n" % return_str)
+ else:
+ f.write(" %s%s->%s(%s);\n" %
+ (return_str, interface_str, func.GetPepperName(), arg))
+ f.write("}\n\n")
+ self.generated_cpp_filenames.append(filename)
def WriteMojoGLCallVisitor(self, filename):
"""Provides the GL implementation for mojo"""
- f = CWriter(filename)
- f.write(_LICENSE)
- f.write(_DO_NOT_EDIT_WARNING)
-
- for func in self.original_functions:
- if not func.IsCoreGLFunction():
- continue
- f.write("VISIT_GL_CALL(%s, %s, (%s), (%s))\n" %
- (func.name, func.return_type,
- func.MakeTypedOriginalArgString(""),
- func.MakeOriginalArgString("")))
-
- f.close()
- self.generated_cpp_filenames.append(f.filename)
+ with CWriter(filename) as f:
+ for func in self.original_functions:
+ if not func.IsCoreGLFunction():
+ continue
+ f.write("VISIT_GL_CALL(%s, %s, (%s), (%s))\n" %
+ (func.name, func.return_type,
+ func.MakeTypedOriginalArgString(""),
+ func.MakeOriginalArgString("")))
+ self.generated_cpp_filenames.append(filename)
def WriteMojoGLCallVisitorForExtension(self, filename, extension):
"""Provides the GL implementation for mojo for a particular extension"""
- f = CWriter(filename)
- f.write(_LICENSE)
- f.write(_DO_NOT_EDIT_WARNING)
-
- for func in self.original_functions:
- if func.GetInfo("extension") != extension:
- continue
- f.write("VISIT_GL_CALL(%s, %s, (%s), (%s))\n" %
- (func.name, func.return_type,
- func.MakeTypedOriginalArgString(""),
- func.MakeOriginalArgString("")))
-
- f.close()
- self.generated_cpp_filenames.append(f.filename)
+ with CWriter(filename) as f:
+ for func in self.original_functions:
+ if func.GetInfo("extension") != extension:
+ continue
+ f.write("VISIT_GL_CALL(%s, %s, (%s), (%s))\n" %
+ (func.name, func.return_type,
+ func.MakeTypedOriginalArgString(""),
+ func.MakeOriginalArgString("")))
+ self.generated_cpp_filenames.append(filename)
def Format(generated_files):
formatter = "clang-format"
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698