struct etna_blend_state *co = CALLOC_STRUCT(etna_blend_state);
    bool alpha_enable, logicop_enable;
 
+   /* pipe_blend_func happens to match the hardware. */
+   STATIC_ASSERT(PIPE_BLEND_ADD == BLEND_EQ_ADD);
+   STATIC_ASSERT(PIPE_BLEND_SUBTRACT == BLEND_EQ_SUBTRACT);
+   STATIC_ASSERT(PIPE_BLEND_REVERSE_SUBTRACT == BLEND_EQ_REVERSE_SUBTRACT);
+   STATIC_ASSERT(PIPE_BLEND_MIN == BLEND_EQ_MIN);
+   STATIC_ASSERT(PIPE_BLEND_MAX == BLEND_EQ_MAX);
+
    if (!co)
       return NULL;
 
          VIVS_PE_ALPHA_CONFIG_SRC_FUNC_ALPHA(translate_blend_factor(rt0->alpha_src_factor)) |
          VIVS_PE_ALPHA_CONFIG_DST_FUNC_COLOR(translate_blend_factor(rt0->rgb_dst_factor)) |
          VIVS_PE_ALPHA_CONFIG_DST_FUNC_ALPHA(translate_blend_factor(rt0->alpha_dst_factor)) |
-         VIVS_PE_ALPHA_CONFIG_EQ_COLOR(translate_blend(rt0->rgb_func)) |
-         VIVS_PE_ALPHA_CONFIG_EQ_ALPHA(translate_blend(rt0->alpha_func));
+         VIVS_PE_ALPHA_CONFIG_EQ_COLOR(rt0->rgb_func) |
+         VIVS_PE_ALPHA_CONFIG_EQ_ALPHA(rt0->alpha_func);
    } else {
       co->PE_ALPHA_CONFIG = 0;
    }
 
    }
 }
 
-static inline uint32_t
-translate_blend(unsigned blend)
-{
-   switch (blend) {
-   case PIPE_BLEND_ADD:
-      return BLEND_EQ_ADD;
-   case PIPE_BLEND_SUBTRACT:
-      return BLEND_EQ_SUBTRACT;
-   case PIPE_BLEND_REVERSE_SUBTRACT:
-      return BLEND_EQ_REVERSE_SUBTRACT;
-   case PIPE_BLEND_MIN:
-      return BLEND_EQ_MIN;
-   case PIPE_BLEND_MAX:
-      return BLEND_EQ_MAX;
-   default:
-      DBG("Unhandled blend: %i", blend);
-      return ETNA_NO_MATCH;
-   }
-}
-
 static inline uint32_t
 translate_blend_factor(unsigned blend_factor)
 {