fixup! buffer: Add Acquire/ReleaseBufferHandle support for dma-buf export
This commit is contained in:
+6
-8
@@ -194,8 +194,7 @@ VAStatus RequestAcquireBufferHandle(VADriverContextP context,
|
|||||||
VABufferID buffer_id,
|
VABufferID buffer_id,
|
||||||
VABufferInfo *buffer_info)
|
VABufferInfo *buffer_info)
|
||||||
{
|
{
|
||||||
struct sunxi_cedrus_driver_data *driver_data =
|
struct request_data *driver_data = context->pDriverData;
|
||||||
(struct sunxi_cedrus_driver_data *) context->pDriverData;
|
|
||||||
struct object_buffer *buffer_object;
|
struct object_buffer *buffer_object;
|
||||||
struct object_surface *surface_object;
|
struct object_surface *surface_object;
|
||||||
int export_fd;
|
int export_fd;
|
||||||
@@ -205,14 +204,14 @@ VAStatus RequestAcquireBufferHandle(VADriverContextP context,
|
|||||||
driver_data->tiled_format)
|
driver_data->tiled_format)
|
||||||
return VA_STATUS_ERROR_UNSUPPORTED_MEMORY_TYPE;
|
return VA_STATUS_ERROR_UNSUPPORTED_MEMORY_TYPE;
|
||||||
|
|
||||||
buffer_object = BUFFER(buffer_id);
|
buffer_object = BUFFER(driver_data, buffer_id);
|
||||||
if (buffer_object == NULL || buffer_object->type != VAImageBufferType)
|
if (buffer_object == NULL || buffer_object->type != VAImageBufferType)
|
||||||
return VA_STATUS_ERROR_INVALID_BUFFER;
|
return VA_STATUS_ERROR_INVALID_BUFFER;
|
||||||
|
|
||||||
if (buffer_object->derived_surface_id == VA_INVALID_ID)
|
if (buffer_object->derived_surface_id == VA_INVALID_ID)
|
||||||
return VA_STATUS_ERROR_INVALID_BUFFER;
|
return VA_STATUS_ERROR_INVALID_BUFFER;
|
||||||
|
|
||||||
surface_object = SURFACE(buffer_object->derived_surface_id);
|
surface_object = SURFACE(driver_data, buffer_object->derived_surface_id);
|
||||||
if (surface_object == NULL)
|
if (surface_object == NULL)
|
||||||
return VA_STATUS_ERROR_INVALID_BUFFER;
|
return VA_STATUS_ERROR_INVALID_BUFFER;
|
||||||
|
|
||||||
@@ -238,12 +237,11 @@ VAStatus RequestAcquireBufferHandle(VADriverContextP context,
|
|||||||
VAStatus RequestReleaseBufferHandle(VADriverContextP context,
|
VAStatus RequestReleaseBufferHandle(VADriverContextP context,
|
||||||
VABufferID buffer_id)
|
VABufferID buffer_id)
|
||||||
{
|
{
|
||||||
struct sunxi_cedrus_driver_data *driver_data =
|
struct request_data *driver_data = context->pDriverData;
|
||||||
(struct sunxi_cedrus_driver_data *) context->pDriverData;
|
|
||||||
struct object_buffer *buffer_object;
|
struct object_buffer *buffer_object;
|
||||||
int export_fd;
|
int export_fd;
|
||||||
|
|
||||||
buffer_object = BUFFER(buffer_id);
|
buffer_object = BUFFER(driver_data, buffer_id);
|
||||||
if (buffer_object == NULL)
|
if (buffer_object == NULL)
|
||||||
return VA_STATUS_ERROR_INVALID_BUFFER;
|
return VA_STATUS_ERROR_INVALID_BUFFER;
|
||||||
|
|
||||||
@@ -254,7 +252,7 @@ VAStatus RequestReleaseBufferHandle(VADriverContextP context,
|
|||||||
|
|
||||||
close(export_fd);
|
close(export_fd);
|
||||||
|
|
||||||
buffer_object->info.handle = NULL;
|
buffer_object->info.handle = (uintptr_t) -1;
|
||||||
|
|
||||||
return VA_STATUS_SUCCESS;
|
return VA_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user