ChadVersace/Android

I am porting Intel's 3D graphics stack to Android. After answering the same set of questions multiple times, I decided to compile some notes for others that are also working on Intel's Android graphics stack.

Android Resources

Wiki's and Websites

Two websites to become acquainted with are the Android-x86's wiki, specifically the build instructions [1], and Google's AOSP site, specifically the "Source" section of the site [2].

Gitwebs

Android-x86 Graphics Developers

Downloading Android

Really, you should read [1] and [2] above. For those who don't have time to read, however, here's the quick instructions.

# Install Google's repo tool.
cd ~/bin
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > repo
diff <(sha1sum repo) <(echo "e1fd3bef059d152edf4d0522590725d317bc637f  repo")
chmod +x repo

# Download the Android-x86 source tree.
mkdir ~/android
cd ~/android
repo init -u git://git.android-x86.org/manifest.git -b gingerbread-x86
repo sync -j4

Building Android

Stock Android-x86

Android-x86 supports 3D acceleration on SandyBridge. To build an Android iso image with the Intel Sandybridge driver:

mkdir ~/my-android && cd ~/my-android
repo init -u git://git.android-x86.org/manifest.git -b gingerbread-x86
repo sync -j4
source build/envsetup.sh
lunch generic_x86-eng
make BOARD_GPU_DRIVERS=i965 -j4 iso_img

The make target 'iso_img' is necessary only if you want to build a bootable image. Remove it if you're only testing the build.

You can avoid repeatedly invoking lunch and setting BOARD_GPU_DRIVERS by placing the variable definitions in buildspec.mk.

cd ~/my-android
source build/envsetup.sh
lunch generic_x86-eng > build/buildspec.mk
echo BOARD_GPU_DRIVERS=i965 >> build/buildspec.mk
ed buildspec.mk

Android-x86 with upstream Mesa

Mesa master now supports Sandybridge on Android. As of 2011-11-01.

To build an Android image with Mesa master, you must first update platform/external/drm to 2.4.27. To do this, pull from Eugeni's libdrm branch.

cd ~/my-android/external/drm
git remote add eugeni git://people.freedesktop.org/~eugeni/drm
git fetch eugeni
git checkout eugeni/android-x86-2.4.27

Then pull from upstream Mesa. (Alternatively, you may wish to pull from my android-intel-staging branch, discussed below).

cd ~/my-android/external/mesa
git remote add fdo git://anongit.freedesktop.org/git/mesa/mesa.git
git fetch fdo
git checkout fdo/master

Then build with the the i965 driver.

cd ~/my-android
make BOARD_GPU_DRIVERS=i965 -j4 iso_img

Alternative Git Branches

Ivy Bridge backported patches for android-x86

EugeniDodonov has backported the i915.ko patches from the 3.0 kernel to the 2.6.39.4 kernel used in Android-x86 project. To build an Android image with Eugeni's kernel:

cd ~/my-android/external/platform
git remote add eugeni git://anongit.freedesktop.org/~eugeni/kernel
git fetch eugeni
git checkout eugeni/android-2.6.39-i915-backports
cd ~/my-android
make BOARD_GPU_DRIVERS=i965 -j4 iso_img

Mesa android-intel-staging

I maintain a personal Mesa branch where I push Android fixes and features, often before they enter Mesa master. If you encounter Android bugs, then test with this branch before reporting; they may have already been fixed.

To build an Android image with this Mesa branch:

cd ~/my-android/external/mesa
git remote add chadversary git://people.freedesktop.org/~chadversary/mesa.git
git fetch chadversary
git checkout chadversary/android-intel-staging
make BOARD_GPU_DRIVERS=i965 -j4 iso_img