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

Unified Diff: content/browser/renderer_host/render_process_host_impl.cc

Issue 2120713002: Fix use_image_texture_target inconsistencies (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: cleanup Created 4 years, 5 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/renderer_host/render_process_host_impl.cc
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc
index 6190d677f17ce8e0e0d8802d6966e0657a3fa683..d50f89027c837cd25cf92d65ddeee9e833f7076e 100644
--- a/content/browser/renderer_host/render_process_host_impl.cc
+++ b/content/browser/renderer_host/render_process_host_impl.cc
@@ -44,6 +44,7 @@
#include "base/tracked_objects.h"
#include "build/build_config.h"
#include "cc/base/switches.h"
+#include "cc/output/renderer_settings.h"
#include "components/scheduler/common/scheduler_switches.h"
#include "components/tracing/common/tracing_switches.h"
#include "components/webmessaging/broadcast_channel_provider.h"
@@ -436,12 +437,19 @@ class SessionStorageHolder : public base::SupportsUserData::Data {
DISALLOW_COPY_AND_ASSIGN(SessionStorageHolder);
};
-std::string UintVectorToString(const std::vector<unsigned>& vector) {
+// Converts an ImageTextureTargetsMap to a string representation of the format:
+// "usage,format,target;usage,format,target;...;usage,format,target"
+std::string ImageTextureTargetsMapToString(
+ const cc::RendererSettings::ImageTextureTargetsMap& map) {
std::string str;
- for (auto it : vector) {
+ for (const auto& entry : map) {
if (!str.empty())
- str += ",";
- str += base::UintToString(it);
+ str += ";";
+ str += base::UintToString(static_cast<uint32_t>(entry.first.first));
+ str += ",";
+ str += base::UintToString(static_cast<uint32_t>(entry.first.second));
+ str += ",";
+ str += base::UintToString(entry.second);
}
return str;
}
@@ -1290,36 +1298,24 @@ static void AppendCompositorCommandLineFlags(base::CommandLine* command_line) {
if (IsMainFrameBeforeActivationEnabled())
command_line->AppendSwitch(cc::switches::kEnableMainFrameBeforeActivation);
- // Persistent buffers may come at a performance hit (not all platform specific
- // buffers support it), so only enable them if partial raster is enabled and
- // we are actually going to use them.
- // TODO(dcastagna): Once GPU_READ_CPU_READ_WRITE_PERSISTENT is removed
- // kContentImageTextureTarget and kVideoImageTextureTarget can be merged into
- // one flag.
- gfx::BufferUsage buffer_usage =
- IsPartialRasterEnabled()
- ? gfx::BufferUsage::GPU_READ_CPU_READ_WRITE_PERSISTENT
- : gfx::BufferUsage::GPU_READ_CPU_READ_WRITE;
- std::vector<unsigned> image_targets(
- static_cast<size_t>(gfx::BufferFormat::LAST) + 1, GL_TEXTURE_2D);
- for (size_t format = 0;
- format < static_cast<size_t>(gfx::BufferFormat::LAST) + 1; format++) {
- image_targets[format] =
- BrowserGpuMemoryBufferManager::GetImageTextureTarget(
- static_cast<gfx::BufferFormat>(format), buffer_usage);
- }
- command_line->AppendSwitchASCII(switches::kContentImageTextureTarget,
- UintVectorToString(image_targets));
-
- for (size_t format = 0;
- format < static_cast<size_t>(gfx::BufferFormat::LAST) + 1; format++) {
- image_targets[format] =
- BrowserGpuMemoryBufferManager::GetImageTextureTarget(
- static_cast<gfx::BufferFormat>(format),
- gfx::BufferUsage::GPU_READ_CPU_READ_WRITE);
- }
- command_line->AppendSwitchASCII(switches::kVideoImageTextureTarget,
- UintVectorToString(image_targets));
+ cc::RendererSettings::ImageTextureTargetsMap image_targets;
+ for (size_t usage_idx = 0;
+ usage_idx <= static_cast<size_t>(gfx::BufferUsage::LAST) + 1;
+ ++usage_idx) {
+ gfx::BufferUsage usage = static_cast<gfx::BufferUsage>(usage_idx);
+ for (size_t format_idx = 0;
+ format_idx < static_cast<size_t>(gfx::BufferFormat::LAST) + 1;
+ ++format_idx) {
+ gfx::BufferFormat format = static_cast<gfx::BufferFormat>(format_idx);
+ uint32_t target =
+ BrowserGpuMemoryBufferManager::GetImageTextureTarget(format, usage);
+ image_targets.emplace(
+ cc::RendererSettings::ImageTextureTargetKey(usage, format), target);
+ }
+ }
+ command_line->AppendSwitchASCII(
+ switches::kContentImageTextureTarget,
+ ImageTextureTargetsMapToString(image_targets));
// Appending disable-gpu-feature switches due to software rendering list.
GpuDataManagerImpl* gpu_data_manager = GpuDataManagerImpl::GetInstance();

Powered by Google App Engine
This is Rietveld 408576698