Removed SwiftShader's custom Blending enums

- Replaced BlendFactor with VkBlendFactor
- Replaced BlendOperation with VkBlendOp

Bug b/118386749

Change-Id: I25031c044af05b1922d031db9e82c52bb785def5
Reviewed-on: https://swiftshader-review.googlesource.com/c/22850
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Device/Context.cpp b/src/Device/Context.cpp
index 91bc446..1fb4d53 100644
--- a/src/Device/Context.cpp
+++ b/src/Device/Context.cpp
@@ -202,14 +202,14 @@
 		depthWriteEnable = true;
 
 		alphaBlendEnable = false;
-		sourceBlendFactorState = BLEND_ONE;
-		destBlendFactorState = BLEND_ZERO;
-		blendOperationState = BLENDOP_ADD;
+		sourceBlendFactorState = VK_BLEND_FACTOR_ONE;
+		destBlendFactorState = VK_BLEND_FACTOR_ZERO;
+		blendOperationState = VK_BLEND_OP_ADD;
 
 		separateAlphaBlendEnable = false;
-		sourceBlendFactorStateAlpha = BLEND_ONE;
-		destBlendFactorStateAlpha = BLEND_ZERO;
-		blendOperationStateAlpha = BLENDOP_ADD;
+		sourceBlendFactorStateAlpha = VK_BLEND_FACTOR_ONE;
+		destBlendFactorStateAlpha = VK_BLEND_FACTOR_ZERO;
+		blendOperationStateAlpha = VK_BLEND_OP_ADD;
 
 		cullMode = CULL_CLOCKWISE;
 		frontFacingCCW = true;
@@ -255,21 +255,21 @@
 		return modified;
 	}
 
-	bool Context::setSourceBlendFactor(BlendFactor sourceBlendFactor)
+	bool Context::setSourceBlendFactor(VkBlendFactor sourceBlendFactor)
 	{
 		bool modified = (Context::sourceBlendFactorState != sourceBlendFactor);
 		Context::sourceBlendFactorState = sourceBlendFactor;
 		return modified;
 	}
 
-	bool Context::setDestBlendFactor(BlendFactor destBlendFactor)
+	bool Context::setDestBlendFactor(VkBlendFactor destBlendFactor)
 	{
 		bool modified = (Context::destBlendFactorState != destBlendFactor);
 		Context::destBlendFactorState = destBlendFactor;
 		return modified;
 	}
 
-	bool Context::setBlendOperation(BlendOperation blendOperation)
+	bool Context::setBlendOperation(VkBlendOp blendOperation)
 	{
 		bool modified = (Context::blendOperationState != blendOperation);
 		Context::blendOperationState = blendOperation;
@@ -283,21 +283,21 @@
 		return modified;
 	}
 
-	bool Context::setSourceBlendFactorAlpha(BlendFactor sourceBlendFactorAlpha)
+	bool Context::setSourceBlendFactorAlpha(VkBlendFactor sourceBlendFactorAlpha)
 	{
 		bool modified = (Context::sourceBlendFactorStateAlpha != sourceBlendFactorAlpha);
 		Context::sourceBlendFactorStateAlpha = sourceBlendFactorAlpha;
 		return modified;
 	}
 
-	bool Context::setDestBlendFactorAlpha(BlendFactor destBlendFactorAlpha)
+	bool Context::setDestBlendFactorAlpha(VkBlendFactor destBlendFactorAlpha)
 	{
 		bool modified = (Context::destBlendFactorStateAlpha != destBlendFactorAlpha);
 		Context::destBlendFactorStateAlpha = destBlendFactorAlpha;
 		return modified;
 	}
 
-	bool Context::setBlendOperationAlpha(BlendOperation blendOperationAlpha)
+	bool Context::setBlendOperationAlpha(VkBlendOp blendOperationAlpha)
 	{
 		bool modified = (Context::blendOperationStateAlpha != blendOperationAlpha);
 		Context::blendOperationStateAlpha = blendOperationAlpha;
@@ -371,8 +371,8 @@
 			return false;
 		}
 
-		bool colorBlend = !(blendOperation() == BLENDOP_SOURCE && sourceBlendFactor() == BLEND_ONE);
-		bool alphaBlend = separateAlphaBlendEnable ? !(blendOperationAlpha() == BLENDOP_SOURCE && sourceBlendFactorAlpha() == BLEND_ONE) : colorBlend;
+		bool colorBlend = !(blendOperation() == VK_BLEND_OP_SRC_EXT && sourceBlendFactor() == VK_BLEND_FACTOR_ONE);
+		bool alphaBlend = separateAlphaBlendEnable ? !(blendOperationAlpha() == VK_BLEND_OP_SRC_EXT && sourceBlendFactorAlpha() == VK_BLEND_FACTOR_ONE) : colorBlend;
 
 		return colorBlend || alphaBlend;
 	}
@@ -382,20 +382,20 @@
 		return colorLogicOpEnabled ? logicalOperation : VK_LOGIC_OP_COPY;
 	}
 
-	BlendFactor Context::sourceBlendFactor()
+	VkBlendFactor Context::sourceBlendFactor()
 	{
-		if(!alphaBlendEnable) return BLEND_ONE;
+		if(!alphaBlendEnable) return VK_BLEND_FACTOR_ONE;
 
 		switch(blendOperationState)
 		{
-		case BLENDOP_ADD:
-		case BLENDOP_SUB:
-		case BLENDOP_INVSUB:
+		case VK_BLEND_OP_ADD:
+		case VK_BLEND_OP_SUBTRACT:
+		case VK_BLEND_OP_REVERSE_SUBTRACT:
 			return sourceBlendFactorState;
-		case BLENDOP_MIN:
-			return BLEND_ONE;
-		case BLENDOP_MAX:
-			return BLEND_ONE;
+		case VK_BLEND_OP_MIN:
+			return VK_BLEND_FACTOR_ONE;
+		case VK_BLEND_OP_MAX:
+			return VK_BLEND_FACTOR_ONE;
 		default:
 			ASSERT(false);
 		}
@@ -403,20 +403,20 @@
 		return sourceBlendFactorState;
 	}
 
-	BlendFactor Context::destBlendFactor()
+	VkBlendFactor Context::destBlendFactor()
 	{
-		if(!alphaBlendEnable) return BLEND_ZERO;
+		if(!alphaBlendEnable) return VK_BLEND_FACTOR_ONE;
 
 		switch(blendOperationState)
 		{
-		case BLENDOP_ADD:
-		case BLENDOP_SUB:
-		case BLENDOP_INVSUB:
+		case VK_BLEND_OP_ADD:
+		case VK_BLEND_OP_SUBTRACT:
+		case VK_BLEND_OP_REVERSE_SUBTRACT:
 			return destBlendFactorState;
-		case BLENDOP_MIN:
-			return BLEND_ONE;
-		case BLENDOP_MAX:
-			return BLEND_ONE;
+		case VK_BLEND_OP_MIN:
+			return VK_BLEND_FACTOR_ONE;
+		case VK_BLEND_OP_MAX:
+			return VK_BLEND_FACTOR_ONE;
 		default:
 			ASSERT(false);
 		}
@@ -424,111 +424,111 @@
 		return destBlendFactorState;
 	}
 
