mesa/src/intel
Matt Turner 6c0246dcf4 intel/perf: Store indices to strings rather than pointers
The compiler does a good job of deduplicating strings already, but we
can eliminate the pointers to each string by combining the strings into
a single char array and storing only an index into that array.

The longest of the char arrays is the descriptions array, which is a
little over 45 KiB, so still under MSVC's 64 KiB string literal limit
[0]. Because the string length is under 64 KiB we can use uint16_t as
the index type, which roughly doubles our savings as compared to an int.

This cuts 77 KiB from iris_dri.so (0.5%) and libvulkan_intel.so (0.9%).

   text    data     bss     dec     hex filename
 926811   25920       0  952731   e899b meson-generated_.._intel_perf_metrics.c.o (before)
 924401       0       0  924401   e1af1 meson-generated_.._intel_perf_metrics.c.o (after)

   text    data     bss     dec     hex filename
14190852 391628  210004 14792484 e1b724 iris_dri.so (before)
14137732 365708  210004 14713444 e08264 iris_dri.so (after)

   text    data     bss     dec     hex filename
8184097  240184   22820 8447101  80e47d libvulkan_intel.so (before)
8131009  214264   22820 8368093  7fafdd libvulkan_intel.so (after)

relinfo:
iris_dri.so (before): 17765 relocations, 17545 relative (98%), 452 PLT entries, 1 for local syms (0%), 0 users
iris_dri.so (after) : 15605 relocations, 15385 relative (98%), 452 PLT entries, 1 for local syms (0%), 0 users

libvulkan_intel.so (before): 10720 relocations, 6989 relative (65%), 355 PLT entries, 1 for local syms (0%), 0 users
libvulkan_intel.so (after) :  8560 relocations, 4829 relative (56%), 355 PLT entries, 1 for local syms (0%), 0 users

[0] https://docs.microsoft.com/en-us/cpp/cpp/string-and-character-literals-cpp?view=msvc-170&viewFallbackFrom=vs-2019

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15237>
2022-03-07 21:09:54 +00:00
..
blorp blorp: Add blorp_measure hooks to the blitter codepaths 2022-02-24 21:42:16 +00:00
ci ci: Allow disabling the whole of the Collabora farm 2022-02-24 07:33:45 +01:00
common intel: Add missing dep of gen_*_header.py on utils.py. 2022-02-02 11:21:57 -08:00
compiler intel/fs: fix total_scratch computation 2022-03-02 13:13:03 +00:00
dev intel/dev: provide some default values for no_hw 2022-02-17 07:49:08 +00:00
ds intel/ds: fix compilation with perfetto 2022-02-08 12:29:21 +00:00
genxml anv/genxml/intel/fs: fix binding shader record entry 2022-02-19 13:50:56 +00:00
isl intel/isl: Add format assertions for surfaces using CCS 2022-02-10 04:47:14 +00:00
nullhw-layer intel/nullhw: fix build 2021-03-26 20:12:40 +00:00
perf intel/perf: Store indices to strings rather than pointers 2022-03-07 21:09:54 +00:00
tools intel: remove chipset_id 2022-01-13 03:09:36 +00:00
vulkan anv: Disable aux if the explicit modifier lacks it 2022-03-01 20:05:50 +00:00
Makefile.perf.am intel: Rename GEN_PERF prefix to INTEL_PERF in build files 2021-04-20 20:06:34 +00:00
meson.build anv: add perfetto source 2022-01-14 20:17:44 +00:00