Raspberry Pi 3 VideoCore 4

=======================================================
    glmark2 2014.03
=======================================================
    OpenGL Information
    GL_VENDOR:     Broadcom
    GL_RENDERER:   Gallium 0.4 on VC4 V3D 2.1
    GL_VERSION:    OpenGL ES 2.0 Mesa 13.0.0
=======================================================
[build] use-vbo=false: FPS: 127 FrameTime: 7.874 ms
[build] use-vbo=true: FPS: 136 FrameTime: 7.353 ms
[texture] texture-filter=nearest: FPS: 134 FrameTime: 7.463 ms
[texture] texture-filter=linear: FPS: 131 FrameTime: 7.634 ms
[texture] texture-filter=mipmap: FPS: 123 FrameTime: 8.130 ms
[shading] shading=gouraud: FPS: 122 FrameTime: 8.197 ms
[shading] shading=blinn-phong-inf: FPS: 121 FrameTime: 8.264 ms
[shading] shading=phong: FPS: 114 FrameTime: 8.772 ms
[shading] shading=cel: FPS: 112 FrameTime: 8.929 ms
[bump] bump-render=high-poly: FPS: 76 FrameTime: 13.158 ms
[bump] bump-render=normals: FPS: 135 FrameTime: 7.407 ms
[bump] bump-render=height: FPS: 133 FrameTime: 7.519 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 90 FrameTime: 11.111 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 63 FrameTime: 15.873 ms
[pulsar] light=false:quads=5:texture=false: FPS: 136 FrameTime: 7.353 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 40 FrameTime: 25.000 ms
[desktop] effect=shadow:windows=4: FPS: 80 FrameTime: 12.500 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 57 FrameTime: 17.544 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 56 FrameTime: 17.857 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 66 FrameTime: 15.152 ms
[ideas] speed=duration: FPS: 137 FrameTime: 7.299 ms
[jellyfish] : FPS: 89 FrameTime: 11.236 ms
[terrain] : FPS: 5 FrameTime: 200.000 ms
[shadow] : FPS: 76 FrameTime: 13.158 ms
[refract] : FPS: 21 FrameTime: 47.619 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 144 FrameTime: 6.944 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 113 FrameTime: 8.850 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 141 FrameTime: 7.092 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 128 FrameTime: 7.812 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 96 FrameTime: 10.417 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 125 FrameTime: 8.000 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 125 FrameTime: 8.000 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 81 FrameTime: 12.346 ms
=======================================================
                                  glmark2 Score: 101 
=======================================================

 

Banana Pi M1 Mali 400 MP2

=======================================================
    glmark2 2014.03+git20150611.fa71af2d
=======================================================
    OpenGL Information
    GL_VENDOR:     ARM
    GL_RENDERER:   Mali-400 MP
    GL_VERSION:    OpenGL ES 2.0
=======================================================
[build] use-vbo=false: FPS: 74 FrameTime: 13.514 ms
[build] use-vbo=true: FPS: 77 FrameTime: 12.987 ms
[texture] texture-filter=nearest: FPS: 84 FrameTime: 11.905 ms
[texture] texture-filter=linear: FPS: 83 FrameTime: 12.048 ms
[texture] texture-filter=mipmap: FPS: 84 FrameTime: 11.905 ms
[shading] shading=gouraud: FPS: 74 FrameTime: 13.514 ms
[shading] shading=blinn-phong-inf: FPS: 74 FrameTime: 13.514 ms
[shading] shading=phong: FPS: 73 FrameTime: 13.699 ms
[shading] shading=cel: FPS: 65 FrameTime: 15.385 ms
[bump] bump-render=high-poly: FPS: 54 FrameTime: 18.519 ms
[bump] bump-render=normals: FPS: 86 FrameTime: 11.628 ms
[bump] bump-render=height: FPS: 90 FrameTime: 11.111 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 32 FrameTime: 31.250 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 20 FrameTime: 50.000 ms
[pulsar] light=false:quads=5:texture=false: FPS: 92 FrameTime: 10.870 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 16 FrameTime: 62.500 ms
[desktop] effect=shadow:windows=4: FPS: 48 FrameTime: 20.833 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: Unsupported
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 39 FrameTime: 25.641 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: Unsupported
[ideas] speed=duration: FPS: 74 FrameTime: 13.514 ms
[jellyfish] : FPS: 47 FrameTime: 21.277 ms
[terrain] : Unsupported
[shadow] : FPS: 25 FrameTime: 40.000 ms
[refract] : FPS: 15 FrameTime: 66.667 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 89 FrameTime: 11.236 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 60 FrameTime: 16.667 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 90 FrameTime: 11.111 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 75 FrameTime: 13.333 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 46 FrameTime: 21.739 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 76 FrameTime: 13.158 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 75 FrameTime: 13.333 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 75 FrameTime: 13.333 ms
=======================================================
                                  glmark2 Score: 63 
