buffer: Store derived surface id and buffer info for dma-buf export
Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
This commit is contained in:
@@ -85,6 +85,9 @@ VAStatus RequestCreateBuffer(VADriverContextP context, VAContextID context_id,
|
|||||||
buffer_object->data = buffer_data;
|
buffer_object->data = buffer_data;
|
||||||
buffer_object->size = size;
|
buffer_object->size = size;
|
||||||
|
|
||||||
|
buffer_object->derived_surface_id = VA_INVALID_ID;
|
||||||
|
buffer_object->info.handle = (uintptr_t) -1;
|
||||||
|
|
||||||
*buffer_id = id;
|
*buffer_id = id;
|
||||||
|
|
||||||
status = VA_STATUS_SUCCESS;
|
status = VA_STATUS_SUCCESS;
|
||||||
|
|||||||
@@ -44,6 +44,9 @@ struct object_buffer {
|
|||||||
|
|
||||||
void *data;
|
void *data;
|
||||||
unsigned int size;
|
unsigned int size;
|
||||||
|
|
||||||
|
VASurfaceID derived_surface_id;
|
||||||
|
VABufferInfo info;
|
||||||
};
|
};
|
||||||
|
|
||||||
VAStatus RequestCreateBuffer(VADriverContextP context, VAContextID context_id,
|
VAStatus RequestCreateBuffer(VADriverContextP context, VAContextID context_id,
|
||||||
|
|||||||
+3
-3
@@ -122,8 +122,8 @@ VAStatus RequestDeriveImage(VADriverContextP context, VASurfaceID surface_id,
|
|||||||
struct request_data *driver_data = context->pDriverData;
|
struct request_data *driver_data = context->pDriverData;
|
||||||
struct object_surface *surface_object;
|
struct object_surface *surface_object;
|
||||||
struct object_buffer *buffer_object;
|
struct object_buffer *buffer_object;
|
||||||
unsigned int i;
|
|
||||||
VAImageFormat format;
|
VAImageFormat format;
|
||||||
|
unsigned int i;
|
||||||
VAStatus status;
|
VAStatus status;
|
||||||
|
|
||||||
surface_object = SURFACE(driver_data, surface_id);
|
surface_object = SURFACE(driver_data, surface_id);
|
||||||
@@ -134,8 +134,6 @@ VAStatus RequestDeriveImage(VADriverContextP context, VASurfaceID surface_id,
|
|||||||
status = RequestSyncSurface(context, surface_id);
|
status = RequestSyncSurface(context, surface_id);
|
||||||
if (status != VA_STATUS_SUCCESS)
|
if (status != VA_STATUS_SUCCESS)
|
||||||
return status;
|
return status;
|
||||||
} else if (surface_object->status == VASurfaceReady) {
|
|
||||||
return VA_STATUS_SUCCESS;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
format.fourcc = VA_FOURCC_NV12;
|
format.fourcc = VA_FOURCC_NV12;
|
||||||
@@ -164,6 +162,8 @@ VAStatus RequestDeriveImage(VADriverContextP context, VASurfaceID surface_id,
|
|||||||
|
|
||||||
surface_object->status = VASurfaceReady;
|
surface_object->status = VASurfaceReady;
|
||||||
|
|
||||||
|
buffer_object->derived_surface_id = surface_id;
|
||||||
|
|
||||||
return VA_STATUS_SUCCESS;
|
return VA_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user