[Mesa-dev] [PATCH 02/13] anv: Use python style in anv_entrypoints_gen.py

Dylan Baker dylan at pnwbakers.com
Wed Feb 22 23:38:22 UTC 2017


Quoting Jason Ekstrand (2017-02-22 15:28:50)
> On Wed, Feb 22, 2017 at 3:15 PM, Dylan Baker <dylan at pnwbakers.com> wrote:
> 
>     These are all fairly small cleanups/tweaks that don't really deserve
>     their own patch.
> 
>     - Prefer comprehensions to map() and filter(), since they're faster
>     - replace unused variables with _
>     - Use 4 spaces of indent
>     - drop semicolons from the end of lines
>     - Don't use parens around if conditions
>     - don't put spaces around brackets
>     - don't import modules as caps (ET -> et)
>     - Use docstrings instead of comments
> 
>     Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>
>     ---
>      src/intel/vulkan/anv_entrypoints_gen.py | 63
>     ++++++++++++++++++---------------
>      1 file changed, 34 insertions(+), 29 deletions(-)
> 
>     diff --git a/src/intel/vulkan/anv_entrypoints_gen.py b/src/intel/vulkan/
>     anv_entrypoints_gen.py
>     index 3f7a1ce294..358cf1e1e2 100644
>     --- a/src/intel/vulkan/anv_entrypoints_gen.py
>     +++ b/src/intel/vulkan/anv_entrypoints_gen.py
>     @@ -24,20 +24,20 @@
> 
>      import sys
>      import textwrap
>     -import xml.etree.ElementTree as ET
>     +import xml.etree.ElementTree as et
> 
>      max_api_version = 1.0
> 
>      supported_extensions = [
>     -   'VK_KHR_get_physical_device_properties2',
>     -   'VK_KHR_maintenance1',
>     -   'VK_KHR_sampler_mirror_clamp_to_edge',
>     -   'VK_KHR_shader_draw_parameters',
>     -   'VK_KHR_surface',
>     -   'VK_KHR_swapchain',
>     -   'VK_KHR_wayland_surface',
>     -   'VK_KHR_xcb_surface',
>     -   'VK_KHR_xlib_surface',
>     +    'VK_KHR_get_physical_device_properties2',
>     +    'VK_KHR_maintenance1',
>     +    'VK_KHR_sampler_mirror_clamp_to_edge',
>     +    'VK_KHR_shader_draw_parameters',
>     +    'VK_KHR_surface',
>     +    'VK_KHR_swapchain',
>     +    'VK_KHR_wayland_surface',
>     +    'VK_KHR_xcb_surface',
>     +    'VK_KHR_xlib_surface',
>      ]
> 
>      # We generate a static hash table for entry point lookup
>     @@ -53,33 +53,37 @@ hash_mask = hash_size - 1
>      prime_factor = 5024183
>      prime_step = 19
> 
>     +opt_header = False
>     +opt_code = False
>     +
>     +if sys.argv[1] == "header":
>     +    opt_header = True
>     +    sys.argv.pop()
>     +elif sys.argv[1] == "code":
>     +    opt_code = True
>     +    sys.argv.pop()
>     +
>     +
>      def hash(name):
>     -    h = 0;
>     +    h = 0
>          for c in name:
>              h = (h * prime_factor + ord(c)) & u32_mask
> 
>          return h
> 
>     +
>      def print_guard_start(guard):
>          if guard is not None:
>              print "#ifdef {0}".format(guard)
> 
>     +
>      def print_guard_end(guard):
>          if guard is not None:
>              print "#endif // {0}".format(guard)
> 
>     -opt_header = False
>     -opt_code = False
> 
>     -if (sys.argv[1] == "header"):
>     -    opt_header = True
>     -    sys.argv.pop()
>     -elif (sys.argv[1] == "code"):
>     -    opt_code = True
>     -    sys.argv.pop()
>     -
>     -# Extract the entry points from the registry
>      def get_entrypoints(doc, entrypoints_to_defines):
>     +    """Extract the entry points from the registry."""
>          entrypoints = []
> 
>          enabled_commands = set()
>     @@ -108,7 +112,7 @@ def get_entrypoints(doc, entrypoints_to_defines):
>                  continue
> 
>              shortname = fullname[2:]
>     -        params = map(lambda p: "".join(p.itertext()), command.findall('./
>     param'))
>     +        params = (''.join(p.itertext()) for p in command.findall('./
>     param'))
>              params = ', '.join(params)
>              if fullname in entrypoints_to_defines:
>                  guard = entrypoints_to_defines[fullname]
>     @@ -119,8 +123,9 @@ def get_entrypoints(doc, entrypoints_to_defines):
> 
>          return entrypoints
> 
>     -# Maps entry points to extension defines
>     +
>      def get_entrypoints_defines(doc):
>     +    """Maps entry points to extension defines."""
>          entrypoints_to_defines = {}
>          extensions = doc.findall('./extensions/extension')
>          for extension in extensions:
>     @@ -133,7 +138,7 @@ def get_entrypoints_defines(doc):
> 
> 
>      def main():
>     -    doc = ET.parse(sys.stdin)
>     +    doc = et.parse(sys.stdin)
>          entrypoints = get_entrypoints(doc, get_entrypoints_defines(doc))
> 
>          # Manually add CreateDmaBufImageINTEL for which we don't have an
>     extension
>     @@ -225,7 +230,7 @@ def main():
>          static const char strings[] =""")
> 
>          offsets = []
>     -    i = 0;
>     +    i = 0
>          for type, name, args, num, h, guard in entrypoints:
>              print "   \"vk%s\\0\"" % name
>              offsets.append(i)
>     @@ -247,7 +252,7 @@ def main():
>           */
>          """)
> 
>     -    for layer in [ "anv", "gen7", "gen75", "gen8", "gen9" ]:
>     +    for layer in ["anv", "gen7", "gen75", "gen8", "gen9"]:
>              for type, name, args, num, h, guard in entrypoints:
>                  print_guard_start(guard)
>                  print "%s %s_%s(%s) __attribute__ ((weak));" % (type, layer,
>     name, args)
>     @@ -295,8 +300,8 @@ def main():
>          # uint16_t table of entry point indices. We use 0xffff to indicate an
>     entry
>          # in the hash table is empty.
> 
>     -    map = [none for f in xrange(hash_size)]
>     -    collisions = [0 for f in xrange(10)]
>     +    map = [none for _ in xrange(hash_size)]
>     +    collisions = [0 for _ in xrange(10)]
> 
> 
> Aren't these just "[none] * hash_size" and "[0] * 10"?

Yes, yes they are. And, actually, the second is faster. I'll update that for a
v2.

>  
> 
>          for type, name, args, num, h, guard in entrypoints:
>              level = 0
>              while map[h & hash_mask] != none:
>     @@ -312,7 +317,7 @@ def main():
>          print " * size %d entries" % hash_size
>          print " * collisions  entries"
>          for i in xrange(10):
>     -        if (i == 9):
>     +        if i == 9:
>                  plus = "+"
>              else:
>                  plus = " "
>     --
>     2.11.1
> 
>     _______________________________________________
>     mesa-dev mailing list
>     mesa-dev at lists.freedesktop.org
>     https://lists.freedesktop.org/mailman/listinfo/mesa-dev
> 
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: signature
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170222/17029b97/attachment.sig>


More information about the mesa-dev mailing list