anv: Split dispatch tables into device and instance
authorJason Ekstrand <jason.ekstrand@intel.com>
Sat, 13 Oct 2018 17:16:14 +0000 (12:16 -0500)
committerJason Ekstrand <jason.ekstrand@intel.com>
Mon, 15 Oct 2018 18:30:24 +0000 (13:30 -0500)
commitae18c53ba6e0cb0b54a6e76caf6fbfa8a180c076
tree2e69d7fefe3085922b728aaa1699a6ef2de7403c
parent18cc65edf8480bc83685b3665c8c5268b1da79e6
anv: Split dispatch tables into device and instance

There's no reason why we need generate trampoline functions for instance
functions or carry N copies of the instance dispatch table around for
every hardware generation.  Splitting the tables and being more
conservative shaves about 34K off .text and about 4K off .data when
built with clang.

Before splitting dispatch tables:

   text    data     bss     dec     hex filename
3224305  286216    8960 3519481  35b3f9 _install/lib64/libvulkan_intel.so

After splitting dispatch tables:

   text    data     bss     dec     hex filename
3190325  282232    8960 3481517  351fad _install/lib64/libvulkan_intel.so

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
src/intel/vulkan/anv_device.c
src/intel/vulkan/anv_entrypoints_gen.py
src/intel/vulkan/anv_private.h