Media (Intel® Video Processing Library, Intel Media SDK)
Access community support with transcoding, decoding, and encoding in applications using media tools like Intel® oneAPI Video Processing Library and Intel® Media SDK
Announcements
The Intel Media SDK project is no longer active. For continued support and access to new features, Intel Media SDK users are encouraged to read the transition guide on upgrading from Intel® Media SDK to Intel® Video Processing Library (VPL), and to move to VPL as soon as possible.
For more information, see the VPL website.

Blitter engine not working in Linux on Alder Lake

njean
Beginner
1,961 Views

Hello,

We are working on porting a libraries, mainly based on OneVPL, from a NUC Element 11th Gen (Tiger Lake) to a NUC Element 12th Gen (Alder Lake) in Linux and we are not able to make the blitter engine working.

Indeed, under Tiger Lake, we used to use the function vaCopy(), in the libVA library, to do buffer copies from linear memory format to tile memory format.

With the Alder Lake, the functionality seems to not working. The function vaCopy() always returns invalid parameters (VA_STATUS_ERROR_INVALID_PARAMETER).

We are actually using the following libraries:

  • Linux kernel 5.17.1
  • libVA : 2.13.0
  • gmmlib : intel-gmmlib-22.0.1
  • media-driver : intel_medis-22.1.1
  • Ubuntu server 21.10
  • Ubuntu kernel : 5.17.0-051700-generic
  • product: 12th Gen Intel(R) Core(TM) i7-1265U
  • Intel oneAPI Base Toolkit for Linux: Version: 2022.1.2

Could you help us?

Thanks,

 

Nicolas

0 Kudos
5 Replies
JyothisV_Intel
Employee
1,929 Views

Hi,

 

Good day to you.

 

We are not clear about the exact issue that you are facing.

 

To help you better, can you share the exact steps that you followed along with a sample reproducer code so that we can try reproducing the issue from our side.

 

Thanks and Regards,

Jyothis V James

 

0 Kudos
njean
Beginner
1,912 Views

To use the blitter engine (copy engine), we use the libVA library in Linux.

 

In the va.h file, line 5180, there is the function:

VAStatus vaCopy(VADisplay dpy, VACopyObject * dst, VACopyObject * src, VACopyOption option); 

We use the following value:

parameters:
VADisplay dpy : ... // we put a valid current VADisplay here
(VACopyObject*) poDst: {obj_type = VACopyObjectSurface, object = {surface_id = 1, buffer_id = 1}, va_reserved = {0, 0, 0, 0, 0, 0, 0, 0}}
(VACopyObject*) poSrc: {obj_type = VACopyObjectSurface, object = {surface_id = 0, buffer_id = 0}, va_reserved = {0, 0, 0, 0, 0, 0, 0, 0}}
(VACopyOption) option: {bits = {va_copy_sync = 1, va_copy_mode = 1, reserved = 0}, value = 5}

 

On Tiger Lake, the operation is working properly.

On Alder Lake, it always fails, returning VA_STATUS_ERROR_INVALID_PARAMETER  (0x00000012)

 

Also, when looking at the Intel Media Driver, it seems that the McpyDevice hasn`t been registered in the RegisterHal for the Alder Lake.

0 Kudos
njean
Beginner
1,749 Views

Hello, 

 

This proposed patch seems to fix the problem: McpyDevice interface is missing with ADLP and ADLS (vaCopy fails) · Issue #1381 · intel/media-driver · GitHub

 

It looks as the code to enable the copy engine for Alder Lake is missing in the Intel Media Driver.

 

Thanks,

 

Nicolas

0 Kudos
JyothisV_Intel
Employee
1,713 Views

Hi,


Good day to you.


Glad to know that your issue is resolved. Thanks for sharing the solution with the community.


If you need any additional information, please post a new question as this thread will no longer be monitored by Intel.


Regards,

Jyothis V James


0 Kudos
njean
Beginner
1,703 Views

Thanks Jyothis,

 

Do you know if the proposed patch is going to be added in the git repo of the Intel Media driver?

 

Regards,

 

Nicolas

0 Kudos
Reply