mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-22 16:43:05 -05:00
NVIDIA 610.62 cannot sample R8G8_SRGB, and lavapipe can sample neither it nor R8_SRGB, so an 8_8 sRGB T# made an image the device does not support: creating it crashes the NVIDIA driver and lavapipe loads zeros. The device's format support is read once. An 8 or 8_8 sRGB texture the device cannot sample is created and viewed as R8_UNORM or R8G8_UNORM, and SpirvTarget::srgbDecodeFormats makes the materializer mark the image, so image loads map every channel through a 256-entry table of the sRGB EOTF rounded to nearest even at bf16 precision, which is what RDNA2 (gfx1035) returns; both channels of 8_8 are sRGB, and DST_SEL 0 and 1 map to themselves. Samples and gathers of such an image throw, and its bindless table entries are unmapped like converted formats. APS5_SRGB_SHADER_DECODE=1 takes this path on every device. Shader disk cache entries and keys carry the mark: cache format version 7.