|
|
|
@ -1427,24 +1427,31 @@ static int vulkan_device_init(AVHWDeviceContext *ctx) |
|
|
|
|
vk->GetPhysicalDeviceQueueFamilyProperties(hwctx->phys_dev, &qf_num, qf); |
|
|
|
|
|
|
|
|
|
p->qf_mutex = av_calloc(qf_num, sizeof(*p->qf_mutex)); |
|
|
|
|
if (!p->qf_mutex) |
|
|
|
|
if (!p->qf_mutex) { |
|
|
|
|
av_free(qf); |
|
|
|
|
return AVERROR(ENOMEM); |
|
|
|
|
} |
|
|
|
|
p->nb_tot_qfs = qf_num; |
|
|
|
|
|
|
|
|
|
for (uint32_t i = 0; i < qf_num; i++) { |
|
|
|
|
p->qf_mutex[i] = av_calloc(qf[i].queueCount, sizeof(**p->qf_mutex)); |
|
|
|
|
if (!p->qf_mutex[i]) |
|
|
|
|
if (!p->qf_mutex[i]) { |
|
|
|
|
av_free(qf); |
|
|
|
|
return AVERROR(ENOMEM); |
|
|
|
|
} |
|
|
|
|
for (uint32_t j = 0; j < qf[i].queueCount; j++) { |
|
|
|
|
err = pthread_mutex_init(&p->qf_mutex[i][j], NULL); |
|
|
|
|
if (err != 0) { |
|
|
|
|
av_log(ctx, AV_LOG_ERROR, "pthread_mutex_init failed : %s\n", |
|
|
|
|
av_err2str(err)); |
|
|
|
|
av_free(qf); |
|
|
|
|
return AVERROR(err); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
av_free(qf); |
|
|
|
|
|
|
|
|
|
graph_index = hwctx->queue_family_index; |
|
|
|
|
comp_index = hwctx->queue_family_comp_index; |
|
|
|
|
tx_index = hwctx->queue_family_tx_index; |
|
|
|
|