[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