• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/bin/sh
2
3# Copyright 2022 The Android Open Source Project
4#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9#      http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16
17PROJECT_ROOT=$(pwd)
18
19WHICH=which
20if [[ "$OSTYPE" == "msys" ]]; then
21    WHICH=where
22fi
23
24# Detect clang-format
25
26if ! $WHICH clang-format > /dev/null; then
27    echo "Failed to find clang-format." 1>&2
28    exit 1
29fi
30
31# Generate Vulkan headers
32VULKAN_HEADERS_ROOT=$PROJECT_ROOT/include/vulkan
33rm -rf $VULKAN_HEADERS_ROOT && mkdir -p $VULKAN_HEADERS_ROOT
34if [ $? -ne 0 ]; then
35    echo "Failed to clear the old Vulkan headers." 1>&2
36    exit 1
37fi
38
39cd registry/vulkan/xml && make GENOPTS="-removeExtensions VK_GOOGLE_gfxstream" GENERATED=$VULKAN_HEADERS_ROOT
40if [ $? -ne 0 ]; then
41    echo "Failed to generate Vulkan headers." 1>&2
42    exit 1
43fi
44
45cd $PROJECT_ROOT
46
47AOSP_DIR=$(pwd)/../../
48VK_CEREAL_GUEST_DIR=$AOSP_DIR/device/generic/goldfish-opengl
49VK_CEREAL_HOST_DIR=$AOSP_DIR/device/generic/vulkan-cereal
50export VK_CEREAL_GUEST_ENCODER_DIR=$VK_CEREAL_GUEST_DIR/system/vulkan_enc
51export VK_CEREAL_GUEST_HAL_DIR=$VK_CEREAL_GUEST_DIR/system/vulkan
52export VK_CEREAL_HOST_DECODER_DIR=$VK_CEREAL_HOST_DIR/stream-servers/vulkan
53export VK_CEREAL_HOST_INCLUDE_DIR=$VK_CEREAL_HOST_DIR/stream-servers
54export VK_CEREAL_HOST_SCRIPTS_DIR=$VK_CEREAL_HOST_DIR/scripts
55export VK_CEREAL_BASELIB_PREFIX=aemu/base
56export VK_CEREAL_BASELIB_LINKNAME=aemu-base.headers
57export VK_CEREAL_VK_HEADER_TARGET=gfxstream_vulkan_headers
58
59VK_CEREAL_OUTPUT_DIR=$VK_CEREAL_HOST_DECODER_DIR/cereal
60if [ -d "$VK_CEREAL_GUEST_DIR" ]; then
61    mkdir -p $VK_CEREAL_GUEST_ENCODER_DIR
62    mkdir -p $VK_CEREAL_GUEST_HAL_DIR
63fi
64if [ -d "$VK_CEREAL_HOST_DIR" ]; then
65    mkdir -p $VK_CEREAL_HOST_DECODER_DIR
66    mkdir -p $VK_CEREAL_OUTPUT_DIR
67fi
68
69VULKAN_REGISTRY_DIR=$AOSP_DIR/external/gfxstream-protocols/registry/vulkan
70VULKAN_REGISTRY_XML_DIR=$VULKAN_REGISTRY_DIR/xml
71VULKAN_REGISTRY_SCRIPTS_DIR=$VULKAN_REGISTRY_DIR/scripts
72
73python3 $VULKAN_REGISTRY_SCRIPTS_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $VK_CEREAL_OUTPUT_DIR
74
75
76# Generate VK_ANDROID_native_buffer specific Vulkan definitions.
77if [ -d $VK_CEREAL_HOST_DECODER_DIR ]; then
78    OUT_DIR=$VK_CEREAL_HOST_DECODER_DIR
79    OUT_FILE_BASENAME="vk_android_native_buffer.h"
80
81    python3 registry/vulkan/scripts/genvk.py -registry registry/vulkan/xml/vk.xml -o $OUT_DIR \
82        $OUT_FILE_BASENAME
83
84    if [ $? -ne 0 ]; then
85        echo "Failed to generate vk_android_native_buffer.h" 1>&2
86        exit 1
87    fi
88    if ! clang-format -i $OUT_DIR/$OUT_FILE_BASENAME; then
89        echo "Failed to reformat vk_android_native_buffer.h" 1>&2
90        exit 1
91    fi
92fi
93
94# Generate gfxstream specific Vulkan definitions.
95for OUT_DIR in $VK_CEREAL_HOST_DECODER_DIR $VK_CEREAL_GUEST_ENCODER_DIR; do
96    if [ -d "$OUT_DIR" ]; then
97        OUT_FILE_BASENAME=vulkan_gfxstream.h
98        python3 registry/vulkan/scripts/genvk.py -registry registry/vulkan/xml/vk.xml -o $OUT_DIR \
99            $OUT_FILE_BASENAME
100
101        if [ $? -ne 0 ]; then
102            echo "Failed to generate gfxstream specific vulkan headers." 1>&2
103            exit 1
104        fi
105        if ! clang-format -i $OUT_DIR/$OUT_FILE_BASENAME; then
106            echo "Failed to reformat gfxstream specific vulkan headers." 1>&2
107            exit 1
108        fi
109    fi
110done
111