iMX6Q - Running QT5 GLES App with separate Gstreamer App causes Vivante Mapping failures

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

iMX6Q - Running QT5 GLES App with separate Gstreamer App causes Vivante Mapping failures

Jump to solution
945 Views
jamescovey-crum
Contributor II

We're using fido YOCTO release (I appreciate this is fairly old - but seemingly stable release) - kernel is 3.14.79. gstreamer1.0, imx-gstreamer plugins 0.11.1.

We are using the imx6 IPU facilites for overlaying framebuffers.  QT application (using GLES) on /dev/fb1, which overlays the output of a separate gstreamer application rendering on /dev/fb0.

Our problem is that whilst running the QT application, and setting up and starting the gstreamer pipeline (in the other application), we seem to have some kind of race condition on Mapping some Video Memory in Vivante gpu (gc_hal) core...

[20055.716812] gcmkONERROR: status=-1(gcvSTATUS_INVALID_ARGUMENT) @ gckKERNEL_MapVideoMemoryEx(362)
[20055.725657] gcmkONERROR: status=-1(gcvSTATUS_INVALID_ARGUMENT) @ gckKERNEL_LockVideoMemory(1160)
[20055.725696] gcmkONERROR: status=-1(gcvSTATUS_INVALID_ARGUMENT) @ gckVGKERNEL_Dispatch(589)

I am drawing the conclusion of a race condition as sometimes it succeeds, but very often we see these errors.

The issue is not seen if the QT application is not running, nor is it seen if the gstreamer pipeline is started before the QT application is started.

Any clues?

Tags (1)
0 Kudos
1 Solution
730 Views
jamescovey-crum
Contributor II

Solved by updating the vivante driver (although it is an non NXP/Freescale version).

We are using the fsl-communities version - https://github.com/Freescale/kernel-module-imx-gpu-viv.git  (imx-gpu-viv_5.0.11.p8.6+fslc).  

The main change seemed to be around alignment of allocation (I see there is now code offsetting buffers in the later versions).

QT and a separate gstreamer application now seem to co-exist happily.

View solution in original post

0 Kudos
3 Replies
731 Views
jamescovey-crum
Contributor II

Solved by updating the vivante driver (although it is an non NXP/Freescale version).

We are using the fsl-communities version - https://github.com/Freescale/kernel-module-imx-gpu-viv.git  (imx-gpu-viv_5.0.11.p8.6+fslc).  

The main change seemed to be around alignment of allocation (I see there is now code offsetting buffers in the later versions).

QT and a separate gstreamer application now seem to co-exist happily.

0 Kudos
730 Views
jimmychan
NXP TechSupport
NXP TechSupport

Have you try it on our BSP L4.1.15?

linux-imx.git - i.MX Linux Kernel 

0 Kudos
730 Views
jamescovey-crum
Contributor II

Sorry for the slow reply.  The response notification was helpfully filtered out by our corporate filter.

Unfortunately we are stuck with the older 3.14 kernel (our board supplier has not yet migrated to 4.1 yet), but we have found success in updating the vivante driver independently.

We are using the fsl-communities version - https://github.com/Freescale/kernel-module-imx-gpu-viv.git  (imx-gpu-viv_5.0.11.p8.6+fslc) with good success.  The main change seemed to be around alignment of allocation (I see there is now code offsetting buffers in the later versions).

Thanks for your response.

0 Kudos