<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Nov 7, 2017 at 6:47 AM, Chad Versace <span dir="ltr"><<a href="mailto:chadversary@chromium.org" target="_blank">chadversary@chromium.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Overview:<br>
<br>
    This series implements 3 extensions:<br>
<br>
        VK_EXT_external_memory_dma_buf<br>
        VK_EXT_queue_family_foreign<br>
        VK_EXT_image_drm_format_<wbr>modifier<br>
<br>
    The patch series lives on my tag 'chadv/review/anv-dma-buf-v01'<wbr>.<br>
    <a href="http://git.kiwitree.net/cgit/~chadv/mesa/log/?h=chadv/review/anv-dma-buf-v01" rel="noreferrer" target="_blank">http://git.kiwitree.net/cgit/~<wbr>chadv/mesa/log/?h=chadv/<wbr>review/anv-dma-buf-v01</a><br>
<br>
    The work-in-progress lives on my branch 'wip/anv-dma-buf'.<br>
    <a href="http://git.kiwitree.net/cgit/~chadv/mesa/log/?h=wip/anv-dma-buf" rel="noreferrer" target="_blank">http://git.kiwitree.net/cgit/~<wbr>chadv/mesa/log/?h=wip/anv-dma-<wbr>buf</a><br>
<br>
Specifications:<br>
<br>
    For each extension, you can find a git branch of the Vulkan<br>
    specification, as well as an online build of the spec, at<br>
    <a href="http://kiwitree.net/~chadv/vulkan/" rel="noreferrer" target="_blank">http://kiwitree.net/~chadv/<wbr>vulkan/</a>.<br>
<br>
    All 3 extension specifications are still drafts at various stages in the<br>
    spec lifecycle.<br>
<br>
        - VK_EXT_external_memory_dma_buf<br>
<br>
          I'll ask Khronos tomorrow morning (Wed 8 Nov) to merge this<br>
          extension. That would schedule it for publication no later<br>
          Fri 17 Nov, unless something goes wrong.<br>
<br>
        - VK_EXT_queue_family_foreign<br>
<br>
          This extension is a slow, little thorn in my side. But it's needed<br>
          for spec correctness in the interaction among<br>
          VK_KHR_external_memory + VK_EXT_external_memory_dma_buf<br>
          + VK_EXT_image_drm_format_<wbr>modifier. In anvil today, in this patch<br>
          series, it's implementation is a no-op.<br>
<br>
          In Khronos, the discussion on this extension is wrapping up.<br>
          I expect to ask Khronos to merge it no later than Wed 15 Nov, but<br>
          hopefully sooner.<br>
<br>
        - VK_EXT_image_drm_format_<wbr>modifier<br>
<br>
          This is the big extension in the series. Its API is complete, in<br>
          my opinion, and the specification language appears complete to<br>
          the untrained eye. But there remain a few loose ends in the spec<br>
          language that I need to finish before submitting it to Khronos.<br>
          I've documented all the loose ends in the TODO section of the<br>
          extensions's appendix [1].<br>
<br>
          [1]: <a href="http://git.kiwitree.net/cgit/~chadv/vulkan-spec/tree/doc/specs/vulkan/appendices/VK_EXT_image_drm_format_modifier.txt?h=1.0-VK_EXT_image_drm_format_modifier" rel="noreferrer" target="_blank">http://git.kiwitree.net/cgit/~<wbr>chadv/vulkan-spec/tree/doc/<wbr>specs/vulkan/appendices/VK_<wbr>EXT_image_drm_format_modifier.<wbr>txt?h=1.0-VK_EXT_image_drm_<wbr>format_modifier</a>].<br>
<br>
          The API is complete, though, modulo review on mesa-dev. So please<br>
          proceed to review the extension language and the implementation.<br>
<br>
Testing:<br>
<br>
    - vkcube<br>
<br>
      I've tested portions of VK_EXT_image_drm_format_<wbr>modifier with<br>
      a hacked version of krh's vkcube [2]. The following checklist<br>
      shows what I've tested so far.<br>
<br>
        [x] vkGetPhysicalDeviceFormatPrope<wbr>rties2KHR<br>
        [x] vkGetPhysicalDeviceImageFormat<wbr>Properties2KHR<br>
        [x] vkCreateImage<br>
            [x] VkImageDrmFormatModifierListCr<wbr>eateInfoEXT<br>
            [ ] VkImageExplicitDrmFormatModifi<wbr>erEXT<br>
        [ ] Resolves of compression surfaces<br>
        [x] vkGetImageDrmFormatModifierEXT<br>
        [x] vkGetImageSubresouceLayout<br>
