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