Upgrade to Mesa 18.3.3

This seems to resolve the leak in libxcb, but introduces a new leak in
VkTestUtils.

Bug: skia:8710
Change-Id: I71482d8f1c5eebfffd211a4124bd2db01283741b
Reviewed-on: https://skia-review.googlesource.com/c/186862
Commit-Queue: Ben Wagner <benjaminwagner@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Auto-Submit: Ben Wagner <benjaminwagner@google.com>
diff --git a/infra/bots/assets/mesa_intel_driver_linux/VERSION b/infra/bots/assets/mesa_intel_driver_linux/VERSION
index c227083..7813681 100644
--- a/infra/bots/assets/mesa_intel_driver_linux/VERSION
+++ b/infra/bots/assets/mesa_intel_driver_linux/VERSION
@@ -1 +1 @@
-0
\ No newline at end of file
+5
\ No newline at end of file
diff --git a/infra/bots/assets/mesa_intel_driver_linux/create.py b/infra/bots/assets/mesa_intel_driver_linux/create.py
index 519baf7..279360f 100755
--- a/infra/bots/assets/mesa_intel_driver_linux/create.py
+++ b/infra/bots/assets/mesa_intel_driver_linux/create.py
@@ -13,9 +13,13 @@
 import argparse
 import subprocess
 
-DOCKER_IMAGE='gcr.io/skia-public/mesa-driver-builder:v1'
-BUILD_SCRIPT='/opt/build_mesa.sh'
-MESA_VERSION='18.1.7'
+# TODO(dogben): In the future, it might be simpler to build the docker image as
+# part of this script so that we don't need to push it to the container repo.
+# Doing so would make this script more repeatable, since someone could
+# accidentally change the Docker image that "v2" points to.
+DOCKER_IMAGE = 'gcr.io/skia-public/mesa-driver-builder:v2'
+BUILD_SCRIPT = '/opt/build_mesa.sh'
+MESA_VERSION = '18.3.3'
 
 
 def create_asset(target_dir):
diff --git a/infra/bots/assets/mesa_intel_driver_linux/mesa-driver-builder/Dockerfile b/infra/bots/assets/mesa_intel_driver_linux/mesa-driver-builder/Dockerfile
index 6134c5b..cf75031 100644
--- a/infra/bots/assets/mesa_intel_driver_linux/mesa-driver-builder/Dockerfile
+++ b/infra/bots/assets/mesa_intel_driver_linux/mesa-driver-builder/Dockerfile
@@ -1,6 +1,9 @@
-FROM debian:9.4
+FROM debian:9.6
 
-# Enabling backports gives us access to clang-6 and new versions of libdrm2 package.
+ENV DEBIAN_FRONTEND noninteractive
+
+# Enabling backports gives us access to clang-6 and makes it more likely that
+# 'apt-get build-dep' will install the correct dependencies.
 # Mesa builds newer than 17.0.4 or so require libdrm > 2.4.75, but the
 # default one in stretch is 2.4.74.
 # Note that the hosts that use these drivers will also need the newer version of libdrm2
@@ -8,61 +11,19 @@
 #     symbol lookup error: ./mesa_intel_driver/libGL.so.1: undefined symbol: drmGetDevice2
 #
 # Hosts can install this by adding the stretch-backports debian source (see next RUN)
