mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-01 04:40:22 +01:00
turnip: Fix failure behavior of vkCreateGraphicsPipelines.
According to the 1.1.123 spec:
"The implementation will attempt to create all pipelines, and only
return VK_NULL_HANDLE values for those that actually failed."
Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
This commit is contained in:
parent
ab3cf128a6
commit
67e8977290
1 changed files with 7 additions and 10 deletions
|
|
@ -1876,6 +1876,7 @@ tu_CreateGraphicsPipelines(VkDevice device,
|
|||
{
|
||||
TU_FROM_HANDLE(tu_device, dev, device);
|
||||
TU_FROM_HANDLE(tu_pipeline_cache, cache, pipelineCache);
|
||||
VkResult final_result = VK_SUCCESS;
|
||||
|
||||
for (uint32_t i = 0; i < count; i++) {
|
||||
struct tu_pipeline_builder builder;
|
||||
|
|
@ -1886,19 +1887,15 @@ tu_CreateGraphicsPipelines(VkDevice device,
|
|||
VkResult result = tu_pipeline_builder_build(&builder, &pipeline);
|
||||
tu_pipeline_builder_finish(&builder);
|
||||
|
||||
if (result != VK_SUCCESS) {
|
||||
for (uint32_t j = 0; j < i; j++) {
|
||||
tu_DestroyPipeline(device, pPipelines[j], pAllocator);
|
||||
pPipelines[j] = VK_NULL_HANDLE;
|
||||
}
|
||||
|
||||
return result;
|
||||
if (result == VK_SUCCESS) {
|
||||
pPipelines[i] = tu_pipeline_to_handle(pipeline);
|
||||
} else {
|
||||
pPipelines[i] = NULL;
|
||||
final_result = result;
|
||||
}
|
||||
|
||||
pPipelines[i] = tu_pipeline_to_handle(pipeline);
|
||||
}
|
||||
|
||||
return VK_SUCCESS;
|
||||
return final_result;
|
||||
}
|
||||
|
||||
static VkResult
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue