I couldn't find information about Adreno's lossless framebuffer compression online.
We are building a system that does material blending and decaling in texture space. Material textures thus can't be offline compressed to ASTC. We will be heavily leaning on lossless framebuffer compression to reduce our bandwidth cost for texture sampling.
Some questions:
1. What is the hardware coverage for lossless framebuffer compression for Adreno? Which generations support it?
2. Do early hardware implementations only support RGBA8 format? Is there some other limitations I should be aware of? Is mipmapping supported?
3. Do you automatically apply lossless framebuffer compression for all uncompressed textures?
4. Is there a penalty of Adreno to use render targets for all textures. Are render targets automatically lossless compressed, or do I need to do something to enable it?
Dear Customer
Adreno's lossless framebuffer compression technology is called as UBWC (universal bandwidth compression), which is applied in the whole multimedia system for camera, video, gpu, and display/dpu.
The UBWC format is hardware enabled and decoded autumatically for each module of camera, video, gpu, display/dpu.
As for the exact using case,
video/camera can output UBWC format data, then send to GPU for process, or directly send to DPU for display.
gpu can accept UBWC format texture, and process then output to UBWC format framebuffer, then send to DPU for display.
app/sw code cannot access the UBWC format data directly, there is no public information for the UBWC format.
ofcourse you can still use glReadPixels() to read the UBWC format framework, driver will perform the conversion from UBWC data to non-UBWC data when reutrn to app.
Thanks
Bob Du