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(); |