Implement alpha blend support for VK_FORMAT_A2B10G10R10_UNORM_PACK32
dEQP doesn't try to render this format with blending enabled, so we
missed the attachment read path.
Change-Id: Ib1decc0dbdf1e9895b5ac00b478a65fd717e534c
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/36488
Tested-by: Chris Forbes <chrisforbes@google.com>
Presubmit-Ready: Chris Forbes <chrisforbes@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Pipeline/PixelRoutine.cpp b/src/Pipeline/PixelRoutine.cpp
index 186a44a..495c785 100644
--- a/src/Pipeline/PixelRoutine.cpp
+++ b/src/Pipeline/PixelRoutine.cpp
@@ -1063,6 +1063,21 @@
pixel.z = Short4(0xFFFFu);
pixel.w = Short4(0xFFFFu);
break;
+ case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
+ {
+ buffer = cBuffer;
+ Int4 v = Int4(0);
+ v = Insert(v, *Pointer<Int>(buffer + 4 * x), 0);
+ v = Insert(v, *Pointer<Int>(buffer + 4 * x + 4), 1);
+ buffer += *Pointer<Int>(data + OFFSET(DrawData, colorPitchB[index]));
+ v = Insert(v, *Pointer<Int>(buffer + 4 * x), 2);
+ v = Insert(v, *Pointer<Int>(buffer + 4 * x + 4), 3);
+
+ pixel.x = Short4(v << 6) & Short4(0xFFC0u);
+ pixel.y = Short4(v >> 4) & Short4(0xFFC0u);
+ pixel.z = Short4(v >> 14) & Short4(0xFFC0u);
+ pixel.w = Short4(v >> 16) & Short4(0xC000u);
+ } break;
default:
UNIMPLEMENTED("VkFormat %d", state.targetFormat[index]);
}