Fix multi-sample state management.

Issue=160
TRAC #16817
Signed-off-by: Daniel Koch
Author: Nicolas Capens

git-svn-id: https://angleproject.googlecode.com/svn/trunk@681 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Context.cpp b/src/libGLESv2/Context.cpp
index 1988e22..ef4ecb1 100644
--- a/src/libGLESv2/Context.cpp
+++ b/src/libGLESv2/Context.cpp
@@ -1869,6 +1869,7 @@
         }
 
         mStencilStateDirty = false;
+        mFrontFaceDirty = false;
     }
 
     if (mMaskStateDirty)
@@ -1903,48 +1904,41 @@
 
     if (mSampleStateDirty)
     {
-        if (framebufferObject->isMultisample())
+        if (mState.sampleAlphaToCoverage)
         {
-            if (mState.sampleAlphaToCoverage)
-            {
-                FIXME("Sample alpha to coverage is unimplemented.");
-            }
+            FIXME("Sample alpha to coverage is unimplemented.");
+        }
 
-            device->SetRenderState(D3DRS_MULTISAMPLEANTIALIAS, TRUE);
-            if (mState.sampleCoverage)
+        device->SetRenderState(D3DRS_MULTISAMPLEANTIALIAS, TRUE);
+        if (mState.sampleCoverage)
+        {
+            unsigned int mask = 0;
+            if (mState.sampleCoverageValue != 0)
             {
-                unsigned int mask = 0;
-                if (mState.sampleCoverageValue != 0)
+                float threshold = 0.5f;
+
+                for (int i = 0; i < framebufferObject->getSamples(); ++i)
                 {
-                    float threshold = 0.5f;
+                    mask <<= 1;
 
-                    for (int i = 0; i < framebufferObject->getSamples(); ++i)
+                    if ((i + 1) * mState.sampleCoverageValue >= threshold)
                     {
-                        mask <<= 1;
-
-                        if ((i + 1) * mState.sampleCoverageValue >= threshold)
-                        {
-                            threshold += 1.0f;
-                            mask |= 1;
-                        }
+                        threshold += 1.0f;
+                        mask |= 1;
                     }
                 }
-                
-                if (mState.sampleCoverageInvert)
-                {
-                    mask = ~mask;
-                }
-
-                device->SetRenderState(D3DRS_MULTISAMPLEMASK, mask);
             }
-            else
+            
+            if (mState.sampleCoverageInvert)
             {
-                device->SetRenderState(D3DRS_MULTISAMPLEMASK, 0xFFFFFFFF);
+                mask = ~mask;
             }
+
+            device->SetRenderState(D3DRS_MULTISAMPLEMASK, mask);
         }
         else
         {
-            device->SetRenderState(D3DRS_MULTISAMPLEANTIALIAS, FALSE);
+            device->SetRenderState(D3DRS_MULTISAMPLEMASK, 0xFFFFFFFF);
         }
 
         mSampleStateDirty = false;
@@ -1956,8 +1950,6 @@
 
         mDitherStateDirty = false;
     }
-
-    mFrontFaceDirty = false;
 }
 
 GLenum Context::applyVertexBuffer(GLint first, GLsizei count)