$OpenBSD: patch-gpu_config_gpu_info_collector_x11_cc,v 1.5 2017/03/14 12:18:54 robert Exp $
--- gpu/config/gpu_info_collector_x11.cc.orig.port	Thu Mar  9 21:04:33 2017
+++ gpu/config/gpu_info_collector_x11.cc	Fri Mar 10 19:44:33 2017
@@ -8,8 +8,19 @@
 #include "gpu/config/gpu_info_collector_linux.h"
 #include "third_party/libXNVCtrl/NVCtrl.h"
 #include "third_party/libXNVCtrl/NVCtrlLib.h"
+#include "ui/gl/gl_bindings.h"
+#include "ui/gl/gl_context.h"
+#include "ui/gl/gl_implementation.h"
+#include "ui/gl/gl_gl_api_implementation.h"
+#include "ui/gl/gl_surface.h"
+#include "ui/gl/init/gl_initializer.h"
 #include "ui/gfx/x/x11_types.h"
 
+typedef bool (*PFNGLXQUERYRENDERERINTEGERMESAPROC) (Display *dpy, int screen, int renderer, int attribute, unsigned int *value);
+
+#define GLX_RENDERER_VENDOR_ID_MESA     0x8183
+#define GLX_RENDERER_DEVICE_ID_MESA     0x8184
+
 namespace gpu {
 
 // Use NVCtrl extention to query NV driver version.
@@ -39,5 +50,42 @@ std::string CollectDriverVersionNVidia() {
   }
   return std::string();
 }
+
+CollectInfoResult CollectMesaCardInfo(GPUInfo* gpu_info) {
+  unsigned int vid[3], did[3];
+
+  Display* display = gfx::GetXDisplay();
+  if (!display) {
+    LOG(ERROR) << "XOpenDisplay failed.";
+    return kCollectInfoNonFatalFailure;
+  }
+
+  bool initialized =
+      gl::init::InitializeStaticGLBindings(gl::kGLImplementationDesktopGL);
+
+  if (!initialized)
+    return kCollectInfoNonFatalFailure;
+
+  PFNGLXQUERYRENDERERINTEGERMESAPROC queryInteger =
+      (PFNGLXQUERYRENDERERINTEGERMESAPROC) glXGetProcAddressARB((const GLubyte *)
+      "glXQueryRendererIntegerMESA");
+
+  bool vendor_ret =
+      queryInteger(display, 0, 0, GLX_RENDERER_VENDOR_ID_MESA, vid);
+  bool device_ret =
+      queryInteger(display, 0, 0, GLX_RENDERER_DEVICE_ID_MESA, did);
+
+  if (vendor_ret && device_ret) {
+    GPUInfo::GPUDevice gpu;
+    gpu.vendor_id = vid[0];
+    gpu.device_id = did[0];
+    gpu_info->gpu = gpu;
+  }
+
+  if (initialized)
+    gl::ClearBindingsGL();
+
+  return kCollectInfoSuccess;
+ }
 
 }  // namespace gpu
