gpu: do not crash on null pixel shader

This commit is contained in:
DH 2024-10-23 03:08:25 +03:00
parent 43afb19855
commit 9f230af943

View file

@ -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)] =