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

Side by Side Diff: content/renderer/render_thread_impl.cc

Issue 1936773002: Move attributes and context type out to ContextProviderCommandBuffer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@rmwgc3d
Patch Set: attributes: welglstuff Created 4 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/render_thread_impl.h" 5 #include "content/renderer/render_thread_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <map> 9 #include <map>
10 #include <utility> 10 #include <utility>
(...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after
394 str, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); 394 str, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
395 DCHECK_EQ(pieces.size(), static_cast<size_t>(gfx::BufferFormat::LAST) + 1); 395 DCHECK_EQ(pieces.size(), static_cast<size_t>(gfx::BufferFormat::LAST) + 1);
396 for (size_t i = 0; i < pieces.size(); ++i) { 396 for (size_t i = 0; i < pieces.size(); ++i) {
397 unsigned number = 0; 397 unsigned number = 0;
398 bool succeed = base::StringToUint(pieces[i], &number); 398 bool succeed = base::StringToUint(pieces[i], &number);
399 DCHECK(succeed); 399 DCHECK(succeed);
400 vector->push_back(number); 400 vector->push_back(number);
401 } 401 }
402 } 402 }
403 403
404 std::unique_ptr<WebGraphicsContext3DCommandBufferImpl> CreateOffscreenContext( 404 scoped_refptr<ContextProviderCommandBuffer> CreateOffscreenContext(
405 scoped_refptr<gpu::GpuChannelHost> gpu_channel_host) { 405 scoped_refptr<gpu::GpuChannelHost> gpu_channel_host,
406 command_buffer_metrics::ContextType type) {
406 DCHECK(gpu_channel_host); 407 DCHECK(gpu_channel_host);
407 // This is used to create a few different offscreen contexts: 408 // This is used to create a few different offscreen contexts:
408 // - The shared main thread context (offscreen) used by blink for canvas. 409 // - The shared main thread context (offscreen) used by blink for canvas.
409 // - The worker context (offscreen) used for GPU raster and video decoding. 410 // - The worker context (offscreen) used for GPU raster and video decoding.
410 // This is for an offscreen context, so the default framebuffer doesn't need 411 // This is for an offscreen context, so the default framebuffer doesn't need
411 // alpha, depth, stencil, antialiasing. 412 // alpha, depth, stencil, antialiasing.
412 gpu::gles2::ContextCreationAttribHelper attributes; 413 gpu::gles2::ContextCreationAttribHelper attributes;
413 attributes.alpha_size = -1; 414 attributes.alpha_size = -1;
414 attributes.depth_size = 0; 415 attributes.depth_size = 0;
415 attributes.stencil_size = 0; 416 attributes.stencil_size = 0;
416 attributes.samples = 0; 417 attributes.samples = 0;
417 attributes.sample_buffers = 0; 418 attributes.sample_buffers = 0;
418 attributes.bind_generates_resource = false; 419 attributes.bind_generates_resource = false;
419 attributes.lose_context_when_out_of_memory = true; 420 attributes.lose_context_when_out_of_memory = true;
420 constexpr bool automatic_flushes = false; 421 constexpr bool automatic_flushes = false;
421 return base::WrapUnique(new WebGraphicsContext3DCommandBufferImpl( 422 return make_scoped_refptr(new ContextProviderCommandBuffer(
422 gpu::kNullSurfaceHandle, 423 base::WrapUnique(new WebGraphicsContext3DCommandBufferImpl(
423 GURL("chrome://gpu/RenderThreadImpl::CreateOffscreenContext3d"), 424 gpu::kNullSurfaceHandle,
424 gpu_channel_host.get(), attributes, gfx::PreferIntegratedGpu, 425 GURL("chrome://gpu/RenderThreadImpl::CreateOffscreenContext"),
425 automatic_flushes)); 426 gpu_channel_host.get(), gfx::PreferIntegratedGpu, automatic_flushes)),
427 gpu::SharedMemoryLimits(), attributes, nullptr, type));
426 } 428 }
427 429
428 } // namespace 430 } // namespace
429 431
430 // For measuring memory usage after each task. Behind a command line flag. 432 // For measuring memory usage after each task. Behind a command line flag.
431 class MemoryObserver : public base::MessageLoop::TaskObserver { 433 class MemoryObserver : public base::MessageLoop::TaskObserver {
432 public: 434 public:
433 MemoryObserver() {} 435 MemoryObserver() {}
434 ~MemoryObserver() override {} 436 ~MemoryObserver() override {}
435 437
(...skipping 1009 matching lines...) Expand 10 before | Expand all | Expand 10 after
1445 GL_NO_ERROR) 1447 GL_NO_ERROR)
1446 return shared_main_thread_contexts_; 1448 return shared_main_thread_contexts_;
1447 1449
1448 scoped_refptr<gpu::GpuChannelHost> gpu_channel_host(EstablishGpuChannelSync( 1450 scoped_refptr<gpu::GpuChannelHost> gpu_channel_host(EstablishGpuChannelSync(
1449 CAUSE_FOR_GPU_LAUNCH_WEBGRAPHICSCONTEXT3DCOMMANDBUFFERIMPL_INITIALIZE)); 1451 CAUSE_FOR_GPU_LAUNCH_WEBGRAPHICSCONTEXT3DCOMMANDBUFFERIMPL_INITIALIZE));
1450 if (!gpu_channel_host) { 1452 if (!gpu_channel_host) {
1451 shared_main_thread_contexts_ = nullptr; 1453 shared_main_thread_contexts_ = nullptr;
1452 return nullptr; 1454 return nullptr;
1453 } 1455 }
1454 1456
1455 shared_main_thread_contexts_ = new ContextProviderCommandBuffer( 1457 shared_main_thread_contexts_ = CreateOffscreenContext(
1456 CreateOffscreenContext(std::move(gpu_channel_host)), 1458 std::move(gpu_channel_host),
1457 gpu::SharedMemoryLimits(), nullptr, RENDERER_MAINTHREAD_CONTEXT); 1459 command_buffer_metrics::RENDERER_MAINTHREAD_CONTEXT);
1458 if (!shared_main_thread_contexts_->BindToCurrentThread()) 1460 if (!shared_main_thread_contexts_->BindToCurrentThread())
1459 shared_main_thread_contexts_ = nullptr; 1461 shared_main_thread_contexts_ = nullptr;
1460 return shared_main_thread_contexts_; 1462 return shared_main_thread_contexts_;
1461 } 1463 }
1462 1464
1463 #if defined(OS_ANDROID) 1465 #if defined(OS_ANDROID)
1464 1466
1465 scoped_refptr<StreamTextureFactory> RenderThreadImpl::GetStreamTexureFactory() { 1467 scoped_refptr<StreamTextureFactory> RenderThreadImpl::GetStreamTexureFactory() {
1466 DCHECK(IsMainThread()); 1468 DCHECK(IsMainThread());
1467 if (!stream_texture_factory_.get() || 1469 if (!stream_texture_factory_.get() ||
(...skipping 479 matching lines...) Expand 10 before | Expand all | Expand 10 after
1947 return shared_worker_context_provider_; 1949 return shared_worker_context_provider_;
1948 } 1950 }
1949 1951
1950 scoped_refptr<gpu::GpuChannelHost> gpu_channel_host(EstablishGpuChannelSync( 1952 scoped_refptr<gpu::GpuChannelHost> gpu_channel_host(EstablishGpuChannelSync(
1951 CAUSE_FOR_GPU_LAUNCH_WEBGRAPHICSCONTEXT3DCOMMANDBUFFERIMPL_INITIALIZE)); 1953 CAUSE_FOR_GPU_LAUNCH_WEBGRAPHICSCONTEXT3DCOMMANDBUFFERIMPL_INITIALIZE));
1952 if (!gpu_channel_host) { 1954 if (!gpu_channel_host) {
1953 shared_worker_context_provider_ = nullptr; 1955 shared_worker_context_provider_ = nullptr;
1954 return shared_worker_context_provider_; 1956 return shared_worker_context_provider_;
1955 } 1957 }
1956 1958
1957 shared_worker_context_provider_ = new ContextProviderCommandBuffer( 1959 shared_worker_context_provider_ =
1958 CreateOffscreenContext(std::move(gpu_channel_host)), 1960 CreateOffscreenContext(std::move(gpu_channel_host),
1959 gpu::SharedMemoryLimits(), nullptr, RENDER_WORKER_CONTEXT); 1961 command_buffer_metrics::RENDER_WORKER_CONTEXT);
1960 if (!shared_worker_context_provider_->BindToCurrentThread()) 1962 if (!shared_worker_context_provider_->BindToCurrentThread())
1961 shared_worker_context_provider_ = nullptr; 1963 shared_worker_context_provider_ = nullptr;
1962 if (shared_worker_context_provider_) 1964 if (shared_worker_context_provider_)
1963 shared_worker_context_provider_->SetupLock(); 1965 shared_worker_context_provider_->SetupLock();
1964 return shared_worker_context_provider_; 1966 return shared_worker_context_provider_;
1965 } 1967 }
1966 1968
1967 void RenderThreadImpl::SampleGamepads(blink::WebGamepads* data) { 1969 void RenderThreadImpl::SampleGamepads(blink::WebGamepads* data) {
1968 blink_platform_impl_->sampleGamepads(*data); 1970 blink_platform_impl_->sampleGamepads(*data);
1969 } 1971 }
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
2048 } 2050 }
2049 2051
2050 void RenderThreadImpl::PendingRenderFrameConnect::OnConnectionError() { 2052 void RenderThreadImpl::PendingRenderFrameConnect::OnConnectionError() {
2051 size_t erased = 2053 size_t erased =
2052 RenderThreadImpl::current()->pending_render_frame_connects_.erase( 2054 RenderThreadImpl::current()->pending_render_frame_connects_.erase(
2053 routing_id_); 2055 routing_id_);
2054 DCHECK_EQ(1u, erased); 2056 DCHECK_EQ(1u, erased);
2055 } 2057 }
2056 2058
2057 } // namespace content 2059 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698