Fix sRGB -> sRGB multisample resolves

Resolve must occur in linear space.

Bug b/119620965

Change-Id: I5c7c7c45a1448f44c702969e34e580dc299df70a
Test: dEQP-VK.renderpass.suballocation.multisample_resolve.*
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/31871
Tested-by: Alexis Hétu <sugoi@google.com>
Presubmit-Ready: Alexis Hétu <sugoi@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Reviewed-by: Chris Forbes <chrisforbes@google.com>
diff --git a/src/Device/Blitter.cpp b/src/Device/Blitter.cpp
index 57e5959..33763ac 100644
--- a/src/Device/Blitter.cpp
+++ b/src/Device/Blitter.cpp
@@ -1449,6 +1449,11 @@
 									{
 										return nullptr;
 									}
+									if(state.convertSRGB && state.sourceFormat.isSRGBformat()) // sRGB -> RGB
+									{
+										if(!ApplyScaleAndClamp(color, state)) return nullptr;
+										preScaled = true;
+									}
 									accum += color;
 								}
 								color = accum * Float4(1.0f / static_cast<float>(state.srcSamples));
@@ -1724,7 +1729,7 @@
 
 		bool doFilter = (filter != VK_FILTER_NEAREST);
 		State state(src->getFormat(srcAspect), dst->getFormat(dstAspect), src->getSampleCountFlagBits(), dst->getSampleCountFlagBits(),
-		            { doFilter, doFilter });
+		            { doFilter, doFilter || (src->getSampleCountFlagBits() > 1) });
 		state.clampToEdge = (region.srcOffsets[0].x < 0) ||
 		                    (region.srcOffsets[0].y < 0) ||
 		                    (static_cast<uint32_t>(region.srcOffsets[1].x) > srcExtent.width) ||