mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-01 05:58:05 +02:00
radv: only reset command buffers when the allocation fails
"vkAllocateCommandBuffers can be used to create multiple command
buffers. If the creation of any of those command buffers fails, the
implementation must destroy all successfully created command buffer
objects from this command, set all entries of the pCommandBuffers
array to NULL and return the error."
This has been suggested by gabriel@system.is.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
This commit is contained in:
parent
921986b580
commit
80e6e71b82
1 changed files with 14 additions and 4 deletions
|
|
@ -2140,9 +2140,6 @@ VkResult radv_AllocateCommandBuffers(
|
|||
VkResult result = VK_SUCCESS;
|
||||
uint32_t i;
|
||||
|
||||
memset(pCommandBuffers, 0,
|
||||
sizeof(*pCommandBuffers)*pAllocateInfo->commandBufferCount);
|
||||
|
||||
for (i = 0; i < pAllocateInfo->commandBufferCount; i++) {
|
||||
|
||||
if (!list_empty(&pool->free_cmd_buffers)) {
|
||||
|
|
@ -2164,10 +2161,23 @@ VkResult radv_AllocateCommandBuffers(
|
|||
break;
|
||||
}
|
||||
|
||||
if (result != VK_SUCCESS)
|
||||
if (result != VK_SUCCESS) {
|
||||
radv_FreeCommandBuffers(_device, pAllocateInfo->commandPool,
|
||||
i, pCommandBuffers);
|
||||
|
||||
/* From the Vulkan 1.0.66 spec:
|
||||
*
|
||||
* "vkAllocateCommandBuffers can be used to create multiple
|
||||
* command buffers. If the creation of any of those command
|
||||
* buffers fails, the implementation must destroy all
|
||||
* successfully created command buffer objects from this
|
||||
* command, set all entries of the pCommandBuffers array to
|
||||
* NULL and return the error."
|
||||
*/
|
||||
memset(pCommandBuffers, 0,
|
||||
sizeof(*pCommandBuffers) * pAllocateInfo->commandBufferCount);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue