tree: 1d9cdf69f5f0473c0f71c6e98121d6f4e2812456 [path history] [tgz]
  1. include/
  2. libvulkan/
  3. nulldrv/
  4. scripts/
  5. tests/
  6. vkjson/
  7. vkprofiles/
  8. .clang-format
  9. Android.bp
  10. OWNERS
  11. README.md
  12. TEST_MAPPING
vulkan/README.md

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 directly 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

Vulkan EDI Pipeline Update Guide

This guide outlines the three main parts for updating the Vulkan EDI pipeline.

Part 1: Update vk.py and vkjson_*.cc files

  • Location: Android repository : $ANDROID_BUILD_TOP/frameworks/native/vulkan
  • Command: python3 scripts/vkjson_codegen.py

Part 2: Update Vulkan Device Info Collector (cts Repository)

  • Location: Android repository: $ANDROID_BUILD_TOP/cts
  • Command: python3 common/device-side/device-info/src/com/android/compatibility/common/deviceinfo/scripts/code_generator.py

Part 3: Update the Protobuf Schemas (in google3)

A. Generate `VulkanDeviceInfo.deviceinfo.json

  • Location: Android repository root: $ANDROID_BUILD_TOP
  • Commands:
        # Build the necessary CTS modules
        mmma cts/tools/cts-device-info/ cts/common/device-side/device-info
    
        # Install the collector APK. Note: The path depends on your lunch target.
        adb install -r -g out/target/product/<target_name>/testcases/CtsDeviceInfo/arm64/CtsDeviceInfo.apk
    
        # Run the instrumented test to generate the file on the device
        adb shell am instrument --no-isolated-storage -w \
        -e class com.android.compatibility.common.deviceinfo.VulkanDeviceInfo \
        com.android.compatibility.common.deviceinfo/androidx.test.runner.AndroidJUnitRunner
    
        # Pull the generated JSON from the device
        adb pull /sdcard/device-info-files/VulkanDeviceInfo.deviceinfo.json
    

B. Generate Final Protobuf Files

Next, move to your google3 workspace to update the source files and run the final proto generator script.

  1. Update vk.py: Copy the vk.py from $ANDROID_BUILD_TOP/frameworks/native/vulkan/scripts file to wireless/android/partner/adl/proto/scripts/.

    • In the copied vk.py file, add a comment in the file to disable lint errors - # pylint: disable=all
  2. Update VulkanDeviceInfo.deviceinfo.json: Copy the JSON file generated in the previous step (A) to javatests/com/google/wireless/android/partner/adl/pipeline/extendeddeviceinfo/.

  3. Run Generator: Execute the following command to update the .proto files, apfe.sdl, and the ExtendedDeviceInfoTest.java test file.

    • Location: google3
    • Command: python3 wireless/android/partner/adl/proto/scripts/vulkan_proto_gen.py