Fix gl_FrontFacing to take GL_FRONT_FACE into account.
Bug swiftshader:113
Change-Id: Ia1cbcdbb396eaabaa79e4c8651d7c025f73d028a
Reviewed-on: https://swiftshader-review.googlesource.com/20068
Reviewed-by: Alexis Hétu <sugoi@google.com>
Tested-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Renderer/Context.cpp b/src/Renderer/Context.cpp
index f9d72a9..25c5775 100644
--- a/src/Renderer/Context.cpp
+++ b/src/Renderer/Context.cpp
@@ -274,6 +274,7 @@
blendOperationStateAlpha = BLENDOP_ADD;
cullMode = CULL_CLOCKWISE;
+ frontFacingCCW = true;
alphaReference = 0.0f;
depthBias = 0.0f;
diff --git a/src/Renderer/Context.hpp b/src/Renderer/Context.hpp
index 9274233..d9110d8 100644
--- a/src/Renderer/Context.hpp
+++ b/src/Renderer/Context.hpp
@@ -432,6 +432,7 @@
ShadingMode shadingMode;
CullMode cullMode;
+ bool frontFacingCCW;
float alphaReference;
float depthBias;
diff --git a/src/Renderer/PixelProcessor.cpp b/src/Renderer/PixelProcessor.cpp
index 3903701..8bc40c2 100644
--- a/src/Renderer/PixelProcessor.cpp
+++ b/src/Renderer/PixelProcessor.cpp
@@ -586,9 +586,10 @@
context->alphaTestEnable = alphaTestEnable;
}
- void PixelProcessor::setCullMode(CullMode cullMode)
+ void PixelProcessor::setCullMode(CullMode cullMode, bool frontFacingCCW)
{
context->cullMode = cullMode;
+ context->frontFacingCCW = frontFacingCCW;
}
void PixelProcessor::setColorWriteMask(int index, int rgbaMask)
@@ -1041,6 +1042,8 @@
state.centroid = context->pixelShader->containsCentroid();
}
+ state.frontFaceCCW = context->frontFacingCCW;
+
if(!context->pixelShader)
{
for(unsigned int i = 0; i < 8; i++)
diff --git a/src/Renderer/PixelProcessor.hpp b/src/Renderer/PixelProcessor.hpp
index cea417d..98300de 100644
--- a/src/Renderer/PixelProcessor.hpp
+++ b/src/Renderer/PixelProcessor.hpp
@@ -83,6 +83,7 @@
unsigned int multiSampleMask : 4;
TransparencyAntialiasing transparencyAntialiasing : BITS(TRANSPARENCY_LAST);
bool centroid : 1;
+ bool frontFaceCCW : 1;
LogicalOperation logicalOperation : BITS(LOGICALOP_LAST);
@@ -250,7 +251,7 @@
void setAlphaCompare(AlphaCompareMode alphaCompareMode);
void setDepthWriteEnable(bool depthWriteEnable);
void setAlphaTestEnable(bool alphaTestEnable);
- void setCullMode(CullMode cullMode);
+ void setCullMode(CullMode cullMode, bool frontFacingCCW);
void setColorWriteMask(int index, int rgbaMask);
void setColorLogicOpEnabled(bool colorLogicOpEnabled);