blob: b931febe1e2467857b58d66dd99caa33170bd014 [file] [log] [blame]
# Codec common sources
add_subdirectory(apigen-codec-common)
add_subdirectory(compressedTextureFormats)
# GL
add_subdirectory(gl)
# Vulkan
add_subdirectory(vulkan)
# RenderControl decoder
add_subdirectory(renderControl_dec)
# Magma decoder
add_subdirectory(magma)
if(CONFIG_AEMU)
add_compile_definitions(CONFIG_AEMU)
endif()
# Stream server core
set(stream-server-core-sources
Buffer.cpp
BlobManager.cpp
ColorBuffer.cpp
GfxStreamAgents.cpp
VirtioGpuTimelines.cpp
VsyncThread.cpp
ChannelStream.cpp
DisplaySurface.cpp
DisplaySurfaceUser.cpp
Hwc2.cpp
PostWorker.cpp
PostWorkerGl.cpp
ReadBuffer.cpp
RenderChannelImpl.cpp
RenderThreadInfo.cpp
RenderThreadInfoGl.cpp
RenderThreadInfoMagma.cpp
RingStream.cpp
SyncThread.cpp
RenderThread.cpp
RenderControl.cpp
RenderWindow.cpp
RenderLibImpl.cpp
RendererImpl.cpp
FrameBuffer.cpp)
if (APPLE)
set(stream-server-core-platform-sources NativeSubWindow_cocoa.m)
elseif (WIN32)
set(stream-server-core-platform-sources NativeSubWindow_win32.cpp)
else()
set(stream-server-core-platform-sources NativeSubWindow_x11.cpp)
endif()
# Compile everything as a static library first so that unit tests can call non-exported functions
add_library(
gfxstream_backend_static
STATIC
${stream-server-core-sources}
${stream-server-core-platform-sources}
)
target_link_libraries(
gfxstream_backend_static
PUBLIC
GLES_CM_translator_static
OpenGLESDispatch
renderControl_dec
gfxstream-gl-server
gfxstream-magma-server
gfxstream-vulkan-server
gfxstream_egl_headers
gfxstream-snapshot
apigen-codec-common
${GFXSTREAM_HOST_COMMON_LIB}
${GFXSTREAM_BASE_LIB})
target_include_directories(
gfxstream_backend_static
PUBLIC
${GFXSTREAM_REPO_ROOT}
${GFXSTREAM_REPO_ROOT}/include
${GFXSTREAM_REPO_ROOT}/host
${GFXSTREAM_REPO_ROOT}/host/apigen-codec-common
${GFXSTREAM_REPO_ROOT}/host/gl
${GFXSTREAM_REPO_ROOT}/host/gl/glestranslator/include
${GFXSTREAM_REPO_ROOT}/host/magma
${GFXSTREAM_REPO_ROOT}/host/magma/magma_dec
${GFXSTREAM_REPO_ROOT}/host/vulkan
${GFXSTREAM_REPO_ROOT}/third-party/fuchsia/magma/include
${GFXSTREAM_REPO_ROOT}/third-party/glm/include)
if (APPLE)
target_link_libraries(gfxstream_backend_static PUBLIC "-framework AppKit -framework QuartzCore -framework IOSurface")
endif()
if (WIN32)
target_link_libraries(gfxstream_backend_static PRIVATE D3d9.lib)
endif()
# Suppress some warnings generated by platform/aemu repo
target_compile_options(
gfxstream_backend_static
PRIVATE
-Wno-invalid-offsetof
-Wno-free-nonheap-object
-Wno-attributes
)
# gfxstream_backend.dll
add_library(
gfxstream_backend
SHARED
render_api.cpp
virtio-gpu-gfxstream-renderer.cpp)
target_link_libraries(
gfxstream_backend
PUBLIC
gfxstream_backend_static
PRIVATE
)
if(BUILD_STANDALONE)
target_link_libraries(gfxstream_backend
PRIVATE
gfxstream-gl-host-common)
endif()
if (APPLE)
set_target_properties(gfxstream_backend
PROPERTIES
LINK_FLAGS "-undefined dynamic_lookup -flat_namespace")
endif()
android_install_shared(gfxstream_backend)
# Testing libraries
add_subdirectory(testlibs)
if (ENABLE_VKCEREAL_TESTS)
set(LIST_OF_TESTS)
function(discover_tests test_name)
if (WIN32)
gtest_discover_tests(
${test_name}
${ARGN})
list(APPEND LIST_OF_TESTS ${test_name})
set(LIST_OF_TESTS ${LIST_OF_TESTS} PARENT_SCOPE)
else()
gtest_discover_tests(
${test_name}
${ARGN}
)
endif()
endfunction()
# Backend unit tests
add_executable(
gfxstream_backend_unittests
gfxstream_unittest.cpp)
target_link_libraries(
gfxstream_backend_unittests
PRIVATE
OSWindow
gfxstream_backend
aemu-host-common-testing-support
${GFXSTREAM_BASE_LIB}
gtest_main)
discover_tests(gfxstream_backend_unittests)
# More functional tests#########################################################
# Common testing support library################################################
# This includes the server core and testing sources
add_library(
stream-server-testing-support
tests/SampleApplication.cpp
tests/GLSnapshotTesting.cpp
tests/OpenGLTestContext.cpp
tests/GLTestUtils.cpp
tests/ShaderUtils.cpp
tests/GLSnapshotTestDispatch.cpp
tests/GLSnapshotTestStateUtils.cpp
tests/HelloTriangleImp.cpp
tests/ImageUtils.cpp)
target_include_directories(
stream-server-testing-support
PUBLIC
${GFXSTREAM_REPO_ROOT}
${GFXSTREAM_REPO_ROOT}/include
${GFXSTREAM_REPO_ROOT}/host
${GFXSTREAM_REPO_ROOT}/host/gl/glestranslator/GLES_CM
${GFXSTREAM_REPO_ROOT}/host/gl/glestranslator/include
${GFXSTREAM_REPO_ROOT}/host/apigen-codec-common
${GFXSTREAM_REPO_ROOT}/host/vulkan)
target_link_libraries(
stream-server-testing-support
PUBLIC
aemu-host-common-testing-support
aemu-base-testing-support
gfxstream_backend_static
gfxstream_stb
OSWindow
gtest)
if (LINUX)
add_library(
x11_testing_support
tests/X11TestingSupport.cpp)
target_link_libraries(
x11_testing_support
aemu-base.headers)
endif()
# Basic opengl rendering tests##################################################
add_executable(
OpenglRender_unittests
tests/FrameBuffer_unittest.cpp
tests/GLES1Dispatch_unittest.cpp
tests/DefaultFramebufferBlit_unittest.cpp
tests/TextureDraw_unittest.cpp
tests/StalePtrRegistry_unittest.cpp
tests/VsyncThread_unittest.cpp)
target_link_libraries(
OpenglRender_unittests
PRIVATE
stream-server-testing-support
aemu-host-common-testing-support
aemu-base-testing-support
gfxstream_backend_static
gtest_main)
if (LINUX)
target_compile_definitions(
OpenglRender_unittests
PRIVATE GFXSTREAM_HAS_X11=1)
target_link_libraries(
OpenglRender_unittests
PRIVATE x11_testing_support)
endif()
discover_tests(OpenglRender_unittests)
# Snapshot tests################################################################
add_executable(
OpenglRender_snapshot_unittests
tests/GLSnapshotBuffers_unittest.cpp
tests/GLSnapshotFramebufferControl_unittest.cpp
tests/GLSnapshotFramebuffers_unittest.cpp
tests/GLSnapshotMultisampling_unittest.cpp
tests/GLSnapshotPixelOperations_unittest.cpp
tests/GLSnapshotPixels_unittest.cpp
tests/GLSnapshotPrograms_unittest.cpp
tests/GLSnapshotRasterization_unittest.cpp
tests/GLSnapshotRenderbuffers_unittest.cpp
tests/GLSnapshotRendering_unittest.cpp
tests/GLSnapshotShaders_unittest.cpp
tests/GLSnapshotTextures_unittest.cpp
tests/GLSnapshotTransformation_unittest.cpp
tests/GLSnapshotVertexAttributes_unittest.cpp
tests/GLSnapshot_unittest.cpp)
target_link_libraries(
OpenglRender_snapshot_unittests
PRIVATE
stream-server-testing-support
aemu-host-common-testing-support
aemu-base-testing-support
gfxstream_backend_static
gtest_main)
discover_tests(OpenglRender_snapshot_unittests)
# Vulkan tests##################################################################
add_executable(
Vulkan_unittests
tests/Vulkan_unittest.cpp
tests/CompositorVk_unittest.cpp
tests/SwapChainStateVk_unittest.cpp
tests/DisplayVk_unittest.cpp
tests/VirtioGpuTimelines_unittest.cpp
vulkan/vk_util_unittest.cpp
vulkan/VkFormatUtils_unittest.cpp
vulkan/VkQsriTimeline_unittest.cpp
vulkan/VkDecoderGlobalState_unittest.cpp
)
target_link_libraries(
Vulkan_unittests
PRIVATE
stream-server-testing-support
aemu-host-common-testing-support
aemu-base-testing-support
gfxstream_backend_static
gtest
gtest_main
gmock)
if (APPLE)
target_compile_definitions(Vulkan_unittests PRIVATE -DVK_USE_PLATFORM_METAL_EXT)
target_link_libraries(Vulkan_unittests PUBLIC "-framework AppKit")
endif()
discover_tests(
Vulkan_unittests
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
if (APPLE)
target_compile_definitions(Vulkan_unittests PRIVATE -DVK_USE_PLATFORM_METAL_EXT)
elseif (UNIX)
target_compile_definitions(Vulkan_unittests PRIVATE -DVK_USE_PLATFORM_XCB_KHR)
endif()
file(GLOB Vulkan_unittests_datafiles "tests/testdata/*.png")
add_custom_command(TARGET Vulkan_unittests POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory
${CMAKE_BINARY_DIR}/tests/testdata
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${Vulkan_unittests_datafiles}
${CMAKE_BINARY_DIR}/tests/testdata)
add_executable(
Vulkan_integrationtests
vulkan/testing/VkDecoderTestDispatch.h
vulkan/testing/VulkanTestHelper.cpp
)
target_link_libraries(
Vulkan_integrationtests
PRIVATE
gfxstream_backend_static
gfxstream-gl-server
gfxstream-vulkan-server
stream-server-testing-support
gtest
gtest_main
gmock)
discover_tests(Vulkan_integrationtests)
endif()
if (WIN32)
set(BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}")
configure_file(../cmake/SetWin32TestEnvironment.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/SetWin32TestEnvironment.cmake @ONLY)
set_property(DIRECTORY APPEND PROPERTY TEST_INCLUDE_FILES ${CMAKE_CURRENT_BINARY_DIR}/SetWin32TestEnvironment.cmake)
endif()