Implement GpuMemoryBuffers for EGL and GLX

Adds GMB support for Linux/X11. ANGLE support will be added in
followup(s). For now, support on EGL/GLX is enabled when
--enable-native-gpu-memory-buffers is passed.

Main code additions:
* GbmSupportX11: ui/gfx/linux/gbm_support_x11.*
  - Uses DRI3 to get an authenticated DRM fd. Creates a GbmDevice
    with it.
* GLImageGLXNativePixmap: ui/gl/gl_image_glx_native_pixmap.*
  - Subclasses GlImageGLX.  Uses DRI3 to get a GLX pixmap from a
    dma-buf.
* ui/gl/gl_visual_picker_glx.*
  - Figures out which GLXFBConfigs should be used for corresponding
    gfx::BufferFormats.  Only BGR(A) formats are supported by GLX.

GMB support used to be routed through gpu::GpuMemoryBufferSupport,
which is basically just a switch statement over the various
gfx::BufferFormats and gfx::BufferUsages. With X11, GMB support needs
to be determined at runtime, and in the GPU process (since it depends
on the singleton GbmDevice and the GL implementation), so GMB support
is put into gpu::GPUInfo, similar to how we're already doing with
visual IDs.

BUG=1031269

Change-Id: Ie254e6c5646073be0cb76d549c115be274e4ef46
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1984712
Commit-Queue: Thomas Anderson <[email protected]>
Reviewed-by: Scott Violet <[email protected]>
Reviewed-by: Martin Barbella <[email protected]>
Reviewed-by: Mark Pearson <[email protected]>
Reviewed-by: Jonathan Backer <[email protected]>
Reviewed-by: Kenneth Russell <[email protected]>
Reviewed-by: kylechar <[email protected]>
Reviewed-by: Robert Kroeger <[email protected]>
Cr-Commit-Position: refs/heads/master@{#736698}
diff --git a/content/gpu/BUILD.gn b/content/gpu/BUILD.gn
index 7917db1..088c791 100644
--- a/content/gpu/BUILD.gn
+++ b/content/gpu/BUILD.gn
@@ -113,6 +113,7 @@
   if (use_x11) {
     deps += [
       "//ui/events/platform/x11",
+      "//ui/gfx/linux:gpu_memory_buffer_support_x11",
       "//ui/gfx/x",
     ]
   }