-	BlendOperation Context::blendOperation()
+	VkBlendOp Context::blendOperation()
 	{
-		if(!alphaBlendEnable) return BLENDOP_SOURCE;
+		if(!alphaBlendEnable) return VK_BLEND_OP_SRC_EXT;
 
 		switch(blendOperationState)
 		{
-		case BLENDOP_ADD:
-			if(sourceBlendFactor() == BLEND_ZERO)
+		case VK_BLEND_OP_ADD:
+			if(sourceBlendFactor() == VK_BLEND_FACTOR_ZERO)
 			{
-				if(destBlendFactor() == BLEND_ZERO)
+				if(destBlendFactor() == VK_BLEND_FACTOR_ZERO)
 				{
-					return BLENDOP_NULL;
+					return VK_BLEND_OP_ZERO_EXT;
 				}
 				else
 				{
-					return BLENDOP_DEST;
+					return VK_BLEND_OP_DST_EXT;
 				}
 			}
-			else if(sourceBlendFactor() == BLEND_ONE)
+			else if(sourceBlendFactor() == VK_BLEND_FACTOR_ONE)
 			{
-				if(destBlendFactor() == BLEND_ZERO)
+				if(destBlendFactor() == VK_BLEND_FACTOR_ZERO)
 				{
-					return BLENDOP_SOURCE;
+					return VK_BLEND_OP_SRC_EXT;
 				}
 				else
 				{
-					return BLENDOP_ADD;
+					return VK_BLEND_OP_ADD;
 				}
 			}
 			else
 			{
-				if(destBlendFactor() == BLEND_ZERO)
+				if(destBlendFactor() == VK_BLEND_FACTOR_ZERO)
 				{
-					return BLENDOP_SOURCE;
+					return VK_BLEND_OP_SRC_EXT;
 				}
 				else
 				{
-					return BLENDOP_ADD;
+					return VK_BLEND_OP_ADD;
 				}
 			}
-		case BLENDOP_SUB:
-			if(sourceBlendFactor() == BLEND_ZERO)
+		case VK_BLEND_OP_SUBTRACT:
+			if(sourceBlendFactor() == VK_BLEND_FACTOR_ZERO)
 			{
-				return BLENDOP_NULL;   // Negative, clamped to zero
+				return VK_BLEND_OP_ZERO_EXT;   // Negative, clamped to zero
 			}
-			else if(sourceBlendFactor() == BLEND_ONE)
+			else if(sourceBlendFactor() == VK_BLEND_FACTOR_ONE)
 			{
-				if(destBlendFactor() == BLEND_ZERO)
+				if(destBlendFactor() == VK_BLEND_FACTOR_ZERO)
 				{
-					return BLENDOP_SOURCE;
+					return VK_BLEND_OP_SRC_EXT;
 				}
 				else
 				{
-					return BLENDOP_SUB;
+					return VK_BLEND_OP_SUBTRACT;
 				}
 			}
 			else
 			{
-				if(destBlendFactor() == BLEND_ZERO)
+				if(destBlendFactor() == VK_BLEND_FACTOR_ZERO)
 				{
-					return BLENDOP_SOURCE;
+					return VK_BLEND_OP_SRC_EXT;
 				}
 				else
 				{
-					return BLENDOP_SUB;
+					return VK_BLEND_OP_SUBTRACT;
 				}
 			}
-		case BLENDOP_INVSUB:
-			if(sourceBlendFactor() == BLEND_ZERO)
+		case VK_BLEND_OP_REVERSE_SUBTRACT:
+			if(sourceBlendFactor() == VK_BLEND_FACTOR_ZERO)
 			{
-				if(destBlendFactor() == BLEND_ZERO)
+				if(destBlendFactor() == VK_BLEND_FACTOR_ZERO)
 				{
-					return BLENDOP_NULL;
+					return VK_BLEND_OP_ZERO_EXT;
 				}
 				else
 				{
-					return BLENDOP_DEST;
+					return VK_BLEND_OP_DST_EXT;
 				}
 			}
-			else if(sourceBlendFactor() == BLEND_ONE)
+			else if(sourceBlendFactor() == VK_BLEND_FACTOR_ONE)
 			{
-				if(destBlendFactor() == BLEND_ZERO)
+				if(destBlendFactor() == VK_BLEND_FACTOR_ZERO)
 				{
-					return BLENDOP_NULL;   // Negative, clamped to zero
+					return VK_BLEND_OP_ZERO_EXT;   // Negative, clamped to zero
 				}
 				else
 				{
-					return BLENDOP_INVSUB;
+					return VK_BLEND_OP_REVERSE_SUBTRACT;
 				}
 			}
 			else
 			{
-				if(destBlendFactor() == BLEND_ZERO)
+				if(destBlendFactor() == VK_BLEND_OP_ZERO_EXT)
 				{
-					return BLENDOP_NULL;   // Negative, clamped to zero
+					return VK_BLEND_OP_ZERO_EXT;   // Negative, clamped to zero
 				}
 				else
 				{
-					return BLENDOP_INVSUB;
+					return VK_BLEND_OP_REVERSE_SUBTRACT;
 				}
 			}
-		case BLENDOP_MIN:
-			return BLENDOP_MIN;
-		case BLENDOP_MAX:
-			return BLENDOP_MAX;
+		case VK_BLEND_OP_MIN:
+			return VK_BLEND_OP_MIN;
+		case VK_BLEND_OP_MAX:
+			return VK_BLEND_OP_MAX;
 		default:
 			ASSERT(false);
 		}
@@ -536,7 +536,7 @@
 		return blendOperationState;
 	}
 
