Chromium Code Reviews| Index: content/browser/gpu/gpu_internals_ui.cc |
| diff --git a/content/browser/gpu/gpu_internals_ui.cc b/content/browser/gpu/gpu_internals_ui.cc |
| index c30afe09621e4dde6d2c4af7da5ec1ec8ce58289..c955db72ac7d723e706e7fe35fa191aab5cfe135 100644 |
| --- a/content/browser/gpu/gpu_internals_ui.cc |
| +++ b/content/browser/gpu/gpu_internals_ui.cc |
| @@ -19,6 +19,7 @@ |
| #include "base/strings/stringprintf.h" |
| #include "base/sys_info.h" |
| #include "base/values.h" |
| +#include "content/browser/gpu/browser_gpu_memory_buffer_manager.h" |
| #include "content/browser/gpu/compositor_util.h" |
| #include "content/browser/gpu/gpu_data_manager_impl.h" |
| #include "content/grit/content_resources.h" |
| @@ -232,6 +233,83 @@ base::DictionaryValue* GpuInfoAsDictionaryValue() { |
| return info; |
| } |
| +const char* BufferFormatToString(gfx::BufferFormat format) { |
| + switch (format) { |
| + case gfx::BufferFormat::ATC: |
| + return "ATC"; |
| + case gfx::BufferFormat::ATCIA: |
| + return "ATCIA"; |
| + case gfx::BufferFormat::DXT1: |
| + return "DXT1"; |
| + case gfx::BufferFormat::DXT5: |
| + return "DXT5"; |
| + case gfx::BufferFormat::ETC1: |
| + return "ETC1"; |
| + case gfx::BufferFormat::R_8: |
| + return "R_8"; |
| + case gfx::BufferFormat::RGBA_4444: |
| + return "RGBA_4444"; |
| + case gfx::BufferFormat::RGBX_8888: |
| + return "RGBX_8888"; |
| + case gfx::BufferFormat::RGBA_8888: |
| + return "RGBA_8888"; |
| + case gfx::BufferFormat::BGRX_8888: |
| + return "BGRX_8888"; |
| + case gfx::BufferFormat::BGRA_8888: |
| + return "BGRA_8888"; |
| + case gfx::BufferFormat::YUV_420: |
| + return "YUV_420"; |
| + case gfx::BufferFormat::YUV_420_BIPLANAR: |
| + return "YUV_420_BIPLANAR"; |
| + case gfx::BufferFormat::UYVY_422: |
| + return "UYVY_422"; |
| + } |
| + NOTREACHED(); |
| + return nullptr; |
| +} |
| + |
| +const char* BufferUsageToString(gfx::BufferUsage usage) { |
| + switch (usage) { |
| + case gfx::BufferUsage::GPU_READ: |
| + return "GPU_READ"; |
| + case gfx::BufferUsage::GPU_READ_WRITE: |
| + return "GPU_READ_WRITE"; |
| + case gfx::BufferUsage::GPU_READ_CPU_READ_WRITE: |
| + return "GPU_READ_CPU_READ_WRITE"; |
| + case gfx::BufferUsage::GPU_READ_CPU_READ_WRITE_PERSISTENT: |
| + return "GPU_READ_CPU_READ_WRITE_PERSISTENT"; |
| + } |
| + NOTREACHED(); |
| + return nullptr; |
| +} |
| + |
| +base::DictionaryValue* GpuMemoryBufferInfoAsDictionaryValue() { |
| + base::ListValue* gpu_memory_buffer_info = new base::ListValue(); |
| + gpu_memory_buffer_info->Append( |
| + NewDescriptionValuePair("Native Formats", "Usage")); |
| + |
| + BrowserGpuMemoryBufferManager* gpu_memory_buffer_manager = |
| + BrowserGpuMemoryBufferManager::current(); |
| + |
| + for (size_t format = 0; |
| + format < static_cast<size_t>(gfx::BufferFormat::LAST) + 1; format++) { |
| + for (size_t usage = 0; |
| + usage < static_cast<size_t>(gfx::BufferUsage::LAST) + 1; usage++) { |
| + if (gpu_memory_buffer_manager->IsNativeGpuMemoryBufferConfiguration( |
| + static_cast<gfx::BufferFormat>(format), |
| + static_cast<gfx::BufferUsage>(usage))) |
| + gpu_memory_buffer_info->Append(NewDescriptionValuePair( |
| + BufferFormatToString(static_cast<gfx::BufferFormat>(format)), |
| + BufferUsageToString(static_cast<gfx::BufferUsage>(usage)))); |
| + } |
| + } |
| + |
| + base::DictionaryValue* info = new base::DictionaryValue(); |
| + info->Set("gmb_info", gpu_memory_buffer_info); |
|
reveman
2015/10/28 14:41:07
nit: "gpu_memory_buffer_info"
vignatti (out of this project)
2015/10/28 16:55:25
Done.
|
| + |
| + return info; |
| +} |
| + |
| // This class receives javascript messages from the renderer. |
| // Note that the WebUI infrastructure runs on the UI thread, therefore all of |
| // this class's methods are expected to run on the UI thread. |
| @@ -409,6 +487,14 @@ void GpuMessageHandler::OnGpuInfoUpdate() { |
| // Send GPU Info to javascript. |
| web_ui()->CallJavascriptFunction("browserBridge.onGpuInfoUpdate", |
| *(gpu_info_val.get())); |
| + |
| + // Get GpuMemoryBuffer Info. |
| + scoped_ptr<base::DictionaryValue> gpu_memory_buffer_info_val( |
| + GpuMemoryBufferInfoAsDictionaryValue()); |
| + |
| + // Send GpuMemoryBuffer Info to javascript. |
| + web_ui()->CallJavascriptFunction("browserBridge.onGpuMemoryBufferInfoUpdate", |
| + *(gpu_memory_buffer_info_val.get())); |
| } |
| void GpuMessageHandler::OnGpuSwitched() { |