Blog post from one of the RAD Game Tools folks:
http://cbloomrants.blogspot.com/2020/06/oodle-texture-slashes-game-sizes.html
Oodle works by preparing the Texture to compress better rearranging the data inside each block in a way that is still compatible with the GPU native decoder and thus does not require much of any unpacking in the shader (although one of the posts by a RAD engineer on Twitter was talking about doing some decompression in the shader, maybe unrelated need to check some more).
What is the BCPack HW decoder then? Assuming there is even a small amount of GPU work in the bolded part of the BCn -> Oodle Texture/equivalent format conversion -> kraken compress -> ... -> kraken decompress ->
Oodle Texture or equivalent to BCn conversion pipeline maybe that is what MS put in the HW decoder on top of zlib.
So, MS could be using a proprietary and even more compressed step that does the texture block formatting and compression (SDK tools) and then in HW decompresses it?
On PS5 you would have three possible paths:
- BCn Texture compressed through kraken then decompressed by the HW kraken block and loaded by the GPU
- BCn Texture processed through Oodle Texture and compressed through kraken then decompressed by the HW kraken block and loaded by the GPU
- BCn Texture processed through Oodle Texture and/or by a different tooling on top of it (let's call it step XYZ) then decompressed by the HW kraken block, processed by the GPU compute shader you undo step XYZ back into a native format (GPU's support some compressed texture formats natively), and loaded by the GPU
The list above would be in order of texture compression efficiency from worst to best.
Edit: so yeah tired but I think I was on the mark

. See the following blog post and the summary by this RAD Game Tools engineer on Twitter (picture attached):
http://cbloomrants.blogspot.com/2020/06/oodle-texture-bc7prep-data-flow.html
I think XVA's BCPack HW decoder is a HW implementation of something like BC7Prep (but MS proprietary, Oodle does not seem involved there) + standard zlib (XSX is not using Kraken).