| 1 | {{{#!html |
| 2 | <div id="wikipage" class="trac-content"><p> |
| 3 | </p><div class="wiki-toc"> |
| 4 | <ol> |
| 5 | <li> |
| 6 | <a href="#VentanaGraphicsCapabilities">Ventana Graphics Capabilities</a> |
| 7 | <ol> |
| 8 | <li> |
| 9 | <a href="#IPU-ImageProcessingUnit">IPU - Image Processing Unit</a> |
| 10 | </li> |
| 11 | <li> |
| 12 | <a href="#VPU-VideoProcessingUnitCodecSupport">VPU - Video Processing Unit (Codec Support)</a> |
| 13 | </li> |
| 14 | <li> |
| 15 | <a href="#GPU-GraphicsProcessingUnit">GPU - Graphics Processing Unit</a> |
| 16 | </li> |
| 17 | </ol> |
| 18 | </li> |
| 19 | </ol> |
| 20 | </div><p> |
| 21 | </p> |
| 22 | <h1 id="VentanaGraphicsCapabilities">Ventana Graphics Capabilities</h1> |
| 23 | <p> |
| 24 | The IMX6 CPU contains the following hardware graphics accelerators: |
| 25 | </p> |
| 26 | <ul><li><a class="wiki" href="/wiki/ventana/graphics#IPU-ImageProcessingUnit">IPU</a> - Image Processing Unit |
| 27 | </li><li><a class="wiki" href="/wiki/ventana/graphics#VPU-VideoProcessingUnitCodecSupport">VPU</a> - Video Processing Unit |
| 28 | </li><li><a class="wiki" href="/wiki/ventana/graphics#GPU-GraphicsProcessingUnit">GPU</a> - Graphics Processing Unit |
| 29 | </li></ul><h2 id="IPU-ImageProcessingUnit">IPU - Image Processing Unit</h2> |
| 30 | <p> |
| 31 | The Image Processing Unit contains hardware support for the following: |
| 32 | </p> |
| 33 | <ul><li>Image Re-sizing and Blending |
| 34 | </li><li>Image Enhancement |
| 35 | </li><li>Image Inversion / Rotation |
| 36 | </li></ul><p> |
| 37 | Software support: |
| 38 | </p> |
| 39 | <ul><li>The Gateworks Yocto BSP contains an IPU driver with an <a class="ext-link" href="https://github.com/Gateworks/linux-imx6/blob/gateworks_3.10.53_1.1.0_ga/include/uapi/linux/ipu.h"><span class="icon"></span>userspace ioctl API</a> |
| 40 | </li><li>The IPU driver API is used by the gst-fsl-plugins and gstreamer-imx Gstreamer plugins |
| 41 | </li><li>Other examples can be found here: |
| 42 | <ul><li><a class="ext-link" href="https://community.freescale.com/docs/DOC-94961"><span class="icon"></span>https://community.freescale.com/docs/DOC-94961</a> |
| 43 | </li><li><a class="ext-link" href="https://github.com/rogeriorps/ipu-examples"><span class="icon"></span>https://github.com/rogeriorps/ipu-examples</a> |
| 44 | </li><li>imx-test package <a class="ext-link" href="http://downloads.yoctoproject.org/mirror/sources/imx-test-5.2.tar.gz"><span class="icon"></span>http://downloads.yoctoproject.org/mirror/sources/imx-test-5.2.tar.gz</a> |
| 45 | </li></ul></li></ul><h2 id="VPU-VideoProcessingUnitCodecSupport">VPU - Video Processing Unit (Codec Support)</h2> |
| 46 | <p> |
| 47 | The Video Processing Unit in the IMX6 is a CODA960 licensed IP block provided by Chips&Media supporting the following codecs: |
| 48 | </p> |
| 49 | <ul><li>Encode: |
| 50 | <ul><li>H.264 BP/CBP |
| 51 | </li><li>H.263 V2 |
| 52 | </li><li>MPEG-4 SP |
| 53 | </li><li>MPEG-2 |
| 54 | </li><li>MJPEG Baseline |
| 55 | </li></ul></li><li>Decode: |
| 56 | <ul><li>MPEG-2 MP/HP |
| 57 | </li><li>H.264 BP/MP/HP |
| 58 | </li><li>H.264 MVC BP/MP/HP |
| 59 | </li><li>VC1 SP/MP/AP |
| 60 | </li><li>MPEG-4/Xvid SP/ASP |
| 61 | </li><li>DivX v3/4/5/6 |
| 62 | </li><li>H.263 V2 |
| 63 | </li><li>MJPEG Baseline |
| 64 | </li><li>VP6/VebM VP8 |
| 65 | </li></ul></li></ul><p> |
| 66 | Performance: |
| 67 | </p> |
| 68 | <ul><li>IMX6SOLO/DUALLITE (IMX6SDL): |
| 69 | <ul><li>HD 1080p30Hz + D1 decode |
| 70 | </li><li>HD 1080p30Hz or 2x 720p encode |
| 71 | </li></ul></li><li>IMX6DUAL/I.MX6QUAD (IMX6DQ) (2 IPU's): |
| 72 | <ul><li>HD 1080p60Hz + D1 or 2x 1080p30Hz Decode |
| 73 | </li><li>HD 1080p30Hz or 2x 720p encode |
| 74 | </li></ul></li></ul><p> |
| 75 | Software support: |
| 76 | </p> |
| 77 | <ul><li>Yocto BSP packages: |
| 78 | <ul><li>firmware-imx-vpu-imx6q - contains firmware (/lib/firmware/vpu/vpu_fw_imx6q.bin) for IMX6DUAL/IMX6QUAD |
| 79 | </li><li>firmware-imx-vpu-imx6d - contains firmware (/lib/firmware/vpu/vpu_fw_imx6d.bin) for IMX6DUALLITE/IMX6SOLO |
| 80 | </li><li>libfslvpuwrap3 / libvpu4 - libraries |
| 81 | </li><li>gst-fsl-plugin - gstreamer plugin support for IMX6 VPU |
| 82 | </li><li>libfslcodec-* - various gstreamer libraries |
| 83 | </li></ul></li><li>Documentation: |
| 84 | <ul><li>Yocto BSP's - i.MX_6_VPU_Application_Programming_Interface_Linux_Reference_Manual.pdf (from the Freescale i.MX6 Yocto BSP releases which you must download from Freescale) |
| 85 | </li></ul></li></ul><p> |
| 86 | References: |
| 87 | </p> |
| 88 | <ul><li><a class="ext-link" href="https://community.freescale.com/servlet/JiveServlet/download/317735-256858/VPU_API_RM_L3.0.35_1.1.0.pdf"><span class="icon"></span>Freescale IMX6VPUAPI</a> - This is from the LINUXDOCS_BUNDLE downloadable from Freescale's IMX6 site - check there for the most recent version |
| 89 | <ul><li>this documents the VPU Application Programming Interface |
| 90 | </li></ul></li></ul><h2 id="GPU-GraphicsProcessingUnit">GPU - Graphics Processing Unit</h2> |
| 91 | <p> |
| 92 | The IMX6 contains 2D and 3D GPU support from Vivante with some variations based on the specific IMX SoC: |
| 93 | </p> |
| 94 | <ul><li>IMX6DUAL/QUAD: |
| 95 | <ul><li>Vivante GC2000 (3D GPU) |
| 96 | <ul><li>Clock: 600-800MHz (the IMX6 clocks this at 533MHz) |
| 97 | </li><li>176Mtri/s |
| 98 | </li><li>1000Mpxl/s |
| 99 | </li><li>OpenGL ES 1.1/2.0/3.0 |
| 100 | </li><li>OpenCL 1.1 EP |
| 101 | </li><li>Cores: 1 |
| 102 | </li><li>Shaders: 4 (Vec-4) and 16 (Vec-1) |
| 103 | </li></ul></li><li>Vivante GC355 (2D GPU - vector graphics) |
| 104 | <ul><li>300Mpxl/s |
| 105 | </li><li>OpenVG 1.1 |
| 106 | </li></ul></li><li>Vivante GC320 (2D GPU - blit) |
| 107 | <ul><li>600Mpxl/s |
| 108 | </li></ul></li></ul></li><li>IMX6DUALLITE/SOLO: |
| 109 | <ul><li>Vivante GC880 GPU |
| 110 | <ul><li>Clock: 600-800MHz (the IMX6 clocks this at 400MHz) |
| 111 | </li><li>53Mtri/s |
| 112 | </li><li>266Mpxl/s |
| 113 | </li><li>OpenGL ES 1.1/2.0/3.0 |
| 114 | </li><li>Cores: 1 |
| 115 | </li><li>Shaders: 1 (Vec-4) and 4 (Vec-1) |
| 116 | </li><li>OpenVG 1.1 (no GC320 on this SoC, so 2D vector graphics is through the GC880) |
| 117 | </li></ul></li><li>Vivante GC320 (2D GPU - blit) |
| 118 | <ul><li>600Mpxl/s |
| 119 | </li></ul></li></ul></li></ul><p> |
| 120 | According to Freescale this GPU supports the following open standards: |
| 121 | </p> |
| 122 | <ul><li>OpenCL 1.1 Embedded Profile (EP) (Open Computing Language - framework for writing programs that execute across a heterogeneous platform consisting of CPUs, GPUs, DSPs, etc) |
| 123 | </li><li>OpenGL ES 1.1/2.0 (Open Graphics Library - for 2D and 3D vector graphics) |
| 124 | </li><li>OpenVG 1.1 (Vector Graphics Acceleration) |
| 125 | </li></ul><p> |
| 126 | Software Support: |
| 127 | </p> |
| 128 | <ul><li>Yocto BSP packages: |
| 129 | <ul><li>gpu-viv-bin-mx6q |
| 130 | </li><li>xf86-video-imxfb-vivante - accelerated X11 server using the GPU |
| 131 | </li></ul></li><li>Documentation: |
| 132 | <ul><li>Yocto v1.3 - i.MX_6_G2D API.pdf (from the Freescale i.MX6 LTIB L3.0.35_1.0.0-GA BSP release which you must download from Freescale) |
| 133 | </li><li>Yocto v1.6 / v1.7 - i.MX_6_G2D_API_User's_Guide.pdf (from the Freescale i.MX6 Yocto L3.10.17_1.0.0-GA BSP release which you must download from Freescale) |
| 134 | </li><li>Yocto master - i.MX_6_Graphics_User's_Guide.pdf (from the Freescale i.MX6 Yocto L3.10.53_1.1.0-GA BSP release which you must download from Freescale) |
| 135 | </li><li>Android JB4.3 - i.MX_6_G2D_API_User_Guide.pdf (from the Freescale i.MX6 Android JB4.3_1.1.0-GA BSP release which you must download from Freescale) |
| 136 | </li><li>Android KK4.4.3 - i.MX_6_Graphics_User's_Guide.pdf (from the Freescale i.MX6 Android KK4.4.3_2.0.0-GA BSP release which you must download from Freescale) |
| 137 | </li></ul></li></ul |
| 138 | }}} |