Merge changes from topics "gfxstream-egl-headers-dep", "gfxstream_move_gfx_api_logger"
* changes:
Bring back GfxApiLogger unit tests
third-party: add egl dependency
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c1f51c9..0d304c6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -42,6 +42,10 @@
option(ASTC_CPU_DECODING "Enable decoding ASTC textures on the CPU" OFF)
+# For now the caller of the cmake script is responsible to create the angle_shader_translator
+# target.
+option(USE_ANGLE_SHADER_PARSER "Build with ANGLE shader parser." OFF)
+
if(UNIX AND NOT APPLE)
set(LINUX TRUE)
endif()
@@ -75,6 +79,8 @@
add_compile_definitions(VK_USE_PLATFORM_MACOS_MVK)
elseif(UNIX)
# TODO(kaiyili, b/179477624): Add Linux specific Vulkan platform macro definitions
+ # Use X11 version of EGL platform specific definitions.
+ add_compile_definitions(USE_X11)
elseif(WIN32)
add_compile_definitions(VK_USE_PLATFORM_WIN32_KHR)
endif()
@@ -118,15 +124,15 @@
set(GFXSTREAM_REPO_ROOT ${CMAKE_CURRENT_SOURCE_DIR})
+if(USE_ANGLE_SHADER_PARSER)
+ add_compile_definitions(USE_ANGLE_SHADER_PARSER)
+endif()
+
include(android.cmake)
set(EXTRA_SUBDIR_TEST_INCLUDE_FILES)
-if(DEPENDENCY_RESOLUTION STREQUAL "AOSP")
- add_compile_definitions(USE_ANGLE_SHADER_PARSER)
-endif ()
-
# Third party dependencies
add_subdirectory(third-party)
diff --git a/scripts/print_gfx_logs/print_gfx_logs.py b/scripts/print_gfx_logs/print_gfx_logs.py
index feb2990..985d171 100644
--- a/scripts/print_gfx_logs/print_gfx_logs.py
+++ b/scripts/print_gfx_logs/print_gfx_logs.py
@@ -20,7 +20,7 @@
design: go/bstar-gfx-logging
g3doc: http://g3doc/play/g3doc/games/battlestar/kiwivm/graphics-tips.md#gfx-logs
-C++: http://source/play-internal/battlestar/aosp/device/generic/vulkan-cereal/base/GfxApiLogger.h
+C++: http://source/play-internal/battlestar/aosp/device/generic/vulkan-cereal/utils/include/utils/GfxApiLogger.h
Usage:
diff --git a/stream-servers/CMakeLists.txt b/stream-servers/CMakeLists.txt
index 9dc2454..ad0407b 100644
--- a/stream-servers/CMakeLists.txt
+++ b/stream-servers/CMakeLists.txt
@@ -64,6 +64,7 @@
renderControl_dec
gfxstream-gl-server
gfxstream-vulkan-server
+ gfxstream_egl_headers
gfxstream-snapshot
apigen-codec-common
${GFXSTREAM_HOST_COMMON_LIB}
@@ -78,7 +79,6 @@
${GFXSTREAM_REPO_ROOT}/stream-servers/apigen-codec-common
${GFXSTREAM_REPO_ROOT}/stream-servers/gl
${GFXSTREAM_REPO_ROOT}/stream-servers/vulkan
- ${GFXSTREAM_REPO_ROOT}/third-party/angle/include
${GFXSTREAM_REPO_ROOT}/third-party/glm/include)
if (WIN32)
diff --git a/stream-servers/gl/CMakeLists.txt b/stream-servers/gl/CMakeLists.txt
index b9788aa..f06c262 100644
--- a/stream-servers/gl/CMakeLists.txt
+++ b/stream-servers/gl/CMakeLists.txt
@@ -25,6 +25,7 @@
PUBLIC
aemu-base.headers
gfxstream_vulkan_headers
+ gfxstream_egl_headers
gles1_dec
gles2_dec
GLSnapshot
@@ -37,5 +38,4 @@
${GFXSTREAM_REPO_ROOT}/include
${GFXSTREAM_REPO_ROOT}/stream-servers
${GFXSTREAM_REPO_ROOT}/stream-servers/gl
- ${GFXSTREAM_REPO_ROOT}/third-party/angle/include
${GFXSTREAM_REPO_ROOT}/third-party/glm/include)
diff --git a/stream-servers/gl/gles1_dec/CMakeLists.txt b/stream-servers/gl/gles1_dec/CMakeLists.txt
index 98fc749..2d618d0 100644
--- a/stream-servers/gl/gles1_dec/CMakeLists.txt
+++ b/stream-servers/gl/gles1_dec/CMakeLists.txt
@@ -7,12 +7,13 @@
gles1_dec
PUBLIC
apigen-codec-common
- GLSnapshot)
+ GLSnapshot
+ PRIVATE
+ gfxstream_egl_headers)
target_include_directories(
gles1_dec
PRIVATE
${GFXSTREAM_REPO_ROOT}
${GFXSTREAM_REPO_ROOT}/include
${GFXSTREAM_REPO_ROOT}/stream-servers
- ${GFXSTREAM_REPO_ROOT}/stream-servers/apigen-codec-common
- ${GFXSTREAM_REPO_ROOT}/third-party/angle/include)
+ ${GFXSTREAM_REPO_ROOT}/stream-servers/apigen-codec-common)
diff --git a/stream-servers/gl/gles2_dec/CMakeLists.txt b/stream-servers/gl/gles2_dec/CMakeLists.txt
index d520c3c..e2374d6 100644
--- a/stream-servers/gl/gles2_dec/CMakeLists.txt
+++ b/stream-servers/gl/gles2_dec/CMakeLists.txt
@@ -7,12 +7,13 @@
gles2_dec
PUBLIC
apigen-codec-common
- GLSnapshot)
+ GLSnapshot
+ PRIVATE
+ gfxstream_egl_headers)
target_include_directories(
gles2_dec
PRIVATE
${GFXSTREAM_REPO_ROOT}
${GFXSTREAM_REPO_ROOT}/include
${GFXSTREAM_REPO_ROOT}/stream-servers
- ${GFXSTREAM_REPO_ROOT}/stream-servers/apigen-codec-common
- ${GFXSTREAM_REPO_ROOT}/third-party/angle/include)
+ ${GFXSTREAM_REPO_ROOT}/stream-servers/apigen-codec-common)
diff --git a/stream-servers/gl/glestranslator/GLES_CM/CMakeLists.txt b/stream-servers/gl/glestranslator/GLES_CM/CMakeLists.txt
index db1f96b..0028b18 100644
--- a/stream-servers/gl/glestranslator/GLES_CM/CMakeLists.txt
+++ b/stream-servers/gl/glestranslator/GLES_CM/CMakeLists.txt
@@ -11,12 +11,12 @@
apigen-codec-common
aemu-base.headers
aemu-host-common.headers
- gfxstream-snapshot.headers)
+ gfxstream-snapshot.headers
+ gfxstream_egl_headers)
target_include_directories(
GLES_CM_translator_static PRIVATE
${GFXSTREAM_REPO_ROOT}
${GFXSTREAM_REPO_ROOT}/include
${GFXSTREAM_REPO_ROOT}/stream-servers/
${GFXSTREAM_REPO_ROOT}/stream-servers/gl/glestranslator/include
- ${GFXSTREAM_REPO_ROOT}/third-party/angle/include
${GFXSTREAM_REPO_ROOT}/third-party/glm/include)
diff --git a/stream-servers/gl/glestranslator/GLES_V2/CMakeLists.txt b/stream-servers/gl/glestranslator/GLES_V2/CMakeLists.txt
index c4f100b..550ed00 100644
--- a/stream-servers/gl/glestranslator/GLES_V2/CMakeLists.txt
+++ b/stream-servers/gl/glestranslator/GLES_V2/CMakeLists.txt
@@ -20,7 +20,7 @@
aemu-base.headers
aemu-host-common.headers)
-if(DEPENDENCY_RESOLUTION STREQUAL "AOSP")
+if(USE_ANGLE_SHADER_PARSER)
target_link_libraries(
GLES_V2_translator_static PRIVATE
angle_shader_translator)
diff --git a/stream-servers/gl/glestranslator/GLcommon/CMakeLists.txt b/stream-servers/gl/glestranslator/GLcommon/CMakeLists.txt
index cc0af8c..2874168 100644
--- a/stream-servers/gl/glestranslator/GLcommon/CMakeLists.txt
+++ b/stream-servers/gl/glestranslator/GLcommon/CMakeLists.txt
@@ -25,14 +25,14 @@
${GFXSTREAM_REPO_ROOT}
${GFXSTREAM_REPO_ROOT}/include
${GFXSTREAM_REPO_ROOT}/stream-servers
- ${GFXSTREAM_REPO_ROOT}/stream-servers/gl/glestranslator/include
- ${GFXSTREAM_REPO_ROOT}/third-party/angle/include)
+ ${GFXSTREAM_REPO_ROOT}/stream-servers/gl/glestranslator/include)
target_link_libraries(
GLcommon PUBLIC
aemu-base.headers
aemu-host-common.headers
gfxstream-snapshot.headers
- gfxstream-compressedTextures)
+ gfxstream-compressedTextures
+ gfxstream_egl_headers)
if (NOT MSVC)
target_compile_options(GLcommon PRIVATE -fvisibility=hidden)
endif()
diff --git a/stream-servers/renderControl_dec/CMakeLists.txt b/stream-servers/renderControl_dec/CMakeLists.txt
index 5fd4111..db8c280 100644
--- a/stream-servers/renderControl_dec/CMakeLists.txt
+++ b/stream-servers/renderControl_dec/CMakeLists.txt
@@ -5,12 +5,13 @@
target_link_libraries(
renderControl_dec
PUBLIC
- apigen-codec-common)
+ apigen-codec-common
+ PRIVATE
+ gfxstream_egl_headers)
target_include_directories(
renderControl_dec
PRIVATE
${GFXSTREAM_REPO_ROOT}
${GFXSTREAM_REPO_ROOT}/include
${GFXSTREAM_REPO_ROOT}/stream-servers
- ${GFXSTREAM_REPO_ROOT}/stream-servers/apigen-codec-common
- ${GFXSTREAM_REPO_ROOT}/third-party/angle/include)
+ ${GFXSTREAM_REPO_ROOT}/stream-servers/apigen-codec-common)
diff --git a/stream-servers/testlibs/CMakeLists.txt b/stream-servers/testlibs/CMakeLists.txt
index ce94658..3e41a07 100644
--- a/stream-servers/testlibs/CMakeLists.txt
+++ b/stream-servers/testlibs/CMakeLists.txt
@@ -18,14 +18,14 @@
target_link_libraries(
OSWindow
PRIVATE
- aemu-base.headers)
+ aemu-base.headers
+ gfxstream_egl_headers)
target_include_directories(
OSWindow
PUBLIC
.
PRIVATE
${GFXSTREAM_REPO_ROOT}/include
- ${GFXSTREAM_REPO_ROOT}/third-party/angle/include
${GFXSTREAM_REPO_ROOT}/third-party/glm/include)
if (LINUX)
diff --git a/stream-servers/vulkan/CMakeLists.txt b/stream-servers/vulkan/CMakeLists.txt
index e60c2bf..4db25fa 100644
--- a/stream-servers/vulkan/CMakeLists.txt
+++ b/stream-servers/vulkan/CMakeLists.txt
@@ -28,8 +28,10 @@
apigen-codec-common
aemu-base.headers
gfxstream-snapshot.headers
- gfxstream_utils.headers
- gfxstream_vulkan_headers)
+ gfxstream_utils
+ gfxstream_vulkan_headers
+ PRIVATE
+ gfxstream_egl_headers)
if (WIN32)
target_compile_definitions(gfxstream-vulkan-server PRIVATE -DVK_USE_PLATFORM_WIN32_KHR)
@@ -52,5 +54,4 @@
${GFXSTREAM_REPO_ROOT}/stream-servers
${GFXSTREAM_REPO_ROOT}/stream-servers/vulkan
${GFXSTREAM_REPO_ROOT}/stream-servers/apigen-codec-common
- ${GFXSTREAM_REPO_ROOT}/third-party/angle/include
${GFXSTREAM_REPO_ROOT}/third-party/glm/include)
diff --git a/stream-servers/vulkan/VkCommonOperations.h b/stream-servers/vulkan/VkCommonOperations.h
index 0895111..e825816 100644
--- a/stream-servers/vulkan/VkCommonOperations.h
+++ b/stream-servers/vulkan/VkCommonOperations.h
@@ -29,6 +29,7 @@
#include "aemu/base/ManagedDescriptor.hpp"
#include "aemu/base/Optional.h"
#include "cereal/common/goldfish_vk_private_defs.h"
+#include "utils/GfxApiLogger.h"
#include "utils/RenderDoc.h"
namespace goldfish_vk {
diff --git a/stream-servers/vulkan/VkDecoderContext.h b/stream-servers/vulkan/VkDecoderContext.h
index 5dc31dd..096c32e 100644
--- a/stream-servers/vulkan/VkDecoderContext.h
+++ b/stream-servers/vulkan/VkDecoderContext.h
@@ -17,9 +17,9 @@
#include <memory>
-#include "aemu/base/GfxApiLogger.h"
#include "aemu/base/HealthMonitor.h"
#include "aemu/base/Metrics.h"
+#include "utils/GfxApiLogger.h"
struct VkDecoderContext {
const char* processName = nullptr;
diff --git a/stream-servers/vulkan/VkDecoderGlobalState.h b/stream-servers/vulkan/VkDecoderGlobalState.h
index 4f8b017..00908e5 100644
--- a/stream-servers/vulkan/VkDecoderGlobalState.h
+++ b/stream-servers/vulkan/VkDecoderGlobalState.h
@@ -26,12 +26,12 @@
#include "VulkanDispatch.h"
#include "VulkanHandleMapping.h"
#include "aemu/base/AsyncResult.h"
-#include "aemu/base/GfxApiLogger.h"
#include "aemu/base/HealthMonitor.h"
#include "aemu/base/synchronization/Lock.h"
#include "cereal/common/goldfish_vk_private_defs.h"
#include "cereal/common/goldfish_vk_transform.h"
#include "host-common/GfxstreamFatalError.h"
+#include "utils/GfxApiLogger.h"
#include "vk_util.h"
using android::base::AutoLock;
diff --git a/stream-servers/vulkan/VkDecoderSnapshot.h b/stream-servers/vulkan/VkDecoderSnapshot.h
index 337ac1d..7607ed4 100644
--- a/stream-servers/vulkan/VkDecoderSnapshot.h
+++ b/stream-servers/vulkan/VkDecoderSnapshot.h
@@ -33,9 +33,9 @@
#include <memory>
-#include "aemu/base/GfxApiLogger.h"
#include "aemu/base/HealthMonitor.h"
#include "common/goldfish_vk_private_defs.h"
+#include "utils/GfxApiLogger.h"
#include "vk_android_native_buffer.h"
#include "vulkan_gfxstream.h"
diff --git a/stream-servers/vulkan/VkReconstruction.h b/stream-servers/vulkan/VkReconstruction.h
index 812c302..b251978 100644
--- a/stream-servers/vulkan/VkReconstruction.h
+++ b/stream-servers/vulkan/VkReconstruction.h
@@ -16,10 +16,10 @@
#include "VulkanHandleMapping.h"
#include "VulkanHandles.h"
#include "aemu/base/containers/EntityManager.h"
-#include "aemu/base/GfxApiLogger.h"
#include "aemu/base/HealthMonitor.h"
#include "aemu/base/files/Stream.h"
#include "common/goldfish_vk_marshaling.h"
+#include "utils/GfxApiLogger.h"
// A class that captures all important data structures for
// reconstructing a Vulkan system state via trimmed API record and replay.
diff --git a/stream-servers/vulkan/cereal/CMakeLists.txt b/stream-servers/vulkan/cereal/CMakeLists.txt
index 3784df9..f8c3173 100644
--- a/stream-servers/vulkan/cereal/CMakeLists.txt
+++ b/stream-servers/vulkan/cereal/CMakeLists.txt
@@ -22,7 +22,13 @@
if (WIN32)
target_compile_definitions(OpenglRender_vulkan_cereal PRIVATE -DVK_USE_PLATFORM_WIN32_KHR)
endif()
-target_link_libraries(OpenglRender_vulkan_cereal PUBLIC aemu-base.headers gfxstream_vulkan_headers)
+target_link_libraries(
+ OpenglRender_vulkan_cereal
+ PUBLIC
+ aemu-base.headers
+ gfxstream_vulkan_headers
+ PRIVATE
+ gfxstream_utils.headers)
target_include_directories(OpenglRender_vulkan_cereal
PUBLIC
diff --git a/stream-servers/vulkan/emulated_textures/CMakeLists.txt b/stream-servers/vulkan/emulated_textures/CMakeLists.txt
index f729dc0..7fb21b0 100644
--- a/stream-servers/vulkan/emulated_textures/CMakeLists.txt
+++ b/stream-servers/vulkan/emulated_textures/CMakeLists.txt
@@ -6,7 +6,9 @@
target_link_libraries(emulated_textures PUBLIC
OpenglRender_vulkan_cereal
aemu-base.headers
- gfxstream_vulkan_headers)
+ gfxstream_vulkan_headers
+ PRIVATE
+ gfxstream_utils.headers)
target_include_directories(emulated_textures
PRIVATE
diff --git a/third-party/CMakeLists.txt b/third-party/CMakeLists.txt
index b3e2c68..f4fb8e0 100644
--- a/third-party/CMakeLists.txt
+++ b/third-party/CMakeLists.txt
@@ -1,7 +1,3 @@
-if(DEPENDENCY_RESOLUTION STREQUAL "AOSP")
- add_subdirectory(angle)
-endif ()
-
# Configure and add `astc-encoder`, if needed
if (ASTC_CPU_DECODING)
set(DECOMPRESSOR ON) # Disable compression code
@@ -173,6 +169,33 @@
endif()
endif()
+if(NOT TARGET gfxstream_egl_headers)
+ if(DEPENDENCY_RESOLUTION STREQUAL "AOSP")
+ # ANGLE provides the EGL headers for us.
+ set(ANGLE_PATH ${PROJECT_SOURCE_DIR}/../../../external/angle)
+ if(NOT EXISTS ${ANGLE_PATH})
+ message(FATAL_ERROR "ANGLE is not found.")
+ endif()
+ add_library(gfxstream_egl_headers INTERFACE)
+ target_include_directories(gfxstream_egl_headers INTERFACE ${ANGLE_PATH}/include)
+ elseif(DEPENDENCY_RESOLUTION STREQUAL "SYSTEM")
+ find_package(PkgConfig REQUIRED)
+ pkg_search_module(egl REQUIRED IMPORTED_TARGET GLOBAL egl>=1.5)
+ add_library(gfxstream_egl_headers ALIAS PkgConfig::egl)
+ elseif(DEPENDENCY_RESOLUTION STREQUAL "DOWNLOAD")
+ FetchContent_Declare(
+ egl
+ GIT_REPOSITORY https://github.com/KhronosGroup/EGL-Registry.git
+ GIT_TAG main
+ GIT_REMOTE_UPDATE_STRATEGY CHECKOUT
+ GIT_PROGRESS TRUE
+ )
+ list(APPEND PROJECT_TO_FETCH egl)
+ add_library(gfxstream_egl_headers INTERFACE)
+ target_include_directories(gfxstream_egl_headers INTERFACE ${egl_SOURCE_DIR}/api)
+ endif()
+endif()
+
if(PROJECT_TO_FETCH)
FetchContent_MakeAvailable(${PROJECT_TO_FETCH})
endif()
@@ -186,3 +209,6 @@
if(NOT TARGET flatbuffers)
message(FATAL_ERROR "The dependency flatbuffers not found.")
endif()
+if(USE_ANGLE_SHADER_PARSER AND NOT TARGET angle_shader_translator)
+ message(FATAL_ERROR "The dependency angle_shader_translator not found.")
+endif()
\ No newline at end of file
diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt
index 4091c91..fb942e9 100644
--- a/utils/CMakeLists.txt
+++ b/utils/CMakeLists.txt
@@ -9,15 +9,19 @@
aemu-host-common.headers
aemu-base.headers)
+add_library(gfxstream_utils OBJECT GfxApiLogger.cpp)
+target_link_libraries(gfxstream_utils PUBLIC gfxstream_utils.headers)
+
if (ENABLE_VKCEREAL_TESTS)
add_executable(
gfxstream_utils_unittests
- RenderDoc_unittest.cpp)
+ RenderDoc_unittest.cpp
+ GfxApiLogger_unittest.cpp)
target_link_libraries(
gfxstream_utils_unittests
PRIVATE
- gfxstream_utils.headers
+ gfxstream_utils
${GFXSTREAM_HOST_COMMON_LIB}
${GFXSTREAM_BASE_LIB}
renderdoc
diff --git a/utils/GfxApiLogger.cpp b/utils/GfxApiLogger.cpp
new file mode 100644
index 0000000..e08bec6
--- /dev/null
+++ b/utils/GfxApiLogger.cpp
@@ -0,0 +1,17 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// This file is reserved for upstreaming the GfxApiLogger implementation.
diff --git a/utils/GfxApiLogger_unittest.cpp b/utils/GfxApiLogger_unittest.cpp
new file mode 100644
index 0000000..cb5bc93
--- /dev/null
+++ b/utils/GfxApiLogger_unittest.cpp
@@ -0,0 +1,15 @@
+// Copyright (C) 2022 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// This file is reserved for upstreaming the GfxApiLogger unit tests.
diff --git a/utils/include/utils/GfxApiLogger.h b/utils/include/utils/GfxApiLogger.h
new file mode 100644
index 0000000..0c40614
--- /dev/null
+++ b/utils/include/utils/GfxApiLogger.h
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+namespace emugl {
+// TODO(kaiyili): complete the implementation in
+// https://r.android.com/c/device/generic/vulkan-cereal/+/2165168.
+class GfxApiLogger {
+ public:
+ void record(const unsigned char* buf, size_t len) {}
+};
+} // namespace emugl
\ No newline at end of file