<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from text --><style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<div>Hi Pekka,<br>
<br>
Thanks. If I paraphrase, I think you’re telling me that gbm_bo_get_modifiers() == 0 is not strong enough then.<br>
<br>
That fits with the notes on the drm_fourcc.h declaration of the linear format flag:<br>
<br>
https://elixir.bootlin.com/linux/latest/source/include/uapi/drm/drm_fourcc.h#L448<br>
<br>
Any idea what’s up with some compositors adding code to infer DRM_FORMAT_MOD_LINEAR semantics when the buffer’s modifiers are set to 0? Wlroots, for example, added this as a “safety net for drm drivers not announcing modifiers”.<br>
<br>
https://source.puri.sm/Librem5/wlroots/-/merge_requests/63<br>
<br>
-Matt
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="x_divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>From:</b> Pekka Paalanen <ppaalanen@gmail.com><br>
<b>Sent:</b> Saturday, August 6, 2022 6:47:00 AM<br>
<b>To:</b> Hoosier, Matt<br>
<b>Cc:</b> wayland-devel@lists.freedesktop.org; dri-devel@lists.freedesktop.org<br>
<b>Subject:</b> Re: How to test whether a buffer is in linear format</font>
<div> </div>
</div>
</div>
<font size="2"><span style="font-size:10pt;">
<div class="PlainText">On Fri, 5 Aug 2022 12:32:01 +0000<br>
"Hoosier, Matt" <Matt.Hoosier@garmin.com> wrote:<br>
<br>
> Suppose that I want to map a GPU buffer to the CPU and do image<br>
> analysis on it. I know all the usual cautions about this being a<br>
> poor performance option, etc. But suppose for the moment that the<br>
> use-case requires it.<br>
> <br>
> What's the right set of preconditions to conclude that the buffer<br>
> is in vanilla linear representation? In other words: no<br>
> compression, tiling, or any other proprietary GPU tricks that<br>
> would prevent accessing the pixel data in the same way you would<br>
> for a dumb buffer.<br>
> <br>
<br>
Hi Matt,<br>
<br>
whoever produced the buffer must *explicitly* tell you that the<br>
buffer is using the DRM format modifier DRM_FORMAT_MOD_LINEAR.<br>
<br>
> I think that requiring the modifiers to be 0x0 would suffice. But<br>
> is that overkill? Maybe there are situations when some modifiers<br>
> are set, but they don't affect the interpretation of the pixel<br>
> data.<br>
<br>
It is not overkill, it is strictly necessary. It is not sufficient<br>
though, you must know things like stride and offset for each plane<br>
as well in addition to width, height and pixel format. All those<br>
together should be enough. Note, that DRM_FORMAT_MOD_LINEAR must be<br>
explicit. If you lack a modifier, you cannot assume it is linear.<br>
<br>
No modifier can ever be ignored. If there is no modifier, or it is<br>
invalid, then you must use some originating-driver specific means<br>
to figure out what the "real modifier" is.<br>
<br>
<br>
Thanks,<br>
pq<br>
</div>
</span></font><br>
<hr>
<font face="Arial" color="Gray" size="1"><br>
CONFIDENTIALITY NOTICE: This email and any attachments are for the sole use of the intended recipient(s) and contain information that may be Garmin confidential and/or Garmin legally privileged. If you have received this email in error, please notify the sender
 by reply email and delete the message. Any disclosure, copying, distribution or use of this communication (including attachments) by someone other than the intended recipient is prohibited. Thank you.<br>
</font>
</body>
</html>