<div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Tue, Aug 28, 2018 at 5:22 PM Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This effectively reverts a26693493570a9d0f0fba1be617e01ee7bfff4db which<br>
was a misguided attempt at protecting intel_query_dma_buf_modifiers from<br>
invalid formats. Unfortunately, in some internal EGL cases, we can get<br>
an SRGB format validly in this function. Rejecting such formats caused<br>
us to not allow CCS in some cases where we should have been allowing it.<br>
<br>
There's some question of whether or not we really should be using SRGB<br>
"fourcc" formats that aren't actually in drm_foucc.h but there's not<br>
much harm in allowing them through here.<br>
<br>
Bugzilla: <a href="https://bugs.freedesktop.org/show_bug.cgi?id=107223" rel="noreferrer" target="_blank">https://bugs.freedesktop.org/show_bug.cgi?id=107223</a><br>
Fixes: a26693493570 "i965/screen: Return false for unsupported..."<br>
---<br>
src/mesa/drivers/dri/i965/intel_screen.c | 14 +++++++++++---<br>
1 file changed, 11 insertions(+), 3 deletions(-)<br>
<br>
diff --git a/src/mesa/drivers/dri/i965/intel_screen.c b/src/mesa/drivers/dri/i965/intel_screen.c<br>
index eaf5a3b9feb..ac1938f6204 100644<br>
--- a/src/mesa/drivers/dri/i965/intel_screen.c<br>
+++ b/src/mesa/drivers/dri/i965/intel_screen.c<br>
@@ -1274,9 +1274,9 @@ static bool<br>
intel_image_format_is_supported(const struct gen_device_info *devinfo,<br>
const struct intel_image_format *fmt)<br>
{<br>
- if (fmt->fourcc == __DRI_IMAGE_FOURCC_SARGB8888 ||<br>
- fmt->fourcc == __DRI_IMAGE_FOURCC_SABGR8888)<br>
- return false;<br>
+ /* Currently, all formats with an intel_image_format are available on all<br>
+ * platforms so there's really nothing to check there.<br>
+ */<br>
<br>
#ifndef NDEBUG<br>
if (fmt->nplanes == 1) {<br>
@@ -1302,6 +1302,14 @@ intel_query_dma_buf_formats(__DRIscreen *_screen, int max,<br>
int num_formats = 0, i;<br>
<br>
for (i = 0; i < ARRAY_SIZE(intel_image_formats); i++) {<br>
+ /* These two formats are valid DRI formats but do not exist in<br>
+ * drm_fourcc.h in the Linux kernel. We don't want to accidentally<br>
+ * advertise them through the EGL layer.<br>
+ */<br>
+ if (intel_image_formats[i].fourcc == __DRI_IMAGE_FOURCC_SARGB8888 ||<br>
+ intel_image_formats[i].fourcc == __DRI_IMAGE_FOURCC_SABGR8888)<br>
+ return false;<br></blockquote><div><br></div><div>This should be a continue. Fixed locally.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+<br>
if (!intel_image_format_is_supported(&screen->devinfo,<br>
&intel_image_formats[i]))<br>
continue;<br>
-- <br>
2.17.1<br>
<br>
</blockquote></div></div>