Commit f8df30f1 by Alexis Hetu Committed by Alexis Hétu

Fix stencil+MSAA

True integer types don't support MSAA, so the blitter never had support for MSAA on true integer types. In Vulkan, VK_FORMAT_S8_UINT is a UINT format, so it's considered a true integer type, but it must still support MSAA. Added support for MSAA on true integer types in the blitter so fix all related tests with SwANGLE: dEQP-GLES3.functional.depth_stencil_clear.* dEQP-GLES3.functional.fragment_ops.* dEQP-GLES3.functional.rasterizer_discard.* Bug: angleproject:4044 Change-Id: I8e04f434f0f671999aaef23cf24cc6684fd0fc16 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/37548 Presubmit-Ready: Alexis Hétu <sugoi@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Tested-by: 's avatarAlexis Hétu <sugoi@google.com> Reviewed-by: 's avatarAntonio Maiorano <amaiorano@google.com>
parent 09b50796
...@@ -1453,7 +1453,12 @@ namespace sw ...@@ -1453,7 +1453,12 @@ namespace sw
if(hasConstantColorI) if(hasConstantColorI)
{ {
write(constantColorI, d, state); for(int s = 0; s < state.destSamples; s++)
{
write(constantColorI, d, state);
d += *Pointer<Int>(blit + OFFSET(BlitData, dSliceB));
}
} }
else if(hasConstantColorF) else if(hasConstantColorF)
{ {
...@@ -1479,7 +1484,12 @@ namespace sw ...@@ -1479,7 +1484,12 @@ namespace sw
// When both formats are true integer types, we don't go to float to avoid losing precision // When both formats are true integer types, we don't go to float to avoid losing precision
Int4 color = readInt4(s, state); Int4 color = readInt4(s, state);
write(color, d, state); for(int s = 0; s < state.destSamples; s++)
{
write(color, d, state);
d += *Pointer<Int>(blit + OFFSET(BlitData,dSliceB));
}
} }
else else
{ {
......
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