<div dir="ltr"><div>Moving the discussion to this patch...</div><div><br></div><div>This patch clarifies how implicit modifier can be supported, modelling after Weston's behavior.  I can see three options</div><div><br></div><div> 1. DRM_FORMAT_MOD_INVALID means implicit modifier, and is always allowed in buffer creation<br></div><div> 2. DRM_FORMAT_MOD_INVALID means implicit modifier, and a modifier event of the value must be sent to indicate buffer creation with implicit modifier is allowed</div><div> 3. DRM_FORMAT_MOD_INVALID is invalid and there is no implicit modifier support</div><div><br></div><div>This patch picks option 1.</div><div><br></div><div>Option 3 makes legacy support impossible, and in turn makes wl_drm deprecation take longer.<br></div><div><br></div><div>I've been thinking about moving away from implicit modifier as well so option 2 might be a good compromise.  The protocol is also more consistent in that one can create a buffer with a format/modifier pair only when the pair is advertised via the modifier event.<br></div><div><br></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Apr 9, 2019 at 3:23 PM Chia-I Wu <<a href="mailto:olvaffe@gmail.com">olvaffe@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Talked with Daniel offline.  I sent a different version to revive the format event.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Apr 1, 2019 at 10:41 AM Chia-I Wu <<a href="mailto:olvaffe@gmail.com" target="_blank">olvaffe@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">DRM_FORMAT_MOD_INVALID means to derive the modifier from the dmabuf.<br>
<br>
Signed-off-by: Chia-I Wu <<a href="mailto:olvaffe@gmail.com" target="_blank">olvaffe@gmail.com</a>><br>
---<br>
 .../linux-dmabuf/linux-dmabuf-unstable-v1.xml     | 15 ++++++++++++++-<br>
 1 file changed, 14 insertions(+), 1 deletion(-)<br>
<br>
diff --git a/unstable/linux-dmabuf/linux-dmabuf-unstable-v1.xml b/unstable/linux-dmabuf/linux-dmabuf-unstable-v1.xml<br>
index 154afe2..7c76441 100644<br>
--- a/unstable/linux-dmabuf/linux-dmabuf-unstable-v1.xml<br>
+++ b/unstable/linux-dmabuf/linux-dmabuf-unstable-v1.xml<br>
@@ -28,6 +28,7 @@<br>
     <description summary="factory for creating dmabuf-based wl_buffers"><br>
       Following the interfaces from:<br>
       <a href="https://www.khronos.org/registry/egl/extensions/EXT/EGL_EXT_image_dma_buf_import.txt" rel="noreferrer" target="_blank">https://www.khronos.org/registry/egl/extensions/EXT/EGL_EXT_image_dma_buf_import.txt</a><br>
+      <a href="https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import_modifiers.txt" rel="noreferrer" target="_blank">https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import_modifiers.txt</a><br>
       and the Linux DRM sub-system's AddFb2 ioctl.<br>
<br>
       This interface offers ways to create generic dmabuf-based<br>
@@ -129,8 +130,13 @@<br>
         binds to this interface. A roundtrip after binding guarantees that<br>
         the client has received all supported format-modifier pairs.<br>
<br>
+        For each supported format, DRM_FORMAT_MOD_INVALID (that is,<br>
+        modifier_hi == 0x00ffffff and modifier_lo == 0xffffffff) is implied<br>
+        and may not be sent.<br>
+<br></blockquote></div></blockquote><div>For option 2, this can be removed. </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
         For the definition of the format and modifier codes, see the<br>
-        zwp_linux_buffer_params_v1::create request.<br>
+        zwp_linux_buffer_params_v1::create and zwp_linux_buffer_params_v1::add<br>
+        requests.<br>
       </description><br>
       <arg name="format" type="uint" summary="DRM_FORMAT code"/><br>
       <arg name="modifier_hi" type="uint"<br>
@@ -200,6 +206,13 @@<br>
         This request raises the PLANE_IDX error if plane_idx is too large.<br>
         The error PLANE_SET is raised if attempting to set a plane that<br>
         was already set.<br>
+<br>
+        Note that DRM_FORMAT_MOD_INVALID (that is, modifier_hi == 0x00ffffff<br>
+        and modifier_lo == 0xffffffff) is always allowed and has a special<br>
+        meaning. It indicates that the modifier is derived from the dmabuf fd<br>
+        rather than explicitly specified. This use is discouraged and may not<br>
+        work if the dmabuf is imported to a different device than the device<br>
+        that allocated it.<br></blockquote></div></blockquote><div>For option 2, this can be moved to where the modifier event is defined.  The wording needs to be changed.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">       </description><br>
       <arg name="fd" type="fd" summary="dmabuf fd"/><br>
       <arg name="plane_idx" type="uint" summary="plane index"/><br>
-- <br>
2.21.0.392.gf8f6787159e-goog<br>
<br>
</blockquote></div>
</blockquote></div></div>