Fix min/max blend operations
The VkBlendFactor must only be used by VK_BLEND_OP_ADD,
VK_BLEND_OP_SUBTRACT, and VK_BLEND_OP_REVERSE_SUBTRACT.
Bug: b/204583457
Change-Id: I1589aca2f07cc64411adb59b2ea7fbde68582dfc
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/58808
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Tested-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
diff --git a/src/Pipeline/PixelRoutine.cpp b/src/Pipeline/PixelRoutine.cpp
index ab1187c..3a14b15 100644
--- a/src/Pipeline/PixelRoutine.cpp
+++ b/src/Pipeline/PixelRoutine.cpp
@@ -2422,14 +2422,14 @@
blendedColor.z = destColor.z * destFactor.z - sourceColor.z * sourceFactor.z;
break;
case VK_BLEND_OP_MIN:
- blendedColor.x = Min(sourceColor.x * sourceFactor.x, destColor.x * destFactor.x); // FIXME(b/204583457)
- blendedColor.y = Min(sourceColor.y * sourceFactor.y, destColor.y * destFactor.y); // FIXME(b/204583457)
- blendedColor.z = Min(sourceColor.z * sourceFactor.z, destColor.z * destFactor.z); // FIXME(b/204583457)
+ blendedColor.x = Min(sourceColor.x, destColor.x);
+ blendedColor.y = Min(sourceColor.y, destColor.y);
+ blendedColor.z = Min(sourceColor.z, destColor.z);
break;
case VK_BLEND_OP_MAX:
- blendedColor.x = Max(sourceColor.x * sourceFactor.x, destColor.x * destFactor.x); // FIXME(b/204583457)
- blendedColor.y = Max(sourceColor.y * sourceFactor.y, destColor.y * destFactor.y); // FIXME(b/204583457)
- blendedColor.z = Max(sourceColor.z * sourceFactor.z, destColor.z * destFactor.z); // FIXME(b/204583457)
+ blendedColor.x = Max(sourceColor.x, destColor.x);
+ blendedColor.y = Max(sourceColor.y, destColor.y);
+ blendedColor.z = Max(sourceColor.z, destColor.z);
break;
case VK_BLEND_OP_SRC_EXT:
blendedColor.x = sourceColor.x * sourceFactor.x; // TODO(b/204583457)
@@ -2479,10 +2479,10 @@
blendedColor.w = destColor.w * destFactor.w - sourceColor.w * sourceFactor.w;
break;
case VK_BLEND_OP_MIN:
- blendedColor.w = Min(sourceColor.w * sourceFactor.w, destColor.w * destFactor.w); // FIXME(b/204583457)
+ blendedColor.w = Min(sourceColor.w, destColor.w);
break;
case VK_BLEND_OP_MAX:
- blendedColor.w = Max(sourceColor.w * sourceFactor.w, destColor.w * destFactor.w); // FIXME(b/204583457)
+ blendedColor.w = Max(sourceColor.w, destColor.w);
break;
case VK_BLEND_OP_SRC_EXT:
blendedColor.w = sourceColor.w * sourceFactor.w; // TODO(b/204583457)