| | 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 | }}} |