mesa/src/util
Matt Turner e4d964670a util: Fix disk_cache index calculation on big endian
The cache-test test program attempts to create a collision (using key_a
and key_a_collide) by making the first two bytes identical. The idea is
fine -- the shader cache wants to use the first four characters of a
SHA1 hex digest as the index.

The following program

        unsigned char array[4] = {1, 2, 3, 4};
        int *ptr = (int *)array;

        for (int i = 0; i < 4; i++) {
            printf("%02x", array[i]);
        }
        printf("\n");

        printf("%08x\n", *ptr);

prints

   01020304
   04030201

on little endian, and

   01020304
   01020304

on big endian.

On big endian platforms reading the character array back as an int (as
is done in disk_cache.c) does not yield the same results as reading the
byte array.

To get the first four characters of the SHA1 hex digest when we mask
with CACHE_INDEX_KEY_MASK, we need to byte swap the int on big endian
platforms.

Bugzilla: https://bugs.freedesktop.org/103668
Bugzilla: https://bugs.gentoo.org/637060
Bugzilla: https://bugs.gentoo.org/636326
Fixes: 87ab26b2ab ("glsl: Add initial functions to implement an
                      on-disk cache")
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
(cherry picked from commit c690a7a8cd)
2017-11-27 18:33:40 +00:00
..
sha1 util: Fix SHA1 implementation on big endian 2017-11-27 18:33:27 +00:00
tests meson: convert gtest to an internal dependency 2017-10-03 10:02:08 -07:00
xmlpool radeonsi: update hack for HTILE corruption in ARK: Survival Evolved 2017-10-27 21:33:04 +01:00
.gitignore mesa: Add .gitignore entries for make check binaries 2016-05-25 09:41:44 -07:00
Android.mk android: export intermediates from libmesa_util 2017-08-02 10:32:48 +03:00
bitscan.c util/bitscan: use correct signature for ffs/ffsll 2017-03-13 11:16:34 +00:00
bitscan.h gallium: use "ull" number suffix to keep the QtCreator parser happy 2017-07-10 22:44:48 +02:00
bitset.h util/bitset: Allow iterating over const bitsets 2016-03-24 15:20:44 -07:00
build_id.c util/build_id: Include <dlfcn.h> 2017-09-13 12:43:42 -07:00
build_id.h util: Query build-id by symbol address, not library name 2017-09-13 09:49:27 -07:00
crc32.c util: import CRC32 implementation from gallium 2016-11-22 18:05:51 +01:00
crc32.h util: import CRC32 implementation from gallium 2016-11-22 18:05:51 +01:00
debug.c util: move brw_env_var_as_boolean() to util 2015-11-24 10:02:55 -05:00
debug.h util: rename include guard to avoid clash 2017-09-07 08:54:44 +01:00
disk_cache.c util: Fix disk_cache index calculation on big endian 2017-11-27 18:33:40 +00:00
disk_cache.h radv: create on-disk shader cache 2017-10-12 08:52:38 +11:00
drirc radeonsi: update hack for HTILE corruption in ARK: Survival Evolved 2017-10-27 21:33:04 +01:00
format_r11g11b10f.h util: consistently use ifndef guards over pragma once 2017-03-22 16:55:22 +00:00
format_rgb9e5.h util/format: Use explicitly sized types 2016-08-05 09:07:04 -07:00
format_srgb.h util: Tiny optimisation for the linear→srgb conversion 2015-11-27 10:55:22 +01:00
format_srgb.py util: remove shebang from format_srgb.py 2017-03-10 14:12:48 +00:00
half_float.c glsl: move half<->float convertion to util 2015-10-16 19:33:37 -04:00
half_float.h mesa: move _mesa_half_is_negative() to half_float.h 2017-10-10 11:28:31 -06:00
hash_table.c util: fix warning/error on 32bit build 2017-07-25 12:54:33 +03:00
hash_table.h mesa/util: add a hash table wrapper which support 64-bit keys 2017-06-14 10:04:35 +02:00
list.h util: #include "c99_compat.h" to fix Windows build 2017-04-03 13:09:05 -06:00
macros.h util: use cannonical form of ARRAY_SIZE 2017-08-02 20:43:33 +01:00
Makefile.am util: Add tests for the string buffer 2017-09-26 18:24:46 +02:00
Makefile.sources util: Add a string buffer implementation 2017-09-26 18:24:33 +02:00
merge_driinfo.py util: add merge_driinfo.py 2017-08-02 09:50:57 +02:00
mesa-sha1.c util/sha1: harmonize _mesa_sha1_* wrappers 2017-03-22 11:33:51 +00:00
mesa-sha1.h util: #include "c99_compat.h" to fix Windows build 2017-04-03 13:09:05 -06:00
meson.build meson: Build i965 and dri stack 2017-10-09 13:42:44 -07:00
ralloc.c ralloc: Allow reparenting to a NULL context 2017-10-12 22:39:31 -07:00
ralloc.h util/ralloc: add ralloc_str_append() helper 2017-08-11 10:43:31 +10:00
rand_xor.c util/rand_xor: add missing include statements 2017-06-01 14:26:12 +01:00
rand_xor.h util/rand_xor: add function to seed rand 2017-03-23 08:16:29 +11:00
register_allocate.c util/ra: fix memory leak 2017-07-31 12:55:19 -07:00
register_allocate.h ra: Add a callback for selecting a register from what's available. 2017-07-25 14:44:52 -07:00
rgtc.c util: move shared rgtc code to util (v2) 2014-09-17 11:27:25 +10:00
rgtc.h util: move shared rgtc code to util (v2) 2014-09-17 11:27:25 +10:00
roundeven_test.c util: Add a roundeven test. 2015-03-18 21:06:26 -07:00
rounding.h util: try to use SSE instructions with MSVC and 32-bit gcc 2016-08-17 12:53:20 -06:00
SConscript Attempt to fix AppVeyor build, round 2 2017-07-31 17:19:13 +02:00
set.c util: make set's deleted_key_value declaration consistent with hash table one 2017-06-08 09:26:44 +02:00
set.h util/hash_set: Rework the API to know about hashing 2015-01-15 13:21:27 -08:00
simple_list.h mesa: Port a variant of 68afbe89c7 to util/ 2015-01-28 16:33:34 -08:00
slab.c util: slab_destroy_child should check whether it's been initialized 2017-05-29 01:52:16 +02:00
slab.h util/slab: re-design to allow migration between pools (v3) 2016-10-05 15:40:40 +02:00
string_buffer.c util: Add a string buffer implementation 2017-09-26 18:24:33 +02:00
string_buffer.h util: Add a string buffer implementation 2017-09-26 18:24:33 +02:00
strndup.h util/strndup: move header inclusion as applicable 2017-03-22 16:55:23 +00:00
strtod.c util: improve compiler guard 2017-09-03 09:05:23 +01:00
strtod.h mesa/main: free locale at exit 2015-06-29 09:06:40 -07:00
texcompress_rgtc_tmp.h util: move shared rgtc code to util (v2) 2014-09-17 11:27:25 +10:00
u_atomic.c util/u_atomic: remove unnecessaty __atomic functions 2017-09-22 17:12:24 +03:00
u_atomic.h util: use GCC atomic intrinsics with explicit memory model 2016-10-05 15:39:39 +02:00
u_atomic_test.c util: fix comment typo 2015-12-04 14:06:41 +00:00
u_dynarray.h mesa/util: add util_dynarray_clear() helper 2017-06-18 14:10:32 +02:00
u_endian.h u_endian: add android to glibc clause 2016-09-13 10:04:13 +10:00
u_queue.c util/queue: fix a race condition in the fence code 2017-09-29 11:52:41 +02:00
u_queue.h util/u_queue: add an option to resize the queue when it's full 2017-07-17 10:57:20 -04:00
u_string.h util: include string.h in u_string.h 2017-10-03 14:33:00 -06:00
u_thread.h util: move pipe_thread_is_self from gallium to src/util 2017-06-26 02:17:03 +02:00
u_vector.c anv: Move a comment that got left behind in the u_vector refactor. 2017-08-18 11:56:58 -07:00
u_vector.h util: Remove u_math from u_vector 2017-07-14 14:14:05 +01:00
xmlconfig.c xmlconfig: use the portable __VA_ARGS__ 2017-08-26 11:20:06 +01:00
xmlconfig.h xmlconfig: move into src/util 2017-07-31 15:38:41 +02:00
xmlpool.h xmlconfig: move into src/util 2017-07-31 15:38:41 +02:00