Fully support all 16-bit packed texture formats
Vulkan lists the following formats as 16-bit packed formats:
* VK_FORMAT_R4G4B4A4_UNORM_PACK16
* VK_FORMAT_B4G4R4A4_UNORM_PACK16
* VK_FORMAT_R5G6B5_UNORM_PACK16
* VK_FORMAT_B5G6R5_UNORM_PACK16
* VK_FORMAT_R5G5B5A1_UNORM_PACK16
* VK_FORMAT_B5G5R5A1_UNORM_PACK16
* VK_FORMAT_A1R5G5B5_UNORM_PACK16
We already support VK_FORMAT_A1R5G5B5_UNORM_PACK16, so we can use that
as a crossreference to see which tests we expect to pass.
Bug: b/139351376
Tests: dEQP-VK.*pack16*
Change-Id: Ia7b0b9efe92c7f67c803579fee7c8e0d62ef081f
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/57048
Reviewed-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Tested-by: Sean Risser <srisser@google.com>
Commit-Queue: Sean Risser <srisser@google.com>
diff --git a/src/Pipeline/PixelProgram.cpp b/src/Pipeline/PixelProgram.cpp
index 9b321f9..60e6805 100644
--- a/src/Pipeline/PixelProgram.cpp
+++ b/src/Pipeline/PixelProgram.cpp
@@ -279,6 +279,11 @@
auto format = state.colorFormat[index];
switch(format)
{
+ case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
+ case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
+ case VK_FORMAT_B5G6R5_UNORM_PACK16:
+ case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
+ case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
case VK_FORMAT_R5G6B5_UNORM_PACK16:
case VK_FORMAT_B8G8R8A8_UNORM:
@@ -364,6 +369,11 @@
{
case VK_FORMAT_UNDEFINED:
break;
+ case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
+ case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
+ case VK_FORMAT_B5G6R5_UNORM_PACK16:
+ case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
+ case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
case VK_FORMAT_R5G6B5_UNORM_PACK16:
case VK_FORMAT_B8G8R8A8_UNORM: