<div dir="ltr"><div><div>All of the pre-work patches have been reviewed by myself and Lionel.  I've also read through the rest of the series and things look pretty good to me.  I did make some scattered comments but they shouldn't be a big deal.<br><br></div>My primary concern with the series is the lack of CCS support.  Getting that working correctly is clearly the biggest question mark in all of modifiers so I'm hesitant to pass judgment on this as a patch series (I think the spec is ok) with that piece still missing.<br><br></div>--Jason<br></div><div class="gmail_extra"><br><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>
<br>
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>