<br>
      [2]: vkcube: <a href="http://github.com/chadversary/vkcube/commits/wip/vk-drm-format-mods" rel="noreferrer" target="_blank">http://github.com/chadversary/<wbr>vkcube/commits/wip/vk-drm-<wbr>format-mods</a><br>
<br>
    - vk-gl-cts<br>
<br>
      I'm doing a full run of dEQP-VK.*. I'm still waiting.<br>
<br>
    - crucible<br>
<br>
      We really need to write crucible tests to hammer some tricky<br>
      corner cases.  I haven't written them yet. Volunteers?<br></blockquote><div><br></div><div>If you expect anything other than anv to implement this, I think those tests should probably go in vk-gl-cts.  I'm sorry.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Chad Versace (30):<br>
  anv: Remove unused variable 'gen'<br>
  anv: Suffix anv-private 'VK' tokens with 'ANV'<br>
  anv: Refactor get_buffer_format_properties()<br>
  anv: Better types for 'aspect' function params<br>
  anv: Fix get_image_format_properties() - depthstencil (v2)<br>
  anv: Fix get_image_format_properties() - ASTC<br>
  anv: Refactor get_image_format_properties() - plane_format<br>
  anv: Refactor get_image_format_properties() - base_isl_format<br>
  anv: Refactor get_image_format_properties() - Reduce params<br>
  anv: Fix get_image_format_properties() - 3-channel formats<br>
  anv: Fix get_image_format_properties() - YCbCr<br>
  anv: Rename get_image_format_properties()<br>
  anv: Simplify anv_get_image_format_<wbr>properties()<br>
  anv: Simplify anv_physical_device_get_<wbr>format_properties()<br>
  anv: Remove anv_physical_device_get_<wbr>format_properties()<br>
  anv: Refactor anv_get_format_plane() - explicit unsupported<br>
  anv/image: Refactor choice of isl_tiling_flags_t<br>
  anv: Refactor anv_GetImageSubresourceLayout(<wbr>)<br>
  HACK: vulkan: Update headers and registry to chadv/1.0-dma-buf@a79a0ab<br>
  HACK: vulkan: Install Vulkan headers<br>
  RFC: anv: Implement VK_EXT_external_memory_dma_buf<br>
  RFC: anv: Implement VK_EXT_queue_family_foreign<br>
  RFC: anv: Support VkDrmFormatModifierPropertiesL<wbr>istEXT<br>
  RFC: anv: Support VkPhysicalDeviceImageDrmFormat<wbr>ModifierInfoEXT<br>
  RFC: anv: Support VkImageDrmFormatModifierListCr<wbr>eateInfoEXT<br>
  RFC: anv: Support vkGetImageSubresourceLayout with modifiers<br>
  RFC: anv: Support VkImageExplicitDrmFormatModifi<wbr>erCreateInfoEXT<br>
  RFC: anv: Enable VK_EXT_image_drm_format_<wbr>modifier<br>
  RFC: anv: Kill vkCreateDmaBufImageINTEL()<br>
  anv/TODO: Updates for VK_EXT_image_drm_format_<wbr>modifier<br>
<br>
 include/meson.build                     |  11 +<br>
 include/vulkan/vulkan.h                 |  70 ++++-<br>
 include/vulkan/vulkan_intel.h           |  62 -----<br>
 src/amd/vulkan/radv_private.h           |   1 -<br>
 src/intel/Makefile.sources              |   1 -<br>
 src/intel/<a href="http://Makefile.vulkan.am" rel="noreferrer" target="_blank">Makefile.vulkan.am</a>            |   3 -<br>
 src/intel/vulkan/TODO                   |  16 ++<br>
 src/intel/vulkan/anv_blorp.c            |   6 +-<br>
 src/intel/vulkan/anv_device.c           |  13 +-<br>
 src/intel/vulkan/anv_<wbr>entrypoints_gen.py |  10 -<br>
 src/intel/vulkan/anv_<wbr>extensions.py      |   3 +<br>
 src/intel/vulkan/anv_formats.c          | 475 ++++++++++++++++++++++--------<wbr>--<br>
 src/intel/vulkan/anv_image.c            | 281 ++++++++++++++-----<br>
 src/intel/vulkan/anv_intel.c            | 117 --------<br>
 src/intel/vulkan/anv_private.h          |  21 +-<br>
 src/intel/vulkan/genX_cmd_<wbr>buffer.c      |  24 +-<br>
 src/intel/vulkan/meson.build            |   1 -<br>
 src/vulkan/registry/vk.xml              |  77 +++++-<br>
 18 files changed, 738 insertions(+), 454 deletions(-)<br>
 delete mode 100644 include/vulkan/vulkan_intel.h<br>
 delete mode 100644 src/intel/vulkan/anv_intel.c<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
2.13.0<br>
<br>
</font></span></blockquote></div><br></div></div>