diff --git a/rpcsx/gpu/Renderer.cpp b/rpcsx/gpu/Renderer.cpp
index d3335fb..bd1fff1 100644
--- a/rpcsx/gpu/Renderer.cpp
+++ b/rpcsx/gpu/Renderer.cpp
@@ -467,19 +467,19 @@ void amdgpu::draw(GraphicsPipe &pipe, int vmId, std::uint32_t firstVertex,
         vsPrimType, viewPorts);
   }
 
-  auto pixelShader =
-      cacheTag.getPixelShader(pipe.sh.spiShaderPgmPs, pipe.context, viewPorts);
+  shaders[Cache::getStageIndex(VK_SHADER_STAGE_VERTEX_BIT)] =
+      vertexShader.handle;
+
+  if (pipe.sh.spiShaderPgmPs.address != 0) {
+    auto pixelShader = cacheTag.getPixelShader(pipe.sh.spiShaderPgmPs,
+                                               pipe.context, viewPorts);
 
-  if (pixelShader.handle == nullptr) {
     shaders[Cache::getStageIndex(VK_SHADER_STAGE_FRAGMENT_BIT)] =
-        getFillRedFragShader(*cacheTag.getCache());
+        pixelShader.handle != nullptr
+            ? pixelShader.handle
+            : getFillRedFragShader(*cacheTag.getCache());
   }
 
-  shaders[Cache::getStageIndex(VK_SHADER_STAGE_VERTEX_BIT)] =
-      vertexShader.handle;
-  shaders[Cache::getStageIndex(VK_SHADER_STAGE_FRAGMENT_BIT)] =
-      pixelShader.handle;
-
   if (pipe.uConfig.vgtPrimitiveType == gnm::PrimitiveType::RectList) {
     shaders[Cache::getStageIndex(VK_SHADER_STAGE_GEOMETRY_BIT)] =
         getPrimTypeRectGeomShader(*cacheTag.getCache());