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