Browse Source

[vk] handle mali/adreno5xx driver bug returning VK_INCOMPLETE on graphics pipeline creation (#3383)

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>
pull/4052/head
lizzie 2 days ago
committed by crueter
parent
commit
5027aecf77
No known key found for this signature in database GPG Key ID: 425ACD2D4830EBC6
  1. 13
      src/video_core/vulkan_common/vulkan_wrapper.cpp

13
src/video_core/vulkan_common/vulkan_wrapper.cpp

@ -725,10 +725,15 @@ PipelineLayout Device::CreatePipelineLayout(const VkPipelineLayoutCreateInfo& ci
return PipelineLayout(object, handle, *dld); 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); return Pipeline(object, handle, *dld);
} }

Loading…
Cancel
Save