| add_subdirectory(features) |
| |
| # 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(GFXSTREAM_ENABLE_HOST_VK_SNAPSHOT) |
| add_compile_definitions(CONFIG_AEMU) |
| endif() |
| |
| # Stream server core |
| set(stream-server-core-sources |
| Buffer.cpp |
| ExternalObjectManager.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.mm) |
| elseif (WIN32) |
| set(stream-server-core-platform-sources NativeSubWindow_win32.cpp) |
| elseif (QNX) |
| set(stream-server-core-platform-sources NativeSubWindow_qnx.cpp) |
| else() |
| set(stream-server-core-platform-sources NativeSubWindow_x11.cpp) |
| endif() |
| |
| add_library( |
| gfxstream_backend_headers |
| INTERFACE) |
| target_include_directories( |
| gfxstream_backend_headers |
| INTERFACE |
| include) |
| |
| # 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_features |
| 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/include |
| ${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}/host/vulkan/cereal/common |
| ${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 |
| -DGFXSTREAM_ENABLE_HOST_GLES=1 |
| ) |
| |
| # gfxstream_backend.dll |
| add_library( |
| gfxstream_backend |
| SHARED |
| render_api.cpp |
| virtio-gpu-gfxstream-renderer.cpp) |
| |
| target_link_libraries( |
| gfxstream_backend |
| PUBLIC |
| gfxstream_common_utils |
| gfxstream_features |
| 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() |
| |
| if(CONFIG_AEMU) |
| android_install_shared(gfxstream_backend) |
| else() |
| install( |
| TARGETS gfxstream_backend RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX} LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}) |
| endif() |
| |
| # 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) |
| 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_common_image |
| 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 (QNX) |
| target_compile_definitions(Vulkan_unittests PRIVATE -DVK_USE_PLATFORM_SCREEN_QNX) |
| 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() |