[Piglit] [PATCH 2/2] Fixed gl.py so that it correctly parses the new gl.xml file.
Laura Ekstrand
laura at jlekstrand.net
Wed Nov 5 13:51:24 PST 2014
So apparently the first patch of this series ("Updated gl.xml to reflect
new gl-4.5 features (namely arb_direct_state_access)") did not go through
because it was too large. You can view this commit at
http://cgit.freedesktop.org/~ldeks/piglit/commit/?h=master-xml&id=4d34005cfc600dc5974a41baf1bf209f8c517a06
in case you are curious. This is the unaltered new gl.xml from Khronos.
Laura
On Tue, Nov 4, 2014 at 11:39 AM, Laura Ekstrand <laura at jlekstrand.net>
wrote:
> ---
> registry/gl.py | 43 ++++++++++++++-----------------------------
> 1 file changed, 14 insertions(+), 29 deletions(-)
>
> diff --git a/registry/gl.py b/registry/gl.py
> index e8d6fd1..17da57b 100644
> --- a/registry/gl.py
> +++ b/registry/gl.py
> @@ -76,8 +76,6 @@ def _repair_xml(xml_registry):
> fixes = set((
> 'GL_ALL_ATTRIB_BITS',
> 'glOcclusionQueryEventMaskAMD',
> - 'enums_SGI_0x8000_0x80BF',
> - 'enums_ARB_0x80000_0x80BF',
> 'gles2_GL_ACTIVE_PROGRAM_EXT',
> ))
>
> @@ -112,28 +110,6 @@ def _repair_xml(xml_registry):
> fixes.remove('glOcclusionQueryEventMaskAMD')
> continue
>
> - if ('enums_SGI_0x8000_0x80BF' in fixes
> - and enums.get('vendor') == 'SGI'
> - and enums.get('start') == '0x8000'
> - and enums.get('end') == '0x80BF'):
> - # This element is empty garbage that overlaps an ARB enum
> group
> - # with the same range.
> - defer_removal(xml_registry, enums)
> -
> - fixes.remove('enums_SGI_0x8000_0x80BF')
> - continue
> -
> - if ('enums_ARB_0x80000_0x80BF' in fixes
> - and enums.get('vendor') == 'ARB'
> - and enums.get('group', None) is None
> - and enums.get('start', None) is None):
> - # This tag lacks 'start' and 'end' attributes.
> - enums.set('start', '0x8000')
> - enums.set('end', '0x80BF')
> -
> - fixes.remove('enums_ARB_0x80000_0x80BF')
> - continue
> -
> if ('gles2_GL_ACTIVE_PROGRAM_EXT' in fixes
> and enums.get('vendor') == 'ARB'
> and enums.get('start') <= '0x8259'
> @@ -682,6 +658,7 @@ class CommandParam(object):
> Attributes:
> name
> c_type
> + array_suffix
> """
>
> __PARAM_NAME_FIXES = {'near': 'hither', 'far': 'yon'}
> @@ -696,6 +673,7 @@ class CommandParam(object):
> # <param len="bufSize"><ptype>GLint</ptype>
> *<name>values</name></param>
> # <param><ptype>GLenum</ptype> <name>shadertype</name></param>
> # <param group="sync"><ptype>GLsync</ptype>
> <name>sync</name></param>
> + # <param><ptype>GLuint</ptype>
> <name>baseAndCount</name>[2]</param>
>
> assert(xml_param.tag == 'param')
>
> @@ -704,9 +682,15 @@ class CommandParam(object):
> # Rename the parameter if its name is a reserved keyword in MSVC.
> self.name = self.__PARAM_NAME_FIXES.get(self.name, self.name)
>
> - # Pare the C type.
> + # Parse the C type.
> c_type_text = list(xml_param.itertext())
> - c_type_text.pop(-1) # Pop off the text from the <name>
> subelement.
> + c_type_text_end = c_type_text.pop(-1) # Pop off the text from
> the <name> subelement.
> + if c_type_text_end.startswith('['):
> + # This is an array variable.
> + self.array_suffix = c_type_text_end
> + c_type_text.pop(-1) # Pop off the next one (<name>)
> + else:
> + self.array_suffix = ''
> c_type_text = (t.strip() for t in c_type_text)
> self.c_type = ' '.join(c_type_text).strip()
>
> @@ -714,7 +698,8 @@ class CommandParam(object):
>
> def __repr__(self):
> templ = ('{self.__class__.__name__}'
> - '(name={self.name!r}, type={self.c_type!r})')
> + '(name={self.name!r}, type={self.c_type!r},'
> + 'suffix={self.array_suffix!r})')
> return templ.format(self=self)
>
>
> @@ -828,7 +813,7 @@ class Command(object):
> def c_named_param_list(self):
> """For example, "GLenum op, GLfloat value" for glAccum."""
> return ', '.join(
> - '{param.c_type} {param.name}'.format(param=param)
> + '{param.c_type} {param.name
> }{param.array_suffix}'.format(param=param)
> for param in self.param_list
> )
>
> @@ -836,7 +821,7 @@ class Command(object):
> def c_unnamed_param_list(self):
> """For example, "GLenum, GLfloat" for glAccum."""
> return ', '.join(
> - param.c_type
> + '{param.c_type}{param.array_suffix}'.format(param=param)
> for param in self.param_list
> )
>
> --
> 2.1.0
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/piglit/attachments/20141105/2e864c6e/attachment.html>
More information about the Piglit
mailing list