- vas = vaDeriveImage(src_dev->display, surface_id,
- &mapping->va_image);
- if (vas != VA_STATUS_SUCCESS) {
- av_log(src_fc, AV_LOG_ERROR, "Failed to derive image from "
- "surface %#x: %d (%s).\n",
- surface_id, vas, vaErrorStr(vas));
- err = AVERROR(EIO);
- goto fail;
- }
-
- mapping->va_buffer_info.mem_type =
- VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME;
-
- vas = vaAcquireBufferHandle(src_dev->display,
- mapping->va_image.buf,
- &mapping->va_buffer_info);
- if (vas != VA_STATUS_SUCCESS) {
- av_log(src_fc, AV_LOG_ERROR, "Failed to get buffer "
- "handle from image %#x (derived from surface %#x): "
- "%d (%s).\n", mapping->va_image.buf, surface_id,
- vas, vaErrorStr(vas));
- vaDestroyImage(src_dev->display, mapping->va_image.buf);
- err = AVERROR(EIO);
- goto fail_derived;
- }
-
- av_log(dst_fc, AV_LOG_DEBUG, "DRM PRIME fd is %ld.\n",
- mapping->va_buffer_info.handle);
+ p = 0;
+ for (i = 0; i < desc->nb_layers; i++) {
+ const AVDRMLayerDescriptor *layer = &desc->layers[i];
+ for (j = 0; j < layer->nb_planes; j++) {
+ const AVDRMPlaneDescriptor *plane = &layer->planes[j];
+ const AVDRMObjectDescriptor *object =
+ &desc->objects[plane->object_index];
+
+ cl_import_image_info_intel image_info = {
+ .fd = object->fd,
+ .size = object->size,
+ .type = CL_MEM_OBJECT_IMAGE2D,
+ .offset = plane->offset,
+ .row_pitch = plane->pitch,
+ };
+ cl_image_desc image_desc;