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());