=======================================================

 

Raspberry Pi 3:

=======================================================
    glmark2 2014.03
=======================================================
    OpenGL Information
    GL_VENDOR:     Broadcom
    GL_RENDERER:   Gallium 0.4 on VC4 V3D 2.1
    GL_VERSION:    OpenGL ES 2.0 Mesa 13.0.0
=======================================================
[build] use-vbo=false: FPS: 127 FrameTime: 7.874 ms
[build] use-vbo=true: FPS: 136 FrameTime: 7.353 ms
[texture] texture-filter=nearest: FPS: 134 FrameTime: 7.463 ms
[texture] texture-filter=linear: FPS: 131 FrameTime: 7.634 ms
[texture] texture-filter=mipmap: FPS: 123 FrameTime: 8.130 ms
[shading] shading=gouraud: FPS: 122 FrameTime: 8.197 ms
[shading] shading=blinn-phong-inf: FPS: 121 FrameTime: 8.264 ms
[shading] shading=phong: FPS: 114 FrameTime: 8.772 ms
[shading] shading=cel: FPS: 112 FrameTime: 8.929 ms
[bump] bump-render=high-poly: FPS: 76 FrameTime: 13.158 ms
[bump] bump-render=normals: FPS: 135 FrameTime: 7.407 ms
[bump] bump-render=height: FPS: 133 FrameTime: 7.519 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 90 FrameTime: 11.111 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 63 FrameTime: 15.873 ms
[pulsar] light=false:quads=5:texture=false: FPS: 136 FrameTime: 7.353 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 40 FrameTime: 25.000 ms
[desktop] effect=shadow:windows=4: FPS: 80 FrameTime: 12.500 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 57 FrameTime: 17.544 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 56 FrameTime: 17.857 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 66 FrameTime: 15.152 ms
[ideas] speed=duration: FPS: 137 FrameTime: 7.299 ms
[jellyfish] : FPS: 89 FrameTime: 11.236 ms
[terrain] : FPS: 5 FrameTime: 200.000 ms
[shadow] : FPS: 76 FrameTime: 13.158 ms
[refract] : FPS: 21 FrameTime: 47.619 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 144 FrameTime: 6.944 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 113 FrameTime: 8.850 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 141 FrameTime: 7.092 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 128 FrameTime: 7.812 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 96 FrameTime: 10.417 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 125 FrameTime: 8.000 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 125 FrameTime: 8.000 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 81 FrameTime: 12.346 ms
=======================================================
                                  glmark2 Score: 101 
=======================================================

 

DragonBoard 410c

=======================================================
    glmark2 2017.07
=======================================================
    OpenGL Information
    GL_VENDOR:     freedreno
    GL_RENDERER:   Gallium 0.4 on FD307
    GL_VERSION:    OpenGL ES 3.0 Mesa 13.0.6
