mirror of https://gitlab.freedesktop.org/mesa/mesa
175 lines
7.6 KiB
Diff
175 lines
7.6 KiB
Diff
|
From bf8ada0d15f94824ee1643d4e17a66dffdbaf2e5 Mon Sep 17 00:00:00 2001
|
||
|
From: Tomeu Vizoso <tomeu.vizoso@collabora.com>
|
||
|
Date: Fri, 26 Aug 2022 18:24:27 +0200
|
||
|
Subject: [PATCH 1/2] Allow running on Android from the command line
|
||
|
|
||
|
For testing the Android EGL platform without having to go via the
|
||
|
Android activity manager, build deqp-egl.
|
||
|
|
||
|
Tests that render to native windows are unsupported, as command line
|
||
|
programs cannot create windows on Android.
|
||
|
|
||
|
$ cmake -S . -B build/ -DDEQP_TARGET=android -DDEQP_TARGET_TOOLCHAIN=ndk-modern -DCMAKE_C_FLAGS=-Werror -DCMAKE_CXX_FLAGS=-Werror -DANDROID_NDK_PATH=./android-ndk-r21d -DANDROID_ABI=x86_64 -DDE_ANDROID_API=28 -DGLCTS_GTF_TARGET=gles32 -G Ninja
|
||
|
$ ninja -C build modules/egl/deqp-egl
|
||
|
|
||
|
Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
|
||
|
Signed-off-by: David Heidelberg <david.heidelberg@collabora.com>
|
||
|
---
|
||
|
CMakeLists.txt | 36 ++-----------------
|
||
|
.../android/tcuAndroidNativeActivity.cpp | 36 ++++++++++---------
|
||
|
.../platform/android/tcuAndroidPlatform.cpp | 12 ++++++-
|
||
|
3 files changed, 33 insertions(+), 51 deletions(-)
|
||
|
|
||
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||
|
index 1ff2bb9..8c76abb 100644
|
||
|
--- a/CMakeLists.txt
|
||
|
+++ b/CMakeLists.txt
|
||
|
@@ -249,7 +249,7 @@ include_directories(
|
||
|
external/vulkancts/framework/vulkan/generated/vulkan
|
||
|
)
|
||
|
|
||
|
-if (DE_OS_IS_ANDROID OR DE_OS_IS_IOS)
|
||
|
+if (DE_OS_IS_IOS)
|
||
|
# On Android deqp modules are compiled as libraries and linked into final .so
|
||
|
set(DEQP_MODULE_LIBRARIES )
|
||
|
set(DEQP_MODULE_ENTRY_POINTS )
|
||
|
@@ -293,7 +293,7 @@ macro (add_deqp_module MODULE_NAME SRCS LIBS EXECLIBS ENTRY)
|
||
|
set(DEQP_MODULE_LIBRARIES ${DEQP_MODULE_LIBRARIES} PARENT_SCOPE)
|
||
|
set(DEQP_MODULE_ENTRY_POINTS ${DEQP_MODULE_ENTRY_POINTS} PARENT_SCOPE)
|
||
|
|
||
|
- if (NOT DE_OS_IS_ANDROID AND NOT DE_OS_IS_IOS)
|
||
|
+ if (NOT DE_OS_IS_IOS)
|
||
|
# Executable target
|
||
|
add_executable(${MODULE_NAME} ${PROJECT_SOURCE_DIR}/framework/platform/tcuMain.cpp ${ENTRY})
|
||
|
target_link_libraries(${MODULE_NAME} PUBLIC "${EXECLIBS}" "${MODULE_NAME}${MODULE_LIB_TARGET_POSTFIX}")
|
||
|
@@ -367,37 +367,7 @@ add_subdirectory(external/vulkancts/vkscpc)
|
||
|
add_subdirectory(external/openglcts)
|
||
|
|
||
|
# Single-binary targets
|
||
|
-if (DE_OS_IS_ANDROID)
|
||
|
- include_directories(executor)
|
||
|
- include_directories(${PROJECT_BINARY_DIR}/external/vulkancts/framework/vulkan)
|
||
|
-
|
||
|
- set(DEQP_SRCS
|
||
|
- framework/platform/android/tcuAndroidMain.cpp
|
||
|
- framework/platform/android/tcuAndroidJNI.cpp
|
||
|
- framework/platform/android/tcuAndroidPlatformCapabilityQueryJNI.cpp
|
||
|
- framework/platform/android/tcuTestLogParserJNI.cpp
|
||
|
- ${DEQP_MODULE_ENTRY_POINTS}
|
||
|
- )
|
||
|
-
|
||
|
- set(DEQP_LIBS
|
||
|
- tcutil-platform
|
||
|
- xecore
|
||
|
- ${DEQP_MODULE_LIBRARIES}
|
||
|
- )
|
||
|
-
|
||
|
- add_library(deqp SHARED ${DEQP_SRCS})
|
||
|
- target_link_libraries(deqp ${DEQP_LIBS})
|
||
|
-
|
||
|
- # Separate out the debug information because it's enormous
|
||
|
- add_custom_command(TARGET deqp POST_BUILD
|
||
|
- COMMAND ${CMAKE_STRIP} --only-keep-debug -o $<TARGET_FILE:deqp>.debug $<TARGET_FILE:deqp>
|
||
|
- COMMAND ${CMAKE_STRIP} -g $<TARGET_FILE:deqp>)
|
||
|
-
|
||
|
- # Needed by OpenGL CTS that defines its own activity but depends on
|
||
|
- # common Android support code.
|
||
|
- target_include_directories(deqp PRIVATE framework/platform/android)
|
||
|
-
|
||
|
-elseif (DE_OS_IS_IOS)
|
||
|
+if (DE_OS_IS_IOS)
|
||
|
# Code sign identity
|
||
|
set(DEQP_IOS_CODE_SIGN_IDENTITY "drawElements" CACHE STRING "Code sign identity for iOS build")
|
||
|
|
||
|
diff --git a/framework/platform/android/tcuAndroidNativeActivity.cpp b/framework/platform/android/tcuAndroidNativeActivity.cpp
|
||
|
index 6f8cd8f..b83e30f 100644
|
||
|
--- a/framework/platform/android/tcuAndroidNativeActivity.cpp
|
||
|
+++ b/framework/platform/android/tcuAndroidNativeActivity.cpp
|
||
|
@@ -116,23 +116,25 @@ namespace Android
|
||
|
NativeActivity::NativeActivity (ANativeActivity* activity)
|
||
|
: m_activity(activity)
|
||
|
{
|
||
|
- activity->instance = (void*)this;
|
||
|
- activity->callbacks->onStart = onStartCallback;
|
||
|
- activity->callbacks->onResume = onResumeCallback;
|
||
|
- activity->callbacks->onSaveInstanceState = onSaveInstanceStateCallback;
|
||
|
- activity->callbacks->onPause = onPauseCallback;
|
||
|
- activity->callbacks->onStop = onStopCallback;
|
||
|
- activity->callbacks->onDestroy = onDestroyCallback;
|
||
|
- activity->callbacks->onWindowFocusChanged = onWindowFocusChangedCallback;
|
||
|
- activity->callbacks->onNativeWindowCreated = onNativeWindowCreatedCallback;
|
||
|
- activity->callbacks->onNativeWindowResized = onNativeWindowResizedCallback;
|
||
|
- activity->callbacks->onNativeWindowRedrawNeeded = onNativeWindowRedrawNeededCallback;
|
||
|
- activity->callbacks->onNativeWindowDestroyed = onNativeWindowDestroyedCallback;
|
||
|
- activity->callbacks->onInputQueueCreated = onInputQueueCreatedCallback;
|
||
|
- activity->callbacks->onInputQueueDestroyed = onInputQueueDestroyedCallback;
|
||
|
- activity->callbacks->onContentRectChanged = onContentRectChangedCallback;
|
||
|
- activity->callbacks->onConfigurationChanged = onConfigurationChangedCallback;
|
||
|
- activity->callbacks->onLowMemory = onLowMemoryCallback;
|
||
|
+ if (activity) {
|
||
|
+ activity->instance = (void*)this;
|
||
|
+ activity->callbacks->onStart = onStartCallback;
|
||
|
+ activity->callbacks->onResume = onResumeCallback;
|
||
|
+ activity->callbacks->onSaveInstanceState = onSaveInstanceStateCallback;
|
||
|
+ activity->callbacks->onPause = onPauseCallback;
|
||
|
+ activity->callbacks->onStop = onStopCallback;
|
||
|
+ activity->callbacks->onDestroy = onDestroyCallback;
|
||
|
+ activity->callbacks->onWindowFocusChanged = onWindowFocusChangedCallback;
|
||
|
+ activity->callbacks->onNativeWindowCreated = onNativeWindowCreatedCallback;
|
||
|
+ activity->callbacks->onNativeWindowResized = onNativeWindowResizedCallback;
|
||
|
+ activity->callbacks->onNativeWindowRedrawNeeded = onNativeWindowRedrawNeededCallback;
|
||
|
+ activity->callbacks->onNativeWindowDestroyed = onNativeWindowDestroyedCallback;
|
||
|
+ activity->callbacks->onInputQueueCreated = onInputQueueCreatedCallback;
|
||
|
+ activity->callbacks->onInputQueueDestroyed = onInputQueueDestroyedCallback;
|
||
|
+ activity->callbacks->onContentRectChanged = onContentRectChangedCallback;
|
||
|
+ activity->callbacks->onConfigurationChanged = onConfigurationChangedCallback;
|
||
|
+ activity->callbacks->onLowMemory = onLowMemoryCallback;
|
||
|
+ }
|
||
|
}
|
||
|
|
||
|
NativeActivity::~NativeActivity (void)
|
||
|
diff --git a/framework/platform/android/tcuAndroidPlatform.cpp b/framework/platform/android/tcuAndroidPlatform.cpp
|
||
|
index 69ab384..d7288f6 100644
|
||
|
--- a/framework/platform/android/tcuAndroidPlatform.cpp
|
||
|
+++ b/framework/platform/android/tcuAndroidPlatform.cpp
|
||
|
@@ -22,6 +22,7 @@
|
||
|
*//*--------------------------------------------------------------------*/
|
||
|
|
||
|
#include "tcuAndroidPlatform.hpp"
|
||
|
+#include "tcuAndroidNativeActivity.hpp"
|
||
|
#include "tcuAndroidUtil.hpp"
|
||
|
#include "gluRenderContext.hpp"
|
||
|
#include "egluNativeDisplay.hpp"
|
||
|
@@ -170,7 +171,7 @@ eglu::NativeWindow* NativeWindowFactory::createWindow (const eglu::WindowParams&
|
||
|
Window* window = m_windowRegistry.tryAcquireWindow();
|
||
|
|
||
|
if (!window)
|
||
|
- throw ResourceError("Native window is not available", DE_NULL, __FILE__, __LINE__);
|
||
|
+ throw NotSupportedError("Native window is not available", DE_NULL, __FILE__, __LINE__);
|
||
|
|
||
|
return new NativeWindow(window, params.width, params.height, format);
|
||
|
}
|
||
|
@@ -286,6 +287,9 @@ static size_t getTotalSystemMemory (ANativeActivity* activity)
|
||
|
|
||
|
try
|
||
|
{
|
||
|
+ if (!activity)
|
||
|
+ throw tcu::InternalError("No activity (running from command line?");
|
||
|
+
|
||
|
const size_t totalMemory = getTotalAndroidSystemMemory(activity);
|
||
|
print("Device has %.2f MiB of system memory\n", static_cast<double>(totalMemory) / static_cast<double>(MiB));
|
||
|
return totalMemory;
|
||
|
@@ -382,3 +386,9 @@ bool Platform::hasDisplay (vk::wsi::Type wsiType) const
|
||
|
|
||
|
} // Android
|
||
|
} // tcu
|
||
|
+
|
||
|
+tcu::Platform* createPlatform (void)
|
||
|
+{
|
||
|
+ tcu::Android::NativeActivity activity(NULL);
|
||
|
+ return new tcu::Android::Platform(activity);
|
||
|
+}
|
||
|
--
|
||
|
2.39.1
|
||
|
|