[Libva] External buffers for surfaces
Steven Toth
stoth at kernellabs.com
Thu Jul 24 11:26:38 PDT 2014
>> The only i965 driver attempt to query the
>> VASurfaceAttribExternalBuffers->num_buffers/buffers member is inside
>> i965_suface_external_memory().
>>
>> Have I missed something important, or is this simply not possible?
>>
>> I assume DRM_PRIME or KERNEL_PRIME handles don't permit the use of
>> user allocated pointers. Correct?
>
> Correct.
Thank you for confirming this Gwenole.
> On the VA-API side, what you want is userptr support
> (VA_SURFACE_ATTRIB_MEM_TYPE_USER_PTR).
I did see VA_SURFACE_ATTRIB_MEM_TYPE_USER_PTR in the va headers.
However, I don't see any use of VA_SURFACE_ATTRIB_MEM_TYPE_USER_PTR in
the va-api project, or the intel-driver project other than its
definition, suggesting it's simply not implemented by the i965 driver.
In fact, a quick grep of the intel driver for VA_SURFACE_ATTRIB_MEM
returns only TYPE_VA, _KERNEL_DRM and _DRM_PRIME
:(
> However, this comes with restrictions on the driver side, and requires
> additional kernel patches (vmap). What specific use-cases do you want
> to support?
Do you have an url to the vmap patches? and perhaps some notes on the
driver restrictions?
I have a shared memory segment between two processes, along with some
locking primitives and metadata. The segment is a series of BGRX
frames. Process A writes the pixels, Process B va-api encodes them.
I'd like to avoid Process B copying from the shared segment into the
surface for each frame, where possible.
- Steve
--
Steven Toth - Kernel Labs
http://www.kernellabs.com
More information about the Libva
mailing list