Intermediate Graphics Library (IGL) is a cross-platform library that commands the GPU. It provides a single low-level cross-platform interface on top of various graphics APIs (e.g. OpenGL, Metal and Vulkan).
by facebookC++
Last 12 weeks · 793 commits
5 of 6 standards met
I tested on Qualcomm Adreno (TM) 750, 730, and other chips, and found that Vulkan consumes more CPU and memory compared to OpenGL ES. This seems inconsistent with our expectations. Do you see the same in your test data? When I used Android Studio to analyze the performance, I discovered that consumes the vast majority of the time in . Finally, the CPU spends most of its time in , , . According to the documentation https://github.com/rudybear/vulkan_best_practice_for_mobile_developers/blob/master/samples/performance/descriptor_management/descriptor_management_tutorial.md should be reused, rather than reallocated every frame. Do you also think so? If this is indeed the problem, do you have any optimization suggestions? I can proceed to implement them based on your plan.
Initially, IGL only supported the TextureFormat::B5G6R5_UNorm format, so AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM was mapped to TextureFormat::B5G6R5_UNorm. Later, I introduced TextureFormat::R5G6B5_UNorm(https://github.com/facebook/igl/pull/358), which introduced a mapping conflict: both TextureFormat::R5G6B5_UNorm and TextureFormat::B5G6R5_UNorm were forwarded to AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM, while the reverse mapping (from AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM back to an IGL texture format) could only resolve to TextureFormat::B5G6R5_UNorm. To fix this, I’ve standardized the mapping to exclusively pair AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM with TextureFormat::R5G6B5_UNorm. ⚠️ This is a breaking change: It may require migration work for existing users who previously relied on TextureFormat::B5G6R5_UNorm for Android Hardware Buffer workflows. Please carefully assess whether to merge this PR.
Repository: facebook/igl. Description: Intermediate Graphics Library (IGL) is a cross-platform library that commands the GPU. It provides a single low-level cross-platform interface on top of various graphics APIs (e.g. OpenGL, Metal and Vulkan). Stars: 3215, Forks: 214. Primary language: C++. Languages: C++ (85.6%), Objective-C++ (7.2%), C (4.2%), CMake (1.2%), Objective-C (0.9%). Latest release: v1.1.1 (11mo ago). Open PRs: 0, open issues: 0. Last activity: 3h ago. Community health: 87%. Top contributors: corporateshark, rudybear, EricGriffith, mmaurer, francoiscoulombe, metarokuz, vinsentli, nlutsenko, trviv, syeh1 and others.