Enable reading missing 16-bit component formats in the Blitter
R16_SNORM, R16_UNORM, and R16G16_SNORM are required for computing cube
corner pixels for decompressed EAC formats.
Bug: b/138944025
Change-Id: I35a4d448e04bba7abc0e34250d153affe7fb1db5
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/34829
Presubmit-Ready: Nicolas Capens <nicolascapens@google.com>
Tested-by: Nicolas Capens <nicolascapens@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
diff --git a/src/Device/Blitter.cpp b/src/Device/Blitter.cpp
index 06425db..f6b483e 100644
--- a/src/Device/Blitter.cpp
+++ b/src/Device/Blitter.cpp
@@ -281,9 +281,11 @@
c.w = float(0xFF);
break;
case VK_FORMAT_R16_SINT:
+ case VK_FORMAT_R16_SNORM:
c.x = Float(Int(*Pointer<Short>(element)));
c.w = float(0x7FFF);
break;
+ case VK_FORMAT_R16_UNORM:
case VK_FORMAT_R16_UINT:
c.x = Float(Int(*Pointer<UShort>(element)));
c.w = float(0xFFFF);
@@ -341,6 +343,7 @@
c.w = float(0xFF);
break;
case VK_FORMAT_R16G16_SINT:
+ case VK_FORMAT_R16G16_SNORM:
c.x = Float(Int(*Pointer<Short>(element + 0)));
c.y = Float(Int(*Pointer<Short>(element + 2)));
c.w = float(0x7FFF);