<div dir="ltr"><div dir="ltr"><div dir="ltr"><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"> * Modifiers must uniquely encode buffer layout. In other words, a buffer must<br>
 * match only a single modifier.<br></blockquote><div><br></div>That sentence is misleading and impossible to meet. Specifications are sometimes changed to reflect the overwhelming reality. Multiple modifiers can represent identical layouts - they already do between vendors, between generations of the same vendor, and accidentally even between chips of the same generation. Modifiers have already become 64-bit structures of bitfields with currently 2^16 possible modifiers for some vendors, and possibly exceeding 100k for all vendors combined. Encoding all linear constraints into the 64 bits is one option. It needs more thought, but encoding at least some constraints in the modifier is not totally off the table.</div><div class="gmail_quote"><br></div><div class="gmail_quote">The semi-functional LINEAR modifier needs to go. The idea of modifiers is that nobody should have to expose one that is unsupported to keep things working for a subset of apps. If the LINEAR modifier is a requirement everywhere because of apps, and even drivers that can't support it must expose it, that's a problem. It causes GBM/EGL to fail to import a DMABUF for a random reason and it can't be prevented without, say, looking at PCI IDs. If that happened for any other API, it would be considered unusable. We can either fix it (by replacing/deprecating/removing LINEAR) or abandon modifiers and replace them with something that works.<br></div><div class="gmail_quote"><br></div><div class="gmail_quote">Marek<br></div></div>
</div>
</div>