-	BlendFactor Context::sourceBlendFactorAlpha()
+	VkBlendFactor Context::sourceBlendFactorAlpha()
 	{
 		if(!separateAlphaBlendEnable)
 		{
@@ -546,14 +546,14 @@
 		{
 			switch(blendOperationStateAlpha)
 			{
-			case BLENDOP_ADD:
-			case BLENDOP_SUB:
-			case BLENDOP_INVSUB:
+			case VK_BLEND_OP_ADD:
+			case VK_BLEND_OP_SUBTRACT:
+			case VK_BLEND_OP_REVERSE_SUBTRACT:
 				return sourceBlendFactorStateAlpha;
-			case BLENDOP_MIN:
-				return BLEND_ONE;
-			case BLENDOP_MAX:
-				return BLEND_ONE;
+			case VK_BLEND_OP_MIN:
+				return VK_BLEND_FACTOR_ONE;
+			case VK_BLEND_OP_MAX:
+				return VK_BLEND_FACTOR_ONE;
 			default:
 				ASSERT(false);
 			}
@@ -562,7 +562,7 @@
 		}
 	}
 
-	BlendFactor Context::destBlendFactorAlpha()
+	VkBlendFactor Context::destBlendFactorAlpha()
 	{
 		if(!separateAlphaBlendEnable)
 		{
@@ -572,14 +572,14 @@
 		{
 			switch(blendOperationStateAlpha)
 			{
-			case BLENDOP_ADD:
-			case BLENDOP_SUB:
-			case BLENDOP_INVSUB:
+			case VK_BLEND_OP_ADD:
+			case VK_BLEND_OP_SUBTRACT:
+			case VK_BLEND_OP_REVERSE_SUBTRACT:
 				return destBlendFactorStateAlpha;
-			case BLENDOP_MIN:
-				return BLEND_ONE;
-			case BLENDOP_MAX:
-				return BLEND_ONE;
+			case VK_BLEND_OP_MIN:
+				return VK_BLEND_FACTOR_ONE;
+			case VK_BLEND_OP_MAX:
+				return VK_BLEND_FACTOR_ONE;
 			default:
 				ASSERT(false);
 			}
@@ -588,7 +588,7 @@
 		}
 	}
 
-	BlendOperation Context::blendOperationAlpha()
+	VkBlendOp Context::blendOperationAlpha()
 	{
 		if(!separateAlphaBlendEnable)
 		{
@@ -598,105 +598,105 @@
 		{
 			switch(blendOperationStateAlpha)
 			{
-			case BLENDOP_ADD:
-				if(sourceBlendFactorAlpha() == BLEND_ZERO)
+			case VK_BLEND_OP_ADD:
+				if(sourceBlendFactorAlpha() == VK_BLEND_FACTOR_ZERO)
 				{
-					if(destBlendFactorAlpha() == BLEND_ZERO)
+					if(destBlendFactorAlpha() == VK_BLEND_FACTOR_ZERO)
 					{
-						return BLENDOP_NULL;
+						return VK_BLEND_OP_ZERO_EXT;
 					}
 					else
 					{
-						return BLENDOP_DEST;
+						return VK_BLEND_OP_DST_EXT;
 					}
 				}
-				else if(sourceBlendFactorAlpha() == BLEND_ONE)
+				else if(sourceBlendFactorAlpha() == VK_BLEND_FACTOR_ONE)
 				{
-					if(destBlendFactorAlpha() == BLEND_ZERO)
+					if(destBlendFactorAlpha() == VK_BLEND_FACTOR_ZERO)
 					{
-						return BLENDOP_SOURCE;
+						return VK_BLEND_OP_SRC_EXT;
 					}
 					else
 					{
-						return BLENDOP_ADD;
+						return VK_BLEND_OP_ADD;
 					}
 				}
 				else
 				{
-					if(destBlendFactorAlpha() == BLEND_ZERO)
+					if(destBlendFactorAlpha() == VK_BLEND_FACTOR_ZERO)
 					{
-						return BLENDOP_SOURCE;
+						return VK_BLEND_OP_SRC_EXT;
 					}
 					else
 					{
-						return BLENDOP_ADD;
+						return VK_BLEND_OP_ADD;
 					}
 				}
-			case BLENDOP_SUB:
-				if(sourceBlendFactorAlpha() == BLEND_ZERO)
+			case VK_BLEND_OP_SUBTRACT:
+				if(sourceBlendFactorAlpha() == VK_BLEND_FACTOR_ZERO)
 				{
-					return BLENDOP_NULL;   // Negative, clamped to zero
+					return VK_BLEND_OP_ZERO_EXT;   // Negative, clamped to zero
 				}
-				else if(sourceBlendFactorAlpha() == BLEND_ONE)
+				else if(sourceBlendFactorAlpha() == VK_BLEND_FACTOR_ONE)
 				{
-					if(destBlendFactorAlpha() == BLEND_ZERO)
+					if(destBlendFactorAlpha() == VK_BLEND_FACTOR_ZERO)
 					{
-						return BLENDOP_SOURCE;
+						return VK_BLEND_OP_SRC_EXT;
 					}
 					else
 					{
-						return BLENDOP_SUB;
+						return VK_BLEND_OP_SUBTRACT;
 					}
 				}
 				else
 				{
-					if(destBlendFactorAlpha() == BLEND_ZERO)
+					if(destBlendFactorAlpha() == VK_BLEND_FACTOR_ZERO)
 					{
-						return BLENDOP_SOURCE;
+						return VK_BLEND_OP_SRC_EXT;
 					}
 					else
 					{
-						return BLENDOP_SUB;
+						return VK_BLEND_OP_SUBTRACT;
 					}
 				}
-			case BLENDOP_INVSUB:
-				if(sourceBlendFactorAlpha() == BLEND_ZERO)
+			case VK_BLEND_OP_REVERSE_SUBTRACT:
+				if(sourceBlendFactorAlpha() == VK_BLEND_FACTOR_ZERO)
 				{
-					if(destBlendFactorAlpha() == BLEND_ZERO)
+					if(destBlendFactorAlpha() == VK_BLEND_FACTOR_ZERO)
 					{
-						return BLENDOP_NULL;
+						return VK_BLEND_OP_ZERO_EXT;
 					}
 					else
 					{
-						return BLENDOP_DEST;
+						return VK_BLEND_OP_DST_EXT;
 					}
 				}
-				else if(sourceBlendFactorAlpha() == BLEND_ONE)
+				else if(sourceBlendFactorAlpha() == VK_BLEND_FACTOR_ONE)
 				{
-					if(destBlendFactorAlpha() == BLEND_ZERO)
+					if(destBlendFactorAlpha() == VK_BLEND_FACTOR_ZERO)
 					{
-						return BLENDOP_NULL;   // Negative, clamped to zero
+						return VK_BLEND_OP_ZERO_EXT;   // Negative, clamped to zero
 					}
 					else
 					{
-						return BLENDOP_INVSUB;
+						return VK_BLEND_OP_REVERSE_SUBTRACT;
 					}
 				}
 				else
 				{
-					if(destBlendFactorAlpha() == BLEND_ZERO)
+					if(destBlendFactorAlpha() == VK_BLEND_OP_ZERO_EXT)
 					{
-						return BLENDOP_NULL;   // Negative, clamped to zero
+						return VK_BLEND_OP_ZERO_EXT;   // Negative, clamped to zero
 					}
 					else
 					{
-						return BLENDOP_INVSUB;
+						return VK_BLEND_OP_ZERO_EXT;
 					}
 				}
-			case BLENDOP_MIN:
-				return BLENDOP_MIN;
-			case BLENDOP_MAX:
-				return BLENDOP_MAX;
+			case VK_BLEND_OP_MIN:
+				return VK_BLEND_OP_MIN;
+			case VK_BLEND_OP_MAX:
+				return VK_BLEND_OP_MAX;
 			default:
 				ASSERT(false);
 			}
@@ -764,8 +764,8 @@
 			return 0;
 		}
 
-		if(blendOperation() == BLENDOP_DEST && destBlendFactor() == BLEND_ONE &&
-		   (!separateAlphaBlendEnable || (blendOperationAlpha() == BLENDOP_DEST && destBlendFactorAlpha() == BLEND_ONE)))
+		if(blendOperation() == VK_BLEND_OP_DST_EXT && destBlendFactor() == VK_BLEND_FACTOR_ONE &&
+		   (!separateAlphaBlendEnable || (blendOperationAlpha() == VK_BLEND_OP_DST_EXT && destBlendFactorAlpha() == VK_BLEND_FACTOR_ONE)))
 		{
 			return 0;
 		}
diff --git a/src/Device/Context.hpp b/src/Device/Context.hpp
index d014564..790e4ca 100644
--- a/src/Device/Context.hpp
+++ b/src/Device/Context.hpp
@@ -93,42 +93,6 @@
 		CULL_LAST = CULL_COUNTERCLOCKWISE
 	};
 
-	enum BlendFactor ENUM_UNDERLYING_TYPE_UNSIGNED_INT
-	{
-		BLEND_ZERO,
-		BLEND_ONE,
-		BLEND_SOURCE,
-		BLEND_INVSOURCE,
-		BLEND_DEST,
-		BLEND_INVDEST,
-		BLEND_SOURCEALPHA,
-		BLEND_INVSOURCEALPHA,
-		BLEND_DESTALPHA,
-		BLEND_INVDESTALPHA,
-		BLEND_SRCALPHASAT,
-		BLEND_CONSTANT,
-		BLEND_INVCONSTANT,
-		BLEND_CONSTANTALPHA,
-		BLEND_INVCONSTANTALPHA,
-
-		BLEND_LAST = BLEND_INVCONSTANTALPHA
-	};
-
-	enum BlendOperation ENUM_UNDERLYING_TYPE_UNSIGNED_INT
-	{
-		BLENDOP_ADD,
-		BLENDOP_SUB,
-		BLENDOP_INVSUB,
-		BLENDOP_MIN,
-		BLENDOP_MAX,
-
-		BLENDOP_SOURCE,   // Copy source
-		BLENDOP_DEST,     // Copy dest
-		BLENDOP_NULL,     // Nullify result
-
-		BLENDOP_LAST = BLENDOP_NULL
-	};
-
 	enum TransparencyAntialiasing ENUM_UNDERLYING_TYPE_UNSIGNED_INT
 	{
 		TRANSPARENCY_NONE,
@@ -156,14 +120,14 @@
 		bool setDepthBufferEnable(bool depthBufferEnable);
 
 		bool setAlphaBlendEnable(bool alphaBlendEnable);
-		bool setSourceBlendFactor(BlendFactor sourceBlendFactor);
-		bool setDestBlendFactor(BlendFactor destBlendFactor);
-		bool setBlendOperation(BlendOperation blendOperation);
+		bool setSourceBlendFactor(VkBlendFactor sourceBlendFactor);
+		bool setDestBlendFactor(VkBlendFactor destBlendFactor);
+		bool setBlendOperation(VkBlendOp blendOperation);
 
 		bool setSeparateAlphaBlendEnable(bool separateAlphaBlendEnable);
-		bool setSourceBlendFactorAlpha(BlendFactor sourceBlendFactorAlpha);
-		bool setDestBlendFactorAlpha(BlendFactor destBlendFactorAlpha);
-		bool setBlendOperationAlpha(BlendOperation blendOperationAlpha);
+		bool setSourceBlendFactorAlpha(VkBlendFactor sourceBlendFactorAlpha);
+		bool setDestBlendFactorAlpha(VkBlendFactor destBlendFactorAlpha);
+		bool setBlendOperationAlpha(VkBlendOp blendOperationAlpha);
 
 		bool setColorWriteMask(int index, int colorWriteMask);
 		bool setWriteSRGB(bool sRGB);
@@ -179,13 +143,13 @@
 		bool perspectiveActive();
 
 		bool alphaBlendActive();
-		BlendFactor sourceBlendFactor();
-		BlendFactor destBlendFactor();
-		BlendOperation blendOperation();
+		VkBlendFactor sourceBlendFactor();
+		VkBlendFactor destBlendFactor();
+		VkBlendOp blendOperation();
 
-		BlendFactor sourceBlendFactorAlpha();
-		BlendFactor destBlendFactorAlpha();
-		BlendOperation blendOperationAlpha();
+		VkBlendFactor sourceBlendFactorAlpha();
+		VkBlendFactor destBlendFactorAlpha();
+		VkBlendOp blendOperationAlpha();
 
 		VkLogicOp colorLogicOp();
 
@@ -261,14 +225,14 @@
 		bool depthWriteEnable;
 
 		bool alphaBlendEnable;
-		BlendFactor sourceBlendFactorState;
-		BlendFactor destBlendFactorState;
-		BlendOperation blendOperationState;
+		VkBlendFactor sourceBlendFactorState;
+		VkBlendFactor destBlendFactorState;
+		VkBlendOp blendOperationState;
 
 		bool separateAlphaBlendEnable;
-		BlendFactor sourceBlendFactorStateAlpha;
-		BlendFactor destBlendFactorStateAlpha;
-		BlendOperation blendOperationStateAlpha;
+		VkBlendFactor sourceBlendFactorStateAlpha;
+		VkBlendFactor destBlendFactorStateAlpha;
+		VkBlendOp blendOperationStateAlpha;
 
 		float lineWidth;
 
diff --git a/src/Device/PixelProcessor.cpp b/src/Device/PixelProcessor.cpp
index 7c0f98b..683eda2 100644
--- a/src/Device/PixelProcessor.cpp
+++ b/src/Device/PixelProcessor.cpp
@@ -560,17 +560,17 @@
 		context->setAlphaBlendEnable(alphaBlendEnable);
 	}
 
-	void PixelProcessor::setSourceBlendFactor(BlendFactor sourceBlendFactor)
+	void PixelProcessor::setSourceBlendFactor(VkBlendFactor sourceBlendFactor)
 	{
 		context->setSourceBlendFactor(sourceBlendFactor);
 	}
 
-	void PixelProcessor::setDestBlendFactor(BlendFactor destBlendFactor)
+	void PixelProcessor::setDestBlendFactor(VkBlendFactor destBlendFactor)
 	{
 		context->setDestBlendFactor(destBlendFactor);
 	}
 
-	void PixelProcessor::setBlendOperation(BlendOperation blendOperation)
+	void PixelProcessor::setBlendOperation(VkBlendOp blendOperation)
 	{
 		context->setBlendOperation(blendOperation);
 	}
@@ -580,17 +580,17 @@
 		context->setSeparateAlphaBlendEnable(separateAlphaBlendEnable);
 	}
 
-	void PixelProcessor::setSourceBlendFactorAlpha(BlendFactor sourceBlendFactorAlpha)
+	void PixelProcessor::setSourceBlendFactorAlpha(VkBlendFactor sourceBlendFactorAlpha)
 	{
 		context->setSourceBlendFactorAlpha(sourceBlendFactorAlpha);
 	}
 
-	void PixelProcessor::setDestBlendFactorAlpha(BlendFactor destBlendFactorAlpha)
+	void PixelProcessor::setDestBlendFactorAlpha(VkBlendFactor destBlendFactorAlpha)
 	{
 		context->setDestBlendFactorAlpha(destBlendFactorAlpha);
 	}
 
-	void PixelProcessor::setBlendOperationAlpha(BlendOperation blendOperationAlpha)
+	void PixelProcessor::setBlendOperationAlpha(VkBlendOp blendOperationAlpha)
 	{
 		context->setBlendOperationAlpha(blendOperationAlpha);
 	}
diff --git a/src/Device/PixelProcessor.hpp b/src/Device/PixelProcessor.hpp
index 3475599..1b0e04b 100644
--- a/src/Device/PixelProcessor.hpp
+++ b/src/Device/PixelProcessor.hpp
@@ -65,12 +65,12 @@
 			bool depthClamp                           : 1;
 
 			bool alphaBlendActive                     : 1;
-			BlendFactor sourceBlendFactor             : BITS(BLEND_LAST);
-			BlendFactor destBlendFactor               : BITS(BLEND_LAST);
-			BlendOperation blendOperation             : BITS(BLENDOP_LAST);
-			BlendFactor sourceBlendFactorAlpha        : BITS(BLEND_LAST);
-			BlendFactor destBlendFactorAlpha          : BITS(BLEND_LAST);
-			BlendOperation blendOperationAlpha        : BITS(BLENDOP_LAST);
+			VkBlendFactor sourceBlendFactor           : BITS(VK_BLEND_FACTOR_END_RANGE);
+			VkBlendFactor destBlendFactor             : BITS(VK_BLEND_FACTOR_END_RANGE);
+			VkBlendOp blendOperation                  : BITS(VK_BLEND_OP_BLUE_EXT);
+			VkBlendFactor sourceBlendFactorAlpha      : BITS(VK_BLEND_FACTOR_END_RANGE);
+			VkBlendFactor destBlendFactorAlpha        : BITS(VK_BLEND_FACTOR_END_RANGE);
+			VkBlendOp blendOperationAlpha             : BITS(VK_BLEND_OP_BLUE_EXT);
 
 			unsigned int colorWriteMask                       : RENDERTARGETS * 4;   // Four component bit masks
 			VkFormat targetFormat[RENDERTARGETS];
@@ -239,14 +239,14 @@
 		void setBlendConstant(const Color<float> &blendConstant);
 
 		void setAlphaBlendEnable(bool alphaBlendEnable);
-		void setSourceBlendFactor(BlendFactor sourceBlendFactor);
-		void setDestBlendFactor(BlendFactor destBlendFactor);
-		void setBlendOperation(BlendOperation blendOperation);
+		void setSourceBlendFactor(VkBlendFactor sourceBlendFactor);
+		void setDestBlendFactor(VkBlendFactor destBlendFactor);
+		void setBlendOperation(VkBlendOp blendOperation);
 
 		void setSeparateAlphaBlendEnable(bool separateAlphaBlendEnable);
-		void setSourceBlendFactorAlpha(BlendFactor sourceBlendFactorAlpha);
-		void setDestBlendFactorAlpha(BlendFactor destBlendFactorAlpha);
-		void setBlendOperationAlpha(BlendOperation blendOperationAlpha);
+		void setSourceBlendFactorAlpha(VkBlendFactor sourceBlendFactorAlpha);
+		void setDestBlendFactorAlpha(VkBlendFactor destBlendFactorAlpha);
+		void setBlendOperationAlpha(VkBlendOp blendOperationAlpha);
 
 		void setAlphaReference(float alphaReference);
 
diff --git a/src/Pipeline/PixelRoutine.cpp b/src/Pipeline/PixelRoutine.cpp
index 948e201..8e40a26 100644
--- a/src/Pipeline/PixelRoutine.cpp
+++ b/src/Pipeline/PixelRoutine.cpp
@@ -786,78 +786,78 @@
 		}
 	}
 
