[vk] handle mali/adreno5xx driver bug returning VK_INCOMPLETE on graphics pipeline creation (#3383)
Some checks are pending
tx-src / sources (push) Waiting to run
Check Strings / check-strings (push) Waiting to run

Signed-off-by: lizzie <lizzie@eden-emu.dev>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3383
Reviewed-by: crueter <crueter@eden-emu.dev>
Reviewed-by: MaranBr <maranbr@eden-emu.dev>
This commit is contained in:
lizzie 2026-06-02 21:57:23 +02:00 committed by crueter
parent f39e985434
commit 5027aecf77
No known key found for this signature in database
GPG key ID: 425ACD2D4830EBC6

View file

@ -725,10 +725,15 @@ PipelineLayout Device::CreatePipelineLayout(const VkPipelineLayoutCreateInfo& ci
return PipelineLayout(object, handle, *dld);
}
Pipeline Device::CreateGraphicsPipeline(const VkGraphicsPipelineCreateInfo& ci,
VkPipelineCache cache) const {
VkPipeline object;
Check(dld->vkCreateGraphicsPipelines(handle, cache, 1, &ci, nullptr, &object));
Pipeline Device::CreateGraphicsPipeline(const VkGraphicsPipelineCreateInfo& ci, VkPipelineCache cache) const {
VkPipeline object = VK_NULL_HANDLE;
auto const result = dld->vkCreateGraphicsPipelines(handle, cache, 1, &ci, nullptr, &object);
// Adreno 5xx drivers do not properly return when a graphics pipeline fails to be created
// Some (unkown) Mali drivers also do not properly return
// This result code is out of spec, but should be handled as "kinda working"
if (result == VK_INCOMPLETE)
return Pipeline(object, handle, *dld);
Check(result);
return Pipeline(object, handle, *dld);
}