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

Side by Side Diff: content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.cc

Issue 1937313003: Hide WebGraphicsContext3DCommandBufferImpl. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: construct: . 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/common/gpu/client/webgraphicscontext3d_command_buffer_impl.h" 5 #include "content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.h"
6 6
7 #include "third_party/khronos/GLES2/gl2.h" 7 #include "third_party/khronos/GLES2/gl2.h"
8 #ifndef GL_GLEXT_PROTOTYPES 8 #ifndef GL_GLEXT_PROTOTYPES
9 #define GL_GLEXT_PROTOTYPES 1 9 #define GL_GLEXT_PROTOTYPES 1
10 #endif 10 #endif
(...skipping 21 matching lines...) Expand all
32 #include "gpu/command_buffer/client/transfer_buffer.h" 32 #include "gpu/command_buffer/client/transfer_buffer.h"
33 #include "gpu/command_buffer/common/constants.h" 33 #include "gpu/command_buffer/common/constants.h"
34 #include "gpu/command_buffer/common/gpu_memory_allocation.h" 34 #include "gpu/command_buffer/common/gpu_memory_allocation.h"
35 #include "gpu/command_buffer/common/mailbox.h" 35 #include "gpu/command_buffer/common/mailbox.h"
36 #include "gpu/ipc/client/gpu_channel_host.h" 36 #include "gpu/ipc/client/gpu_channel_host.h"
37 #include "gpu/skia_bindings/gl_bindings_skia_cmd_buffer.h" 37 #include "gpu/skia_bindings/gl_bindings_skia_cmd_buffer.h"
38 #include "third_party/skia/include/core/SkTypes.h" 38 #include "third_party/skia/include/core/SkTypes.h"
39 39
40 namespace content { 40 namespace content {
41 41
42 WebGraphicsContext3DCommandBufferImpl::WebGraphicsContext3DCommandBufferImpl( 42 WebGraphicsContext3DCommandBufferImpl::WebGraphicsContext3DCommandBufferImpl() {
43 gpu::SurfaceHandle surface_handle,
44 const GURL& active_url,
45 scoped_refptr<gpu::GpuChannelHost> host,
46 gfx::GpuPreference gpu_preference,
47 bool automatic_flushes)
48 : automatic_flushes_(automatic_flushes),
49 surface_handle_(surface_handle),
50 active_url_(active_url),
51 gpu_preference_(gpu_preference),
52 host_(std::move(host)) {
53 DCHECK(host_);
54 } 43 }
55 44
56 WebGraphicsContext3DCommandBufferImpl:: 45 WebGraphicsContext3DCommandBufferImpl::
57 ~WebGraphicsContext3DCommandBufferImpl() {} 46 ~WebGraphicsContext3DCommandBufferImpl() {}
58 47
59 bool WebGraphicsContext3DCommandBufferImpl::MaybeInitializeGL( 48 bool WebGraphicsContext3DCommandBufferImpl::MaybeInitializeGL(
49 gpu::SurfaceHandle surface_handle,
50 const GURL& active_url,
51 gpu::GpuChannelHost* host,
52 gfx::GpuPreference gpu_preference,
53 bool automatic_flushes,
60 const gpu::SharedMemoryLimits& memory_limits, 54 const gpu::SharedMemoryLimits& memory_limits,
61 gpu::CommandBufferProxyImpl* shared_command_buffer, 55 gpu::CommandBufferProxyImpl* shared_command_buffer,
62 scoped_refptr<gpu::gles2::ShareGroup> share_group, 56 scoped_refptr<gpu::gles2::ShareGroup> share_group,
63 const gpu::gles2::ContextCreationAttribHelper& attributes, 57 const gpu::gles2::ContextCreationAttribHelper& attributes,
64 command_buffer_metrics::ContextType context_type) { 58 command_buffer_metrics::ContextType context_type) {
65 DCHECK_EQ(!!shared_command_buffer, !!share_group); 59 DCHECK_EQ(!!shared_command_buffer, !!share_group);
66 TRACE_EVENT0("gpu", "WebGfxCtx3DCmdBfrImpl::MaybeInitializeGL"); 60 TRACE_EVENT0("gpu", "WebGfxCtx3DCmdBfrImpl::MaybeInitializeGL");
67 61
68 DCHECK(attributes.buffer_preserved); 62 DCHECK(attributes.buffer_preserved);
69 std::vector<int32_t> serialized_attributes; 63 std::vector<int32_t> serialized_attributes;
70 attributes.Serialize(&serialized_attributes); 64 attributes.Serialize(&serialized_attributes);
71 65
72 // Create a proxy to a command buffer in the GPU process. 66 // Create a proxy to a command buffer in the GPU process.
73 command_buffer_ = host_->CreateCommandBuffer( 67 command_buffer_ = host->CreateCommandBuffer(
74 surface_handle_, gfx::Size(), shared_command_buffer, 68 surface_handle, gfx::Size(), shared_command_buffer,
75 gpu::GpuChannelHost::kDefaultStreamId, 69 gpu::GpuChannelHost::kDefaultStreamId,
76 gpu::GpuChannelHost::kDefaultStreamPriority, serialized_attributes, 70 gpu::GpuChannelHost::kDefaultStreamPriority, serialized_attributes,
77 active_url_, gpu_preference_); 71 active_url, gpu_preference);
78 72
79 if (!command_buffer_) { 73 if (!command_buffer_) {
80 DLOG(ERROR) << "GpuChannelHost failed to create command buffer."; 74 DLOG(ERROR) << "GpuChannelHost failed to create command buffer.";
81 command_buffer_metrics::UmaRecordContextInitFailed(context_type); 75 command_buffer_metrics::UmaRecordContextInitFailed(context_type);
82 return false; 76 return false;
83 } 77 }
84 78
85 // The GLES2 helper writes the command buffer protocol. 79 // The GLES2 helper writes the command buffer protocol.
86 gles2_helper_.reset(new gpu::gles2::GLES2CmdHelper(command_buffer_.get())); 80 gles2_helper_.reset(new gpu::gles2::GLES2CmdHelper(command_buffer_.get()));
87 gles2_helper_->SetAutomaticFlushes(automatic_flushes_); 81 gles2_helper_->SetAutomaticFlushes(automatic_flushes);
88 if (!gles2_helper_->Initialize(memory_limits.command_buffer_size)) { 82 if (!gles2_helper_->Initialize(memory_limits.command_buffer_size)) {
89 DLOG(ERROR) << "Failed to initialize GLES2CmdHelper."; 83 DLOG(ERROR) << "Failed to initialize GLES2CmdHelper.";
90 return false; 84 return false;
91 } 85 }
92 86
93 // The transfer buffer is used to copy resources between the client 87 // The transfer buffer is used to copy resources between the client
94 // process and the GPU process. 88 // process and the GPU process.
95 transfer_buffer_ .reset(new gpu::TransferBuffer(gles2_helper_.get())); 89 transfer_buffer_ .reset(new gpu::TransferBuffer(gles2_helper_.get()));
96 90
97 const bool bind_generates_resource = attributes.bind_generates_resource; 91 const bool bind_generates_resource = attributes.bind_generates_resource;
(...skipping 13 matching lines...) Expand all
111 memory_limits.mapped_memory_reclaim_limit)) { 105 memory_limits.mapped_memory_reclaim_limit)) {
112 DLOG(ERROR) << "Failed to initialize GLES2Implementation."; 106 DLOG(ERROR) << "Failed to initialize GLES2Implementation.";
113 return false; 107 return false;
114 } 108 }
115 109
116 real_gl_->TraceBeginCHROMIUM("WebGraphicsContext3D", "CommandBufferContext"); 110 real_gl_->TraceBeginCHROMIUM("WebGraphicsContext3D", "CommandBufferContext");
117 return true; 111 return true;
118 } 112 }
119 113
120 bool WebGraphicsContext3DCommandBufferImpl::InitializeOnCurrentThread( 114 bool WebGraphicsContext3DCommandBufferImpl::InitializeOnCurrentThread(
115 gpu::SurfaceHandle surface_handle,
116 const GURL& active_url,
117 gpu::GpuChannelHost* host,
118 gfx::GpuPreference gpu_preference,
119 bool automatic_flushes,
121 const gpu::SharedMemoryLimits& memory_limits, 120 const gpu::SharedMemoryLimits& memory_limits,
122 gpu::CommandBufferProxyImpl* shared_command_buffer, 121 gpu::CommandBufferProxyImpl* shared_command_buffer,
123 scoped_refptr<gpu::gles2::ShareGroup> share_group, 122 scoped_refptr<gpu::gles2::ShareGroup> share_group,
124 const gpu::gles2::ContextCreationAttribHelper& attributes, 123 const gpu::gles2::ContextCreationAttribHelper& attributes,
125 command_buffer_metrics::ContextType context_type) { 124 command_buffer_metrics::ContextType context_type) {
126 if (!MaybeInitializeGL(memory_limits, shared_command_buffer, 125 if (!MaybeInitializeGL(surface_handle, active_url, host, gpu_preference,
127 std::move(share_group), attributes, context_type)) 126 automatic_flushes, memory_limits,
127 shared_command_buffer, std::move(share_group),
128 attributes, context_type))
128 return false; 129 return false;
129 if (gpu::error::IsError(command_buffer_->GetLastError())) { 130 if (gpu::error::IsError(command_buffer_->GetLastError())) {
130 DLOG(ERROR) << "Context dead on arrival. Last error: " 131 DLOG(ERROR) << "Context dead on arrival. Last error: "
131 << command_buffer_->GetLastError(); 132 << command_buffer_->GetLastError();
132 return false; 133 return false;
133 } 134 }
134 135
135 return true; 136 return true;
136 } 137 }
137 138
138 } // namespace content 139 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698