Skip to content
Peter Yoon edited this page Jan 5, 2017 · 3 revisions

Usage

Screen resolution : 1280x720 : Any monitor/TV which support this resolution could be connected.

Keymap with generic PC keyboard

  • F1 : Home
  • F2 : Back
  • F3 : Menu
  • F11 : Volume Down
  • F12 : Volume Up

ADB connection

  • Boot the android image and connect wifi or ethernet.
  • Check IP address of the board at Settings->About->Status
  • At host do 'adb connect [IP address]'

Use HAL_PIXEL_FORMAT_BGRA_8888

Currently mesa3d vc4 build is supporting only HAL_PIXEL_FORMAT_BGRA_8888.
Then, apply following patch under frameworks/native.

opengl/libs/EGL/eglApi.cpp
@@ line 478 @@ EGLSurface eglCreateWindowSurface(  EGLDisplay dpy, EGLConfig config,
             // alpha-channel requested, there's really only one suitable format
-            format = HAL_PIXEL_FORMAT_RGBA_8888;
+            format = HAL_PIXEL_FORMAT_BGRA_8888;
         } else {
@@ line 1843 @@ EGLClientBuffer eglCreateNativeClientBufferANDROID(const EGLint *attrib_list)
         if (alpha_size == 8) {
-            format = HAL_PIXEL_FORMAT_RGBA_8888;
+            format = HAL_PIXEL_FORMAT_BGRA_8888;
         } else {

It is a simplified version of android-x86 patch : https://sourceforge.net/p/android-x86/frameworks_native/ci/ea788ff0c6ca445fc8e7f634cd19ec9bca738830

Enable GLSurfaceView

Currently mesa3d vc4 build is supporting only following formats.

  • RGB 565, Alpha 0, Depth 24 or 0, Stencil 8 or 0
  • RGB 888, Alpha 8, Depth 24 or 0, Stencil 8 or 0

Then apply following patch under frameworks/base, to modify default EGL config.

opengl/java/android/opengl/GLSurfaceView.java
@@ line 976 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback
         public SimpleEGLConfigChooser(boolean withDepthBuffer) {
-            super(8, 8, 8, 0, withDepthBuffer ? 16 : 0, 0);
+            super(8, 8, 8, 8, withDepthBuffer ? 24 : 0, 0);
         }

Enable SW video decoder

HW video decoder is not ready yet. SW mode could be used by applying following patch under frameworks/av - with limited size & performance.

media/libstagefright/colorconversion/SoftwareRenderer.cpp
@@ line 113 @@ void SoftwareRenderer::resetFormatIfChanged(const sp<AMessage> &format) {
     case OMX_TI_COLOR_FormatYUV420PackedSemiPlanar:
     {
-            halFormat = HAL_PIXEL_FORMAT_YV12;
-            bufWidth = (mCropWidth + 1) & ~1;
-            bufHeight = (mCropHeight + 1) & ~1;
         break;
     }

Avoid screen flashing

On eng build, Strict mode behavior - flash screen when apps do long operations on main thread - is enabled by default. We can avoid it by applying following patch under frameworks/base.
This option could be turned on via Settings -> Developer options -> Strict mode enabled.

core/java/android/os/StrictMode.java
@@ line 1068 @@ public final class StrictMode {
     if (IS_ENG_BUILD) {
-            doFlashes = true;
     }

How to apply Android TV Leanback Launcher

Find latest version of Nexus Player Launcher binary in the link below.
https://developers.google.com/android/nexus/blobs-preview
After flashing system.img to SD card, write Launcher binary on following location by mounting the SD card on host PC.
[System partition]/priv-app/LeanbackLauncher/LeanbackLauncher.apk