struct v3dv_job *job = vk_zalloc(&cmd_buffer->device->alloc,
sizeof(struct v3dv_job), 8,
VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
- assert(job);
+
+ cmd_buffer->state.job = job;
+
+ if (!job) {
+ fprintf(stderr, "Error: failed to allocate CPU memory for job\n");
+ cmd_buffer->state.oom = true;
+ return NULL;
+ }
job->cmd_buffer = cmd_buffer;
if (cmd_buffer->state.pass)
job->first_subpass = subpass_idx;
- cmd_buffer->state.job = job;
-
return job;
}
* the new job.
*/
struct v3dv_job *job = v3dv_cmd_buffer_start_job(cmd_buffer, subpass_idx);
+ if (!job)
+ return;
state->subpass_idx = subpass_idx;
{
V3DV_FROM_HANDLE(v3dv_cmd_buffer, cmd_buffer, commandBuffer);
+ if (cmd_buffer->state.oom)
+ return VK_ERROR_OUT_OF_HOST_MEMORY;
+
cmd_buffer->status = V3DV_CMD_BUFFER_STATUS_EXECUTABLE;
struct v3dv_job *job = cmd_buffer->state.job;
assert(num_layers > 0);
struct v3dv_job *job = v3dv_cmd_buffer_start_job(cmd_buffer, -1);
+ if (!job)
+ return;
v3dv_cmd_buffer_start_frame(cmd_buffer,
region->imageExtent.width,
assert(num_layers > 0);
struct v3dv_job *job = v3dv_cmd_buffer_start_job(cmd_buffer, -1);
+ if (!job)
+ return;
v3dv_cmd_buffer_start_frame(cmd_buffer,
region->extent.width,
uint32_t height = u_minify(image->extent.height, level);
struct v3dv_job *job = v3dv_cmd_buffer_start_job(cmd_buffer, -1);
+ if (!job)
+ return;
v3dv_cmd_buffer_start_frame(cmd_buffer, width, height, 1,
1, internal_bpp);
uint32_t dst_offset = region->dstOffset;
while (num_items > 0) {
job = v3dv_cmd_buffer_start_job(cmd_buffer, -1);
+ if (!job)
+ return NULL;
uint32_t width, height;
framebuffer_size_for_pixel_count(num_items, &width, &height);
};
struct v3dv_job *copy_job =
copy_buffer(cmd_buffer, dst_buffer->mem->bo, src_bo, ®ion);
+ if (!copy_job)
+ return;
/* Make sure we add the BO to the list of extra BOs so it is not leaked.
* If the copy job was split into multiple jobs, we just bind it to the last
while (num_items > 0) {
struct v3dv_job *job = v3dv_cmd_buffer_start_job(cmd_buffer, -1);
+ if (!job)
+ return;
uint32_t width, height;
framebuffer_size_for_pixel_count(num_items, &width, &height);
assert(num_layers > 0);
struct v3dv_job *job = v3dv_cmd_buffer_start_job(cmd_buffer, -1);
+ if (!job)
+ return;
+
v3dv_cmd_buffer_start_frame(cmd_buffer,
region->imageExtent.width,
region->imageExtent.height,