-# and the performing `sudo apt-get update && sudo apt-get install libdrm2=2.4.91-2~bpo9+1`
-RUN echo "deb http://ftp.debian.org/debian stretch-backports main" >> /etc/apt/sources.list
-
-RUN apt-get update && apt-get upgrade -y
-
-ENV DEBIAN_FRONTEND noninteractive
-
-RUN apt-get install -y \
-    autoconf \
-    bison \
-    build-essential \
-    clang-6.0 \
-    flex \
-    libdrm-amdgpu1=2.4.91-2~bpo9+1 \
-    libdrm-dev=2.4.91-2~bpo9+1 \
-    libdrm-intel1=2.4.91-2~bpo9+1 \
-    libdrm-nouveau2=2.4.91-2~bpo9+1 \
-    libdrm-radeon1=2.4.91-2~bpo9+1 \
-    libdrm2=2.4.91-2~bpo9+1 \
-    libomxil-bellagio-dev \
-    libpthread-stubs0-dev \
-    libtool \
-    libva-dev \
-    libx11-xcb-dev \
-    libxcb-dri2-0-dev \
-    libxcb-dri3-dev \
-    libxcb-glx0-dev \
-    libxcb-present-dev \
-    libxcb1-dev \
-    libxdamage-dev \
-    libxext-dev \
-    libxshmfence-dev \
-    llvm-dev \
-    pkg-config \
-    python-pip \
-    python2.7 \
-    scons \
-    software-properties-common \
-    wget \
-    x11proto-dri2-dev \
-    x11proto-dri3-dev \
-    x11proto-gl-dev \
-    x11proto-present-dev \
-    x11proto-xext-dev \
-    xserver-xorg-core \
-    xserver-xorg-dev
-
-RUN pip install mako
+# and then performing `sudo apt-get update && sudo apt-get install libdrm2=2.4.95-1~bpo9+1`
+RUN echo "deb http://ftp.debian.org/debian stretch-backports main" >> /etc/apt/sources.list && \
+    echo "deb-src http://ftp.debian.org/debian stretch-backports main" >> /etc/apt/sources.list && \
+    apt-get update && apt-get upgrade -y && \
+    apt-get install -y wget clang-6.0 && \
+    apt-get -t stretch-backports build-dep -y mesa && \
+    rm -rf /var/lib/apt/lists/*
 
 ENV CC="/usr/lib/llvm-6.0/bin/clang" \
     CXX="/usr/lib/llvm-6.0/bin/clang++" \
-    PATH=/usr/lib/llvm-6.0/bin:$PATH
+    PATH=/usr/lib/llvm-6.0/bin:$PATH \
+    # Default to this version of MESA, but it can be overridden with
+    # -e MESA_VERSION=X.Y.Z when running the docker container
+    MESA_VERSION=18.3.2
 
-# Default to this version of MESA, but it can be overridden with
-# -e MESA_VERSION=X.Y.Z when running the docker container
-ENV MESA_VERSION=18.1.7
-
-COPY ./build_mesa.sh /opt/build_mesa.sh
\ No newline at end of file
+COPY ./build_mesa.sh /opt/build_mesa.sh
diff --git a/infra/bots/assets/mesa_intel_driver_linux/mesa-driver-builder/build_mesa.sh b/infra/bots/assets/mesa_intel_driver_linux/mesa-driver-builder/build_mesa.sh
index ad9eeec..37a5aa5 100755
--- a/infra/bots/assets/mesa_intel_driver_linux/mesa-driver-builder/build_mesa.sh
+++ b/infra/bots/assets/mesa_intel_driver_linux/mesa-driver-builder/build_mesa.sh
@@ -13,16 +13,13 @@
 
 pushd /tmp
 
-wget ftp://ftp.freedesktop.org/pub/mesa/mesa-$MESA_VERSION.tar.gz
+wget https://mesa.freedesktop.org/archive/mesa-$MESA_VERSION.tar.gz
 tar --gunzip --extract --file mesa-$MESA_VERSION.tar.gz
 cd mesa-$MESA_VERSION/
 
 ./configure --with-dri-drivers=i965 --with-gallium-drivers= --with-vulkan-drivers=intel
 make -j 50
 
-rm -rf lib/gallium
-rm -f  lib/nouveau_vieux_dri.so lib/r200_dri.so lib/radeon_dri.so
-
 cp lib/* /OUT
 cp src/intel/vulkan/intel_icd.x86_64.json /OUT
 
diff --git a/infra/bots/tasks.json b/infra/bots/tasks.json
index 9c0869e..04a1a25 100755
--- a/infra/bots/tasks.json
+++ b/infra/bots/tasks.json
@@ -29724,7 +29724,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
@@ -29845,7 +29845,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
@@ -29961,7 +29961,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
@@ -30082,7 +30082,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
@@ -30198,7 +30198,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
@@ -30319,7 +30319,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
@@ -30435,7 +30435,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
@@ -30551,7 +30551,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
@@ -30667,7 +30667,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
@@ -30783,7 +30783,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
@@ -54634,7 +54634,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
@@ -54755,7 +54755,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
@@ -54871,7 +54871,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
@@ -54992,7 +54992,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
@@ -55221,7 +55221,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
@@ -55337,7 +55337,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
@@ -55458,7 +55458,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
@@ -55574,7 +55574,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
@@ -55695,7 +55695,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
@@ -55821,7 +55821,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
@@ -55942,7 +55942,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
@@ -56058,7 +56058,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         },
         {
           "name": "skia/bots/opencl_ocl_icd_linux",
@@ -56189,7 +56189,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
@@ -56305,7 +56305,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
@@ -56426,7 +56426,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
@@ -56552,7 +56552,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
@@ -56673,7 +56673,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
@@ -56799,7 +56799,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
@@ -56920,7 +56920,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
@@ -57041,7 +57041,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
@@ -57157,7 +57157,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
@@ -57273,7 +57273,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
@@ -57389,7 +57389,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
@@ -57505,7 +57505,7 @@
         {
           "name": "skia/bots/mesa_intel_driver_linux",
           "path": "mesa_intel_driver_linux",
-          "version": "version:0"
+          "version": "version:5"
         }
       ],
       "command": [
diff --git a/tools/LsanSuppressions.cpp b/tools/LsanSuppressions.cpp
index 4839942..6dcb214 100644
--- a/tools/LsanSuppressions.cpp
+++ b/tools/LsanSuppressions.cpp
@@ -21,7 +21,6 @@
                "leak:libGLX_nvidia.so\n"    // For NVidia driver.
                "leak:libnvidia-glcore.so\n" // For NVidia driver.
                "leak:libnvidia-tls.so\n"    // For NVidia driver.
-               "leak:libxcb.so\n"           // For Mesa Intel driver. skia:8710
                ;
     }
 
diff --git a/tools/gpu/vk/VkTestUtils.cpp b/tools/gpu/vk/VkTestUtils.cpp
index ed6549c..b7148fa 100644
--- a/tools/gpu/vk/VkTestUtils.cpp
+++ b/tools/gpu/vk/VkTestUtils.cpp
@@ -14,6 +14,10 @@
 #include "vk/GrVkExtensions.h"
 #include "../ports/SkOSLibrary.h"
 
+#if defined(SK_ENABLE_SCOPED_LSAN_SUPPRESSIONS)
+#include <sanitizer/lsan_interface.h>
+#endif
+
 namespace sk_gpu_test {
 
 bool LoadVkLibraryAndGetProcAddrFuncs(PFN_vkGetInstanceProcAddr* instProc,
@@ -661,7 +665,13 @@
         pointerToFeatures ? nullptr : deviceFeatures // ppEnabledFeatures
     };
 
-    err = grVkCreateDevice(physDev, &deviceInfo, nullptr, &device);
+    {
+#if defined(SK_ENABLE_SCOPED_LSAN_SUPPRESSIONS)
+        // skia:8712
+        __lsan::ScopedDisabler lsanDisabler;
+#endif
+        err = grVkCreateDevice(physDev, &deviceInfo, nullptr, &device);
+    }
     if (err) {
         SkDebugf("CreateDevice failed: %d\n", err);
         destroy_instance(getProc, inst, debugCallback, hasDebugExtension);