-	void PixelRoutine::blendFactor(Vector4s &blendFactor, const Vector4s &current, const Vector4s &pixel, BlendFactor blendFactorActive)
+	void PixelRoutine::blendFactor(Vector4s &blendFactor, const Vector4s &current, const Vector4s &pixel, VkBlendFactor blendFactorActive)
 	{
 		switch(blendFactorActive)
 		{
-		case BLEND_ZERO:
+		case VK_BLEND_FACTOR_ZERO:
 			// Optimized
 			break;
-		case BLEND_ONE:
+		case VK_BLEND_FACTOR_ONE:
 			// Optimized
 			break;
-		case BLEND_SOURCE:
+		case VK_BLEND_FACTOR_SRC_COLOR:
 			blendFactor.x = current.x;
 			blendFactor.y = current.y;
 			blendFactor.z = current.z;
 			break;
-		case BLEND_INVSOURCE:
+		case VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR:
 			blendFactor.x = Short4(0xFFFFu) - current.x;
 			blendFactor.y = Short4(0xFFFFu) - current.y;
 			blendFactor.z = Short4(0xFFFFu) - current.z;
 			break;
-		case BLEND_DEST:
+		case VK_BLEND_FACTOR_DST_COLOR:
 			blendFactor.x = pixel.x;
 			blendFactor.y = pixel.y;
 			blendFactor.z = pixel.z;
 			break;
-		case BLEND_INVDEST:
+		case VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR:
 			blendFactor.x = Short4(0xFFFFu) - pixel.x;
 			blendFactor.y = Short4(0xFFFFu) - pixel.y;
 			blendFactor.z = Short4(0xFFFFu) - pixel.z;
 			break;
-		case BLEND_SOURCEALPHA:
+		case VK_BLEND_FACTOR_SRC_ALPHA:
 			blendFactor.x = current.w;
 			blendFactor.y = current.w;
 			blendFactor.z = current.w;
 			break;
-		case BLEND_INVSOURCEALPHA:
+		case VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA:
 			blendFactor.x = Short4(0xFFFFu) - current.w;
 			blendFactor.y = Short4(0xFFFFu) - current.w;
 			blendFactor.z = Short4(0xFFFFu) - current.w;
 			break;
-		case BLEND_DESTALPHA:
+		case VK_BLEND_FACTOR_DST_ALPHA:
 			blendFactor.x = pixel.w;
 			blendFactor.y = pixel.w;
 			blendFactor.z = pixel.w;
 			break;
-		case BLEND_INVDESTALPHA:
+		case VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA:
 			blendFactor.x = Short4(0xFFFFu) - pixel.w;
 			blendFactor.y = Short4(0xFFFFu) - pixel.w;
 			blendFactor.z = Short4(0xFFFFu) - pixel.w;
 			break;
-		case BLEND_SRCALPHASAT:
+		case VK_BLEND_FACTOR_SRC_ALPHA_SATURATE:
 			blendFactor.x = Short4(0xFFFFu) - pixel.w;
 			blendFactor.x = Min(As<UShort4>(blendFactor.x), As<UShort4>(current.w));
 			blendFactor.y = blendFactor.x;
 			blendFactor.z = blendFactor.x;
 			break;
-		case BLEND_CONSTANT:
+		case VK_BLEND_FACTOR_CONSTANT_COLOR:
 			blendFactor.x = *Pointer<Short4>(data + OFFSET(DrawData,factor.blendConstant4W[0]));
 			blendFactor.y = *Pointer<Short4>(data + OFFSET(DrawData,factor.blendConstant4W[1]));
 			blendFactor.z = *Pointer<Short4>(data + OFFSET(DrawData,factor.blendConstant4W[2]));
 			break;
-		case BLEND_INVCONSTANT:
+		case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR:
 			blendFactor.x = *Pointer<Short4>(data + OFFSET(DrawData,factor.invBlendConstant4W[0]));
 			blendFactor.y = *Pointer<Short4>(data + OFFSET(DrawData,factor.invBlendConstant4W[1]));
 			blendFactor.z = *Pointer<Short4>(data + OFFSET(DrawData,factor.invBlendConstant4W[2]));
 			break;
-		case BLEND_CONSTANTALPHA:
+		case VK_BLEND_FACTOR_CONSTANT_ALPHA:
 			blendFactor.x = *Pointer<Short4>(data + OFFSET(DrawData,factor.blendConstant4W[3]));
 			blendFactor.y = *Pointer<Short4>(data + OFFSET(DrawData,factor.blendConstant4W[3]));
 			blendFactor.z = *Pointer<Short4>(data + OFFSET(DrawData,factor.blendConstant4W[3]));
 			break;
-		case BLEND_INVCONSTANTALPHA:
+		case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA:
 			blendFactor.x = *Pointer<Short4>(data + OFFSET(DrawData,factor.invBlendConstant4W[3]));
 			blendFactor.y = *Pointer<Short4>(data + OFFSET(DrawData,factor.invBlendConstant4W[3]));
 			blendFactor.z = *Pointer<Short4>(data + OFFSET(DrawData,factor.invBlendConstant4W[3]));
@@ -867,49 +867,49 @@
 		}
 	}
 
