OSDN Git Service

Implement an Android NDK build of SwiftShader using the CMake files.
authorStephen White <senorblanco@chromium.org>
Thu, 4 Apr 2019 18:31:25 +0000 (14:31 -0400)
committerStephen White <senorblanco@chromium.org>
Thu, 4 Apr 2019 19:56:36 +0000 (19:56 +0000)
commite6ab01f42adef20d37515d4606128fbfce6f3f7f
tree6ad1c9016edb05454bfc3a6e733a1e5c3aa3a871
parentd39c96e96a31e2c9e386f5a6fc2278468c22d70e
Implement an Android NDK build of SwiftShader using the CMake files.

From the build directory, run:

  cmake -DCMAKE_TOOLCHAIN_FILE=../build/android.toolchain.cmake ..

Everything compiles and links. unittests, vk-unittests and ReactorUnitTests are known to work.
A "rundroid.sh" script is provided to upload and run Android binaries.
This CL has contains the first draft of an NDK-based FrameBuffer implementation.
It stubs out the gralloc calls in Image (consequence: EGLImage likely won't work).

NOTE: a small CMake patch is necessary; hopefully we'll find a way around this or land it in
CMake:

diff cmake-3.10/Modules/Platform/Android/Determine-Compiler-NDK.cmake.bak cmake-3.10/Modules/Platform/Android/Determine-Compiler-NDK.cmake
231c231
<   set(_ANDROID_TOOL_C_COMPILER_EXTERNAL_TOOLCHAIN ${CMAKE_ANDROID_NDK}/toolchains/${_ANDROID_TOOL_NAME}/prebuilt/${_ANDROID_HOST_DIR})
---
>   set(_ANDROID_TOOL_C_COMPILER_EXTERNAL_TOOLCHAIN ${CMAKE_ANDROID_NDK}/toolchains/${_ANDROID_TOOL_LLVM_NAME}/prebuilt/${_ANDROID_HOST_DIR})

Bug: b/129942368
Change-Id: I107a2f719256b6477ad105054ca68c676c05ec5c
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27869
Presubmit-Ready: Stephen White <senorblanco@chromium.org>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Tested-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
18 files changed:
CMakeLists.txt
build/android.toolchain.cmake [new file with mode: 0644]
src/Common/Debug.hpp
src/Main/FrameBufferAndroid.cpp
src/OpenGL/common/Image.hpp
src/OpenGL/common/debug.cpp
src/OpenGL/common/debug.h
src/OpenGL/compiler/ConstantUnion.h
src/OpenGL/compiler/SymbolTable.h
src/OpenGL/compiler/debug.h
src/OpenGL/libEGL/Config.cpp
src/OpenGL/libEGL/Display.cpp
src/OpenGL/libEGL/Surface.cpp
src/OpenGL/libEGL/libEGL.cpp
src/Reactor/Debug.hpp
src/System/Debug.hpp
tests/VulkanUnitTests/Driver.cpp
tests/rundroid.sh [new file with mode: 0755]