|
Name |
|
Date |
Size |
#Lines |
LOC |
| .. | | - | - |
| base/ | | 03-May-2024 | - | 17,686 | 11,440 |
| fake-android-guest/ | | 03-May-2024 | - | 43,371 | 23,751 |
| host-common/ | | 03-May-2024 | - | 33,937 | 21,380 |
| include/ | | 03-May-2024 | - | 193,809 | 152,557 |
| protocols/ | | 03-May-2024 | - | 218,731 | 180,881 |
| scripts/ | | 03-May-2024 | - | 115 | 85 |
| snapshot/ | | 03-May-2024 | - | 767 | 495 |
| stream-servers/ | | 03-May-2024 | - | 438,986 | 385,517 |
| testenvs/ | | 03-May-2024 | - | | |
| third-party/ | | 03-May-2024 | - | 1,242,744 | 1,012,583 |
| .gitignore | D | 03-May-2024 | 5.9 KiB | 293 | 293 |
| Android.bp | D | 03-May-2024 | 3.6 KiB | 119 | 113 |
| BUILD.gn | D | 03-May-2024 | 0 | | |
| CMakeLists.txt | D | 03-May-2024 | 3.3 KiB | 99 | 71 |
| METADATA | D | 03-May-2024 | 335 | 9 | 8 |
| README.md | D | 03-May-2024 | 3.6 KiB | 106 | 72 |
| android.cmake | D | 03-May-2024 | 51.7 KiB | 1,313 | 1,202 |
| build-host.sh | D | 03-May-2024 | 108 | 5 | 4 |
| gtest.cmake | D | 03-May-2024 | 1.2 KiB | 33 | 28 |
| gtestdownloadCMakeLists.txt.in | D | 03-May-2024 | 442 | 15 | 13 |
README.md
1# Graphics Streaming Kit (formerly: Vulkan Cereal)
2
3Graphics Streaming Kit is a code generator that makes it easier to serialize
4and forward graphics API calls from one place to another:
5
6- From a virtual machine guest to host for virtualized graphics
7- From one process to another for IPC graphics
8- From one computer to another via network sockets
9
10# Build: Linux
11
12Make sure the latest CMake is installed.
13Make sure the opengl lib is installed. Otherwise, sudo apt-get install
14libglu1-mesa-dev freeglut3-dev mesa-common-dev
15Make sure you are using Clang as your `CC` and clang++ as your`CXX`. Then
16
17 mkdir build
18 cd build
19 cmake . ../
20 make -j24
21
22Unit tests:
23
24 make test
25
26# Build: Windows
27
28Make sure the latest CMake is installed. Make sure Visual Studio 2019 is
29installed on your system along with all the Clang C++ toolchain components.
30Then
31
32 mkdir build
33 cd build
34 cmake . ../ -A x64 -T ClangCL
35
36A solution file should be generated. Then open the solution file in Visual
37studio and build the `gfxstream_backend` target.
38
39# Build: Android for host
40
41Be in the Android build system. Then
42
43 m libgfxstream_backend
44
45It then ends up in `out/host`
46
47This also builds for Android on-device.
48
49# Output artifacts
50
51 libgfxstream_backend.(dll|so|dylib)
52
53# Regenerating Vulkan code
54
55 scripts/generate-vulkan-sources.sh
56
57If you're in an AOSP checkout, this will also modify contents of the guest Vulkan encoder in `../goldfish-opengl`.
58
59# Regenerating GLES/RenderControl code
60
61First, build `build/gfxstream-generic-apigen`. Then run
62
63 scripts/generate-apigen-source.sh
64
65# Tests
66
67## Linux Tests
68
69There are a bunch of test executables generated. They require `libEGL.so` and `libGLESv2.so` and `libvulkan.so` to be available, possibly from your GPU vendor or ANGLE, in the `$LD_LIBRARY_PATH`.
70
71## Windows Tests
72
73There are a bunch of test executables generated. They require `libEGL.dll` and `libGLESv2.dll` and `vulkan-1.dll` to be available, possibly from your GPU vendor or ANGLE, in the `%PATH%`.
74
75## Android Host Tests
76
77These are currently not built due to the dependency on system libEGL/libvulkan to run correctly.
78
79# Structure
80
81- `CMakeLists.txt`: specifies all host-side build targets. This includes all
82 backends along with client/server setups that live only on the host. Some
83 - Backend implementations
84 - Implementations of the host side of various transports
85 - Frontends used for host-side testing with a mock implementation of guest
86 graphics stack (mainly Android)
87 - Frontends that result in actual Linux/macOS/Windows gles/vk libraries
88 (isolation / fault tolerance use case)
89- `Android.bp`: specifies all guest-side build targets for Android:
90 - Implementations of the guest side of various transports (above the kernel)
91 - Frontends
92- `BUILD.gn`: specifies all guest-side build targets for Fuchsia
93 - Implementations of the guest side of various transports (above the kernel)
94 - Frontends
95- `base/`: common libraries that are built for both the guest and host.
96 Contains utility code related to synchronization, threading, and suballocation.
97- `protocols/`: implementations of protocols for various graphics APIs. May contain
98code generators to make it easy to regen the protocol based on certain things.
99- `host-common/`: implementations of host-side support code that makes it
100 easier to run the server in a variety of virtual device environments.
101 Contains concrete implementations of auxiliary virtual devices such as
102 Address Space Device and Goldfish Pipe.
103- `stream-servers/`: implementations of various backends for various graphics
104 APIs that consume protocol. `gfxstream-virtio-gpu-renderer.cpp` contains a
105 virtio-gpu backend implementation.
106