diff --git a/src/Pipeline/PixelRoutine.cpp b/src/Pipeline/PixelRoutine.cpp
index 116f2d7..62b4666 100644
--- a/src/Pipeline/PixelRoutine.cpp
+++ b/src/Pipeline/PixelRoutine.cpp
@@ -181,27 +181,27 @@
 
 			Bool alphaPass = true;
 
-			if(colorUsed())
+			#if PERF_PROFILE
+				Long shaderTime = Ticks();
+			#endif
+
+			if (spirvShader)
 			{
-				#if PERF_PROFILE
-					Long shaderTime = Ticks();
-				#endif
-
 				applyShader(cMask);
+			}
 
-				#if PERF_PROFILE
-					cycles[PERF_SHADER] += Ticks() - shaderTime;
-				#endif
+			#if PERF_PROFILE
+				cycles[PERF_SHADER] += Ticks() - shaderTime;
+			#endif
 
-				alphaPass = alphaTest(cMask);
+			alphaPass = alphaTest(cMask);
 
-				if((spirvShader && spirvShader->getModes().ContainsKill) || state.alphaToCoverage)
+			if((spirvShader && spirvShader->getModes().ContainsKill) || state.alphaToCoverage)
+			{
+				for(unsigned int q = 0; q < state.multiSample; q++)
 				{
-					for(unsigned int q = 0; q < state.multiSample; q++)
-					{
-						zMask[q] &= cMask[q];
-						sMask[q] &= cMask[q];
-					}
+					zMask[q] &= cMask[q];
+					sMask[q] &= cMask[q];
 				}
 			}
 
@@ -234,14 +234,11 @@
 						}
 					}
 
-					if(colorUsed())
-					{
-						#if PERF_PROFILE
-							AddAtomic(Pointer<Long>(&profiler.ropOperations), 4);
-						#endif
+					#if PERF_PROFILE
+						AddAtomic(Pointer<Long>(&profiler.ropOperations), 4);
+					#endif
 
-						rasterOperation(cBuffer, x, sMask, zMask, cMask);
-					}
+					rasterOperation(cBuffer, x, sMask, zMask, cMask);
 				}
 
 				#if PERF_PROFILE
@@ -2474,9 +2471,4 @@
 
 		return Min(Max(linear, Float4(0.0f)), Float4(1.0f));
 	}
-
-	bool PixelRoutine::colorUsed()
-	{
-		return state.colorWriteMask || state.alphaToCoverage || (spirvShader && spirvShader->getModes().ContainsKill);
-	}
 }
diff --git a/src/Pipeline/PixelRoutine.hpp b/src/Pipeline/PixelRoutine.hpp
index e4d8eee..587d365 100644
--- a/src/Pipeline/PixelRoutine.hpp
+++ b/src/Pipeline/PixelRoutine.hpp
@@ -89,8 +89,6 @@
 
 		void writeDepth32F(Pointer<Byte> &zBuffer, int q, Int &x, Float4 &z, Int &zMask);
 		void writeDepth16(Pointer<Byte> &zBuffer, int q, Int &x, Float4 &z, Int &zMask);
-
-		bool colorUsed();
 	};
 }
 
diff --git a/src/Pipeline/SpirvShader.hpp b/src/Pipeline/SpirvShader.hpp
index 73e3e4a..2068bcc 100644
--- a/src/Pipeline/SpirvShader.hpp
+++ b/src/Pipeline/SpirvShader.hpp
@@ -511,6 +511,11 @@
 			return inputBuiltins.find(b) != inputBuiltins.end();
 		}
 
+		bool hasBuiltinOutput(spv::BuiltIn b) const
+		{
+			return outputBuiltins.find(b) != outputBuiltins.end();
+		}
+
 		struct Decorations
 		{
 			int32_t Location = -1;