-	void PixelRoutine::blendFactorAlpha(Vector4s &blendFactor, const Vector4s &current, const Vector4s &pixel, BlendFactor blendFactorAlphaActive)
+	void PixelRoutine::blendFactorAlpha(Vector4s &blendFactor, const Vector4s &current, const Vector4s &pixel, VkBlendFactor blendFactorAlphaActive)
 	{
 		switch(blendFactorAlphaActive)
 		{
-		case BLEND_ZERO:
+		case VK_BLEND_FACTOR_ZERO:
 			// Optimized
 			break;
-		case BLEND_ONE:
+		case VK_BLEND_FACTOR_ONE:
 			// Optimized
 			break;
-		case BLEND_SOURCE:
+		case VK_BLEND_FACTOR_SRC_COLOR:
 			blendFactor.w = current.w;
 			break;
-		case BLEND_INVSOURCE:
+		case VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR:
 			blendFactor.w = Short4(0xFFFFu) - current.w;
 			break;
-		case BLEND_DEST:
+		case VK_BLEND_FACTOR_DST_COLOR:
 			blendFactor.w = pixel.w;
 			break;
-		case BLEND_INVDEST:
+		case VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR:
 			blendFactor.w = Short4(0xFFFFu) - pixel.w;
 			break;
-		case BLEND_SOURCEALPHA:
+		case VK_BLEND_FACTOR_SRC_ALPHA:
 			blendFactor.w = current.w;
 			break;
-		case BLEND_INVSOURCEALPHA:
+		case VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA:
 			blendFactor.w = Short4(0xFFFFu) - current.w;
 			break;
-		case BLEND_DESTALPHA:
+		case VK_BLEND_FACTOR_DST_ALPHA:
 			blendFactor.w = pixel.w;
 			break;
-		case BLEND_INVDESTALPHA:
+		case VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA:
 			blendFactor.w = Short4(0xFFFFu) - pixel.w;
 			break;
-		case BLEND_SRCALPHASAT:
+		case VK_BLEND_FACTOR_SRC_ALPHA_SATURATE:
 			blendFactor.w = Short4(0xFFFFu);
 			break;
-		case BLEND_CONSTANT:
-		case BLEND_CONSTANTALPHA:
+		case VK_BLEND_FACTOR_CONSTANT_COLOR:
+		case VK_BLEND_FACTOR_CONSTANT_ALPHA:
 			blendFactor.w = *Pointer<Short4>(data + OFFSET(DrawData,factor.blendConstant4W[3]));
 			break;
-		case BLEND_INVCONSTANT:
-		case BLEND_INVCONSTANTALPHA:
+		case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR:
+		case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA:
 			blendFactor.w = *Pointer<Short4>(data + OFFSET(DrawData,factor.invBlendConstant4W[3]));
 			break;
 		default:
@@ -1050,14 +1050,14 @@
 		blendFactor(sourceFactor, current, pixel, state.sourceBlendFactor);
 		blendFactor(destFactor, current, pixel, state.destBlendFactor);
 
-		if(state.sourceBlendFactor != BLEND_ONE && state.sourceBlendFactor != BLEND_ZERO)
+		if(state.sourceBlendFactor != VK_BLEND_FACTOR_ONE && state.sourceBlendFactor != VK_BLEND_FACTOR_ZERO)
 		{
 			current.x = MulHigh(As<UShort4>(current.x), As<UShort4>(sourceFactor.x));
 			current.y = MulHigh(As<UShort4>(current.y), As<UShort4>(sourceFactor.y));
 			current.z = MulHigh(As<UShort4>(current.z), As<UShort4>(sourceFactor.z));
 		}
 
-		if(state.destBlendFactor != BLEND_ONE && state.destBlendFactor != BLEND_ZERO)
+		if(state.destBlendFactor != VK_BLEND_FACTOR_ONE && state.destBlendFactor != VK_BLEND_FACTOR_ZERO)
 		{
 			pixel.x = MulHigh(As<UShort4>(pixel.x), As<UShort4>(destFactor.x));
 			pixel.y = MulHigh(As<UShort4>(pixel.y), As<UShort4>(destFactor.y));
@@ -1066,40 +1066,40 @@
 
 		switch(state.blendOperation)
 		{
-		case BLENDOP_ADD:
+		case VK_BLEND_OP_ADD:
 			current.x = AddSat(As<UShort4>(current.x), As<UShort4>(pixel.x));
 			current.y = AddSat(As<UShort4>(current.y), As<UShort4>(pixel.y));
 			current.z = AddSat(As<UShort4>(current.z), As<UShort4>(pixel.z));
 			break;
-		case BLENDOP_SUB:
+		case VK_BLEND_OP_SUBTRACT:
 			current.x = SubSat(As<UShort4>(current.x), As<UShort4>(pixel.x));
 			current.y = SubSat(As<UShort4>(current.y), As<UShort4>(pixel.y));
 			current.z = SubSat(As<UShort4>(current.z), As<UShort4>(pixel.z));
 			break;
-		case BLENDOP_INVSUB:
+		case VK_BLEND_OP_REVERSE_SUBTRACT:
 			current.x = SubSat(As<UShort4>(pixel.x), As<UShort4>(current.x));
 			current.y = SubSat(As<UShort4>(pixel.y), As<UShort4>(current.y));
 			current.z = SubSat(As<UShort4>(pixel.z), As<UShort4>(current.z));
 			break;
-		case BLENDOP_MIN:
+		case VK_BLEND_OP_MIN:
 			current.x = Min(As<UShort4>(current.x), As<UShort4>(pixel.x));
 			current.y = Min(As<UShort4>(current.y), As<UShort4>(pixel.y));
 			current.z = Min(As<UShort4>(current.z), As<UShort4>(pixel.z));
 			break;
-		case BLENDOP_MAX:
+		case VK_BLEND_OP_MAX:
 			current.x = Max(As<UShort4>(current.x), As<UShort4>(pixel.x));
 			current.y = Max(As<UShort4>(current.y), As<UShort4>(pixel.y));
 			current.z = Max(As<UShort4>(current.z), As<UShort4>(pixel.z));
 			break;
-		case BLENDOP_SOURCE:
+		case VK_BLEND_OP_SRC_EXT:
 			// No operation
 			break;
-		case BLENDOP_DEST:
+		case VK_BLEND_OP_DST_EXT:
 			current.x = pixel.x;
 			current.y = pixel.y;
 			current.z = pixel.z;
 			break;
-		case BLENDOP_NULL:
+		case VK_BLEND_OP_ZERO_EXT:
 			current.x = Short4(0x0000);
 			current.y = Short4(0x0000);
 			current.z = Short4(0x0000);
@@ -1111,40 +1111,40 @@
 		blendFactorAlpha(sourceFactor, current, pixel, state.sourceBlendFactorAlpha);
 		blendFactorAlpha(destFactor, current, pixel, state.destBlendFactorAlpha);
 
-		if(state.sourceBlendFactorAlpha != BLEND_ONE && state.sourceBlendFactorAlpha != BLEND_ZERO)
+		if(state.sourceBlendFactorAlpha != VK_BLEND_FACTOR_ONE && state.sourceBlendFactorAlpha != VK_BLEND_FACTOR_ZERO)
 		{
 			current.w = MulHigh(As<UShort4>(current.w), As<UShort4>(sourceFactor.w));
 		}
 
-		if(state.destBlendFactorAlpha != BLEND_ONE && state.destBlendFactorAlpha != BLEND_ZERO)
+		if(state.destBlendFactorAlpha != VK_BLEND_FACTOR_ONE && state.destBlendFactorAlpha != VK_BLEND_FACTOR_ZERO)
 		{
 			pixel.w = MulHigh(As<UShort4>(pixel.w), As<UShort4>(destFactor.w));
 		}
 
 		switch(state.blendOperationAlpha)
 		{
-		case BLENDOP_ADD:
+		case VK_BLEND_OP_ADD:
 			current.w = AddSat(As<UShort4>(current.w), As<UShort4>(pixel.w));
 			break;
-		case BLENDOP_SUB:
+		case VK_BLEND_OP_SUBTRACT:
 			current.w = SubSat(As<UShort4>(current.w), As<UShort4>(pixel.w));
 			break;
-		case BLENDOP_INVSUB:
+		case VK_BLEND_OP_REVERSE_SUBTRACT:
 			current.w = SubSat(As<UShort4>(pixel.w), As<UShort4>(current.w));
 			break;
-		case BLENDOP_MIN:
+		case VK_BLEND_OP_MIN:
 			current.w = Min(As<UShort4>(current.w), As<UShort4>(pixel.w));
 			break;
-		case BLENDOP_MAX:
+		case VK_BLEND_OP_MAX:
 			current.w = Max(As<UShort4>(current.w), As<UShort4>(pixel.w));
 			break;
-		case BLENDOP_SOURCE:
+		case VK_BLEND_OP_SRC_EXT:
 			// No operation
 			break;
-		case BLENDOP_DEST:
+		case VK_BLEND_OP_DST_EXT:
 			current.w = pixel.w;
 			break;
-		case BLENDOP_NULL:
+		case VK_BLEND_OP_ZERO_EXT:
 			current.w = Short4(0x0000);
 			break;
 		default:
@@ -1679,68 +1679,68 @@
 		}
 	}
 
-	void PixelRoutine::blendFactor(Vector4f &blendFactor, const Vector4f &oC, const Vector4f &pixel, BlendFactor blendFactorActive)
+	void PixelRoutine::blendFactor(Vector4f &blendFactor, const Vector4f &oC, const Vector4f &pixel, VkBlendFactor blendFactorActive)
 	{
 		switch(blendFactorActive)
 		{
-		case BLEND_ZERO:
+		case VK_BLEND_FACTOR_ZERO:
 			// Optimized
 			break;
-		case BLEND_ONE:
+		case VK_BLEND_FACTOR_ONE:
 			// Optimized
 			break;
-		case BLEND_SOURCE:
+		case VK_BLEND_FACTOR_SRC_COLOR:
 			blendFactor.x = oC.x;
 			blendFactor.y = oC.y;
 			blendFactor.z = oC.z;
 			break;
-		case BLEND_INVSOURCE:
+		case VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR:
 			blendFactor.x = Float4(1.0f) - oC.x;
 			blendFactor.y = Float4(1.0f) - oC.y;
 			blendFactor.z = Float4(1.0f) - oC.z;
 			break;
-		case BLEND_DEST:
+		case VK_BLEND_FACTOR_DST_COLOR:
 			blendFactor.x = pixel.x;
 			blendFactor.y = pixel.y;
 			blendFactor.z = pixel.z;
 			break;
-		case BLEND_INVDEST:
+		case VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR:
 			blendFactor.x = Float4(1.0f) - pixel.x;
 			blendFactor.y = Float4(1.0f) - pixel.y;
 			blendFactor.z = Float4(1.0f) - pixel.z;
 			break;
-		case BLEND_SOURCEALPHA:
+		case VK_BLEND_FACTOR_SRC_ALPHA:
 			blendFactor.x = oC.w;
 			blendFactor.y = oC.w;
 			blendFactor.z = oC.w;
 			break;
-		case BLEND_INVSOURCEALPHA:
+		case VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA:
 			blendFactor.x = Float4(1.0f) - oC.w;
 			blendFactor.y = Float4(1.0f) - oC.w;
 			blendFactor.z = Float4(1.0f) - oC.w;
 			break;
-		case BLEND_DESTALPHA:
+		case VK_BLEND_FACTOR_DST_ALPHA:
 			blendFactor.x = pixel.w;
 			blendFactor.y = pixel.w;
 			blendFactor.z = pixel.w;
 			break;
-		case BLEND_INVDESTALPHA:
+		case VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA:
 			blendFactor.x = Float4(1.0f) - pixel.w;
 			blendFactor.y = Float4(1.0f) - pixel.w;
 			blendFactor.z = Float4(1.0f) - pixel.w;
 			break;
-		case BLEND_SRCALPHASAT:
+		case VK_BLEND_FACTOR_SRC_ALPHA_SATURATE:
 			blendFactor.x = Float4(1.0f) - pixel.w;
 			blendFactor.x = Min(blendFactor.x, oC.w);
 			blendFactor.y = blendFactor.x;
 			blendFactor.z = blendFactor.x;
 			break;
-		case BLEND_CONSTANT:
+		case VK_BLEND_FACTOR_CONSTANT_COLOR:
 			blendFactor.x = *Pointer<Float4>(data + OFFSET(DrawData,factor.blendConstant4F[0]));
 			blendFactor.y = *Pointer<Float4>(data + OFFSET(DrawData,factor.blendConstant4F[1]));
 			blendFactor.z = *Pointer<Float4>(data + OFFSET(DrawData,factor.blendConstant4F[2]));
 			break;
-		case BLEND_INVCONSTANT:
+		case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR:
 			blendFactor.x = *Pointer<Float4>(data + OFFSET(DrawData,factor.invBlendConstant4F[0]));
 			blendFactor.y = *Pointer<Float4>(data + OFFSET(DrawData,factor.invBlendConstant4F[1]));
 			blendFactor.z = *Pointer<Float4>(data + OFFSET(DrawData,factor.invBlendConstant4F[2]));
@@ -1750,47 +1750,47 @@
 		}
 	}
 
-	void PixelRoutine::blendFactorAlpha(Vector4f &blendFactor, const Vector4f &oC, const Vector4f &pixel, BlendFactor blendFactorAlphaActive)
+	void PixelRoutine::blendFactorAlpha(Vector4f &blendFactor, const Vector4f &oC, const Vector4f &pixel, VkBlendFactor blendFactorAlphaActive)
 	{
 		switch(blendFactorAlphaActive)
 		{
-		case BLEND_ZERO:
+		case VK_BLEND_FACTOR_ZERO:
 			// Optimized
 			break;
-		case BLEND_ONE:
+		case VK_BLEND_FACTOR_ONE:
 			// Optimized
 			break;
-		case BLEND_SOURCE:
+		case VK_BLEND_FACTOR_SRC_COLOR:
 			blendFactor.w = oC.w;
 			break;
-		case BLEND_INVSOURCE:
+		case VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR:
 			blendFactor.w = Float4(1.0f) - oC.w;
 			break;
-		case BLEND_DEST:
+		case VK_BLEND_FACTOR_DST_COLOR:
 			blendFactor.w = pixel.w;
 			break;
-		case BLEND_INVDEST:
+		case VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR:
 			blendFactor.w = Float4(1.0f) - pixel.w;
 			break;
-		case BLEND_SOURCEALPHA:
+		case VK_BLEND_FACTOR_SRC_ALPHA:
 			blendFactor.w = oC.w;
 			break;
-		case BLEND_INVSOURCEALPHA:
+		case VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA:
 			blendFactor.w = Float4(1.0f) - oC.w;
 			break;
-		case BLEND_DESTALPHA:
+		case VK_BLEND_FACTOR_DST_ALPHA:
 			blendFactor.w = pixel.w;
 			break;
-		case BLEND_INVDESTALPHA:
+		case VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA:
 			blendFactor.w = Float4(1.0f) - pixel.w;
 			break;
-		case BLEND_SRCALPHASAT:
+		case VK_BLEND_FACTOR_SRC_ALPHA_SATURATE:
 			blendFactor.w = Float4(1.0f);
 			break;
-		case BLEND_CONSTANT:
+		case VK_BLEND_FACTOR_CONSTANT_COLOR:
 			blendFactor.w = *Pointer<Float4>(data + OFFSET(DrawData,factor.blendConstant4F[3]));
 			break;
-		case BLEND_INVCONSTANT:
+		case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR:
 			blendFactor.w = *Pointer<Float4>(data + OFFSET(DrawData,factor.invBlendConstant4F[3]));
 			break;
 		default:
@@ -1879,14 +1879,14 @@
 		blendFactor(sourceFactor, oC, pixel, state.sourceBlendFactor);
 		blendFactor(destFactor, oC, pixel, state.destBlendFactor);
 
-		if(state.sourceBlendFactor != BLEND_ONE && state.sourceBlendFactor != BLEND_ZERO)
+		if(state.sourceBlendFactor != VK_BLEND_FACTOR_ONE && state.sourceBlendFactor != VK_BLEND_FACTOR_ZERO)
 		{
 			oC.x *= sourceFactor.x;
 			oC.y *= sourceFactor.y;
 			oC.z *= sourceFactor.z;
 		}
 
-		if(state.destBlendFactor != BLEND_ONE && state.destBlendFactor != BLEND_ZERO)
+		if(state.destBlendFactor != VK_BLEND_FACTOR_ONE && state.destBlendFactor != VK_BLEND_FACTOR_ZERO)
 		{
 			pixel.x *= destFactor.x;
 			pixel.y *= destFactor.y;
@@ -1895,40 +1895,40 @@
 
 		switch(state.blendOperation)
 		{
-		case BLENDOP_ADD:
+		case VK_BLEND_OP_ADD:
 			oC.x += pixel.x;
 			oC.y += pixel.y;
 			oC.z += pixel.z;
 			break;
-		case BLENDOP_SUB:
+		case VK_BLEND_OP_SUBTRACT:
 			oC.x -= pixel.x;
 			oC.y -= pixel.y;
 			oC.z -= pixel.z;
 			break;
-		case BLENDOP_INVSUB:
+		case VK_BLEND_OP_REVERSE_SUBTRACT:
 			oC.x = pixel.x - oC.x;
 			oC.y = pixel.y - oC.y;
 			oC.z = pixel.z - oC.z;
 			break;
-		case BLENDOP_MIN:
+		case VK_BLEND_OP_MIN:
 			oC.x = Min(oC.x, pixel.x);
 			oC.y = Min(oC.y, pixel.y);
 			oC.z = Min(oC.z, pixel.z);
 			break;
-		case BLENDOP_MAX:
+		case VK_BLEND_OP_MAX:
 			oC.x = Max(oC.x, pixel.x);
 			oC.y = Max(oC.y, pixel.y);
 			oC.z = Max(oC.z, pixel.z);
 			break;
-		case BLENDOP_SOURCE:
+		case VK_BLEND_OP_SRC_EXT:
 			// No operation
 			break;
-		case BLENDOP_DEST:
+		case VK_BLEND_OP_DST_EXT:
 			oC.x = pixel.x;
 			oC.y = pixel.y;
 			oC.z = pixel.z;
 			break;
-		case BLENDOP_NULL:
+		case VK_BLEND_OP_ZERO_EXT:
 			oC.x = Float4(0.0f);
 			oC.y = Float4(0.0f);
 			oC.z = Float4(0.0f);
@@ -1940,41 +1940,41 @@
 		blendFactorAlpha(sourceFactor, oC, pixel, state.sourceBlendFactorAlpha);
 		blendFactorAlpha(destFactor, oC, pixel, state.destBlendFactorAlpha);
 
-		if(state.sourceBlendFactorAlpha != BLEND_ONE && state.sourceBlendFactorAlpha != BLEND_ZERO)
+		if(state.sourceBlendFactorAlpha != VK_BLEND_FACTOR_ONE && state.sourceBlendFactorAlpha != VK_BLEND_FACTOR_ZERO)
 		{
 			oC.w *= sourceFactor.w;
 		}
 
-		if(state.destBlendFactorAlpha != BLEND_ONE && state.destBlendFactorAlpha != BLEND_ZERO)
+		if(state.destBlendFactorAlpha != VK_BLEND_FACTOR_ONE && state.destBlendFactorAlpha != VK_BLEND_FACTOR_ZERO)
 		{
 			pixel.w *= destFactor.w;
 		}
 
 		switch(state.blendOperationAlpha)
 		{
-		case BLENDOP_ADD:
+		case VK_BLEND_OP_ADD:
 			oC.w += pixel.w;
 			break;
-		case BLENDOP_SUB:
+		case VK_BLEND_OP_SUBTRACT:
 			oC.w -= pixel.w;
 			break;
-		case BLENDOP_INVSUB:
+		case VK_BLEND_OP_REVERSE_SUBTRACT:
 			pixel.w -= oC.w;
 			oC.w = pixel.w;
 			break;
-		case BLENDOP_MIN:
+		case VK_BLEND_OP_MIN:
 			oC.w = Min(oC.w, pixel.w);
 			break;
-		case BLENDOP_MAX:
+		case VK_BLEND_OP_MAX:
 			oC.w = Max(oC.w, pixel.w);
 			break;
-		case BLENDOP_SOURCE:
+		case VK_BLEND_OP_SRC_EXT:
 			// No operation
 			break;
-		case BLENDOP_DEST:
+		case VK_BLEND_OP_DST_EXT:
 			oC.w = pixel.w;
 			break;
-		case BLENDOP_NULL:
+		case VK_BLEND_OP_ZERO_EXT:
 			oC.w = Float4(0.0f);
 			break;
 		default:
diff --git a/src/Pipeline/PixelRoutine.hpp b/src/Pipeline/PixelRoutine.hpp
index c6a4f16..288ccc7 100644
--- a/src/Pipeline/PixelRoutine.hpp
+++ b/src/Pipeline/PixelRoutine.hpp
@@ -72,11 +72,11 @@
 		Bool depthTest(Pointer<Byte> &zBuffer, int q, Int &x, Float4 &z, Int &sMask, Int &zMask, Int &cMask);
 
 		// Raster operations
-		void blendFactor(Vector4s &blendFactor, const Vector4s &current, const Vector4s &pixel, BlendFactor blendFactorActive);
-		void blendFactorAlpha(Vector4s &blendFactor, const Vector4s &current, const Vector4s &pixel, BlendFactor blendFactorAlphaActive);
+		void blendFactor(Vector4s &blendFactor, const Vector4s &current, const Vector4s &pixel, VkBlendFactor blendFactorActive);
+		void blendFactorAlpha(Vector4s &blendFactor, const Vector4s &current, const Vector4s &pixel, VkBlendFactor blendFactorAlphaActive);
 		void readPixel(int index, Pointer<Byte> &cBuffer, Int &x, Vector4s &pixel);
-		void blendFactor(Vector4f &blendFactor, const Vector4f &oC, const Vector4f &pixel, BlendFactor blendFactorActive);
-		void blendFactorAlpha(Vector4f &blendFactor, const Vector4f &oC, const Vector4f &pixel, BlendFactor blendFactorAlphaActive);
+		void blendFactor(Vector4f &blendFactor, const Vector4f &oC, const Vector4f &pixel, VkBlendFactor blendFactorActive);
+		void blendFactorAlpha(Vector4f &blendFactor, const Vector4f &oC, const Vector4f &pixel, VkBlendFactor blendFactorAlphaActive);
 		void writeStencil(Pointer<Byte> &sBuffer, int q, Int &x, Int &sMask, Int &zMask, Int &cMask);
 		void writeDepth(Pointer<Byte> &zBuffer, int q, Int &x, Float4 &z, Int &zMask);