Commit 3e35131f by Chris Forbes

Remove Context::separateAlphaBlendEnable etc

Vulkan always has separate alpha blend. No test change expected Bug: b/132280877 Change-Id: Ie76094fcc82070c20b78b846e4d2e30810339f98 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/31349Tested-by: 's avatarChris Forbes <chrisforbes@google.com> Presubmit-Ready: Chris Forbes <chrisforbes@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com>
parent 5ec0529d
...@@ -139,7 +139,6 @@ namespace sw ...@@ -139,7 +139,6 @@ namespace sw
destBlendFactorState = VK_BLEND_FACTOR_ZERO; destBlendFactorState = VK_BLEND_FACTOR_ZERO;
blendOperationState = VK_BLEND_OP_ADD; blendOperationState = VK_BLEND_OP_ADD;
separateAlphaBlendEnable = false;
sourceBlendFactorStateAlpha = VK_BLEND_FACTOR_ONE; sourceBlendFactorStateAlpha = VK_BLEND_FACTOR_ONE;
destBlendFactorStateAlpha = VK_BLEND_FACTOR_ZERO; destBlendFactorStateAlpha = VK_BLEND_FACTOR_ZERO;
blendOperationStateAlpha = VK_BLEND_OP_ADD; blendOperationStateAlpha = VK_BLEND_OP_ADD;
...@@ -184,55 +183,6 @@ namespace sw ...@@ -184,55 +183,6 @@ namespace sw
return modified; return modified;
} }
bool Context::setSourceBlendFactor(VkBlendFactor sourceBlendFactor)
{
bool modified = (Context::sourceBlendFactorState != sourceBlendFactor);
Context::sourceBlendFactorState = sourceBlendFactor;
return modified;
}
bool Context::setDestBlendFactor(VkBlendFactor destBlendFactor)
{
bool modified = (Context::destBlendFactorState != destBlendFactor);
Context::destBlendFactorState = destBlendFactor;
return modified;
}
bool Context::setBlendOperation(VkBlendOp blendOperation)
{
bool modified = (Context::blendOperationState != blendOperation);
Context::blendOperationState = blendOperation;
return modified;
}
bool Context::setSeparateAlphaBlendEnable(bool separateAlphaBlendEnable)
{
bool modified = (Context::separateAlphaBlendEnable != separateAlphaBlendEnable);
Context::separateAlphaBlendEnable = separateAlphaBlendEnable;
return modified;
}
bool Context::setSourceBlendFactorAlpha(VkBlendFactor sourceBlendFactorAlpha)
{
bool modified = (Context::sourceBlendFactorStateAlpha != sourceBlendFactorAlpha);
Context::sourceBlendFactorStateAlpha = sourceBlendFactorAlpha;
return modified;
}
bool Context::setDestBlendFactorAlpha(VkBlendFactor destBlendFactorAlpha)
{
bool modified = (Context::destBlendFactorStateAlpha != destBlendFactorAlpha);
Context::destBlendFactorStateAlpha = destBlendFactorAlpha;
return modified;
}
bool Context::setBlendOperationAlpha(VkBlendOp blendOperationAlpha)
{
bool modified = (Context::blendOperationStateAlpha != blendOperationAlpha);
Context::blendOperationStateAlpha = blendOperationAlpha;
return modified;
}
bool Context::setColorWriteMask(int index, int colorWriteMask) bool Context::setColorWriteMask(int index, int colorWriteMask)
{ {
bool modified = (Context::colorWriteMask[index] != colorWriteMask); bool modified = (Context::colorWriteMask[index] != colorWriteMask);
...@@ -275,7 +225,7 @@ namespace sw ...@@ -275,7 +225,7 @@ namespace sw
} }
bool colorBlend = !(blendOperation() == VK_BLEND_OP_SRC_EXT && sourceBlendFactor() == VK_BLEND_FACTOR_ONE); bool colorBlend = !(blendOperation() == VK_BLEND_OP_SRC_EXT && sourceBlendFactor() == VK_BLEND_FACTOR_ONE);
bool alphaBlend = separateAlphaBlendEnable ? !(blendOperationAlpha() == VK_BLEND_OP_SRC_EXT && sourceBlendFactorAlpha() == VK_BLEND_FACTOR_ONE) : colorBlend; bool alphaBlend = !(blendOperationAlpha() == VK_BLEND_OP_SRC_EXT && sourceBlendFactorAlpha() == VK_BLEND_FACTOR_ONE);
return colorBlend || alphaBlend; return colorBlend || alphaBlend;
} }
...@@ -450,171 +400,150 @@ namespace sw ...@@ -450,171 +400,150 @@ namespace sw
VkBlendFactor Context::sourceBlendFactorAlpha() const VkBlendFactor Context::sourceBlendFactorAlpha() const
{ {
if(!separateAlphaBlendEnable) switch (blendOperationStateAlpha)
{
return sourceBlendFactor();
}
else
{ {
switch(blendOperationStateAlpha) case VK_BLEND_OP_ADD:
{ case VK_BLEND_OP_SUBTRACT:
case VK_BLEND_OP_ADD: case VK_BLEND_OP_REVERSE_SUBTRACT:
case VK_BLEND_OP_SUBTRACT:
case VK_BLEND_OP_REVERSE_SUBTRACT:
return sourceBlendFactorStateAlpha;
case VK_BLEND_OP_MIN:
return VK_BLEND_FACTOR_ONE;
case VK_BLEND_OP_MAX:
return VK_BLEND_FACTOR_ONE;
default:
ASSERT(false);
}
return sourceBlendFactorStateAlpha; return sourceBlendFactorStateAlpha;
case VK_BLEND_OP_MIN:
return VK_BLEND_FACTOR_ONE;
case VK_BLEND_OP_MAX:
return VK_BLEND_FACTOR_ONE;
default:
ASSERT(false);
} }
return sourceBlendFactorStateAlpha;
} }
VkBlendFactor Context::destBlendFactorAlpha() const VkBlendFactor Context::destBlendFactorAlpha() const
{ {
if(!separateAlphaBlendEnable) switch (blendOperationStateAlpha)
{ {
return destBlendFactor(); case VK_BLEND_OP_ADD:
} case VK_BLEND_OP_SUBTRACT:
else case VK_BLEND_OP_REVERSE_SUBTRACT:
{
switch(blendOperationStateAlpha)
{
case VK_BLEND_OP_ADD:
case VK_BLEND_OP_SUBTRACT:
case VK_BLEND_OP_REVERSE_SUBTRACT:
return destBlendFactorStateAlpha;
case VK_BLEND_OP_MIN:
return VK_BLEND_FACTOR_ONE;
case VK_BLEND_OP_MAX:
return VK_BLEND_FACTOR_ONE;
default:
ASSERT(false);
}
return destBlendFactorStateAlpha; return destBlendFactorStateAlpha;
case VK_BLEND_OP_MIN:
return VK_BLEND_FACTOR_ONE;
case VK_BLEND_OP_MAX:
return VK_BLEND_FACTOR_ONE;
default:
ASSERT(false);
} }
return destBlendFactorStateAlpha;
} }
VkBlendOp Context::blendOperationAlpha() const VkBlendOp Context::blendOperationAlpha() const
{ {
if(!separateAlphaBlendEnable) switch (blendOperationStateAlpha)
{ {
return blendOperation(); case VK_BLEND_OP_ADD:
} if (sourceBlendFactorAlpha() == VK_BLEND_FACTOR_ZERO)
else {
{ if (destBlendFactorAlpha() == VK_BLEND_FACTOR_ZERO)
switch(blendOperationStateAlpha) {
return VK_BLEND_OP_ZERO_EXT;
}
else
{
return VK_BLEND_OP_DST_EXT;
}
}
else if (sourceBlendFactorAlpha() == VK_BLEND_FACTOR_ONE)
{ {
case VK_BLEND_OP_ADD: if (destBlendFactorAlpha() == VK_BLEND_FACTOR_ZERO)
if(sourceBlendFactorAlpha() == VK_BLEND_FACTOR_ZERO) {
{ return VK_BLEND_OP_SRC_EXT;
if(destBlendFactorAlpha() == VK_BLEND_FACTOR_ZERO)
{
return VK_BLEND_OP_ZERO_EXT;
}
else
{
return VK_BLEND_OP_DST_EXT;
}
}
else if(sourceBlendFactorAlpha() == VK_BLEND_FACTOR_ONE)
{
if(destBlendFactorAlpha() == VK_BLEND_FACTOR_ZERO)
{
return VK_BLEND_OP_SRC_EXT;
}
else
{
return VK_BLEND_OP_ADD;
}
} }
else else
{ {
if(destBlendFactorAlpha() == VK_BLEND_FACTOR_ZERO) return VK_BLEND_OP_ADD;
{
return VK_BLEND_OP_SRC_EXT;
}
else
{
return VK_BLEND_OP_ADD;
}
} }
case VK_BLEND_OP_SUBTRACT: }
if(sourceBlendFactorAlpha() == VK_BLEND_FACTOR_ZERO && allTargetsColorClamp()) else
{
if (destBlendFactorAlpha() == VK_BLEND_FACTOR_ZERO)
{ {
return VK_BLEND_OP_ZERO_EXT; // Negative, clamped to zero return VK_BLEND_OP_SRC_EXT;
} }
else if(sourceBlendFactorAlpha() == VK_BLEND_FACTOR_ONE) else
{ {
if(destBlendFactorAlpha() == VK_BLEND_FACTOR_ZERO) return VK_BLEND_OP_ADD;
{ }
return VK_BLEND_OP_SRC_EXT; }
} case VK_BLEND_OP_SUBTRACT:
else if (sourceBlendFactorAlpha() == VK_BLEND_FACTOR_ZERO && allTargetsColorClamp())
{ {
return VK_BLEND_OP_SUBTRACT; return VK_BLEND_OP_ZERO_EXT; // Negative, clamped to zero
} }
else if (sourceBlendFactorAlpha() == VK_BLEND_FACTOR_ONE)
{
if (destBlendFactorAlpha() == VK_BLEND_FACTOR_ZERO)
{
return VK_BLEND_OP_SRC_EXT;
} }
else else
{ {
if(destBlendFactorAlpha() == VK_BLEND_FACTOR_ZERO) return VK_BLEND_OP_SUBTRACT;
{ }
return VK_BLEND_OP_SRC_EXT; }
} else
else {
{ if (destBlendFactorAlpha() == VK_BLEND_FACTOR_ZERO)
return VK_BLEND_OP_SUBTRACT; {
} return VK_BLEND_OP_SRC_EXT;
}
case VK_BLEND_OP_REVERSE_SUBTRACT:
if(sourceBlendFactorAlpha() == VK_BLEND_FACTOR_ZERO)
{
if(destBlendFactorAlpha() == VK_BLEND_FACTOR_ZERO)
{
return VK_BLEND_OP_ZERO_EXT;
}
else
{
return VK_BLEND_OP_DST_EXT;
}
}
else if(sourceBlendFactorAlpha() == VK_BLEND_FACTOR_ONE)
{
if(destBlendFactorAlpha() == VK_BLEND_FACTOR_ZERO && allTargetsColorClamp())
{
return VK_BLEND_OP_ZERO_EXT; // Negative, clamped to zero
}
else
{
return VK_BLEND_OP_REVERSE_SUBTRACT;
}
} }
else else
{ {
if(destBlendFactorAlpha() == VK_BLEND_FACTOR_ZERO && allTargetsColorClamp()) return VK_BLEND_OP_SUBTRACT;
{ }
return VK_BLEND_OP_ZERO_EXT; // Negative, clamped to zero
}
else
{
return VK_BLEND_OP_REVERSE_SUBTRACT;
}
}
case VK_BLEND_OP_MIN:
return VK_BLEND_OP_MIN;
case VK_BLEND_OP_MAX:
return VK_BLEND_OP_MAX;
default:
ASSERT(false);
} }
case VK_BLEND_OP_REVERSE_SUBTRACT:
return blendOperationStateAlpha; if (sourceBlendFactorAlpha() == VK_BLEND_FACTOR_ZERO)
{
if (destBlendFactorAlpha() == VK_BLEND_FACTOR_ZERO)
{
return VK_BLEND_OP_ZERO_EXT;
}
else
{
return VK_BLEND_OP_DST_EXT;
}
}
else if (sourceBlendFactorAlpha() == VK_BLEND_FACTOR_ONE)
{
if (destBlendFactorAlpha() == VK_BLEND_FACTOR_ZERO && allTargetsColorClamp())
{
return VK_BLEND_OP_ZERO_EXT; // Negative, clamped to zero
}
else
{
return VK_BLEND_OP_REVERSE_SUBTRACT;
}
}
else
{
if (destBlendFactorAlpha() == VK_BLEND_FACTOR_ZERO && allTargetsColorClamp())
{
return VK_BLEND_OP_ZERO_EXT; // Negative, clamped to zero
}
else
{
return VK_BLEND_OP_REVERSE_SUBTRACT;
}
}
case VK_BLEND_OP_MIN:
return VK_BLEND_OP_MIN;
case VK_BLEND_OP_MAX:
return VK_BLEND_OP_MAX;
default:
ASSERT(false);
} }
return blendOperationStateAlpha;
} }
VkFormat Context::renderTargetInternalFormat(int index) const VkFormat Context::renderTargetInternalFormat(int index) const
...@@ -650,7 +579,7 @@ namespace sw ...@@ -650,7 +579,7 @@ namespace sw
} }
if(blendOperation() == VK_BLEND_OP_DST_EXT && destBlendFactor() == VK_BLEND_FACTOR_ONE && if(blendOperation() == VK_BLEND_OP_DST_EXT && destBlendFactor() == VK_BLEND_FACTOR_ONE &&
(!separateAlphaBlendEnable || (blendOperationAlpha() == VK_BLEND_OP_DST_EXT && destBlendFactorAlpha() == VK_BLEND_FACTOR_ONE))) (blendOperationAlpha() == VK_BLEND_OP_DST_EXT && destBlendFactorAlpha() == VK_BLEND_FACTOR_ONE))
{ {
return 0; return 0;
} }
......
...@@ -104,15 +104,6 @@ namespace sw ...@@ -104,15 +104,6 @@ namespace sw
bool setDepthBufferEnable(bool depthBufferEnable); bool setDepthBufferEnable(bool depthBufferEnable);
bool setAlphaBlendEnable(bool alphaBlendEnable); bool setAlphaBlendEnable(bool alphaBlendEnable);
bool setSourceBlendFactor(VkBlendFactor sourceBlendFactor);
bool setDestBlendFactor(VkBlendFactor destBlendFactor);
bool setBlendOperation(VkBlendOp blendOperation);
bool setSeparateAlphaBlendEnable(bool separateAlphaBlendEnable);
bool setSourceBlendFactorAlpha(VkBlendFactor sourceBlendFactorAlpha);
bool setDestBlendFactorAlpha(VkBlendFactor destBlendFactorAlpha);
bool setBlendOperationAlpha(VkBlendOp blendOperationAlpha);
bool setColorWriteMask(int index, int colorWriteMask); bool setColorWriteMask(int index, int colorWriteMask);
bool setWriteSRGB(bool sRGB); bool setWriteSRGB(bool sRGB);
...@@ -182,7 +173,6 @@ namespace sw ...@@ -182,7 +173,6 @@ namespace sw
VkBlendFactor destBlendFactorState; VkBlendFactor destBlendFactorState;
VkBlendOp blendOperationState; VkBlendOp blendOperationState;
bool separateAlphaBlendEnable;
VkBlendFactor sourceBlendFactorStateAlpha; VkBlendFactor sourceBlendFactorStateAlpha;
VkBlendFactor destBlendFactorStateAlpha; VkBlendFactor destBlendFactorStateAlpha;
VkBlendOp blendOperationStateAlpha; VkBlendOp blendOperationStateAlpha;
......
...@@ -420,9 +420,6 @@ GraphicsPipeline::GraphicsPipeline(const VkGraphicsPipelineCreateInfo* pCreateIn ...@@ -420,9 +420,6 @@ GraphicsPipeline::GraphicsPipeline(const VkGraphicsPipelineCreateInfo* pCreateIn
const VkPipelineColorBlendAttachmentState& attachment = colorBlendState->pAttachments[0]; const VkPipelineColorBlendAttachmentState& attachment = colorBlendState->pAttachments[0];
context.setColorWriteMask(0, attachment.colorWriteMask); context.setColorWriteMask(0, attachment.colorWriteMask);
context.alphaBlendEnable = (attachment.blendEnable == VK_TRUE); context.alphaBlendEnable = (attachment.blendEnable == VK_TRUE);
context.separateAlphaBlendEnable = (attachment.alphaBlendOp != attachment.colorBlendOp) ||
(attachment.dstAlphaBlendFactor != attachment.dstColorBlendFactor) ||
(attachment.srcAlphaBlendFactor != attachment.srcColorBlendFactor);
context.blendOperationStateAlpha = attachment.alphaBlendOp; context.blendOperationStateAlpha = attachment.alphaBlendOp;
context.blendOperationState = attachment.colorBlendOp; context.blendOperationState = attachment.colorBlendOp;
context.destBlendFactorStateAlpha = attachment.dstAlphaBlendFactor; context.destBlendFactorStateAlpha = attachment.dstAlphaBlendFactor;
......
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