Fix non-multisampled line rasterization.
#23334
Signed-off-by: Geoff Lang
Signed-off-by: Shannon Woods
Author: Nicolas Capens
diff --git a/src/libGLESv2/Context.cpp b/src/libGLESv2/Context.cpp
index 70add35..007e9f3 100644
--- a/src/libGLESv2/Context.cpp
+++ b/src/libGLESv2/Context.cpp
@@ -63,6 +63,7 @@
mState.rasterizer.polygonOffsetFactor = 0.0f;
mState.rasterizer.polygonOffsetUnits = 0.0f;
mState.rasterizer.pointDrawMode = false;
+ mState.rasterizer.multiSample = false;
mState.scissorTest = false;
mState.scissor.x = 0;
mState.scissor.y = 0;
@@ -1991,7 +1992,11 @@
// Applies the fixed-function state (culling, depth test, alpha blending, stenciling, etc) to the Direct3D 9 device
void Context::applyState(GLenum drawMode)
{
+ Framebuffer *framebufferObject = getDrawFramebuffer();
+ int samples = framebufferObject->getSamples();
+
mState.rasterizer.pointDrawMode = (drawMode == GL_POINTS);
+ mState.rasterizer.multiSample = (samples != 0);
mRenderer->setRasterizerState(mState.rasterizer);
unsigned int mask = 0;
@@ -1999,10 +2004,10 @@
{
if (mState.sampleCoverageValue != 0)
{
- Framebuffer *framebufferObject = getDrawFramebuffer();
+
float threshold = 0.5f;
- for (int i = 0; i < framebufferObject->getSamples(); ++i)
+ for (int i = 0; i < samples; ++i)
{
mask <<= 1;