Skip to content

Commit 9be3f07

Browse files
authored
ci ndk-r16b (#2104)
* reset * fix build with old vulkan header
1 parent b9296c2 commit 9be3f07

2 files changed

Lines changed: 54 additions & 2 deletions

File tree

.github/workflows/android-armv8-gpu.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,31 @@ jobs:
2424
run: export PATH=`pwd`/1.1.114.0/x86_64/bin:$PATH && mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_HOME/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_ABI="arm64-v8a" -DANDROID_PLATFORM=android-24 -DNCNN_VULKAN=ON ..
2525
- name: build
2626
run: cmake --build build -j 2
27+
28+
android-aarch64-gpu-ndk-r16b:
29+
runs-on: ubuntu-latest
30+
steps:
31+
- uses: actions/checkout@v2
32+
with:
33+
submodules: true
34+
- name: cache-vulkansdk
35+
id: cache-vulkansdk
36+
uses: actions/cache@v1
37+
with:
38+
path: "1.1.114.0"
39+
key: vulkansdk-linux-x86_64-1.1.114.0
40+
- name: vulkansdk
41+
if: steps.cache-vulkansdk.outputs.cache-hit != 'true'
42+
run: |
43+
wget https://sdk.lunarg.com/sdk/download/1.1.114.0/linux/vulkansdk-linux-x86_64-1.1.114.0.tar.gz?Human=true -O vulkansdk-linux-x86_64-1.1.114.0.tar.gz
44+
tar -xf vulkansdk-linux-x86_64-1.1.114.0.tar.gz
45+
rm -rf 1.1.114.0/source 1.1.114.0/samples
46+
find 1.1.114.0 -type f | grep -v -E 'vulkan|glslang' | xargs rm
47+
- name: ndk-r16b
48+
run: |
49+
wget https://dl.google.com/android/repository/android-ndk-r16b-linux-x86_64.zip -O $GITHUB_WORKSPACE/android-ndk-r16b-linux-x86_64.zip
50+
cd $GITHUB_WORKSPACE && unzip -q android-ndk-r16b-linux-x86_64.zip
51+
- name: configure
52+
run: export PATH=`pwd`/1.1.114.0/x86_64/bin:$PATH && mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=$GITHUB_WORKSPACE/android-ndk-r16b/build/cmake/android.toolchain.cmake -DANDROID_ABI="arm64-v8a" -DANDROID_PLATFORM=android-24 -DNCNN_VULKAN=ON ..
53+
- name: build
54+
run: cmake --build build -j 2

src/gpu.cpp

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,32 @@ PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR = 0;
122122
#endif // __ANDROID_API__ >= 26
123123

124124
// compile with old vulkan sdk
125+
#if VK_HEADER_VERSION < 70
126+
#define VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES (VkStructureType)1000094000
127+
typedef enum VkSubgroupFeatureFlagBits
128+
{
129+
VK_SUBGROUP_FEATURE_BASIC_BIT = 0x00000001,
130+
VK_SUBGROUP_FEATURE_VOTE_BIT = 0x00000002,
131+
VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 0x00000004,
132+
VK_SUBGROUP_FEATURE_BALLOT_BIT = 0x00000008,
133+
VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 0x00000010,
134+
VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 0x00000020,
135+
VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 0x00000040,
136+
VK_SUBGROUP_FEATURE_QUAD_BIT = 0x00000080,
137+
VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 0x00000100,
138+
VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
139+
} VkSubgroupFeatureFlagBits;
140+
typedef VkFlags VkSubgroupFeatureFlags;
141+
typedef struct VkPhysicalDeviceSubgroupProperties
142+
{
143+
VkStructureType sType;
144+
void* pNext;
145+
uint32_t subgroupSize;
146+
VkShaderStageFlags supportedStages;
147+
VkSubgroupFeatureFlags supportedOperations;
148+
VkBool32 quadOperationsInAllStages;
149+
} VkPhysicalDeviceSubgroupProperties;
150+
#endif // VK_HEADER_VERSION < 70
125151
#if VK_HEADER_VERSION < 80
126152
#define VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR (VkStructureType)1000177000
127153
typedef struct VkPhysicalDevice8BitStorageFeaturesKHR
@@ -761,13 +787,11 @@ int create_gpu_instance()
761787
{
762788
void* queryDeviceProperties = 0;
763789

764-
#if VK_VERSION_1_1
765790
// query subgroup
766791
VkPhysicalDeviceSubgroupProperties physicalDeviceSubgroupProperties;
767792
physicalDeviceSubgroupProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES;
768793
physicalDeviceSubgroupProperties.pNext = queryDeviceProperties;
769794
queryDeviceProperties = &physicalDeviceSubgroupProperties;
770-
#endif
771795

772796
VkPhysicalDeviceProperties2KHR queryProperties;
773797
queryProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR;

0 commit comments

Comments
 (0)