LibretroAdmin
e961638263
Texture cache: hash whole buffers with libretro-common's encoding_crc32
...
Most of the texture cache's hashing is one whole buffer a frame: the
XFB, checked against its copy before it is shown. On x86-64 with
VPCLMULQDQ on ZMM, a whole buffer of 512 bytes or more is now the
CRC-32 of libretro-common's encoding_crc32, which folds 512 bits at a
time; smaller and sampled hashes, and every other CPU, keep the four
CRC32C chains. Folding 128 bits at a time is no quicker than the
chains, so PCLMULQDQ alone keeps them too.
Throughput here (Zen 5), chains against encoding_crc32:
512 B 25 to 44 GB/s, 2 KiB 25 to 70, 32 KiB 26 to 91,
a 600 KiB XFB 25 to 52-67.
encoding_crc32.c, its tables and crc32.h are copied unchanged from
libretro/libretro-common.
States keep texture cache hashes, and a copy whose picture is only on
the host would be lost to a mismatch: the first check of a copy a
state brought back also takes the old hash of its memory
(common_hash64_v1), and keeps the new one from then on. A state the
parent saved, loaded by this build, takes its XFB copy that way.
2026-11-10 03:53:30 +01:00
..
2026-11-07 14:23:51 +01:00
2026-11-09 21:34:27 +01:00
2026-11-05 15:57:56 +01:00
2026-11-09 15:53:55 +01:00
2026-11-09 15:53:55 +01:00
2026-11-08 03:21:40 +01:00
2026-11-09 15:53:55 +01:00
2026-11-09 00:15:13 +01:00
2026-11-08 03:19:11 +01:00
2026-11-07 17:05:56 +01:00
2026-11-08 03:21:36 +01:00
2026-11-07 17:05:56 +01:00
2026-11-08 03:21:36 +01:00
2026-11-06 20:47:25 +01:00
2026-11-06 20:47:25 +01:00
2026-11-09 20:37:28 +01:00
2026-11-07 22:59:17 +01:00
2026-11-09 15:53:55 +01:00
2026-11-09 00:15:13 +01:00
2026-11-08 03:21:40 +01:00
2026-11-08 03:21:40 +01:00
2026-11-08 03:21:40 +01:00
2026-11-08 03:21:40 +01:00
2026-11-09 05:14:43 +01:00
2026-11-09 05:14:43 +01:00
2025-08-23 13:50:22 -05:00
2026-11-09 09:01:19 +01:00
2026-11-09 20:17:05 +01:00
2026-11-09 18:35:17 +01:00
2026-11-06 00:19:39 +01:00
2026-11-09 03:56:54 +01:00
2024-01-03 18:43:44 -06:00
2026-11-09 20:17:05 +01:00
2026-11-09 20:17:05 +01:00
2026-01-25 16:12:15 +01:00
2023-02-15 19:18:39 -08:00
2023-01-25 02:21:56 -06:00
2026-11-07 01:36:34 +01:00
2026-11-07 01:36:34 +01:00
2026-11-09 20:17:05 +01:00
2026-11-07 22:25:43 +01:00
2026-11-09 23:03:11 +01:00
2026-11-09 23:03:11 +01:00
2026-11-09 00:38:38 +01:00
2026-11-08 03:21:40 +01:00
2026-11-07 21:48:29 +01:00
2026-11-07 21:48:29 +01:00
2026-11-08 03:21:40 +01:00
2026-11-08 03:21:36 +01:00
2026-11-07 16:38:22 +01:00
2026-11-07 21:48:29 +01:00
2026-11-07 21:48:29 +01:00
2026-11-07 14:23:51 +01:00
2022-12-29 15:33:19 +01:00
2026-08-07 18:42:52 +12:00
2026-11-07 13:37:26 +01:00
2026-07-15 12:02:16 -07:00
2026-11-09 19:22:46 +01:00
2026-11-09 19:22:46 +01:00
2026-11-07 21:48:29 +01:00
2026-11-05 15:57:56 +01:00
2026-11-08 03:21:36 +01:00
2026-11-09 20:17:05 +01:00
2026-11-07 23:28:10 +01:00
2026-11-08 03:21:40 +01:00
2026-11-08 03:21:40 +01:00
2026-11-07 06:12:53 +01:00
2026-11-07 06:12:53 +01:00
2026-11-09 18:35:17 +01:00
2026-11-05 20:11:27 +01:00
2026-11-09 03:56:54 +01:00
2026-11-05 15:57:56 +01:00
2026-11-09 03:56:54 +01:00
2026-11-05 15:57:56 +01:00
2026-11-08 03:19:11 +01:00
2026-11-08 03:19:11 +01:00
2026-11-08 03:21:40 +01:00
2026-11-08 03:21:40 +01:00
2026-11-09 15:53:55 +01:00
2026-11-09 15:53:55 +01:00
2022-07-15 12:29:40 -07:00
2026-11-09 20:37:28 +01:00
2026-11-09 20:37:28 +01:00
2026-11-09 16:45:33 +01:00
2026-11-09 20:17:05 +01:00
2026-11-09 04:42:40 +01:00
2026-11-07 21:48:29 +01:00
2026-11-09 20:37:28 +01:00
2026-11-09 06:35:23 +01:00
2026-11-09 20:37:28 +01:00
2026-11-09 03:05:26 +01:00
2026-11-09 03:05:26 +01:00
2026-11-10 03:53:30 +01:00
2026-11-10 03:53:30 +01:00
2024-10-10 20:23:55 -07:00
2025-01-20 14:24:54 -06:00
2026-11-09 04:42:40 +01:00
2026-11-09 04:42:40 +01:00
2026-11-08 20:39:57 +01:00
2026-11-08 20:39:57 +01:00
2026-01-25 16:12:15 +01:00
2025-04-23 11:19:20 +02:00
2026-01-25 16:12:15 +01:00
2024-04-20 18:31:08 +02:00
2026-11-07 16:38:00 +01:00
2026-01-19 19:46:21 +01:00
2026-01-24 16:50:10 +01:00
2026-11-08 03:21:40 +01:00
2026-05-03 17:09:59 -07:00
2026-11-07 21:48:29 +01:00
2026-11-07 21:48:29 +01:00
2026-11-09 03:56:54 +01:00
2026-11-07 21:48:29 +01:00
2026-11-07 21:48:29 +01:00
2026-11-07 21:48:29 +01:00
2026-11-08 02:19:56 +01:00
2026-11-08 02:19:56 +01:00
2023-12-02 15:54:52 -08:00
2025-04-23 11:19:20 +02:00
2024-10-12 10:32:41 -07:00
2025-04-23 11:19:20 +02:00
2026-05-03 17:09:59 -07:00
2025-04-23 11:19:20 +02:00
2026-05-03 17:09:59 -07:00
2025-04-23 11:19:20 +02:00
2026-11-09 17:33:05 +01:00
2026-11-09 17:33:05 +01:00
2026-11-09 17:33:05 +01:00
2026-11-09 17:33:05 +01:00
2026-11-09 17:33:05 +01:00
2026-11-09 17:33:05 +01:00
2026-11-09 20:17:05 +01:00
2026-11-08 03:21:36 +01:00
2022-11-22 17:17:11 -08:00
2026-11-09 17:33:05 +01:00
2026-11-09 17:33:05 +01:00
2026-11-09 20:17:05 +01:00
2026-11-09 20:17:05 +01:00
2026-11-07 21:48:29 +01:00
2026-11-05 15:57:56 +01:00
2026-11-09 20:17:05 +01:00
2026-11-09 19:52:04 +01:00
2026-11-09 23:03:11 +01:00
2026-11-09 04:42:44 +01:00
2026-11-07 17:05:56 +01:00
2025-07-21 14:07:26 +09:00
2026-11-08 18:26:41 +01:00
2026-11-08 19:10:11 +01:00
2026-11-08 01:17:29 +01:00
2026-11-07 20:34:48 +01:00
2026-11-09 20:17:05 +01:00
2026-11-08 03:21:40 +01:00
2026-08-07 18:42:52 +12:00
2026-11-09 19:52:04 +01:00
2026-11-09 19:52:04 +01:00
2026-11-09 09:01:19 +01:00