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

Unified Diff: gpu/command_buffer/build_gles2_cmd_buffer.py

Issue 169603002: Add initial support for NV_path_rendering extension to gpu command buffer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 8 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
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 84d70c0d4111c51ea22ad0228d8a04bb01f9d929..575f12a20f4b1a6b5a0e3fa43eba0923e047121e 100755
--- a/gpu/command_buffer/build_gles2_cmd_buffer.py
+++ b/gpu/command_buffer/build_gles2_cmd_buffer.py
@@ -479,6 +479,26 @@ _STATES = {
},
],
},
+ 'MatrixValuesCHROMIUM': {
+ 'type': 'NamedParameter',
+ 'func': 'MatrixLoadfEXT',
+ 'states': [
+ { 'enum': 'GL_MODELVIEW_MATRIX_CHROMIUM',
+ 'enum_set': 'GL_MODELVIEW_CHROMIUM',
+ 'name': 'modelview_matrix',
+ 'type': 'GLfloat',
+ 'default': ['0.0f'] * 16,
Kimmo Kinnunen 2014/04/15 17:52:27 This is a mistake, the these defaults should be id
Kimmo Kinnunen 2014/04/23 12:26:55 Done.
+ 'extension_flag': 'chromium_path_rendering',
+ },
+ { 'enum': 'GL_PROJECTION_MATRIX_CHROMIUM',
+ 'enum_set': 'GL_PROJECTION_CHROMIUM',
+ 'name': 'projection_matrix',
+ 'type': 'GLfloat',
+ 'default': ['0.0f'] * 16,
+ 'extension_flag': 'chromium_path_rendering',
+ },
+ ],
+ },
}
# This is a list of enum names and their valid values. It is used to map
@@ -805,6 +825,13 @@ _ENUM_LISTS = {
'GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE',
],
},
+ 'MatrixMode': {
+ 'type': 'GLenum',
+ 'valid': [
+ 'GL_PROJECTION_CHROMIUM',
+ 'GL_MODELVIEW_CHROMIUM',
+ ],
+ },
'ProgramParameter': {
'type': 'GLenum',
'valid': [
@@ -2546,9 +2573,23 @@ _FUNCTION_INFO = {
'extension': True,
'chromium': True,
},
+ 'MatrixLoadfCHROMIUM': {
+ 'type': 'PUT',
+ 'count': 16,
+ 'data_type': 'GLfloat',
+ 'decoder_func': 'DoMatrixLoadfCHROMIUM',
+ 'unit_test': False,
+ 'chromium': True,
+ 'extension': True,
+ },
+ 'MatrixLoadIdentityCHROMIUM': {
+ 'decoder_func': 'DoMatrixLoadIdentityCHROMIUM',
+ 'unit_test': False,
+ 'chromium': True,
+ 'extension': True,
+ },
}
-
def Grouper(n, iterable, fillvalue=None):
"""Collect data into fixed-length chunks or blocks"""
args = [iter(iterable)] * n
@@ -7083,7 +7124,11 @@ class GLGenerator(object):
for state_name in sorted(_STATES.keys()):
state = _STATES[state_name]
for item in state['states']:
- file.Write("%s %s;\n" % (item['type'], item['name']))
+ if isinstance(item['default'], list):
+ file.Write("%s %s[%s];\n" % (item['type'], item['name'],
+ len(item['default'])))
vmiura 2014/04/15 18:02:43 nit: %d for len(..)
Kimmo Kinnunen 2014/04/23 12:26:55 Done.
+ else:
+ file.Write("%s %s;\n" % (item['type'], item['name']))
file.Write("\n")
file.Close()
@@ -7123,10 +7168,24 @@ bool %s::GetStateAs%s(
else:
for item in state['states']:
file.Write(" case %s:\n" % item['enum'])
- file.Write(" *num_written = 1;\n")
- file.Write(" if (params) {\n")
- file.Write(" params[0] = static_cast<%s>(%s);\n" %
- (gl_type, item['name']))
+ if isinstance(item['default'], list):
+ item_len = len(item['default'])
+ file.Write(" *num_written = %s;\n" % item_len)
vmiura 2014/04/15 18:02:43 nit: %d for item_len
Kimmo Kinnunen 2014/04/23 12:26:55 Done.
+ file.Write(" if (params) {\n")
+ if item['type'] == gl_type:
+ file.Write(" memcpy(params, %s, sizeof(%s) * %s);\n" %
+ (item['name'], item['type'], item_len))
vmiura 2014/04/15 18:02:43 nit: %d for item_len
Kimmo Kinnunen 2014/04/23 12:26:55 Done.
+ else:
+ file.Write(" for (size_t i = 0; i < %s; ++i) {\n" %
+ item_len)
+ file.Write(" params[i] = static_cast<%s>(%s[i]);\n" %
+ (gl_type, item['name']))
+ file.Write(" }\n");
+ else:
+ file.Write(" *num_written = 1;\n")
+ file.Write(" if (params) {\n")
+ file.Write(" params[0] = static_cast<%s>(%s);\n" %
+ (gl_type, item['name']))
file.Write(" }\n")
file.Write(" return true;\n")
for capability in _CAPABILITY_FLAGS:
@@ -7162,7 +7221,11 @@ bool %s::GetStateAs%s(
for state_name in sorted(_STATES.keys()):
state = _STATES[state_name]
for item in state['states']:
- file.Write(" %s = %s;\n" % (item['name'], item['default']))
+ if isinstance(item['default'], list):
+ for ndx, value in enumerate(item['default']):
+ file.Write(" %s[%s] = %s;\n" % (item['name'], ndx, value))
vmiura 2014/04/15 18:02:43 nit: %d for ndx
Kimmo Kinnunen 2014/04/23 12:26:55 Done.
+ else:
+ file.Write(" %s = %s;\n" % (item['name'], item['default']))
file.Write("}\n")
file.Write("""
@@ -7216,11 +7279,23 @@ void ContextState::InitState(const ContextState *prev_state) const {
file.Write(" if (feature_info_->feature_flags().%s)\n " %
item['extension_flag'])
if test_prev:
- file.Write(" if (prev_state->%s != %s)\n" %
- (item['name'], item['name']))
+ if isinstance(item['default'], list):
+ file.Write(" if (memcmp(prev_state->%s, %s, "
+ "sizeof(%s) * %s))\n" %
+ (item['name'], item['name'], item['type'],
+ len(item['default'])))
vmiura 2014/04/15 18:02:43 nit: %d
Kimmo Kinnunen 2014/04/23 12:26:55 Done.
+ else:
+ file.Write(" if (prev_state->%s != %s)\n" %
+ (item['name'], item['name']))
file.Write(" gl%s(%s, %s);\n" %
- (state['func'], item['enum'], item['name']))
+ (state['func'],
+ (item['enum_set']
+ if 'enum_set' in item else item['enum']),
+ item['name']))
else:
+ if 'extension_flag' in state:
+ file.Write(" if (feature_info_->feature_flags().%s)\n " %
+ state['extension_flag'])
if test_prev:
file.Write(" if (")
args = []
@@ -7241,7 +7316,6 @@ void ContextState::InitState(const ContextState *prev_state) const {
file.Write(" } else {")
WriteStates(False)
file.Write(" }")
-
file.Write("}\n")
file.Write("""bool ContextState::GetEnabled(GLenum cap) const {
@@ -7410,7 +7484,10 @@ void GLES2DecoderTestBase::SetupInitStateExpectations() {
continue
file.Write(
" EXPECT_CALL(*gl_, %s(%s, %s))\n" %
- (state['func'], item['enum'], item['default']))
+ (state['func'],
+ (item['enum_set']
+ if 'enum_set' in item else item['enum']),
+ item['default']))
file.Write(" .Times(1)\n")
file.Write(" .RetiresOnSaturation();\n")
else:
@@ -7859,6 +7936,8 @@ def main(argv):
# Add in states and capabilites to GLState
for state_name in sorted(_STATES.keys()):
state = _STATES[state_name]
+ if 'extension_flag' in state:
+ continue
if 'enum' in state:
_ENUM_LISTS['GLState']['valid'].append(state['enum'])
else:

Powered by Google App Engine
This is Rietveld 408576698