7559c76d12
vkGetInstanceProcAddr(nullptr, ...) is valid and is effectively a globally dispatched function, so it's consistent to support querying vkGetInstanceProcAddr from itself without an instance. This is required in Vulkan 1.2 and is supported for all Vulkan versions by the loader on other platforms. To maximize app compatibility and minimize surprises, this makes it work on Android also, even for pre-1.2 versions where the result is undefined by the spec. Bug: 157173922 Test: dEQP-VK.api.version_check.entry_points with https://gerrit.khronos.org/#/c/5490/ applied and modified to check even on pre-1.2 implementations. Change-Id: I820dd1239df54a415b7ff5db47cf2c2b349f6155 |
||
---|---|---|
.. | ||
include | ||
libvulkan | ||
nulldrv | ||
scripts | ||
vkjson | ||
.clang-format | ||
Android.bp | ||
OWNERS | ||
README.md | ||
TEST_MAPPING |
frameworks/native/vulkan
This subdirectory contains Android's Vulkan loader, as well as some Vulkan-related tools useful to platform developers.
Documentation
The former contents of doc/implementors_guide/ are now at https://source.android.com/devices/graphics/implement-vulkan.
Coding Style
We follow the Chromium coding style for naming and formatting, except with four-space indentation instead of two spaces. In general, any C++ features supported by the prebuilt platform toolchain are allowed.
Use "clang-format -style=file" to format all C/C++ code, except code imported verbatim from elsewhere. Setting up git-clang-format in your environment is recommended.
Code Generation
We generate several parts of the loader and tools driectly from the Vulkan Registry (external/vulkan-headers/registry/vk.xml). Code generation must be done manually because the generator is not part of the platform toolchain (yet?). Files named foo_gen.*
are generated by the code generator.
Run The Code Generator
Install Python3 (if not already installed) and execute below:
$ ./scripts/code_generator.py