[Mesa-dev] [PATCH 00/23] anv: Implement VK_ANDROID_native_buffer

Chad Versace chadversary at chromium.org
Sat Sep 2 08:17:23 UTC 2017


This series adds Android support to Anvil. And Android requires
VK_ANDROID_native_buffer.


I tested the series on 64-bit ARC++ on a Skylake Chromebook with a 3.18
kernel. (ARC++ is the Android container in Chrome OS). (Yes, I said 3.18.
That's not a typo).


Here's my test results:

  - A little, spinning cube demo APK works, proving that the window
    system integration is, if not fully correct, at least good enough.

  - dEQP from android-cts-7.1_r8-linux_x86-x86 has 1 failure:

     Passed:         66889/81423 (82.2%)
     Failed:             1/81423 (0.0%)
     Not supported:  14529/81423 (17.8%)
     Warnings:           4/81423 (0.0%)

     The sole failure was
     dEQP-VK.pipeline.image_view.view_type.cube_array.format.r16g16_sint.component_swizzle.one_r_g_zero

  - The Linux build doesn't break.


The exact code tested, and this patch series, live at:
    tag  chadv/review/arc-vulkan-v01
    url  git://git.kiwitree.net/~chadv/mesa
    cgit http://git.kiwitree.net/cgit/~chadv/mesa/tag/?h=chadv/review/arc-vulkan-v01


Note that Mesa's ARC++ build uses Autotools, not Android.mk. This series
probably broke the Android.mk files. Someone, please review and test
that.


Each patch but the last is just prep. You should read the last patch
first to better understand the goal, then afterwards review the series
linearly from the beginning.


Chad Versace (23):
  vulkan: Import vk_android_native_buffer.h
  vulkan: Add #ifdef hack to vk_android_native_buffer.h
  vulkan/registry: Add VK_ANDROID_native_buffer
  vulkan/util: Teach gen_enum_to_str.py to parse mutliple XML files
  vulkan/registry: Feed vk_android_native_buffer.xml to
    gen_enum_to_str.py
  anv: Teach generator scripts how to parse mutliple XML files
  anv: Feed vk_android_native_buffer.xml to generators
  anv/android: Disable surface and swapchain extensions
  anv: Annotate entrypoint table with index and func name
  anv: Link to Android libraries in the autotools build
  intel: Move definition of LOG_TAG from header into Makefiles
  intel: Add simple logging façade for Android
  anv: Better support for Android logging
  anv/image: Better var names for image-create-info structs
  anv/image: Refactor how tiling is chosen
  anv/image: Refactor creation of aux surfaces
  anv: In anv_image, track anv_device_memory* instead of anv_bo*
  anv: Add field anv_image::mem_is_owned
  anv: Add flag NO_CLOSE_FD for anv_bo_cache_import()
  anv: Add flag IGNORE_SIZE_PARAM for anv_bo_cache_import()
  anv: Add func anv_gem_get_tiling()
  HACK: anv: Fix query of ELF build-id on ARC++
  anv: Implement VK_ANDROID_native_buffer

 include/vulkan/vk_android_native_buffer.h        |  96 +++++
 src/Makefile.am                                  |   2 +
 src/intel/Android.blorp.mk                       |   2 +
 src/intel/Android.common.mk                      |   2 +
 src/intel/Android.vulkan.mk                      |  21 +-
 src/intel/Makefile.am                            |   3 +-
 src/intel/Makefile.sources                       |   7 +-
 src/intel/Makefile.vulkan.am                     |  26 +-
 src/intel/common/gen_debug.h                     |   1 -
 src/intel/common/intel_log.c                     |  87 +++++
 src/intel/common/intel_log.h                     |  82 +++++
 src/intel/vulkan/anv_allocator.c                 |  35 +-
 src/intel/vulkan/anv_android.c                   | 246 +++++++++++++
 src/intel/vulkan/anv_blorp.c                     |  12 +-
 src/intel/vulkan/anv_device.c                    |  61 +++-
 src/intel/vulkan/anv_entrypoints_gen.py          |  32 +-
 src/intel/vulkan/anv_extensions.py               |  53 ++-
 src/intel/vulkan/anv_gem.c                       |  16 +
 src/intel/vulkan/anv_image.c                     | 441 ++++++++++++++++-------
 src/intel/vulkan/anv_intel.c                     |   6 +-
 src/intel/vulkan/anv_private.h                   |  51 ++-
 src/intel/vulkan/anv_queue.c                     |   2 +-
 src/intel/vulkan/anv_util.c                      |  50 +--
 src/intel/vulkan/anv_wsi.c                       |   2 +-
 src/intel/vulkan/genX_cmd_buffer.c               |  38 +-
 src/mesa/drivers/dri/i965/Android.mk             |  23 +-
 src/mesa/drivers/dri/i965/Makefile.am            |   1 +
 src/vulkan/Android.mk                            |   9 +-
 src/vulkan/Makefile.am                           |   9 +-
 src/vulkan/registry/vk_android_native_buffer.xml |  52 +++
 src/vulkan/util/gen_enum_to_str.py               |  39 +-
 31 files changed, 1207 insertions(+), 300 deletions(-)
 create mode 100644 include/vulkan/vk_android_native_buffer.h
 create mode 100644 src/intel/common/intel_log.c
 create mode 100644 src/intel/common/intel_log.h
 create mode 100644 src/intel/vulkan/anv_android.c
 create mode 100644 src/vulkan/registry/vk_android_native_buffer.xml

-- 
2.13.5



More information about the mesa-dev mailing list