https://gpuopen.com/brotli-g-sdk-announce/ GPUOpen Logo GPUOpen logo Zhihu Youtube Twitter Mastodon Rss [ ] Search HOME SOFTWARE DOCUMENTATION [ ] Search FidelityFX * Meet all our effects * Super Resolution 1 (FSR 1) * Super Resolution 2 (FSR 2) * Contrast Adaptive Sharpening * Screen Space Reflections * Denoiser * Downsampler * HDR Mapper * Variable Shading * Parallel Sort * Naming guidelines * Developer testimonials * Other - TressFX Radeon Developer Tool Suite * Meet all our tools * Radeon(tm) Raytracing Analyzer * Radeon(tm) GPU Profiler * Radeon(tm) GPU Analyzer * Radeon(tm) Memory Visualizer * Radeon(tm) Developer Panel * Other - Compressonator * Other - OCAT Engines and APIs * Unreal Engine * Unity * Vulkan(r) * DirectX(r)12 * DirectX(r)12 Ultimate Radeon ProRenderRadeon ProRender * Radeon(tm) ProRender suite * Radeon(tm) ProRender SDK * Radeon(tm) Rays * Radeon(tm) ML * Radeon(tm) Image Filtering Content creation * HIP Ray Tracing * Orochi * GPUOpen MaterialX Library Hybrid RT & samples * Meet all our samples * Hybrid Shadows * Hybrid Stochastic Reflections * Cauldron glTF sample SDKs and libraries * Meet all our SDKs * AMD GPU Services * Vulkan(r) Memory Allocator * Direct3D(r)12 Memory Allocator * AMD Display Library * Advanced Media Framework * Cauldron framework * GPU Performance API Site directory Blogs * Latest GPUOpen news * Software release guides * AMD developer blogs * Guest developer blogs Get started with: * Graphics and AMD hardware * Our tools * Our SDKs and libraries * Our effects * Content creation * Optimizing and performance * Developing Vulkan(r) applications * Developing DirectX(r)12 applications * Using the FSR 1 Unreal Engine 4 plugin * Using the FSR 2 Unreal Engine 4/5 plugin Performance * AMD RDNA(tm) Performance Guide * AMD Ryzen(tm) Performance Guide * Unreal Engine Performance Guide Research * See our publications * Advanced Rendering Research Group * AMD Lab Notes (HPC) Reference * AMD ISA documentation * Radeon(tm) Vulkan(r) Drivers version table * AMD RDNA(tm) * AMD RDNA(tm) 2 Events * Visit our events page * GDC 2022 * Earlier GDC events * Digital Dragons * SIGGRAPH * Let's build... (our virtual event) Site directory Videos * Visit our videos page * Intro to ray tracing * FSR 2.0 video * Introduction to Compute Shaders Presentations * All our presentations * Manuals * FSR 2.0 presentation Videos * Visit our videos page * Intro to ray tracing * FSR 2.0 video * Introduction to Compute Shaders Presentations * All our presentations * Manuals * FSR 2.0 presentation Home >> News >> Release Brotli-G: An open-source compression/decompression standard for digital assets that is compatible with GPU hardware * November 21, 2022 Introduction and background Brotli-G is based on the well-established Brotli lossless compression algorithm standard maintained by the IETF (also known as RFC7932). Brotli was first released in 2013 and the open-source specification was developed and generalized between 2013 and 2016. It was developed by Google Research as an open successor to the GZIP and Deflate algorithms, with similar performance (to Deflate) but a better compression ratio. The original use case was to make websites load faster by compressing content used by web servers and content delivery networks. Brotli is useful as a general compression scheme for many types of data/content /assets. The 'intended audience' as defined in the specification is characterized as follows: "This specification is intended for use by software implementers to compress data into and/or decompress data from the Brotli format." Existing ecosystem for Brotli Brotli browser acceptanceBrotli browser acceptance From https:// caniuse.com/?search=brotli The technical details of the Brotli algorithm are well documented (see resources section below). At a high level, it is a combination of the LZ77 compression algorithm and Huffman coding (similar to GZIP and Deflate). It is well documented that Brotli performs competitively vs other standards (such as GZIP and Deflate) in all metrics: compression ratio, compression speed, and decompression speed. Comparisons with various compressions standards can be seen at Squash Compression Benchmark (quixdb.github.io) Because of the obvious performance and compression ratio advantages over previous compression formats, Brotli has been widely adopted in web applications and content spaces. Brotli can be used to compress web application assets such as fonts, javascript, images, and much more. * Brotli decompression is supported by over 95% of web browsers today. * Many web application frameworks support Brotli encoding (such as NGINX, and ASP.NET). * Some CDNs use Brotli encoding (such as Azure, and ImageKit) Brotli has already been successful in these areas. When asset file sizes are smaller, they can be delivered over networks faster, and when compression/decompression is fast, web pages load faster and are more responsive. As a general data compression format, Brotli may also be applied to other software ecosystems such as gaming and cloud gaming. Video games are asset-dense software applications, and many already employ some type of compression to reduce file size. The gaming experience may be improved by improving the compression and decompression performance of compressed assets. Brotli-G: AMD modifications to Brotli The AMD modifications to the Brotli bitstream format are focused on allowing efficient, data-parallel decompression on GPUs and multithreaded CPUs, while still maintaining comparatively high, state-of-the-art compression ratios for general-purpose data. Some of the modifications include: * Limited the size of chunks to compress (pages) providing the ability to use multiple Compute Units (CUs) on the GPU. * Implemented parallel Huffman substreams, providing the ability to use SIMD processing. * Simplified the bitstream format to maximize performance on GPU. The Brotli-G decompression algorithm has been implemented as a 'shader' program (written in HLSL) that runs on virtually any DirectX(r)-compatible graphics card. Implementing decompression in shaders takes advantage of the enormous parallel processing power available in modern GPU hardware, to enable incredibly fast decompression speeds. Existing optimized Brotli decompression functions (CPU implementations) should be able to decompress the Brotli-G bitstream, while more optimal data-parallel implementations on hosts or accelerators can further improve performance. One thing for developers to note is that assets that have already been compressed with Brotli cannot be decompressed with Brotli-G decompressor implementations. To take advantage of Brotli-G, assets must be recompressed using a Brotli-G compatible compressor (also supplied in the SDK). What AMD is releasing We are releasing a Brotli-G SDK that contains source code for CPU compression and decompression on both the CPU and the GPU. The SDK also contains source code for a CLI application that can be used for testing and measuring the performance of the Brotli-G codec. The SDK can be found in its GitHub repository. We will also be integrating Brotli-G codecs into our Compressonator content authoring toolchain component as a supported compression format in its SDK library (coming soon). AMD encourages collaborative, open-source development to further improve compression ratio and multi-threaded compression/ decompression performance on CPU and GPU accelerators, in addition to improving integration with the general Brotli format. Licensing Brotli-G is released under the same licensing terms as Brotli (MIT-based license known as BCP 78) to support broad adoption in many different software ecosystems. Find out more and download Brotli-G SDKBrotli-G SDK Brotli-G SDK Brotli-G is an open-source compression/decompression standard for digital assets (based on Brotli) that is compatible with GPU hardware. Resources * https://datatracker.ietf.org/doc/html/rfc7932 * https://en.wikipedia.org/wiki/Brotli * https://github.com/google/brotli * https://kinsta.com/blog/brotli-compression/ * https://imagekit.io/blog/what-and-why-brotli-compression/ * https://docs.nginx.com/nginx/admin-guide/dynamic-modules/brotli/ * https://devblogs.microsoft.com/dotnet/ introducing-support-for-brotli-compression/ * https://learn.microsoft.com/en-us/azure/cdn/ cdn-improve-performance#compression-rules * https://css-tricks.com/ how-i-used-brotli-to-get-even-smaller-css-and-javascript-files-at-cdn-scale / * https://github.com/GhostTyper/BrotliVsDeflate * https://cran.r-project.org/web/packages/brotli/vignettes/ brotli-2015-09-22.pdf * https://paulcalvano.com/ 2018-07-25-brotli-compression-how-much-will-it-reduce-your-content / * https://quixdb.github.io/squash-benchmark/#results-table * https://www.rfc-editor.org/info/bcp78 * https://caniuse.com/?search=brotli Latest news [svg][amd_lab_notes_v1] Introducing AMD lab notes - new programming tutorials for HPC and ML In this blog series, we share the lessons learned from tuning a wide range of scientific applications, libraries, and frameworks for AMD GPUs. [svg][amd_lab_notes_v1] AMD Matrix Cores - amd-lab-notes This first post in the 'AMD lab notes' series takes a look at AMD's Matrix Core technology and how best to use it to speed up your matrix operations. [svg][amd_lab_notes_v1] Finite Difference Method - Laplacian Part 1 - amd-lab-notes The finite difference method is a powerful tool for computational physics. This post covers to implement a GPU-accelerated finite difference code using AMD's HIP API. The TLAS Viewer in the RRA GUIThe TLAS Viewer in the RRA GUI Radeon(tm) Raytracing Analyzer source code available + meet amdrdf Analyze the source code to RRA, and learn about amdrdf, a library for handling Radeon Data File (RDF) format, used by RRA and others. Looking for a good place to get started with exploring GPUOpen? Getting started: our softwareGetting started: our software New or fairly new to AMD's tools, libraries, and effects? This is the best place to get started on GPUOpen! Getting started: development and performanceGetting started: development and performance Looking for tips on getting started with developing and/or optimizing your game, whether on AMD hardware or generally? We've got you covered! You may also like... [svg][featured_learn_dark-1024x560] Explore our huge collection of detailed tutorials, sample code, presentations, and documentation to find your answers to your graphics development questions. [svg][featured_effects_dark-1024x560] Create wonder. No black boxes. [svg][featured_performance_dark-1024x560] The home of great performance and optimization advice for AMD RDNA(tm) 2 GPUs, AMD Ryzen(tm) CPUs, and so much more. [svg][featured_samples_dark-1-1024x560] Browse all our useful samples. Perfect for when you're needing to get started, want to integrate one of our libraries, and much more. [svg][featured_sdks_dark-1024x560] Discover what our SDK technologies can offer you. Query hardware or software, manage memory, create rendering applications or machine learning, and much more! [svg][featured_tools_dark-1024x560] Analyze, Optimize, Profile, Benchmark. We provide you with the developer tools you need to make sure your game is the best it can be! * Effects + FidelityFX Super Resolution 1 + FidelityFX Super Resolution 2 + FidelityFX Contrast Adaptive Sharpening + FidelityFX SSSR + FidelityFX CACAO + TressFX + All our effects * Tools + Radeon GPU Profiler (RGP) + Radeon(tm) Raytracing Analyzer (RRA) + Radeon GPU Analyzer (RGA) + Radeon Memory Visualizer (RMV) + OCAT + Compressonator + All our tools * SDKs + Radeon(tm) ProRender + Orochi + Vulkan(r) Memory Allocator (VMA) + D3D12 Memory Allocator (D3D12MA) + AMD GPU Services (AGS) + All our SDKs * Performance + AMD RDNA(tm) 2 GPU Performance Guide + AMD Ryzen CPU Performance Guide + Unreal Engine Performance Guide * Blogs + Software blogs + Developer guides + Guest posts + Videos * Documentation + Publications + Presentations and papers + Samples + AMD ISA documentation Menu * Effects + FidelityFX Super Resolution 1 + FidelityFX Super Resolution 2 + FidelityFX Contrast Adaptive Sharpening + FidelityFX SSSR + FidelityFX CACAO + TressFX + All our effects * Tools + Radeon GPU Profiler (RGP) + Radeon(tm) Raytracing Analyzer (RRA) + Radeon GPU Analyzer (RGA) + Radeon Memory Visualizer (RMV) + OCAT + Compressonator + All our tools * SDKs + Radeon(tm) ProRender + Orochi + Vulkan(r) Memory Allocator (VMA) + D3D12 Memory Allocator (D3D12MA) + AMD GPU Services (AGS) + All our SDKs * Performance + AMD RDNA(tm) 2 GPU Performance Guide + AMD Ryzen CPU Performance Guide + Unreal Engine Performance Guide * Blogs + Software blogs + Developer guides + Guest posts + Videos * Documentation + Publications + Presentations and papers + Samples + AMD ISA documentation * News * Hybrid RT * DirectX(r)12 * Vulkan(r) * Unreal Engine * Unity * Research * Radeon(tm) ProRender * MaterialX Library * Directory Menu * News * Hybrid RT * DirectX(r)12 * Vulkan(r) * Unreal Engine * Unity * Research * Radeon(tm) ProRender * MaterialX Library * Directory * AMD Developer Central * Trademarks * Terms & Conditions * Privacy Policy * Cookie Policy * Directory Menu * AMD Developer Central * Trademarks * Terms & Conditions * Privacy Policy * Cookie Policy * Directory COOKIES SETTINGS AMDAMD RyzenRyzen RadeonRadeon * AMD Developer Central * Trademarks * Terms & Conditions * Privacy Policy * Cookie Policy * Directory Menu * AMD Developer Central * Trademarks * Terms & Conditions * Privacy Policy * Cookie Policy * Directory COOKIES SETTINGS * News * Hybrid RT * DirectX(r)12 * Vulkan(r) * Unreal Engine * Unity * Research * Radeon(tm) ProRender * MaterialX Library * Directory Menu * News * Hybrid RT * DirectX(r)12 * Vulkan(r) * Unreal Engine * Unity * Research * Radeon(tm) ProRender * MaterialX Library * Directory * Effects + FidelityFX Super Resolution 1 + FidelityFX Super Resolution 2 + FidelityFX Contrast Adaptive Sharpening + FidelityFX SSSR + FidelityFX CACAO + TressFX + All our effects * Tools + Radeon GPU Profiler (RGP) + Radeon(tm) Raytracing Analyzer (RRA) + Radeon GPU Analyzer (RGA) + Radeon Memory Visualizer (RMV) + OCAT + Compressonator + All our tools * SDKs + Radeon(tm) ProRender + Orochi + Vulkan(r) Memory Allocator (VMA) + D3D12 Memory Allocator (D3D12MA) + AMD GPU Services (AGS) + All our SDKs * Performance + AMD RDNA(tm) 2 GPU Performance Guide + AMD Ryzen CPU Performance Guide + Unreal Engine Performance Guide * Blogs + Software blogs + Developer guides + Guest posts + Videos * Documentation + Publications + Presentations and papers + Samples + AMD ISA documentation Menu * Effects + FidelityFX Super Resolution 1 + FidelityFX Super Resolution 2 + FidelityFX Contrast Adaptive Sharpening + FidelityFX SSSR + FidelityFX CACAO + TressFX + All our effects * Tools + Radeon GPU Profiler (RGP) + Radeon(tm) Raytracing Analyzer (RRA) + Radeon GPU Analyzer (RGA) + Radeon Memory Visualizer (RMV) + OCAT + Compressonator + All our tools * SDKs + Radeon(tm) ProRender + Orochi + Vulkan(r) Memory Allocator (VMA) + D3D12 Memory Allocator (D3D12MA) + AMD GPU Services (AGS) + All our SDKs * Performance + AMD RDNA(tm) 2 GPU Performance Guide + AMD Ryzen CPU Performance Guide + Unreal Engine Performance Guide * Blogs + Software blogs + Developer guides + Guest posts + Videos * Documentation + Publications + Presentations and papers + Samples + AMD ISA documentation (c)2022 Advanced Micro Devices, Inc. AMDAMD RyzenRyzen RadeonRadeon (c)2022 Advanced Micro Devices, Inc.