/* We need to add the compute stage to the dstStageMask of all dependencies,
* so let's go ahead and patch the dependency info we receive.
*/
+ struct v3dv_device *device = cmd_buffer->device;
+
uint32_t memory_barrier_count = pDependencyInfo->memoryBarrierCount;
VkMemoryBarrier2 *memory_barriers = memory_barrier_count ?
- malloc(memory_barrier_count * sizeof(memory_barriers[0])): NULL;
+ vk_alloc2(&device->vk.alloc, NULL,
+ memory_barrier_count * sizeof(memory_barriers[0]), 8,
+ VK_SYSTEM_ALLOCATION_SCOPE_COMMAND) : NULL;
for (int i = 0; i < memory_barrier_count; i++) {
memory_barriers[i] = pDependencyInfo->pMemoryBarriers[i];
memory_barriers[i].dstStageMask |= VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT;
uint32_t buffer_barrier_count = pDependencyInfo->bufferMemoryBarrierCount;
VkBufferMemoryBarrier2 *buffer_barriers = buffer_barrier_count ?
- malloc(buffer_barrier_count * sizeof(buffer_barriers[0])): NULL;
+ vk_alloc2(&device->vk.alloc, NULL,
+ buffer_barrier_count * sizeof(buffer_barriers[0]), 8,
+ VK_SYSTEM_ALLOCATION_SCOPE_COMMAND) : NULL;
for (int i = 0; i < buffer_barrier_count; i++) {
buffer_barriers[i] = pDependencyInfo->pBufferMemoryBarriers[i];
buffer_barriers[i].dstStageMask |= VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT;
uint32_t image_barrier_count = pDependencyInfo->imageMemoryBarrierCount;
VkImageMemoryBarrier2 *image_barriers = image_barrier_count ?
- malloc(image_barrier_count * sizeof(image_barriers[0])): NULL;
+ vk_alloc2(&device->vk.alloc, NULL,
+ image_barrier_count * sizeof(image_barriers[0]), 8,
+ VK_SYSTEM_ALLOCATION_SCOPE_COMMAND) : NULL;
for (int i = 0; i < image_barrier_count; i++) {
image_barriers[i] = pDependencyInfo->pImageMemoryBarriers[i];
image_barriers[i].dstStageMask |= VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT;
cmd_buffer_emit_set_event(cmd_buffer, event, 1);
if (memory_barriers)
- free(memory_barriers);
+ vk_free2(&device->vk.alloc, NULL, memory_barriers);
if (buffer_barriers)
- free(buffer_barriers);
+ vk_free2(&device->vk.alloc, NULL, buffer_barriers);
if (image_barriers)
- free(image_barriers);
+ vk_free2(&device->vk.alloc, NULL, image_barriers);
}
VKAPI_ATTR void VKAPI_CALL
/* We need to add the compute stage to the srcStageMask of all dependencies,
* so let's go ahead and patch the dependency info we receive.
*/
+ struct v3dv_device *device = cmd_buffer->device;
for (int e = 0; e < eventCount; e++) {
const VkDependencyInfo *info = &pDependencyInfo[e];
uint32_t memory_barrier_count = info->memoryBarrierCount;
VkMemoryBarrier2 *memory_barriers = memory_barrier_count ?
- malloc(memory_barrier_count * sizeof(memory_barriers[0])): NULL;
+ vk_alloc2(&device->vk.alloc, NULL,
+ memory_barrier_count * sizeof(memory_barriers[0]), 8,
+ VK_SYSTEM_ALLOCATION_SCOPE_COMMAND) : NULL;
for (int i = 0; i < memory_barrier_count; i++) {
memory_barriers[i] = info->pMemoryBarriers[i];
memory_barriers[i].srcStageMask |= VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT;
uint32_t buffer_barrier_count = info->bufferMemoryBarrierCount;
VkBufferMemoryBarrier2 *buffer_barriers = buffer_barrier_count ?
- malloc(buffer_barrier_count * sizeof(buffer_barriers[0])): NULL;
+ vk_alloc2(&device->vk.alloc, NULL,
+ buffer_barrier_count * sizeof(buffer_barriers[0]), 8,
+ VK_SYSTEM_ALLOCATION_SCOPE_COMMAND) : NULL;
for (int i = 0; i < buffer_barrier_count; i++) {
buffer_barriers[i] = info->pBufferMemoryBarriers[i];
buffer_barriers[i].srcStageMask |= VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT;
uint32_t image_barrier_count = info->imageMemoryBarrierCount;
VkImageMemoryBarrier2 *image_barriers = image_barrier_count ?
- malloc(image_barrier_count * sizeof(image_barriers[0])): NULL;
+ vk_alloc2(&device->vk.alloc, NULL,
+ image_barrier_count * sizeof(image_barriers[0]), 8,
+ VK_SYSTEM_ALLOCATION_SCOPE_COMMAND) : NULL;
for (int i = 0; i < image_barrier_count; i++) {
image_barriers[i] = info->pImageMemoryBarriers[i];
image_barriers[i].srcStageMask |= VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT;
v3dv_cmd_buffer_emit_pipeline_barrier(cmd_buffer, &new_info);
if (memory_barriers)
- free(memory_barriers);
+ vk_free2(&device->vk.alloc, NULL, memory_barriers);
if (buffer_barriers)
- free(buffer_barriers);
+ vk_free2(&device->vk.alloc, NULL, buffer_barriers);
if (image_barriers)
- free(image_barriers);
+ vk_free2(&device->vk.alloc, NULL, image_barriers);
}
}