These instructions will help you build upstream Mesa binaries for DB845c/RB5
and prepare linaro vendor-package.


Build and boot upstream Mesa (freedreno) with AOSP:
---------------------------------------------------
* Build AOSP with upstream Mesa:

    $ mkdir $AOSP
    $ cd $AOSP
    $ repo init -u https://android.googlesource.com/platform/manifest -b master
    $ repo sync -j`nproc`
    $ cd $AOSP/external/mesa3d
    $ git checkout aosp/upstream-main
    $ cd $AOSP
    $ . build/envsetup.sh
    $ lunch db845c-userdebug
    $ make TARGET_BUILD_MESA=true -j`nproc`

* Boot the DB845c/RB5 in fastboot mode and flash the images:

    $ cd $AOSP/out/target/product/db845c
    $ fastboot flash super ./super.img flash boot ./boot.img \
      flash vendor_boot ./vendor_boot.img reboot


Updating the Mesa prebuilt binaries in linaro vendor-package:
------------------------------------------------------------
* Before we update and ship the new set of Mesa prebuilt binaries, please make
  sure that there are no new or obvious regressions when we test run
  CtsGraphicsTestcases, CtsDEQPTestcases and CtsHardwareTestcases on DB845c and
  RB5 with the new binaries.

  Report any breakages or regressions at https://gitlab.freedesktop.org/mesa/mesa/-/issues

* Copy new Mesa binaries over from AOSP build:

    $ git clone git@gitlab.com:LinaroLtd/linaro-aosp/linaro-vendor-package
    $ cd linaro-vendor-package/src/db845c/mesa_prebuilt/
    $ ./copy_bins.sh # This script will copy Mesa prebuilt binaries from \
                       $ANDROID_PRODUCT_OUT pre-set by "lunch db845c-userdebug" \
                       or user need to set it explicitly to $AOSP/out/target/product/db845c

  Run "git status" to look for modified binaries. Discard any new *_dri.so in
  ./lib{,64}/dri/ directory which are usually just a symlink to libgallium_dri.so.
  Commit the changes with detailed change log and update top-level src/README
  accordingly.


Preparing linaro vendor-package for AOSP:
-----------------------------------------
* Follow instructions in src/README_PrepareVendorPackage to prepare linaro
  vendor-package for AOSP.


Troubleshooting:
----------------
* Upstream Mesa is/was broken due to deprecated libbacktrace in AOSP
  https://gitlab.freedesktop.org/mesa/mesa/-/issues/7465,
  so we may have to use following hack to workaround that build error:

    -- a/src/util/meson.build
    +++ b/src/util/meson.build
    @@ -269,7 +269,7 @@ libmesa_util_sse41 = static_library(

     _libmesa_util = static_library(
       'mesa_util',
    -  [files_mesa_util, files_debug_stack, format_srgb, u_indices_gen_c, u_unfilled_gen_c],
    +  [files_mesa_util, format_srgb, u_indices_gen_c, u_unfilled_gen_c],
       include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],
       dependencies : deps_for_libmesa_util,
       link_with: [libmesa_format, libmesa_util_sse41],

* Upstream also has a new dependency on meson version >= 0.54 now,
  and that broke the build on Ubuntu 20.04.5. So update meson by
  adding the following untrusted PPA:

    $ sudo add-apt-repository ppa:ubuntu-support-team/meson
    $ sudo apt update
    $ sudo apt install meson

  h/t: https://launchpad.net/~ubuntu-support-team/+archive/ubuntu/meson
