blender/intern
Lukas Stockner 4bde68cdd6 Cycles: Compress GPU kernels to reduce file size
Precompiled Cycles kernels make up a considerable fraction of the total size of
Blender builds nowadays. As we add more features and support for more
architectures, this will only continue to increase.

However, since these kernels tend to be quite compressible, we can save a lot
of storage by storing them in compressed form and decompressing the required
kernel(s) during loading.

By using Zstandard compression with a high level, we can get decent compression
ratios (~5x for the current kernels) while keeping decompression time low
(about 30ms in the worse case in my tests). And since we already require zstd
for Blender, this doesn't introduce a new dependency.

While the main improvement is to the size of the extracted Blender installation
(which is reduced by ~400-500MB currently), this also shrinks the download on
Windows, since .zip's deflate compression is less effective. It doesn't help on
Linux since we're already using .tar.xz there, but the smaller installed size
is still a good thing.

See #123522 for initial discussion.

Pull Request: https://projects.blender.org/blender/blender/pulls/123557
2024-06-23 00:52:30 +02:00
..
atomic Cleanup: move CMake test utility functions into testing.cmake 2024-01-03 14:49:11 +01:00
audaspace Cleanup: use braces for sources in intern/ 2023-09-17 09:05:40 +10:00
clog Cleanup: match function/declaration names 2024-04-17 11:36:36 +10:00
cycles Cycles: Compress GPU kernels to reduce file size 2024-06-23 00:52:30 +02:00
dualcon Mesh: Rename MLoopTri variable names, and functions 2023-12-19 14:57:49 +01:00
eigen Cleanup: remove redundant define checks 2023-12-07 10:39:03 +11:00
ffmpeg Tests: add option to build one binary per GTest file 2024-01-03 18:35:50 +01:00
ghost Fix #123339: Blender fails to build with older versions of wayland 2024-06-19 19:36:10 +10:00
guardedalloc Fix (unreported) 'copy' version of MEM_cnew not handling alignment. 2024-06-20 11:00:34 +02:00
iksolver Clang Format: bump to version 17 2024-01-03 13:38:14 +01:00
itasc Fix #120763: Fix memory leak in itasc cache 2024-04-24 09:35:04 +02:00
libc_compat Build: fix linking FFMPEG & x265 on Linux 2024-06-15 14:15:53 +10:00
libmv UI: fix and improve a few messages 2024-02-05 17:08:17 +01:00
locale License Headers: Set copyright to "Blender Authors", add AUTHORS 2023-08-16 00:20:26 +10:00
mantaflow Cleanup: remove redundant variables & assignments 2024-04-09 13:52:41 +10:00
memutil Cleanup: use braces in headers 2023-09-24 14:52:38 +10:00
mikktspace Cleanup: Mikktspace: use sqrtf() function with float type 2024-06-04 14:27:17 +02:00
opencolorio Fix #121819: OpenColorIO GLSL error after recent change, only apply to Metal 2024-06-12 18:29:49 +02:00
opensubdiv Subdiv: Make OpenSubdiv_TopologyRefiner into a C++ class 2024-04-19 09:03:48 -04:00
openvdb Cleanup: spelling in code comments & minor edits 2024-06-06 09:55:13 +10:00
quadriflow Cleanup: Replace MVertTri type with C++ vector 2023-12-20 20:59:11 -05:00
renderdoc_dynload RenderDoc: Set Capture Title 2024-02-23 10:57:37 +01:00
rigidbody Cleanup: use const pointers 2024-04-20 12:41:23 +10:00
sky Cleanup: use C-style comments for descriptive text 2024-04-11 17:44:27 +10:00
utfconv CMake: Fix Compiling Shader Builder on macOS 2023-12-08 15:47:14 +01:00
wayland_dynload GHOST/Wayland: expose wl_display_get_protocol_error function 2024-05-03 10:55:17 +10:00
CMakeLists.txt CMake: Fix Compiling Shader Builder on macOS 2023-12-08 15:47:14 +01:00