=======================================================
[build] use-vbo=false: FPS: 194 FrameTime: 5.155 ms
[build] use-vbo=true: FPS: 207 FrameTime: 4.831 ms
[texture] texture-filter=nearest: FPS: 162 FrameTime: 6.173 ms
[texture] texture-filter=linear: FPS: 151 FrameTime: 6.623 ms
[texture] texture-filter=mipmap: FPS: 156 FrameTime: 6.410 ms
[shading] shading=gouraud: FPS: 188 FrameTime: 5.319 ms
[shading] shading=blinn-phong-inf: FPS: 163 FrameTime: 6.135 ms
[shading] shading=phong: FPS: 130 FrameTime: 7.692 ms
[shading] shading=cel: FPS: 118 FrameTime: 8.475 ms
[bump] bump-render=high-poly: FPS: 132 FrameTime: 7.576 ms
[bump] bump-render=normals: FPS: 178 FrameTime: 5.618 ms
[bump] bump-render=height: FPS: 149 FrameTime: 6.711 ms
libpng warning: iCCP: known incorrect sRGB profile
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 65 FrameTime: 15.385 ms
libpng warning: iCCP: known incorrect sRGB profile
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 17 FrameTime: 58.824 ms
[pulsar] light=false:quads=5:texture=false: FPS: 179 FrameTime: 5.587 ms
libpng warning: iCCP: known incorrect sRGB profile
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 28 FrameTime: 35.714 ms
libpng warning: iCCP: known incorrect sRGB profile
[desktop] effect=shadow:windows=4: FPS: 92 FrameTime: 10.870 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 68 FrameTime: 14.706 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 67 FrameTime: 14.925 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 85 FrameTime: 11.765 ms
[ideas] speed=duration: FPS: 66 FrameTime: 15.152 ms
[jellyfish] : FPS: 64 FrameTime: 15.625 ms
[terrain] : FPS: 3 FrameTime: 333.333 ms
[shadow] : FPS: 56 FrameTime: 17.857 ms
[refract] : FPS: 22 FrameTime: 45.455 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 174 FrameTime: 5.747 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 110 FrameTime: 9.091 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 169 FrameTime: 5.917 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 142 FrameTime: 7.042 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 120 FrameTime: 8.333 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 136 FrameTime: 7.353 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 136 FrameTime: 7.353 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 96 FrameTime: 10.417 ms
=======================================================
                                  glmark2 Score: 115 
=======================================================

 

Compile from Source:

When I tested It I had trouble with compiling from source using the following branches:

  • Chinook 3.0.1: failed to sync repository
  • Latest on Chinook Branch: failed to compile
  • Master: failed to compile

However this may change soon. I you are interested in compiling AGL for Raspberry Pi try the following documentation page: http://docs.automotivelinux.org/docs/getting_started/en/dev/

 

Download Binaries:

