Optimizations to drawing performance and blending precision

Usually when the release notes say something like this, it’s because the details are fairly technical and uninteresting to the average person. This release included a workaround for an AMD bug that caused diagonal texture artifacts on RX 500 and Vega series GPUs (and possibly other AMD GPUs based on the GCN architecture) on Windows. A performance-improving side-effect of the workaround for this bug was a reduction in the amount of memory bandwidth required of “immediate mode” rendering hardware (ie: most non-mobile GPUs).

As for blending precision, this build included a change to the pixel format used for the intermediate render target that is required for some GPUs/platforms. When we first shipped 1.7, we were rendering to sRGB-encoded targets when required. We discovered that some hardware was particularly bad at blending in this color space, resulting in inaccurate visual output, so we switched to using either a 10 or 16 bit-per-channel linear texture format instead (depending on how capable we think the GPU is). We still use sRGB for cases where it’s needed as part of a workaround for platform or GPU deficiencies on certain Android devices, but loss of blending precision doesn’t seem to be a problem in these cases due to the architecture of tile-based mobile GPUs.

8 Likes