4K video playback through GC7000lite in i.MX8M

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

4K video playback through GC7000lite in i.MX8M

1,776 Views
cphealy1
Senior Contributor I

With the i.MX8M, we are needing to decode and play back 60fps 4K content to a 4K display using the 3D GPU.  4K @ 60 fps equates to ~497Megapixels/sec.  The 3D GPU is theoretically capable of 1.6Gigapixels/sec.  Can we expect that with more than 3x the fill rate the GPU should not have issues sampling and rendering this content fullscreen? 

The GC7000lite GPU appears to support the Vivante extension glTexDirectVIV that allows sampling directly from YUV video textures.  I've done some reading on this extension and it appears that with this extension, the GPU is able to sample directly from the texture in a linear format (which would save the DDR cost of first tiling the video frame before sampling from it.)  With this Vivante direct texture extension on the GC7000lite, are the YUV pixels converted to RGB in the texture sampler (essentially for free) or is this done in the fragment shader?  It seems to me that if the color space conversion is done in the fragment shader, even though we are dealing with 497Megapixels/sec, the platform would not have sufficient performance to maintain full frame rate as it typically takes at least 3 GPU shader instructions to do a YUV to RGB color space conversion.

We are aware that the i.MX8M does have hardware support in the DCSS for directly scanning the video out and blending it with the GUI using the 2nd and 3rd DCSS planes.  Using the 2nd and 3rd DCSS planes is not compatible with our use case though and we do require running video through the 3D GPU.

0 Kudos
3 Replies

1,281 Views
Bio_TICFSL
NXP TechSupport
NXP TechSupport

Hi Chris,

Yes, the GPU can display 4k content at 60fps. We are working on application that use Vivante direct texture extension to check the real performance with the last BSP. Will send you an update when is ready.

 

Regarding the YUV to RGB pixel conversion, it is done in the texture engine. No need to make the conversion in a fragment shader.

Regards

1,281 Views
cphealy1
Senior Contributor I

How is that application that uses Vivante direct texture extension coming along?  We'd like to understand this ASAP.

We've done a little more investigation on our side and it seems that it may be possible to do YUV to RGB pixel conversion in the texture engine when the Hantro G1 is used as it supports packed YUV but the texture engine might not be a viable option when the Hantro G2 is used as it does not support packed YUV.

Can you confirm if what I'm suggesting is true about not being able to use Hantro G2 buffers with the texture engine?

0 Kudos

1,281 Views
Bio_TICFSL
NXP TechSupport
NXP TechSupport

Have measured the fillrate on 8M with Linux 4.14.78 release under wayland. Rendering a 3840x2160 screen with single color only, with no texture sampling, I get 1.2Gpixels/sec fillrate.
When sampling a RGBA texture, fillrate drops to 657Mpixels/sec. Sampling a YUV texture (UVYV format) using the Vivante extension, fillrate is around 787Mpixels/sec. So according to these measurements, the GPU is capable of sampling and rendering 4K texture @ 60FP

Note that even if the GPU can display 4k content, it does not mean that 8M can decode 4k content and display it with the GPU. There are actually memory bandwidth limitations that prevents to read and write into memory a 4k buffer at 60fps. Which is actually what you want to do at the end.

Regards

0 Kudos