Home | History | Annotate | Download | only in vulkan
      1 # frameworks/native/vulkan
      2 
      3 This subdirectory contains Android's Vulkan loader, as well as some Vulkan-related tools useful to platform developers.
      4 
      5 ## Coding Style
      6 
      7 We follow the [Chromium coding style](https://www.chromium.org/developers/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.
      8 
      9 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.
     10 
     11 ## Code Generation
     12 
     13 We generate several parts of the loader and tools from a Vulkan API description file, stored in `api/vulkan.api`. Code generation must be done manually because the generator tools aren't part of the platform toolchain (yet?). Files named `foo_gen.*` are generated from the API file and a template file named `foo.tmpl`.
     14 
     15  To run the generator:
     16 
     17 ### One-time setup
     18 - Install [golang](https://golang.org/), if you don't have it already.
     19 - Create a directory (e.g. `$HOME/lib/go`) for local go sources and binaries and add it to `$GOPATH`.
     20 - `$ git clone https://android.googlesource.com/platform/tools/gpu $GOPATH/src/android.googlesource.com/platform/tools/gpu`
     21 - `$ go get android.googlesource.com/platform/tools/gpu/api/...`
     22 - You should now have `$GOPATH/bin/apic`. You might want to add `$GOPATH/bin` to your `$PATH`.
     23 
     24 ### Generating code
     25 To generate `libvulkan/*_gen.*`,
     26 - `$ cd libvulkan`
     27 - `$ apic template ../api/vulkan.api code-generator.tmpl`
     28 Similar for `nulldrv/null_driver_gen.*`.
     29