diff options
author | Paul Thomson <paulthomson@google.com> | 2022-02-08 14:31:07 +0000 |
---|---|---|
committer | Paul Thomson <paulthomson@google.com> | 2022-02-08 14:31:07 +0000 |
commit | 3f8fbfe46bdb1dd1526687a84c644c1b2846a636 (patch) | |
tree | 7bf7238d34d1cdf3671a43fe4147a53606453504 /samples | |
parent | f3b1d8fd9a3dfb99df5b8ba7900b3493ee0329a8 (diff) | |
parent | 615ab4863f7d2e31d3037d0c6a0f641fd6fc0d07 (diff) | |
download | amber-android13-qpr3-s5-release.tar.gz |
Merge commit '615ab4863f7d2e31d3037d0c6a0f641fd6fc0d07' into mastert_frc_odp_330442040t_frc_odp_330442000t_frc_con_330443020t_frc_cbr_330443000t_frc_ase_330444010t_frc_art_330443060android-13.0.0_r83android-13.0.0_r82android-13.0.0_r81android-13.0.0_r80android-13.0.0_r79android-13.0.0_r78android-13.0.0_r77android-13.0.0_r76android-13.0.0_r75android-13.0.0_r74android-13.0.0_r73android-13.0.0_r72android-13.0.0_r71android-13.0.0_r70android-13.0.0_r69android-13.0.0_r68android-13.0.0_r67android-13.0.0_r66android-13.0.0_r65android-13.0.0_r64android-13.0.0_r63android-13.0.0_r62android-13.0.0_r61android-13.0.0_r60android-13.0.0_r59android-13.0.0_r58android-13.0.0_r57android-13.0.0_r56android-13.0.0_r55android-13.0.0_r54android-13.0.0_r53android-13.0.0_r52android-13.0.0_r51android-13.0.0_r50android-13.0.0_r49android-13.0.0_r48android-13.0.0_r47android-13.0.0_r46android-13.0.0_r45android-13.0.0_r44android-13.0.0_r43android-13.0.0_r42android-13.0.0_r41android-13.0.0_r40android-13.0.0_r39android-13.0.0_r38android-13.0.0_r37android-13.0.0_r36android-13.0.0_r35android-13.0.0_r34android-13.0.0_r33android-13.0.0_r32android-13.0.0_r30android-13.0.0_r29android-13.0.0_r28android-13.0.0_r27android-13.0.0_r24android-13.0.0_r23android-13.0.0_r22android-13.0.0_r21android-13.0.0_r20android-13.0.0_r19android-13.0.0_r18android-13.0.0_r17android-13.0.0_r16aml_uwb_331910010aml_uwb_331820070aml_uwb_331613010aml_uwb_331611010aml_uwb_331410010aml_uwb_331310030aml_uwb_331115000aml_uwb_331015040aml_uwb_330810010aml_tz4_332714070aml_tz4_332714050aml_tz4_332714010aml_tz4_331910000aml_tz4_331314030aml_tz4_331314020aml_tz4_331314010aml_tz4_331012050aml_tz4_331012040aml_tz4_331012000aml_go_wif_330911000aml_go_uwb_330912000aml_go_tz4_330912000aml_go_tet_330914010aml_go_swc_330913000aml_go_sta_330911000aml_go_sdk_330810000aml_go_sch_330911000aml_go_res_330912000aml_go_per_330912000aml_go_odp_330913000aml_go_odp_330912000aml_go_neu_330912000aml_go_net_330913000aml_go_mpr_330912000aml_go_ase_330913000aml_go_ads_330915100aml_go_ads_330915000aml_go_ads_330913000aml_go_adb_330913000aml_ase_331311020aml_ase_331112000aml_ase_331011020aml_ads_331920180aml_ads_331814200aml_ads_331710270aml_ads_331611190aml_ads_331511020aml_ads_331418080aml_ads_331131000android13-qpr3-s9-releaseandroid13-qpr3-s8-releaseandroid13-qpr3-s7-releaseandroid13-qpr3-s6-releaseandroid13-qpr3-s5-releaseandroid13-qpr3-s4-releaseandroid13-qpr3-s3-releaseandroid13-qpr3-s2-releaseandroid13-qpr3-s14-releaseandroid13-qpr3-s13-releaseandroid13-qpr3-s12-releaseandroid13-qpr3-s11-releaseandroid13-qpr3-s10-releaseandroid13-qpr3-s1-releaseandroid13-qpr3-releaseandroid13-qpr3-c-s8-releaseandroid13-qpr3-c-s7-releaseandroid13-qpr3-c-s6-releaseandroid13-qpr3-c-s5-releaseandroid13-qpr3-c-s4-releaseandroid13-qpr3-c-s3-releaseandroid13-qpr3-c-s2-releaseandroid13-qpr3-c-s12-releaseandroid13-qpr3-c-s11-releaseandroid13-qpr3-c-s10-releaseandroid13-qpr3-c-s1-releaseandroid13-qpr2-s9-releaseandroid13-qpr2-s8-releaseandroid13-qpr2-s7-releaseandroid13-qpr2-s6-releaseandroid13-qpr2-s5-releaseandroid13-qpr2-s3-releaseandroid13-qpr2-s2-releaseandroid13-qpr2-s12-releaseandroid13-qpr2-s11-releaseandroid13-qpr2-s10-releaseandroid13-qpr2-s1-releaseandroid13-qpr2-releaseandroid13-qpr2-b-s1-releaseandroid13-qpr1-s8-releaseandroid13-qpr1-s7-releaseandroid13-qpr1-s6-releaseandroid13-qpr1-s5-releaseandroid13-qpr1-s4-releaseandroid13-qpr1-s3-releaseandroid13-qpr1-s2-releaseandroid13-qpr1-s1-releaseandroid13-qpr1-releaseandroid13-mainline-uwb-releaseandroid13-mainline-tzdata4-releaseandroid13-mainline-go-wifi-releaseandroid13-mainline-go-uwb-releaseandroid13-mainline-go-tzdata4-releaseandroid13-mainline-go-tethering-releaseandroid13-mainline-go-sdkext-releaseandroid13-mainline-go-scheduling-releaseandroid13-mainline-go-resolv-releaseandroid13-mainline-go-permission-releaseandroid13-mainline-go-os-statsd-releaseandroid13-mainline-go-odp-releaseandroid13-mainline-go-neuralnetworks-releaseandroid13-mainline-go-networking-releaseandroid13-mainline-go-mediaprovider-releaseandroid13-mainline-go-media-swcodec-releaseandroid13-mainline-go-appsearch-releaseandroid13-mainline-go-adservices-releaseandroid13-mainline-go-adbd-releaseandroid13-mainline-appsearch-releaseandroid13-mainline-adservices-releaseandroid13-frc-odp-releaseandroid13-frc-conscrypt-releaseandroid13-frc-cellbroadcast-releaseandroid13-frc-art-releaseandroid13-devandroid13-d4-s2-releaseandroid13-d4-s1-releaseandroid13-d4-releaseandroid13-d3-s1-releaseandroid13-d2-releaseaml_tz4_332714010
Conflicts:
samples/Android.mk
Bug: b/201652781
Change-Id: Ia48f5389d9cde2b0730767e215d86e28cced7da6
Diffstat (limited to 'samples')
-rw-r--r-- | samples/CMakeLists.txt | 8 | ||||
-rw-r--r-- | samples/amber.cc | 8 | ||||
-rw-r--r-- | samples/android_helper.cc (renamed from samples/android_main.cc) | 18 | ||||
-rw-r--r-- | samples/config_helper_vulkan.cc | 98 |
4 files changed, 97 insertions, 35 deletions
diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index 3fa1882..1e91c4d 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -74,3 +74,11 @@ target_include_directories(image_diff PRIVATE "${CMAKE_BINARY_DIR}") target_link_libraries(image_diff libamber "lodepng") amber_default_compile_options(image_diff) set_target_properties(image_diff PROPERTIES OUTPUT_NAME "image_diff") + +if (ANDROID) + add_library(amber_ndk SHARED android_helper.cc ${AMBER_SOURCES}) + target_include_directories(amber_ndk PRIVATE "${CMAKE_BINARY_DIR}") + target_link_libraries(amber_ndk libamber ${AMBER_EXTRA_LIBS}) + amber_default_compile_options(amber_ndk) + target_compile_definitions(amber_ndk PRIVATE AMBER_ANDROID_MAIN=1) +endif() diff --git a/samples/amber.cc b/samples/amber.cc index d037ba4..5973dba 100644 --- a/samples/amber.cc +++ b/samples/amber.cc @@ -447,7 +447,15 @@ std::string disassemble(const std::string& env, } // namespace +#ifdef AMBER_ANDROID_MAIN +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wmissing-prototypes" +#pragma ide diagnostic ignored "OCUnusedGlobalDeclarationInspection" +int android_main(int argc, const char** argv) { +#pragma clang diagnostic pop +#else int main(int argc, const char** argv) { +#endif std::vector<std::string> args(argv, argv + argc); Options options; SampleDelegate delegate; diff --git a/samples/android_main.cc b/samples/android_helper.cc index b24a9bb..7da69ad 100644 --- a/samples/android_main.cc +++ b/samples/android_helper.cc @@ -18,16 +18,20 @@ #include <string> #include <vector> -extern int main(int argc, const char** argv); +extern int android_main(int argc, const char** argv); -extern "C" JNIEXPORT JNICALL int Java_com_google_amber_Amber_androidMain( +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wmissing-prototypes" +#pragma ide diagnostic ignored "OCUnusedGlobalDeclarationInspection" + +extern "C" JNIEXPORT JNICALL int Java_com_google_amber_Amber_androidHelper( JNIEnv* env, jobject, jobjectArray args, jstring stdoutFile, jstring stderrFile) { - const char* stdout_file_cstr = env->GetStringUTFChars(stdoutFile, NULL); - const char* stderr_file_cstr = env->GetStringUTFChars(stderrFile, NULL); + const char* stdout_file_cstr = env->GetStringUTFChars(stdoutFile, nullptr); + const char* stderr_file_cstr = env->GetStringUTFChars(stderrFile, nullptr); // Redirect std output to a file freopen(stdout_file_cstr, "w", stdout); @@ -43,7 +47,7 @@ extern "C" JNIEXPORT JNICALL int Java_com_google_amber_Amber_androidMain( for (jsize i = 0; i < arg_count; i++) { jstring js = static_cast<jstring>(env->GetObjectArrayElement(args, i)); - const char* arg_cstr = env->GetStringUTFChars(js, NULL); + const char* arg_cstr = env->GetStringUTFChars(js, nullptr); argv_string.push_back(arg_cstr); env->ReleaseStringUTFChars(js, arg_cstr); } @@ -53,5 +57,7 @@ extern "C" JNIEXPORT JNICALL int Java_com_google_amber_Amber_androidMain( for (const std::string& arg : argv_string) argv.push_back(arg.c_str()); - return main(argv.size(), argv.data()); + return android_main(static_cast<int>(argv.size()), argv.data()); } + +#pragma clang diagnostic pop diff --git a/samples/config_helper_vulkan.cc b/samples/config_helper_vulkan.cc index 68114ab..6a82a4a 100644 --- a/samples/config_helper_vulkan.cc +++ b/samples/config_helper_vulkan.cc @@ -758,25 +758,60 @@ amber::Result ConfigHelperVulkan::CheckVulkanPhysicalDeviceRequirements( const VkPhysicalDevice physical_device, const std::vector<std::string>& required_features, const std::vector<std::string>& required_extensions) { + available_device_extensions_ = GetAvailableDeviceExtensions(physical_device); + if (!AreAllExtensionsSupported(available_device_extensions_, + required_extensions)) { + return amber::Result("Device does not support all required extensions"); + } + for (const auto& ext : available_device_extensions_) { + if (ext == "VK_KHR_shader_float16_int8") + supports_shader_float16_int8_ = true; + else if (ext == "VK_KHR_8bit_storage") + supports_shader_8bit_storage_ = true; + else if (ext == "VK_KHR_16bit_storage") + supports_shader_16bit_storage_ = true; + else if (ext == "VK_EXT_subgroup_size_control") + supports_subgroup_size_control_ = true; + } + VkPhysicalDeviceFeatures required_vulkan_features = VkPhysicalDeviceFeatures(); if (supports_get_physical_device_properties2_) { - VkPhysicalDeviceSubgroupSizeControlFeaturesEXT size_control = - VkPhysicalDeviceSubgroupSizeControlFeaturesEXT(); - size_control.sType = + VkPhysicalDeviceSubgroupSizeControlFeaturesEXT + subgroup_size_control_features = {}; + VkPhysicalDeviceVariablePointerFeaturesKHR variable_pointers_features = {}; + VkPhysicalDeviceFloat16Int8FeaturesKHR float16_int8_features = {}; + VkPhysicalDevice8BitStorageFeaturesKHR storage_8bit_features = {}; + VkPhysicalDevice16BitStorageFeaturesKHR storage_16bit_features = {}; + + subgroup_size_control_features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT; - size_control.pNext = nullptr; + subgroup_size_control_features.pNext = nullptr; - VkPhysicalDeviceVariablePointerFeaturesKHR var_ptrs = - VkPhysicalDeviceVariablePointerFeaturesKHR(); - var_ptrs.sType = + // Add subgroup size control struct into the chain only if + // VK_EXT_subgroup_size_control is supported. + variable_pointers_features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR; - var_ptrs.pNext = &size_control; + variable_pointers_features.pNext = supports_subgroup_size_control_ + ? &subgroup_size_control_features + : nullptr; + + float16_int8_features.sType = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR; + float16_int8_features.pNext = &variable_pointers_features; + + storage_8bit_features.sType = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR; + storage_8bit_features.pNext = &float16_int8_features; + + storage_16bit_features.sType = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR; + storage_16bit_features.pNext = &storage_8bit_features; VkPhysicalDeviceFeatures2KHR features2 = VkPhysicalDeviceFeatures2KHR(); features2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR; - features2.pNext = &var_ptrs; + features2.pNext = &storage_16bit_features; auto vkGetPhysicalDeviceFeatures2KHR = reinterpret_cast<PFN_vkGetPhysicalDeviceFeatures2KHR>( @@ -794,13 +829,34 @@ amber::Result ConfigHelperVulkan::CheckVulkanPhysicalDeviceRequirements( } if ((feature == kVariablePointers && - var_ptrs.variablePointers == VK_FALSE) || + variable_pointers_features.variablePointers == VK_FALSE) || (feature == kVariablePointersStorageBuffer && - var_ptrs.variablePointersStorageBuffer == VK_FALSE) || + variable_pointers_features.variablePointersStorageBuffer == + VK_FALSE) || (feature == kSubgroupSizeControl && - size_control.subgroupSizeControl == VK_FALSE) || + subgroup_size_control_features.subgroupSizeControl == VK_FALSE) || (feature == kComputeFullSubgroups && - size_control.computeFullSubgroups == VK_FALSE)) { + subgroup_size_control_features.computeFullSubgroups == VK_FALSE) || + (feature == kFloat16Int8_Float16 && + float16_int8_features.shaderFloat16 == VK_FALSE) || + (feature == kFloat16Int8_Int8 && + float16_int8_features.shaderInt8 == VK_FALSE) || + (feature == k8BitStorage_Storage && + storage_8bit_features.storageBuffer8BitAccess == VK_FALSE) || + (feature == k8BitStorage_UniformAndStorage && + storage_8bit_features.uniformAndStorageBuffer8BitAccess == + VK_FALSE) || + (feature == k8BitStorage_PushConstant && + storage_8bit_features.storagePushConstant8 == VK_FALSE) || + (feature == k16BitStorage_Storage && + storage_16bit_features.storageBuffer16BitAccess == VK_FALSE) || + (feature == k16BitStorage_InputOutput && + storage_16bit_features.storageInputOutput16 == VK_FALSE) || + (feature == k16BitStorage_PushConstant && + storage_16bit_features.storagePushConstant16 == VK_FALSE) || + (feature == k16BitStorage_UniformAndStorage && + storage_16bit_features.uniformAndStorageBuffer16BitAccess == + VK_FALSE)) { return amber::Result("Device does not support all required features"); } } @@ -823,22 +879,6 @@ amber::Result ConfigHelperVulkan::CheckVulkanPhysicalDeviceRequirements( return amber::Result("Device does not support all required features"); } - available_device_extensions_ = GetAvailableDeviceExtensions(physical_device); - if (!AreAllExtensionsSupported(available_device_extensions_, - required_extensions)) { - return amber::Result("Device does not support all required extensions"); - } - for (const auto& ext : available_device_extensions_) { - if (ext == "VK_KHR_shader_float16_int8") - supports_shader_float16_int8_ = true; - else if (ext == "VK_KHR_8bit_storage") - supports_shader_8bit_storage_ = true; - else if (ext == "VK_KHR_16bit_storage") - supports_shader_16bit_storage_ = true; - else if (ext == "VK_EXT_subgroup_size_control") - supports_subgroup_size_control_ = true; - } - vulkan_queue_family_index_ = ChooseQueueFamilyIndex(physical_device); if (vulkan_queue_family_index_ == std::numeric_limits<uint32_t>::max()) { return amber::Result("Device does not support required queue flags"); |