i965/vec4: Don't lose the force_writemask_all flag during CSE.
[mesa.git] / src / mesa / drivers / dri / i965 / intel_state.c
index 23bdc21ac44900506ab385d423cfa88ebcc64ef6..d7346709cf43320f783572dd87db4fda73a5eff0 100644 (file)
@@ -1,6 +1,6 @@
 /**************************************************************************
  *
- * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * Copyright 2003 VMware, Inc.
  * All Rights Reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
@@ -18,7 +18,7 @@
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 int
 intel_translate_shadow_compare_func(GLenum func)
 {
+   /* GL specifies the result of shadow comparisons as:
+    *     1     if   ref <op> texel,
+    *     0     otherwise.
+    *
+    * The hardware does:
+    *     0     if texel <op> ref,
+    *     1     otherwise.
+    *
+    * So, these look a bit strange because there's both a negation
+    * and swapping of the arguments involved.
+    */
    switch (func) {
    case GL_NEVER:
-       return BRW_COMPAREFUNCTION_ALWAYS;
+      return BRW_COMPAREFUNCTION_ALWAYS;
    case GL_LESS:
-       return BRW_COMPAREFUNCTION_LEQUAL;
+      return BRW_COMPAREFUNCTION_LEQUAL;
    case GL_LEQUAL:
-       return BRW_COMPAREFUNCTION_LESS;
+      return BRW_COMPAREFUNCTION_LESS;
    case GL_GREATER:
-       return BRW_COMPAREFUNCTION_GEQUAL;
+      return BRW_COMPAREFUNCTION_GEQUAL;
    case GL_GEQUAL:
       return BRW_COMPAREFUNCTION_GREATER;
    case GL_NOTEQUAL:
@@ -56,11 +67,10 @@ intel_translate_shadow_compare_func(GLenum func)
    case GL_EQUAL:
       return BRW_COMPAREFUNCTION_NOTEQUAL;
    case GL_ALWAYS:
-       return BRW_COMPAREFUNCTION_NEVER;
+      return BRW_COMPAREFUNCTION_NEVER;
    }
 
-   assert(!"Invalid shadow comparison function.");
-   return BRW_COMPAREFUNCTION_NEVER;
+   unreachable("Invalid shadow comparison function.");
 }
 
 int
@@ -85,8 +95,7 @@ intel_translate_compare_func(GLenum func)
       return BRW_COMPAREFUNCTION_ALWAYS;
    }
 
-   assert(!"Invalid comparison function.");
-   return BRW_COMPAREFUNCTION_ALWAYS;
+   unreachable("Invalid comparison function.");
 }
 
 int