<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jul 19, 2018 at 10:43 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">In commit cf54bd5e8, dri_sw_winsys.c began using <sys/shm.h> to support<br>
the new functions putImageShm, getImageShm in DRI_SWRastLoader. But<br>
Android began supporting System V shared memory only in Oreo. Nougat has<br>
no shm headers.<br>
<br>
Fix the build by ifdef'ing out the shm code on Nougat.<br></blockquote><div><br></div><div>No that's horrible. At least make a HAVE_IPC define or something so</div><div>the if android horror can be hidden a bit out of the way at the top of the file</div><div>or the build system.</div><div><br></div><div>Dave.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Fixes: cf54bd5e8 "drisw: use shared memory when possible"<br>
Cc: Marc-André Lureau <marcandre.lureau<br>
Cc: Dave Airlie <<a href="mailto:airlied@redhat.com">airlied@redhat.com</a>><br>
---<br>
 src/gallium/winsys/sw/dri/dri_<wbr>sw_winsys.c | 9 +++++++++<br>
 1 file changed, 9 insertions(+)<br>
<br>
diff --git a/src/gallium/winsys/sw/dri/<wbr>dri_sw_winsys.c b/src/gallium/winsys/sw/dri/<wbr>dri_sw_winsys.c<br>
index 40007200a5d..147e0f7c430 100644<br>
--- a/src/gallium/winsys/sw/dri/<wbr>dri_sw_winsys.c<br>
+++ b/src/gallium/winsys/sw/dri/<wbr>dri_sw_winsys.c<br>
@@ -26,8 +26,10 @@<br>
  *<br>
  ******************************<wbr>******************************<wbr>**************/<br>
<br>
+#if !defined(ANDROID) || ANDROID_API_LEVEL >= 26<br>
 #include <sys/ipc.h><br>
 #include <sys/shm.h><br>
+#endif<br>
<br>
 #include "pipe/p_compiler.h"<br>
 #include "pipe/p_format.h"<br>
@@ -83,6 +85,7 @@ dri_sw_is_displaytarget_<wbr>format_supported( struct sw_winsys *ws,<br>
    return TRUE;<br>
 }<br>
<br>
+#if !defined(ANDROID) || ANDROID_API_LEVEL >= 26<br>
 static char *<br>
 alloc_shm(struct dri_sw_displaytarget *dri_sw_dt, unsigned size)<br>
 {<br>
@@ -101,6 +104,7 @@ alloc_shm(struct dri_sw_displaytarget *dri_sw_dt, unsigned size)<br>
<br>
    return addr;<br>
 }<br>
+#endif<br>
<br>
 static struct sw_displaytarget *<br>
 dri_sw_displaytarget_create(<wbr>struct sw_winsys *winsys,<br>
@@ -131,8 +135,11 @@ dri_sw_displaytarget_create(<wbr>struct sw_winsys *winsys,<br>
    size = dri_sw_dt->stride * nblocksy;<br>
<br>
    dri_sw_dt->shmid = -1;<br>
+<br>
+#if !defined(ANDROID) || ANDROID_API_LEVEL >= 26<br>
    if (ws->lf->put_image_shm)<br>
       dri_sw_dt->data = alloc_shm(dri_sw_dt, size);<br>
+#endif<br>
<br>
    if(!dri_sw_dt->data)<br>
       dri_sw_dt->data = align_malloc(size, alignment);<br>
@@ -156,8 +163,10 @@ dri_sw_displaytarget_destroy(<wbr>struct sw_winsys *ws,<br>
    struct dri_sw_displaytarget *dri_sw_dt = dri_sw_displaytarget(dt);<br>
<br>
    if (dri_sw_dt->shmid >= 0) {<br>
+#if !defined(ANDROID) || ANDROID_API_LEVEL >= 26<br>
       shmdt(dri_sw_dt->data);<br>
       shmctl(dri_sw_dt->shmid, IPC_RMID, 0);<br>
+#endif<br>
    } else {<br>
       align_free(dri_sw_dt->data);<br>
    }<br>
<span class="HOEnZb"><font color="#888888">-- <br>
2.18.0.233.g985f88cf7e-goog<br>
<br>
</font></span></blockquote></div><br></div></div>