Commit 11cb891a by Nicolas Capens Committed by Nicolas Capens

Rename multiSampledBresenham to enableMultiSampling

The pipeline code doesn't need to know whether we're drawing Bresenham lines or anything else. It just needs to know whether or not to enable multisample rasterization for a multisample render target. Also rename multiSample to multiSampleCount. Bug: b/142965928 Change-Id: I34395e90d502c49cd13e0087d4b323d222cb2064 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/40169 Presubmit-Ready: Nicolas Capens <nicolascapens@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Tested-by: 's avatarNicolas Capens <nicolascapens@google.com> Reviewed-by: 's avatarAlexis Hétu <sugoi@google.com>
parent 0405ba06
......@@ -133,12 +133,12 @@ const PixelProcessor::State PixelProcessor::update(const Context *context) const
state.blendState[i] = context->getBlendState(i);
}
state.multiSample = static_cast<unsigned int>(context->sampleCount);
state.multiSampleCount = static_cast<unsigned int>(context->sampleCount);
state.multiSampleMask = context->multiSampleMask;
state.multiSampledBresenham = (state.multiSample > 1) && context->isDrawLine(true) &&
(context->lineRasterizationMode == VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT);
state.enableMultiSampling = (state.multiSampleCount > 1) &&
!(context->isDrawLine(true) && (context->lineRasterizationMode == VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT));
if(state.multiSample > 1 && context->pixelShader)
if(state.multiSampleCount > 1 && context->pixelShader)
{
state.centroid = context->pixelShader->getModes().NeedsCentroid;
}
......
......@@ -84,9 +84,9 @@ public:
unsigned int colorWriteMask;
VkFormat targetFormat[RENDERTARGETS];
unsigned int multiSample;
unsigned int multiSampleCount;
unsigned int multiSampleMask;
bool multiSampledBresenham;
bool enableMultiSampling;
bool alphaToCoverage;
bool centroid;
VkFrontFace frontFace;
......
......@@ -52,7 +52,7 @@ void QuadRasterizer::generate()
rasterize(yMin, yMax);
}
primitive += sizeof(Primitive) * state.multiSample;
primitive += sizeof(Primitive) * state.multiSampleCount;
count--;
}
Until(count == 0);
......@@ -101,7 +101,7 @@ void QuadRasterizer::rasterize(Int &yMin, Int &yMax)
Int x0b = Int(*Pointer<Short>(primitive + OFFSET(Primitive, outline->left) + (y + 1) * sizeof(Primitive::Span)));
Int x0 = Min(x0a, x0b);
for(unsigned int q = 1; q < state.multiSample; q++)
for(unsigned int q = 1; q < state.multiSampleCount; q++)
{
x0a = Int(*Pointer<Short>(primitive + q * sizeof(Primitive) + OFFSET(Primitive, outline->left) + (y + 0) * sizeof(Primitive::Span)));
x0b = Int(*Pointer<Short>(primitive + q * sizeof(Primitive) + OFFSET(Primitive, outline->left) + (y + 1) * sizeof(Primitive::Span)));
......@@ -114,7 +114,7 @@ void QuadRasterizer::rasterize(Int &yMin, Int &yMax)
Int x1b = Int(*Pointer<Short>(primitive + OFFSET(Primitive, outline->right) + (y + 1) * sizeof(Primitive::Span)));
Int x1 = Max(x1a, x1b);
for(unsigned int q = 1; q < state.multiSample; q++)
for(unsigned int q = 1; q < state.multiSampleCount; q++)
{
x1a = Int(*Pointer<Short>(primitive + q * sizeof(Primitive) + OFFSET(Primitive, outline->right) + (y + 0) * sizeof(Primitive::Span)));
x1b = Int(*Pointer<Short>(primitive + q * sizeof(Primitive) + OFFSET(Primitive, outline->right) + (y + 1) * sizeof(Primitive::Span)));
......@@ -125,11 +125,11 @@ void QuadRasterizer::rasterize(Int &yMin, Int &yMax)
if(interpolateZ())
{
for(unsigned int q = 0; q < state.multiSample; q++)
for(unsigned int q = 0; q < state.multiSampleCount; q++)
{
Float4 y = yyyy;
if(state.multiSample > 1)
if(state.multiSampleCount > 1)
{
y -= *Pointer<Float4>(constants + OFFSET(Constants, Y) + q * sizeof(float4));
}
......@@ -176,7 +176,7 @@ void QuadRasterizer::rasterize(Int &yMin, Int &yMax)
Short4 xLeft[4];
Short4 xRight[4];
for(unsigned int q = 0; q < state.multiSample; q++)
for(unsigned int q = 0; q < state.multiSampleCount; q++)
{
xLeft[q] = *Pointer<Short4>(primitive + q * sizeof(Primitive) + OFFSET(Primitive, outline) + y * sizeof(Primitive::Span));
xRight[q] = xLeft[q];
......@@ -190,11 +190,11 @@ void QuadRasterizer::rasterize(Int &yMin, Int &yMax)
Short4 xxxx = Short4(x);
Int cMask[4];
for(unsigned int q = 0; q < state.multiSample; q++)
for(unsigned int q = 0; q < state.multiSampleCount; q++)
{
if(state.multiSampleMask & (1 << q))
{
unsigned int i = state.multiSampledBresenham ? 0 : q;
unsigned int i = state.enableMultiSampling ? q : 0;
Short4 mask = CmpGT(xxxx, xLeft[i]) & CmpGT(xRight[i], xxxx);
cMask[q] = SignMask(PackSigned(mask, mask)) & 0x0000000F;
}
......
......@@ -617,7 +617,7 @@ int DrawCall::setupSolidTriangles(Triangle *triangles, Primitive *primitives, co
{
auto &state = drawCall->setupState;
int ms = state.multiSample;
int ms = state.multiSampleCount;
const DrawData *data = drawCall->data;
int visible = 0;
......@@ -662,7 +662,7 @@ int DrawCall::setupWireframeTriangles(Triangle *triangles, Primitive *primitives
{
auto &state = drawCall->setupState;
int ms = state.multiSample;
int ms = state.multiSampleCount;
int visible = 0;
for(int i = 0; i < count; i++)
......@@ -710,7 +710,7 @@ int DrawCall::setupPointTriangles(Triangle *triangles, Primitive *primitives, co
{
auto &state = drawCall->setupState;
int ms = state.multiSample;
int ms = state.multiSampleCount;
int visible = 0;
for(int i = 0; i < count; i++)
......@@ -756,7 +756,7 @@ int DrawCall::setupLines(Triangle *triangles, Primitive *primitives, const DrawC
auto &state = drawCall->setupState;
int visible = 0;
int ms = state.multiSample;
int ms = state.multiSampleCount;
for(int i = 0; i < count; i++)
{
......@@ -777,7 +777,7 @@ int DrawCall::setupPoints(Triangle *triangles, Primitive *primitives, const Draw
auto &state = drawCall->setupState;
int visible = 0;
int ms = state.multiSample;
int ms = state.multiSampleCount;
for(int i = 0; i < count; i++)
{
......
......@@ -78,7 +78,7 @@ SetupProcessor::State SetupProcessor::update(const sw::Context *context) const
state.frontFace = context->frontFace;
state.cullMode = context->cullMode;
state.multiSample = context->sampleCount;
state.multiSampleCount = context->sampleCount;
state.rasterizerDiscard = context->rasterizerDiscard;
state.numClipDistances = context->vertexShader->getNumOutputClipDistances();
......
......@@ -51,7 +51,7 @@ public:
bool interpolateW : 1;
VkFrontFace frontFace : BITS(VK_FRONT_FACE_MAX_ENUM);
VkCullModeFlags cullMode : BITS(VK_CULL_MODE_FLAG_BITS_MAX_ENUM);
unsigned int multiSample : 3; // 1, 2 or 4
unsigned int multiSampleCount : 3; // 1, 2 or 4
bool rasterizerDiscard : 1;
unsigned int numClipDistances : 4; // [0 - 8]
unsigned int numCullDistances : 4; // [0 - 8]
......
......@@ -25,7 +25,7 @@ Int4 PixelProgram::maskAny(Int cMask[4]) const
{
// See if at least 1 sample is used
Int maskUnion = cMask[0];
for(auto i = 1u; i < state.multiSample; i++)
for(auto i = 1u; i < state.multiSampleCount; i++)
{
maskUnion |= cMask[i];
}
......@@ -43,7 +43,7 @@ Int4 PixelProgram::maskAny(Int cMask[4], Int sMask[4], Int zMask[4]) const
{
// See if at least 1 sample is used
Int maskUnion = cMask[0] & sMask[0] & zMask[0];
for(auto i = 1u; i < state.multiSample; i++)
for(auto i = 1u; i < state.multiSampleCount; i++)
{
maskUnion |= (cMask[i] & sMask[i] & zMask[i]);
}
......@@ -130,7 +130,7 @@ void PixelProgram::applyShader(Int cMask[4], Int sMask[4], Int zMask[4])
Int4 laneBits = Int4(1, 2, 4, 8);
Int4 inputSampleMask = Int4(1) & CmpNEQ(Int4(cMask[0]) & laneBits, Int4(0));
for(auto i = 1u; i < state.multiSample; i++)
for(auto i = 1u; i < state.multiSampleCount; i++)
{
inputSampleMask |= Int4(1 << i) & CmpNEQ(Int4(cMask[i]) & laneBits, Int4(0));
}
......@@ -163,7 +163,7 @@ void PixelProgram::applyShader(Int cMask[4], Int sMask[4], Int zMask[4])
if(spirvShader->getModes().ContainsKill)
{
for(auto i = 0u; i < state.multiSample; i++)
for(auto i = 0u; i < state.multiSampleCount; i++)
{
cMask[i] &= ~routine.killMask;
}
......@@ -174,7 +174,7 @@ void PixelProgram::applyShader(Int cMask[4], Int sMask[4], Int zMask[4])
{
auto outputSampleMask = As<SIMD::Int>(routine.getVariable(it->second.Id)[it->second.FirstComponent]);
for(auto i = 0u; i < state.multiSample; i++)
for(auto i = 0u; i < state.multiSampleCount; i++)
{
cMask[i] &= SignMask(CmpNEQ(outputSampleMask & SIMD::Int(1 << i), SIMD::Int(0)));
}
......@@ -198,7 +198,7 @@ Bool PixelProgram::alphaTest(Int cMask[4])
Int pass = cMask[0];
for(unsigned int q = 1; q < state.multiSample; q++)
for(unsigned int q = 1; q < state.multiSampleCount; q++)
{
pass = pass | cMask[q];
}
......@@ -232,7 +232,7 @@ void PixelProgram::rasterOperation(Pointer<Byte> cBuffer[4], Int &x, Int sMask[4
case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
for(unsigned int q = 0; q < state.multiSample; q++)
for(unsigned int q = 0; q < state.multiSampleCount; q++)
{
if(state.multiSampleMask & (1 << q))
{
......@@ -278,7 +278,7 @@ void PixelProgram::rasterOperation(Pointer<Byte> cBuffer[4], Int &x, Int sMask[4
case VK_FORMAT_A8B8G8R8_SINT_PACK32:
case VK_FORMAT_A2B10G10R10_UINT_PACK32:
case VK_FORMAT_A2R10G10B10_UINT_PACK32:
for(unsigned int q = 0; q < state.multiSample; q++)
for(unsigned int q = 0; q < state.multiSampleCount; q++)
{
if(state.multiSampleMask & (1 << q))
{
......
......@@ -58,13 +58,13 @@ void PixelRoutine::quad(Pointer<Byte> cBuffer[RENDERTARGETS], Pointer<Byte> &zBu
Int zMask[4]; // Depth mask
Int sMask[4]; // Stencil mask
for(unsigned int q = 0; q < state.multiSample; q++)
for(unsigned int q = 0; q < state.multiSampleCount; q++)
{
zMask[q] = cMask[q];
sMask[q] = cMask[q];
}
for(unsigned int q = 0; q < state.multiSample; q++)
for(unsigned int q = 0; q < state.multiSampleCount; q++)
{
stencilTest(sBuffer, q, x, sMask[q], cMask[q]);
}
......@@ -76,11 +76,11 @@ void PixelRoutine::quad(Pointer<Byte> cBuffer[RENDERTARGETS], Pointer<Byte> &zBu
if(interpolateZ())
{
for(unsigned int q = 0; q < state.multiSample; q++)
for(unsigned int q = 0; q < state.multiSampleCount; q++)
{
Float4 x = xxxx;
if(state.multiSample > 1)
if(state.multiSampleCount > 1)
{
x -= *Pointer<Float4>(constants + OFFSET(Constants, X) + q * sizeof(float4));
}
......@@ -93,7 +93,7 @@ void PixelRoutine::quad(Pointer<Byte> cBuffer[RENDERTARGETS], Pointer<Byte> &zBu
if(earlyDepthTest)
{
for(unsigned int q = 0; q < state.multiSample; q++)
for(unsigned int q = 0; q < state.multiSampleCount; q++)
{
depthPass = depthPass || depthTest(zBuffer, q, x, z[q], sMask[q], zMask[q], cMask[q]);
}
......@@ -111,7 +111,7 @@ void PixelRoutine::quad(Pointer<Byte> cBuffer[RENDERTARGETS], Pointer<Byte> &zBu
{
Float4 WWWW(1.0e-9f);
for(unsigned int q = 0; q < state.multiSample; q++)
for(unsigned int q = 0; q < state.multiSampleCount; q++)
{
XXXX += *Pointer<Float4>(constants + OFFSET(Constants, sampleX[q]) + 16 * cMask[q]);
YYYY += *Pointer<Float4>(constants + OFFSET(Constants, sampleY[q]) + 16 * cMask[q]);
......@@ -144,7 +144,7 @@ void PixelRoutine::quad(Pointer<Byte> cBuffer[RENDERTARGETS], Pointer<Byte> &zBu
auto const &input = spirvShader->inputs[interpolant];
if(input.Type != SpirvShader::ATTRIBTYPE_UNUSED)
{
if(input.Centroid && state.multiSample > 1)
if(input.Centroid && state.multiSampleCount > 1)
{
routine.inputs[interpolant] =
interpolateCentroid(XXXX, YYYY, rhwCentroid,
......@@ -170,7 +170,7 @@ void PixelRoutine::quad(Pointer<Byte> cBuffer[RENDERTARGETS], Pointer<Byte> &zBu
false, true, false);
auto clipMask = SignMask(CmpGE(distance, SIMD::Float(0)));
for(auto ms = 0u; ms < state.multiSample; ms++)
for(auto ms = 0u; ms < state.multiSampleCount; ms++)
{
// TODO: Fragments discarded by clipping do not exist at
// all -- they should not be counted in queries or have
......@@ -223,7 +223,7 @@ void PixelRoutine::quad(Pointer<Byte> cBuffer[RENDERTARGETS], Pointer<Byte> &zBu
if((spirvShader && spirvShader->getModes().ContainsKill) || state.alphaToCoverage)
{
for(unsigned int q = 0; q < state.multiSample; q++)
for(unsigned int q = 0; q < state.multiSampleCount; q++)
{
zMask[q] &= cMask[q];
sMask[q] &= cMask[q];
......@@ -234,7 +234,7 @@ void PixelRoutine::quad(Pointer<Byte> cBuffer[RENDERTARGETS], Pointer<Byte> &zBu
{
if(!earlyDepthTest)
{
for(unsigned int q = 0; q < state.multiSample; q++)
for(unsigned int q = 0; q < state.multiSampleCount; q++)
{
depthPass = depthPass || depthTest(zBuffer, q, x, z[q], sMask[q], zMask[q], cMask[q]);
}
......@@ -242,7 +242,7 @@ void PixelRoutine::quad(Pointer<Byte> cBuffer[RENDERTARGETS], Pointer<Byte> &zBu
If(depthPass || Bool(earlyDepthTest))
{
for(unsigned int q = 0; q < state.multiSample; q++)
for(unsigned int q = 0; q < state.multiSampleCount; q++)
{
if(state.multiSampleMask & (1 << q))
{
......@@ -260,7 +260,7 @@ void PixelRoutine::quad(Pointer<Byte> cBuffer[RENDERTARGETS], Pointer<Byte> &zBu
}
}
for(unsigned int q = 0; q < state.multiSample; q++)
for(unsigned int q = 0; q < state.multiSampleCount; q++)
{
if(state.multiSampleMask & (1 << q))
{
......
......@@ -166,7 +166,7 @@ void SetupRoutine::generate()
constexpr int subPixM = vk::SUBPIXEL_PRECISION_MASK;
constexpr float subPixF = vk::SUBPIXEL_PRECISION_FACTOR;
if(state.multiSample > 1)
if(state.multiSampleCount > 1)
{
yMin = (yMin + Constants::yMinMultiSampleOffset) >> subPixB;
yMax = (yMax + Constants::yMaxMultiSampleOffset) >> subPixB;
......@@ -188,7 +188,7 @@ void SetupRoutine::generate()
Return(0);
}
For(Int q = 0, q < state.multiSample, q++)
For(Int q = 0, q < state.multiSampleCount, q++)
{
Array<Int> Xq(16);
Array<Int> Yq(16);
......@@ -200,7 +200,7 @@ void SetupRoutine::generate()
Xq[i] = X[i];
Yq[i] = Y[i];
if(state.multiSample > 1)
if(state.multiSampleCount > 1)
{
Xq[i] = Xq[i] + *Pointer<Int>(constants + OFFSET(Constants, Xf) + q * sizeof(int));
Yq[i] = Yq[i] + *Pointer<Int>(constants + OFFSET(Constants, Yf) + q * sizeof(int));
......@@ -213,7 +213,7 @@ void SetupRoutine::generate()
Pointer<Byte> leftEdge = Pointer<Byte>(primitive + OFFSET(Primitive, outline->left)) + q * sizeof(Primitive);
Pointer<Byte> rightEdge = Pointer<Byte>(primitive + OFFSET(Primitive, outline->right)) + q * sizeof(Primitive);
if(state.multiSample > 1)
if(state.multiSampleCount > 1)
{
Int xMin = *Pointer<Int>(data + OFFSET(DrawData, scissorX0));
Int xMax = *Pointer<Int>(data + OFFSET(DrawData, scissorX1));
......@@ -242,7 +242,7 @@ void SetupRoutine::generate()
Until(i >= n);
}
if(state.multiSample == 1)
if(state.multiSampleCount == 1)
{
For(, yMin < yMax && *Pointer<Short>(leftEdge + yMin * sizeof(Primitive::Span)) == *Pointer<Short>(rightEdge + yMin * sizeof(Primitive::Span)), yMin++)
{
......
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