Chromium Code Reviews| 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: |