By Arpit Agrawal
HMD vendors now have access to Digital Stream Compression (DSC) through the VRWorks DirectMode API available in VRWorks Graphics SDK v3.4. Let’s explore this feature and how it enabled higher resolution VR experiences.
What is DSC?
As described in VESA’s white paper:
Display Stream Compression (DSC) was developed as an industry-wide standard for video interfaces; it features extremely low latency and visually lossless compression. DSC has been integrated into standards used for embedded display interfaces within mobile systems (such as eDP™ v1.4b and MIPI DSI v1.2) and display protocols for TV and monitors (such as VESA DP™ v1.4a and HDMI v2.1). Since its initial introduction in April 2014, the DSC standard has achieved broad adoption in smartphones and tablets and will be used in future notebook PCs.VESA Display Stream Compression
Why is DSC valuable to VR?
HMD resolutions have been rapidly increasing, with the ultimate goal of achieving human eye visual acuity. With each increase in resolution, the bandwidth requirement has increased as well.
Recent development in rendering technologies like VRSS, VRS, and VR SLI have increased GPU rendering performance, making it possible to render higher quality frames in less time. This efficiency has, in turn, enabled HMD vendors to further increase their display resolutions.
While display protocols such as DisplayPort (DP) have been improving, they are at risk of being outpaced by the bandwidth required by upcoming HMDs. In the example depicted above, a future-generation HMD with 4000 x 4000 resolution per eye, 90Hz refresh rate, and 24 bits per pixel of color would generate 69Gbps of bandwidth. This is well beyond the maximum 25.9Gbps supported in DP 1.4a.
Fortunately, the NVIDIA VRWorks DSC SDK can provide the needed bandwidth reduction, with only minimal latency and no visual impact on image quality! NVIDIA’s implementation of DSC supports compression ratios up to 3:1 (including fractional values), and uses a compression protocol that is visually lossless. Applying NVIDIA DSC to the above example reduces the display bandwidth from 69Gbps to 23Gbps.
“NVIDIA has long been at the forefront of powering high-fidelity VR experiences and optimizing for new technologies like we deliver through Vive Pro Eye. Together, we deliver the performance, stability, and reliability necessary for premium-grade VR,” said Raymond Pao, SVP of Product & Strategy, HTC Vive. “As the market continues to innovate, there is demand for higher-resolution HMDs. NVIDIA is propelling VR forward with the release of Display Streaming Compression for VR, which will help VIVE to create the next generation of ultra-high-resolution HMDs.”
How it works
DSC compression works by reducing the number of bits per pixel from the input image to the output stream. Specifically, the DSC encoder compresses the incoming data having ‘Input_BPP’ bits per pixel to ‘Output_BPP’ bits per pixel.
For our implementation, we support DSC_Compression_Ratio values between 1.0 and 3.0, including fractional values..
There are a few parameters that users can control in the DSC Encoder:
Supported by the display and the application.
Bits per pixel rendered by the application.
- Usually, Color_Format RGB888 is used, which needs 24 bits per pixel.
- Can be YCbCr 4:4:4, 4:2:2, or 4:2:0 as well.
- Input_BPP can range from 24 (12 in case of YCbCr 4:2:0) to 48.
DSC Encoder divides the image into Slice_Count slices and compresses each slice individually.
Each slice has the same Slice_Width:
Based on the compression ratio needed by the user.
Calculated per the formula mentioned above.
More details on DSC can be found in the white paper published by VESA.
How HMD vendors can utilize DSC
NVIDIA’s Turing architecture was the first to support Display Stream Compression, and DSC is available to application developers now in VRWorks Graphics SDK v3.4. To enable DSC support in the HMD, the VRWorks DirectMode API is available to approved HMD vendors.
To become an approved HMD vendor please sign-up here.
To learn more about NVIDIA SDKs specific to VR development, please visit our VRWorks developer portal or contact: VRWorks-Outreach@nvidia.com. For developer support, please contact: VRSupport@nvidia.com.