Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(826)

Unified Diff: content/browser/gpu/gpu_internals_ui.cc

Issue 1375663002: Show GpuMemoryBuffer feature in chrome://gpu (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address nits and change GpuMemoryBufferInfoAsDictionaryValue main loop Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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() {

Powered by Google App Engine
This is Rietveld 408576698