[Mesa-dev] [PATCH 00/41] glapi python cleanups

Brian Paul brianp at vmware.com
Fri Apr 1 15:28:55 UTC 2016


On 03/31/2016 06:04 PM, Dylan Baker wrote:
> This is the first part of a much larger project I'm working on to
> overhaul the generators. The end goal is to use mako templates rather
> than a massive series of print statements, be python 2.7 (the current)
> and python 3.3+ (I might be talked into support 3.2 if someone has a
> really good case) compatible, and to use the Khronos XML instead of
> mesa's hand rolled XML.
>
> Obviously that's a rather large project, and this is ~40 patches to get
> started. In general this is style cleanups, removal of deprecated
> functionality, usage of python features rather than hand rolling things,
> and some cleanups/optimizations in the gl_XML and glX_XML modules, which
> are used as modules by most of the generators.
>
> The first set of patches (the ones that are prefaced with just glapi:)
> make a single kind of change across all of the python files. I made this
> choice since this series was originally more than 100 patches, and
> that's just crazy for basic cleanups.
>
> I have verified that this only produces whitespace changes between
> master and the tip of this series, and further that piglit shows no
> changes between the two.
>
> This is available on freedesktop.org:
> git://people.freedesktop.org/~dbaker/mesa wip/glapi-cleanup
>
> I do not have mesa push access.

I'm all in favor of cleaning up and simplifying this generator code 
(though I don't yet have experience with mako).

The original python code is probably nearly 15 years old now and even 
some of that was based some older .h template code that I originally wrote.

Here's something that could be simplified:

The glapi/glapitemp.h file is basically a remnant of the pre-python 
code.  It's included by glapi_nop.c and glapi_dispatch.c to generate 
no-op functions and the actual GL entrypoints (when not using X86 assembly).

We should get rid of glapitemp.h and just generate glapi_nop.c and 
glapi_dispatch.c directly with Python.

There's some weird usage of glapitemp.h in src/mesa/drivers/x11/glxapi.c 
and src/mesa/drivers/osmesa/osmesa.c that seems like terrible hacks and 
can hopefully be fixed in some other way.

Also, Chia-I Wu added a layer of complexity to glapi that I've never 
been able to understand.  I don't know if you plan on untangling that code.

The series mostly looks OK to me but I have a few comments coming.

-Brian



>
> Dylan Baker (41):
>    glapi: clean imports in python files
>    glapi: encode python files in utf-8 rather than ascii
>    glapi: Update copyright in python files to cover more than IBM
>    glapi: remove unnecessary semi-colons in python
>    glapi: use python's textwrap.dedent to make code readable
>    glapi: normalize python newlines
>    glapi: remove useless returns from python code
>    glapi: Fix whitespace in python files.
>    glapi: fix singleton comparisons to use 'is' in python
>    glapi: Don't use string module in python modules
>    glapi: remove superflous parens in python
>    glapi: have only one statement per line in python files.
>    glapi: replace deprecated has_key method in python
>    glapi: use xrange instead of range in python
>    glapi: remove useless 0 start parameter for (x)range
>    glapi: Use booleans in python code.
>    glapi: replace RuntimeError with asserts or Exception
>    glapi: gl_XML.py: use python's iter() function rather than calling
>      __iter__
>    glapi: gl_XML.py: remove gl_api.enumIterateByName
>    glapi: gl_XML.py: make gl_api.categoryIterate a generator
>    glapi: gl_XML.py: simplify gl_api.functionIterateByOffset
>    glapi: gl_XML.py: convert gl_api.functionIterateByOffset to a
>      generator
>    glapi: gl_XML.py: use collections to simplify
>      functionsIterateByCategory
>    glapi: gl_XML.py: rework gl_api.functionIterateByOffset
>    glapi: gl_XML.py: simplify is_attr_true
>    glapi: gl_XML.py: avoid unnecessary method call
>    glapi: gl_XML.py: store compiled re as a module variable
>    glapi: gl_XML.py: add missing method prototype.
>    glapi: gl_XML.py: refactor out extra else statement
>    glapi: gl_XML.py: return a tuple from gl_parameter.get_dimensions
>    glapi: glX_proto_common.py: return variable from
>      glx_print_proto.size_call
>    glapi: glX_proto_common.py: remove commented out code.
>    glapi: glX_proto_common.py: use python's _ for unused values
>    glapi: glX_proto_send.py: don't unpack useless values.
>    glapi: glX_proto_send.py: Don't shadow builtins.
>    glapi: glX_proto_send.py: remove useless pass keyword
>    glapi: glX_proto_send.py: simplify XCB string conversion
>    glapi: glX_proto_size.py: Remove dead code.
>    glapi: glX_server_table.py: use math.log instead of hand coded log2
>      function
>    glapi: gl_x86_asm.py: simplify method with sum and generator
>    glapi: gl_x86-64_asm.py: use _ for unused variable
>
>   src/mapi/glapi/gen/apiexec.py          |    5 +-
>   src/mapi/glapi/gen/glX_XML.py          |  141 +-
>   src/mapi/glapi/gen/glX_proto_common.py |   23 +-
>   src/mapi/glapi/gen/glX_proto_recv.py   |  100 +-
>   src/mapi/glapi/gen/glX_proto_send.py   |  653 ++++-----
>   src/mapi/glapi/gen/glX_proto_size.py   |  272 ++--
>   src/mapi/glapi/gen/glX_server_table.py |   78 +-
>   src/mapi/glapi/gen/gl_SPARC_asm.py     |   21 +-
>   src/mapi/glapi/gen/gl_XML.py           |  517 +++----
>   src/mapi/glapi/gen/gl_apitemp.py       |  192 ++-
>   src/mapi/glapi/gen/gl_enums.py         |  190 ++-
>   src/mapi/glapi/gen/gl_genexec.py       |   12 +-
>   src/mapi/glapi/gen/gl_gentable.py      |   38 +-
>   src/mapi/glapi/gen/gl_procs.py         |   70 +-
>   src/mapi/glapi/gen/gl_table.py         |   47 +-
>   src/mapi/glapi/gen/gl_x86-64_asm.py    |   41 +-
>   src/mapi/glapi/gen/gl_x86_asm.py       |   36 +-
>   src/mapi/glapi/gen/license.py          |    6 +-
>   src/mapi/glapi/gen/remap_helper.py     |   16 +-
>   src/mapi/glapi/gen/static_data.py      | 2471 ++++++++++++++++----------------
>   src/mapi/glapi/gen/typeexpr.py         |  120 +-
>   21 files changed, 2322 insertions(+), 2727 deletions(-)
>



More information about the mesa-dev mailing list