Commit 3f80dad0 by Alexis Hetu Committed by Alexis Hétu

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/+/31871Tested-by: 's avatarAlexis Hétu <sugoi@google.com> Presubmit-Ready: Alexis Hétu <sugoi@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Reviewed-by: 's avatarChris Forbes <chrisforbes@google.com>
parent 6aac756f
...@@ -1449,6 +1449,11 @@ namespace sw ...@@ -1449,6 +1449,11 @@ namespace sw
{ {
return nullptr; return nullptr;
} }
if(state.convertSRGB && state.sourceFormat.isSRGBformat()) // sRGB -> RGB
{
if(!ApplyScaleAndClamp(color, state)) return nullptr;
preScaled = true;
}
accum += color; accum += color;
} }
color = accum * Float4(1.0f / static_cast<float>(state.srcSamples)); color = accum * Float4(1.0f / static_cast<float>(state.srcSamples));
...@@ -1724,7 +1729,7 @@ namespace sw ...@@ -1724,7 +1729,7 @@ namespace sw
bool doFilter = (filter != VK_FILTER_NEAREST); bool doFilter = (filter != VK_FILTER_NEAREST);
State state(src->getFormat(srcAspect), dst->getFormat(dstAspect), src->getSampleCountFlagBits(), dst->getSampleCountFlagBits(), 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) || state.clampToEdge = (region.srcOffsets[0].x < 0) ||
(region.srcOffsets[0].y < 0) || (region.srcOffsets[0].y < 0) ||
(static_cast<uint32_t>(region.srcOffsets[1].x) > srcExtent.width) || (static_cast<uint32_t>(region.srcOffsets[1].x) > srcExtent.width) ||
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment