| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/gpu/gpu_info_collector.h" | 5 #include "content/gpu/gpu_info_collector.h" |
| 6 | 6 |
| 7 #include <X11/Xlib.h> | 7 #include <X11/Xlib.h> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 123 // Fill the IDs and class fields. | 123 // Fill the IDs and class fields. |
| 124 (libpci_loader.pci_fill_info)(device, 33); | 124 (libpci_loader.pci_fill_info)(device, 33); |
| 125 // TODO(zmo): there might be other classes that qualify as display devices. | 125 // TODO(zmo): there might be other classes that qualify as display devices. |
| 126 if (device->device_class != 0x0300) // Device class is DISPLAY_VGA. | 126 if (device->device_class != 0x0300) // Device class is DISPLAY_VGA. |
| 127 continue; | 127 continue; |
| 128 | 128 |
| 129 content::GPUInfo::GPUDevice gpu; | 129 content::GPUInfo::GPUDevice gpu; |
| 130 gpu.vendor_id = device->vendor_id; | 130 gpu.vendor_id = device->vendor_id; |
| 131 gpu.device_id = device->device_id; | 131 gpu.device_id = device->device_id; |
| 132 | 132 |
| 133 const int buffer_size = 255; | |
| 134 scoped_array<char> buffer(new char[buffer_size]); | |
| 135 // The current implementation of pci_lookup_name returns the same pointer | |
| 136 // as the passed in upon success, and a different one (NULL or a pointer | |
| 137 // to an error message) upon failure. | |
| 138 if ((libpci_loader.pci_lookup_name)(access, | |
| 139 buffer.get(), | |
| 140 buffer_size, | |
| 141 1, | |
| 142 device->vendor_id) == buffer.get()) { | |
| 143 gpu.vendor_string = buffer.get(); | |
| 144 } | |
| 145 if ((libpci_loader.pci_lookup_name)(access, | |
| 146 buffer.get(), | |
| 147 buffer_size, | |
| 148 2, | |
| 149 device->vendor_id, | |
| 150 device->device_id) == buffer.get()) { | |
| 151 std::string device_string = buffer.get(); | |
| 152 size_t begin = device_string.find_first_of('['); | |
| 153 size_t end = device_string.find_last_of(']'); | |
| 154 if (begin != std::string::npos && end != std::string::npos && | |
| 155 begin < end) { | |
| 156 device_string = device_string.substr(begin + 1, end - begin - 1); | |
| 157 } | |
| 158 gpu.device_string = device_string; | |
| 159 } | |
| 160 | |
| 161 if (!primary_gpu_identified) { | 133 if (!primary_gpu_identified) { |
| 162 primary_gpu_identified = true; | 134 primary_gpu_identified = true; |
| 163 gpu_info->gpu = gpu; | 135 gpu_info->gpu = gpu; |
| 164 } else { | 136 } else { |
| 165 // TODO(zmo): if there are multiple GPUs, we assume the non Intel | 137 // TODO(zmo): if there are multiple GPUs, we assume the non Intel |
| 166 // one is primary. Revisit this logic because we actually don't know | 138 // one is primary. Revisit this logic because we actually don't know |
| 167 // which GPU we are using at this point. | 139 // which GPU we are using at this point. |
| 168 if (gpu_info->gpu.vendor_id == kVendorIDIntel && | 140 if (gpu_info->gpu.vendor_id == kVendorIDIntel && |
| 169 gpu.vendor_id != kVendorIDIntel) { | 141 gpu.vendor_id != kVendorIDIntel) { |
| 170 gpu_info->secondary_gpus.push_back(gpu_info->gpu); | 142 gpu_info->secondary_gpus.push_back(gpu_info->gpu); |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 293 gpu_info->driver_version = driver_version; | 265 gpu_info->driver_version = driver_version; |
| 294 return true; | 266 return true; |
| 295 } | 267 } |
| 296 | 268 |
| 297 void MergeGPUInfo(content::GPUInfo* basic_gpu_info, | 269 void MergeGPUInfo(content::GPUInfo* basic_gpu_info, |
| 298 const content::GPUInfo& context_gpu_info) { | 270 const content::GPUInfo& context_gpu_info) { |
| 299 MergeGPUInfoGL(basic_gpu_info, context_gpu_info); | 271 MergeGPUInfoGL(basic_gpu_info, context_gpu_info); |
| 300 } | 272 } |
| 301 | 273 |
| 302 } // namespace gpu_info_collector | 274 } // namespace gpu_info_collector |
| OLD | NEW |