summaryrefslogtreecommitdiffstats
path: root/gpu/config/gpu_info_collector_win.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gpu/config/gpu_info_collector_win.cc')
-rw-r--r--gpu/config/gpu_info_collector_win.cc11
1 files changed, 11 insertions, 0 deletions
diff --git a/gpu/config/gpu_info_collector_win.cc b/gpu/config/gpu_info_collector_win.cc
index 0b4e392..de96450 100644
--- a/gpu/config/gpu_info_collector_win.cc
+++ b/gpu/config/gpu_info_collector_win.cc
@@ -485,6 +485,7 @@ bool CollectContextGraphicsInfo(GPUInfo* gpu_info) {
int vertex_shader_minor_version = 0;
int pixel_shader_major_version = 0;
int pixel_shader_minor_version = 0;
+ gpu_info->adapter_luid = 0;
if (RE2::FullMatch(gpu_info->gl_renderer,
"ANGLE \\(.*\\)") &&
RE2::PartialMatch(gpu_info->gl_renderer,
@@ -508,6 +509,16 @@ bool CollectContextGraphicsInfo(GPUInfo* gpu_info) {
pixel_shader_major_version,
pixel_shader_minor_version);
+ // ANGLE's EGL vendor strings are of the form:
+ // Google, Inc. (adapter LUID: 0123456789ABCDEF)
+ // The LUID is optional and identifies the GPU adapter ANGLE is using.
+ const char* egl_vendor = eglQueryString(
+ gfx::GLSurfaceEGL::GetHardwareDisplay(),
+ EGL_VENDOR);
+ RE2::PartialMatch(egl_vendor,
+ " \\(adapter LUID: ([0-9A-Fa-f]{16})\\)",
+ RE2::Hex(&gpu_info->adapter_luid));
+
// DirectX diagnostics are collected asynchronously because it takes a
// couple of seconds. Do not mark gpu_info as complete until that is done.
gpu_info->finalized = false;