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

Unified Diff: content/renderer/render_thread_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/renderer/render_thread_impl.cc
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc
index 0845883e185e198d5d91837bd9fae4da9262772c..46afc5a27a25fb0dd5fa5f8da55984429098bfc4 100644
--- a/content/renderer/render_thread_impl.cc
+++ b/content/renderer/render_thread_impl.cc
@@ -412,17 +412,33 @@ void CreateEmbeddedWorkerSetup(
new EmbeddedWorkerSetupImpl(std::move(request));
}
-void StringToUintVector(const std::string& str, std::vector<unsigned>* vector) {
- DCHECK(vector->empty());
- std::vector<std::string> pieces = base::SplitString(
- str, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
- DCHECK_EQ(pieces.size(), static_cast<size_t>(gfx::BufferFormat::LAST) + 1);
- for (size_t i = 0; i < pieces.size(); ++i) {
- unsigned number = 0;
- bool succeed = base::StringToUint(pieces[i], &number);
- DCHECK(succeed);
- vector->push_back(number);
+// Converts a serialized ImageTextureTargetsMap back to the runtime format.
+// Serialization takes the form:
+// "usage,format,target;usage,format,target;...;usage,format,target"
+cc::RendererSettings::ImageTextureTargetsMap StringToImageTextureTargetsMap(
+ const std::string& str) {
+ cc::RendererSettings::ImageTextureTargetsMap map;
+ std::vector<std::string> entries =
+ base::SplitString(str, ";", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
+ for (const auto& entry : entries) {
+ std::vector<std::string> fields = base::SplitString(
+ entry, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
+ DCHECK_EQ(fields.size(), 3);
enne (OOO) 2016/07/15 21:39:32 Mmm, is this safe if the dcheck fails? Should it b
ericrk 2016/07/19 20:22:43 Changed these to CHECKs and added a unit test. We
+ uint32_t usage = 0;
+ uint32_t format = 0;
+ uint32_t target = 0;
+ bool succeeded = base::StringToUint(fields[0], &usage) &&
+ base::StringToUint(fields[1], &format) &&
+ base::StringToUint(fields[2], &target);
+ DCHECK(succeeded);
+ DCHECK_LE(usage, static_cast<uint32_t>(gfx::BufferUsage::LAST));
+ DCHECK_LE(format, static_cast<uint32_t>(gfx::BufferFormat::LAST));
+ map.emplace(cc::RendererSettings::ImageTextureTargetKey(
+ static_cast<gfx::BufferUsage>(usage),
+ static_cast<gfx::BufferFormat>(format)),
+ target);
}
+ return map;
}
scoped_refptr<ContextProviderCommandBuffer> CreateOffscreenContext(
@@ -757,7 +773,8 @@ void RenderThreadImpl::Init(
std::string image_texture_target_string =
command_line.GetSwitchValueASCII(switches::kContentImageTextureTarget);
- StringToUintVector(image_texture_target_string, &use_image_texture_targets_);
+ use_image_texture_targets_ =
+ StringToImageTextureTargetsMap(image_texture_target_string);
if (command_line.HasSwitch(switches::kDisableLCDText)) {
is_lcd_text_enabled_ = false;
@@ -1455,16 +1472,11 @@ media::GpuVideoAcceleratorFactories* RenderThreadImpl::GetGpuFactories() {
#else
cmd_line->HasSwitch(switches::kEnableGpuMemoryBufferVideoFrames);
#endif
- std::vector<unsigned> image_texture_targets;
- std::string video_frame_image_texture_target_string =
- cmd_line->GetSwitchValueASCII(switches::kVideoImageTextureTarget);
- StringToUintVector(video_frame_image_texture_target_string,
- &image_texture_targets);
gpu_factories_.push_back(RendererGpuVideoAcceleratorFactories::Create(
std::move(gpu_channel_host), base::ThreadTaskRunnerHandle::Get(),
media_task_runner, std::move(media_context_provider),
- enable_gpu_memory_buffer_video_frames, image_texture_targets,
+ enable_gpu_memory_buffer_video_frames, use_image_texture_targets_,
enable_video_accelerator));
return gpu_factories_.back();
}
@@ -1595,7 +1607,8 @@ bool RenderThreadImpl::IsElasticOverscrollEnabled() {
return is_elastic_overscroll_enabled_;
}
-std::vector<unsigned> RenderThreadImpl::GetImageTextureTargets() {
+const cc::RendererSettings::ImageTextureTargetsMap&
+RenderThreadImpl::GetImageTextureTargets() {
return use_image_texture_targets_;
}

Powered by Google App Engine
This is Rietveld 408576698