Download link for the rpi3 image on this page ( https://wiki.automotivelinux.org/agl-distro?&#supported_hardware ) Does NOT work.

For me this link works: https://download.automotivelinux.org/AGL/release/chinook/3.0.1/raspberrypi3/deploy/images/raspberrypi3/agl-demo-platform-raspberrypi3.rpi-sdimg-ota

Before Getting Started I would recommend having a working UART connection to you raspberry pi: https://pinout.xyz/pinout/uart

  1. Write the downloaded file to a SD card (minimum 8GB) using you favourite tool like dd, win32 or etcher.
  2. Power on the raspberry pi, you should see a blank screen but some output on the uart, make sure you can login with the user root on the uart console.

Now we need to get around the no-display issue:

  1. Have a good read here: https://wiki.automotivelinux.org/agl-distro/agl-raspberrypi
  2. In that page follow the steps under “Disabling Homescreen in AGL 3.0.x CC release”
  3. I would recommend doing it manually on another system by inserting the pi’s sd card as many of the files are write protected
  4. If you are on a separate machine you would have to navigate to the following directory to get the thr rootfs to be able to modify the files
    <montpoint>/ostree/boot.1/agl/<random string>/0/<this is the rootfs>

Getting demo apps running:

  1. After the modifications have been done boot the raspberry pi and login as root using uart
  2. we will use the command afm-util, run “afm-util –help” for more detail
  3. “afm-util list” will give you a list of demos pre installed
  4. “afm-util run <demo id>” will run the demo from the above mentioned list.

Android TV: https://mega.nz/#!oBkVCKqQ!fN6fsXBdyrCoyMjb6f-Flje4c_6g3h3BTVMzDEKefSY

Android Tablet: https://mega.nz/#!4MFyAaxK!vSiwuUxrAao6P6C6071_gmzzpvA3L-RsWrXd_XvJHXg

 

config.txt mods:

  1. If previous builds worked on you tv but not on this build and if you see visual artifacts:
    change dtoverlay=vc4-fkms-v3d,cma-256 to
    dtoverlay=vc4-kms-v3d,cma-256
  2.  change resolution using:
    framebuffer_width=1280
    framebuffer_height=720
    recommended resolutions: 1920×1080 1280×720 800×480 640×480
  3. config for RCA: remove all the line with hdmi in them.

 

=======================================================
 glmark2 2014.03
=======================================================
 OpenGL Information
 GL_VENDOR: Broadcom
 GL_RENDERER: Gallium 0.4 on VC4 V3D 2.1
 GL_VERSION: 2.1 Mesa 13.0.0
=======================================================
[build] use-vbo=false: FPS: 103 FrameTime: 9.709 ms
[build] use-vbo=true: FPS: 105 FrameTime: 9.524 ms
[texture] texture-filter=nearest: FPS: 104 FrameTime: 9.615 ms
[texture] texture-filter=linear: FPS: 100 FrameTime: 10.000 ms
[texture] texture-filter=mipmap: FPS: 101 FrameTime: 9.901 ms
[shading] shading=gouraud: FPS: 98 FrameTime: 10.204 ms
[shading] shading=blinn-phong-inf: FPS: 94 FrameTime: 10.638 ms
[shading] shading=phong: FPS: 90 FrameTime: 11.111 ms
[shading] shading=cel: FPS: 93 FrameTime: 10.753 ms
[bump] bump-render=high-poly: FPS: 70 FrameTime: 14.286 ms
[bump] bump-render=normals: FPS: 109 FrameTime: 9.174 ms
[bump] bump-render=height: FPS: 104 FrameTime: 9.615 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 77 FrameTime: 12.987 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 56 FrameTime: 17.857 ms
[pulsar] light=false:quads=5:texture=false: FPS: 108 FrameTime: 9.259 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 27 FrameTime: 37.037 ms
[desktop] effect=shadow:windows=4: FPS: 61 FrameTime: 16.393 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 34 FrameTime: 29.412 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 35 FrameTime: 28.571 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 40 FrameTime: 25.000 ms
[ideas] speed=duration: FPS: 91 FrameTime: 10.989 ms
[jellyfish] <default>: FPS: 77 FrameTime: 12.987 ms
[terrain] <default>: FPS: 5 FrameTime: 200.000 ms
[shadow] <default>: FPS: 59 FrameTime: 16.949 ms
[refract] <default>: FPS: 20 FrameTime: 50.000 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 114 FrameTime: 8.772 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 91 FrameTime: 10.989 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 112 FrameTime: 8.929 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 106 FrameTime: 9.434 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 80 FrameTime: 12.500 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 95 FrameTime: 10.526 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 100 FrameTime: 10.000 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 71 FrameTime: 14.085 ms
=======================================================
 glmark2 Score: 79 
=======================================================

=======================================================
 glmark2 2014.03
=======================================================
 OpenGL Information
 GL_VENDOR: Broadcom
 GL_RENDERER: Gallium 0.4 on VC4 V3D 2.1
 GL_VERSION: 2.1 Mesa 17.0.1 (git-07adc57)
=======================================================
[build] use-vbo=false: FPS: 108 FrameTime: 9.259 ms
[build] use-vbo=true: FPS: 112 FrameTime: 8.929 ms
[texture] texture-filter=nearest: FPS: 116 FrameTime: 8.621 ms
[texture] texture-filter=linear: FPS: 116 FrameTime: 8.621 ms
[texture] texture-filter=mipmap: FPS: 111 FrameTime: 9.009 ms
[shading] shading=gouraud: FPS: 102 FrameTime: 9.804 ms
[shading] shading=blinn-phong-inf: FPS: 90 FrameTime: 11.111 ms
[shading] shading=phong: FPS: 62 FrameTime: 16.129 ms
[shading] shading=cel: FPS: 61 FrameTime: 16.393 ms
[bump] bump-render=high-poly: FPS: 62 FrameTime: 16.129 ms
[bump] bump-render=normals: FPS: 118 FrameTime: 8.475 ms
[bump] bump-render=height: FPS: 116 FrameTime: 8.621 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 87 FrameTime: 11.494 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 67 FrameTime: 14.925 ms
[pulsar] light=false:quads=5:texture=false: FPS: 98 FrameTime: 10.204 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 30 FrameTime: 33.333 ms
[desktop] effect=shadow:windows=4: FPS: 68 FrameTime: 14.706 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 35 FrameTime: 28.571 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 34 FrameTime: 29.412 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 41 FrameTime: 24.390 ms
[ideas] speed=duration: FPS: 88 FrameTime: 11.364 ms
[jellyfish] <default>: FPS: 83 FrameTime: 12.048 ms
[terrain] <default>: FPS: 5 FrameTime: 200.000 ms
[shadow] <default>: FPS: 63 FrameTime: 15.873 ms
[refract] <default>: FPS: 19 FrameTime: 52.632 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 117 FrameTime: 8.547 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 100 FrameTime: 10.000 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 115 FrameTime: 8.696 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 112 FrameTime: 8.929 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 36 FrameTime: 27.778 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 107 FrameTime: 9.346 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 110 FrameTime: 9.091 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 78 FrameTime: 12.821 ms
=======================================================
 glmark2 Score: 80 
=======================================================