1cc_library(
2    name = "gfxstream-vulkan-server",
3    srcs = [
4        "BorrowedImageVk.cpp",
5        "BufferVk.cpp",
6        "ColorBufferVk.cpp",
7        "CompositorVk.cpp",
8        "DebugUtilsHelper.cpp",
9        "DeviceLostHelper.cpp",
10        "DeviceOpTracker.cpp",
11        "DisplaySurfaceVk.cpp",
12        "DisplayVk.cpp",
13        "PostWorkerVk.cpp",
14        "RenderThreadInfoVk.cpp",
15        "SwapChainStateVk.cpp",
16        "VkAndroidNativeBuffer.cpp",
17        "VkCommonOperations.cpp",
18        "VkDecoder.cpp",
19        "VkDecoderGlobalState.cpp",
20        "VkDecoderSnapshot.cpp",
21        "VkDecoderSnapshotUtils.cpp",
22        "VkEmulatedPhysicalDeviceMemory.cpp",
23        "VkFormatUtils.cpp",
24        "VkReconstruction.cpp",
25        "VulkanDispatch.cpp",
26        "VulkanHandleMapping.cpp",
27        "VulkanStream.cpp",
28        "vk_util.cpp",
29    ] + glob([
30        "**/*.h",
31        "*.h",
32    ]),
33    hdrs = [
34        "VkDecoderGlobalState.cpp",
35        "VkSubDecoder.cpp",
36    ],
37    copts = [
38        "-Wno-return-type-c-linkage",
39        "-Wno-extern-c-compat",
40    ],
41    defines = [
42        "VK_GFXSTREAM_STRUCTURE_TYPE_EXT",
43        "EMUGL_BUILD",
44        "BUILDING_EMUGL_COMMON_SHARED",
45        "GFXSTREAM_ENABLE_HOST_GLES=1",
46    ] + select({
47        "@platforms//os:macos": [
48            "VK_USE_PLATFORM_METAL_EXT",
49            "VK_USE_PLATFORM_MACOS_MVK",
50        ],
51        "@platforms//os:windows": ["VK_USE_PLATFORM_WIN32_KHR"],
52        "@platforms//os:linux": [],
53        "//conditions:default": [],
54    }),
55    includes = [
56        ".",
57        "cereal",
58        "cereal/common",
59    ],
60    visibility = ["//visibility:public"],
61    deps = [
62        # "//external/angle:angle-headers",
63        "//hardware/google/aemu/snapshot:aemu-snapshot",
64        "//hardware/google/gfxstream/common/vulkan:gfxstream_vulkan_headers",
65        "//hardware/google/gfxstream/host:gfxstream-compressedTextures",
66        "//hardware/google/gfxstream/host:gfxstream_host_headers",
67        "//hardware/google/gfxstream/host/apigen-codec-common",
68        "//hardware/google/gfxstream/host/gl:gfxstream-gl-host-common",
69        "//hardware/google/gfxstream/host/gl:gl_headers",
70        "//hardware/google/gfxstream/host/vulkan:OpenglRender_vulkan_cereal",
71        "//hardware/google/gfxstream/host/vulkan:emulated_textures",
72        "//hardware/google/gfxstream/third-party/glm",
73        "//hardware/google/gfxstream/third-party/renderdoc",
74        "//hardware/google/gfxstream/utils:gfxstream_utils",
75    ],
76)
77
78cc_library(
79    name = "OpenglRender_vulkan_cereal",
80    srcs = [
81        "cereal/common/goldfish_vk_deepcopy.cpp",
82        "cereal/common/goldfish_vk_dispatch.cpp",
83        "cereal/common/goldfish_vk_extension_structs.cpp",
84        "cereal/common/goldfish_vk_marshaling.cpp",
85        "cereal/common/goldfish_vk_reserved_marshaling.cpp",
86        "cereal/common/goldfish_vk_transform.cpp",
87    ] + glob([
88        "**/*.h",
89        "*.h",
90    ]),
91    defines = [
92        "EMUGL_BUILD",
93        "BUILDING_EMUGL_COMMON_SHARED",
94        "VK_GFXSTREAM_STRUCTURE_TYPE_EXT",
95        "VK_GOOGLE_gfxstream",
96    ] + select({
97        "@platforms//os:macos": [
98            "VK_USE_PLATFORM_METAL_EXT",
99            "VK_USE_PLATFORM_MACOS_MVK",
100        ],
101        "@platforms//os:windows": ["VK_USE_PLATFORM_WIN32_KHR"],
102        "@platforms//os:linux": [],
103        "//conditions:default": [],
104    }),
105    includes = [
106        ".",
107        "cereal/common",
108    ],
109    deps = [
110        "//hardware/google/aemu/base:aemu-base-headers",
111        "//hardware/google/aemu/host-common:aemu-host-common-headers",
112        "//hardware/google/gfxstream:gfxstream-gl-host-common-headers",
113        "//hardware/google/gfxstream/common/vulkan:gfxstream_vulkan_headers",
114        "//hardware/google/gfxstream/host:gfxstream_host_headers",
115        "//hardware/google/gfxstream/host/backend:gfxstream_backend",
116        "//hardware/google/gfxstream/host/features:gfxstream_features",
117        "//hardware/google/gfxstream/host/tracing:gfxstream_host_tracing",
118        "//hardware/google/gfxstream/utils:gfxstream_utils",
119    ],
120)
121
122cc_library(
123    name = "emulated_textures",
124    srcs = [
125        "emulated_textures/AstcTexture.cpp",
126        "emulated_textures/CompressedImageInfo.cpp",
127        "emulated_textures/GpuDecompressionPipeline.cpp",
128    ] + glob([
129        "**/*.h",
130        "**/*.inl",
131    ]),
132    defines = [
133        "EMUGL_BUILD",
134        "BUILDING_EMUGL_COMMON_SHARED",
135        "VK_GFXSTREAM_STRUCTURE_TYPE_EXT",
136        "VK_GOOGLE_gfxstream",
137    ] + select({
138        "@platforms//os:macos": [
139            "VK_USE_PLATFORM_METAL_EXT",
140            "VK_USE_PLATFORM_MACOS_MVK",
141        ],
142        "@platforms//os:windows": ["VK_USE_PLATFORM_WIN32_KHR"],
143        "@platforms//os:linux": [],
144        "//conditions:default": [],
145    }),
146    includes = [
147        ".",
148        "cereal/common",
149    ],
150    deps = [
151        "//hardware/google/aemu/host-common:aemu-host-common-headers",
152        "//hardware/google/gfxstream:gfxstream-gl-host-common-headers",
153        "//hardware/google/gfxstream/common/vulkan:gfxstream_vulkan_headers",
154        "//hardware/google/gfxstream/host:gfxstream_host_headers",
155        "//hardware/google/gfxstream/utils:gfxstream_utils",
156    ],
157)
158