diff --git a/src/video_core/vulkan_common/vulkan_wrapper.cpp b/src/video_core/vulkan_common/vulkan_wrapper.cpp index 534a11edd4..d153d757de 100644 --- a/src/video_core/vulkan_common/vulkan_wrapper.cpp +++ b/src/video_core/vulkan_common/vulkan_wrapper.cpp @@ -727,10 +727,14 @@ 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 error when a graphics pipeline fails to be created + // Some (unkown) Mali drivers also do not properly return + if (result == VK_INCOMPLETE) + return Pipeline(object, handle, *dld); + Check(result); return Pipeline(object, handle, *dld); }