-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[chrome.angle] Force Pure RISCV64 Support #4
[chrome.angle] Force Pure RISCV64 Support #4
Conversation
Signed-off-by: McKnight22 <[email protected]>
I changed the tile of this PR to keep align with other PRs for chrome porting work, please check it out. |
android/angle_apk.gni
Outdated
@@ -46,14 +46,14 @@ if (enable_java_templates) { | |||
deps = [ ":${invoker.package_name}_assets" ] | |||
if (symbol_level != 0) { | |||
deps += [ ":compressed_symbols" ] | |||
if (android_64bit_target_cpu) { | |||
if (android_64bit_target_cpu && !invoker.skip_secondary_abi) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please clarify why you find out these two changes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please clarify why you find out these two changes.
For these 2 changes, it's due to android_secondary_abi_toolchain introduced here and android_secondary_abi_toolchain should be skipped for Android RISCV64 target to enable pure RISCV64 support.
utilize the definition of skip_secondary_abi_for_cq and android_secondary_abi_cpu directly for Android RISCV64 Signed-off-by: McKnight22 <[email protected]>
@@ -46,14 +46,14 @@ if (enable_java_templates) { | |||
deps = [ ":${invoker.package_name}_assets" ] | |||
if (symbol_level != 0) { | |||
deps += [ ":compressed_symbols" ] | |||
if (android_64bit_target_cpu) { | |||
if (android_64bit_target_cpu && defined(android_secondary_abi_cpu)) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
2nd review:
建议用 android_secondary_abi_toolchain
, 和下面代码结合比较紧密,好理解。
deps += [ ":compressed_symbols($android_secondary_abi_toolchain)" ] | ||
} | ||
} | ||
|
||
uncompress_shared_libraries = true | ||
|
||
if (android_64bit_target_cpu) { | ||
if (android_64bit_target_cpu && defined(android_secondary_abi_cpu)) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
2nd review:
建议用 android_secondary_abi_toolchain
, 和下面代码结合比较紧密,好理解。
先关闭这个 pr,新建 #5 作为总结性提交。 |
This CL improves performance compared to the existing code as well as allows using non-std mutex implementations. Also acts as a base for future changes. CL adds new build option: angle_enable_global_mutex_recursion = is_android && angle_enable_vulkan "mutex_recursion" work same way as `std::recursive_mutex` before. It will help in situations when Vulkan API may return back to the ANGLE. For example: RenderDoc layer EGL deadlock. Automatic loading of "libVkLayer_GLES_RenderDoc.so" layer causes deadlock in EGL. Recursion stack: #1 pc 000000000029ea80 /vendor/lib64/egl/libGLESv2_angle.so (egl::GlobalMutexHelper::lock(int)+596) #2 pc 000000000029c59c /vendor/lib64/egl/libGLESv2_angle.so (EGL_GetError+32) #4 pc 0000000000062368 /system/lib64/libEGL.so (eglQueryString+20) #5 pc 0000000000508fec /data/local/debug/vulkan/libVkLayer_GLES_RenderDoc.so google#20 pc 0000000000016690 /system/lib64/libvulkan.so (vulkan::api::EnumerateInstanceLayerProperties(unsigned int*, VkLayerProperties*)+40) google#21 pc 00000000005aa030 /vendor/lib64/egl/libGLESv2_angle.so (rx::RendererVk::initialize(rx::DisplayVk*, egl::Display*, char const*, char const*)+292) google#26 pc 000000000029c7e8 /vendor/lib64/egl/libGLESv2_angle.so (EGL_Initialize+192) Additionally, recursive mutex will partially solve Android SurfaceTexture deadlock (angleproject:4354). Some performance numbers for 1000'000 `eglGetError()` calls. Mutex Time (ms.) Android S906B egl::GetGlobalMutex()(std::recursive_mutex) 41.4 (Default) GlobalMutex (std::recursive_mutex) 39.1 (Recursive) GlobalMutex (std::mutex) 34.9 (Debug) GlobalMutex (std::mutex) 34.7 (Default) GlobalMutex (std::mutex) 34.4 Windows egl::GetGlobalMutex()(std::recursive_mutex) 20.5 (Default) GlobalMutex (std::recursive_mutex) 20.0 (Recursive) GlobalMutex (std::mutex) 21.9 (Debug) GlobalMutex (std::mutex) 20.5 (Default) GlobalMutex (std::mutex) 19.9 Note: Recursive GlobalMutex enabled only for Android Vulkan by default. Original fix: https://chromium-review.googlesource.com/c/angle/angle/+/2029218 Bug: angleproject:8101 Bug: angleproject:4354 Test: angle_unittests --gtest_filter=GlobalMutexTest.* Change-Id: I9e9d9b5c598ad1177ffa147ea690bd955946a712 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4401940 Commit-Queue: Igor Nazarov <[email protected]> Reviewed-by: Charlie Lao <[email protected]> Reviewed-by: Shahbaz Youssefi <[email protected]>
No description provided.