From 4662b70d23c2eed9b891e9694d956a1a2a37ab70 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Wed, 14 Aug 2019 14:40:03 -0700 Subject: [PATCH] gallium: Don't emit identical endian-dependent pack/unpack code. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Reduces the size of the u_format_table.c file by 140k (out of 1.64M) and makes me less confused about endianness in gallium. Reviewed-by: Roland Scheidegger Acked-by: Adam Jackson Reviewed-by: Marek Olšák --- src/gallium/auxiliary/util/u_format_pack.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/gallium/auxiliary/util/u_format_pack.py b/src/gallium/auxiliary/util/u_format_pack.py index 75bda428e93..aae6b5ab9f0 100644 --- a/src/gallium/auxiliary/util/u_format_pack.py +++ b/src/gallium/auxiliary/util/u_format_pack.py @@ -64,11 +64,17 @@ def print_channels(format, func): if format.nr_channels() <= 1: func(format.le_channels, format.le_swizzles) else: - print('#ifdef PIPE_ARCH_BIG_ENDIAN') - func(format.be_channels, format.be_swizzles) - print('#else') - func(format.le_channels, format.le_swizzles) - print('#endif') + if (format.le_channels == format.be_channels and + [c.shift for c in format.le_channels] == + [c.shift for c in format.be_channels] and + format.le_swizzles == format.be_swizzles): + func(format.le_channels, format.le_swizzles) + else: + print('#ifdef PIPE_ARCH_BIG_ENDIAN') + func(format.be_channels, format.be_swizzles) + print('#else') + func(format.le_channels, format.le_swizzles) + print('#endif') def generate_format_type(format): '''Generate a structure that describes the format.''' -- 2.30.2