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

Side by Side Diff: third_party/WebKit/Source/platform/graphics/OffscreenCanvasFrameDispatcherImpl.cpp

Issue 2755463002: [cc] Fix CompositorFrameSinkSupport BeginFrameAck interface. (Closed)
Patch Set: add BeginFrameDidNotSwap to MojoCFS. Created 3 years, 9 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "platform/graphics/OffscreenCanvasFrameDispatcherImpl.h" 5 #include "platform/graphics/OffscreenCanvasFrameDispatcherImpl.h"
6 6
7 #include "cc/output/compositor_frame.h" 7 #include "cc/output/compositor_frame.h"
8 #include "cc/quads/texture_draw_quad.h" 8 #include "cc/quads/texture_draw_quad.h"
9 #include "gpu/command_buffer/client/gles2_interface.h" 9 #include "gpu/command_buffer/client/gles2_interface.h"
10 #include "platform/CrossThreadFunctional.h" 10 #include "platform/CrossThreadFunctional.h"
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 called on SwiftShader. */) { 203 called on SwiftShader. */) {
204 if (!image || !verifyImageSize(image->size())) 204 if (!image || !verifyImageSize(image->size()))
205 return; 205 return;
206 if (!m_frameSinkId.is_valid()) { 206 if (!m_frameSinkId.is_valid()) {
207 postImageToPlaceholder(std::move(image)); 207 postImageToPlaceholder(std::move(image));
208 return; 208 return;
209 } 209 }
210 cc::CompositorFrame frame; 210 cc::CompositorFrame frame;
211 // TODO(crbug.com/652931): update the device_scale_factor 211 // TODO(crbug.com/652931): update the device_scale_factor
212 frame.metadata.device_scale_factor = 1.0f; 212 frame.metadata.device_scale_factor = 1.0f;
213 if (m_currentBeginFrameAck.sequence_number ==
214 cc::BeginFrameArgs::kInvalidFrameNumber) {
215 // TODO(eseckler): This shouldn't be necessary when OffscreenCanvas no
216 // longer submits CompositorFrames without prior BeginFrame.
217 m_currentBeginFrameAck =
218 cc::BeginFrameAck(cc::BeginFrameArgs::kManualSourceId,
219 cc::BeginFrameArgs::kStartingFrameNumber,
220 cc::BeginFrameArgs::kStartingFrameNumber, 0, true);
221 } else {
222 m_currentBeginFrameAck.has_damage = true;
223 }
224 frame.metadata.begin_frame_ack = m_currentBeginFrameAck;
213 225
214 const gfx::Rect bounds(m_width, m_height); 226 const gfx::Rect bounds(m_width, m_height);
215 const int renderPassId = 1; 227 const int renderPassId = 1;
216 std::unique_ptr<cc::RenderPass> pass = cc::RenderPass::Create(); 228 std::unique_ptr<cc::RenderPass> pass = cc::RenderPass::Create();
217 pass->SetNew(renderPassId, bounds, bounds, gfx::Transform()); 229 pass->SetNew(renderPassId, bounds, bounds, gfx::Transform());
218 pass->has_transparent_background = false; 230 pass->has_transparent_background = false;
219 231
220 cc::SharedQuadState* sqs = pass->CreateAndAppendSharedQuadState(); 232 cc::SharedQuadState* sqs = pass->CreateAndAppendSharedQuadState();
221 sqs->SetAll(gfx::Transform(), bounds.size(), bounds, bounds, false, 1.f, 233 sqs->SetAll(gfx::Transform(), bounds.size(), bounds, bounds, false, 1.f,
222 SkBlendMode::kSrcOver, 0); 234 SkBlendMode::kSrcOver, 0);
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 bool needsBeginFrame) { 398 bool needsBeginFrame) {
387 if (m_sink && needsBeginFrame != m_needsBeginFrame) { 399 if (m_sink && needsBeginFrame != m_needsBeginFrame) {
388 m_needsBeginFrame = needsBeginFrame; 400 m_needsBeginFrame = needsBeginFrame;
389 m_sink->SetNeedsBeginFrame(needsBeginFrame); 401 m_sink->SetNeedsBeginFrame(needsBeginFrame);
390 } 402 }
391 } 403 }
392 404
393 void OffscreenCanvasFrameDispatcherImpl::OnBeginFrame( 405 void OffscreenCanvasFrameDispatcherImpl::OnBeginFrame(
394 const cc::BeginFrameArgs& beginFrameArgs) { 406 const cc::BeginFrameArgs& beginFrameArgs) {
395 DCHECK(client()); 407 DCHECK(client());
408 // TODO(eseckler): Set correct |latest_confirmed_sequence_number|.
409 m_currentBeginFrameAck = cc::BeginFrameAck(
410 beginFrameArgs.source_id, beginFrameArgs.sequence_number,
411 beginFrameArgs.sequence_number, 0, false);
396 client()->beginFrame(); 412 client()->beginFrame();
413 // TODO(eseckler): Tell |m_sink| if we did not draw during the BeginFrame.
414 m_currentBeginFrameAck.sequence_number =
415 cc::BeginFrameArgs::kInvalidFrameNumber;
397 } 416 }
398 417
399 void OffscreenCanvasFrameDispatcherImpl::ReclaimResources( 418 void OffscreenCanvasFrameDispatcherImpl::ReclaimResources(
400 const cc::ReturnedResourceArray& resources) { 419 const cc::ReturnedResourceArray& resources) {
401 for (const auto& resource : resources) { 420 for (const auto& resource : resources) {
402 RefPtr<StaticBitmapImage> image = m_cachedImages.at(resource.id); 421 RefPtr<StaticBitmapImage> image = m_cachedImages.at(resource.id);
403 422
404 if (image) { 423 if (image) {
405 if (image->hasMailbox()) { 424 if (image->hasMailbox()) {
406 image->updateSyncToken(resource.sync_token); 425 image->updateSyncToken(resource.sync_token);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
451 470
452 void OffscreenCanvasFrameDispatcherImpl::reshape(int width, int height) { 471 void OffscreenCanvasFrameDispatcherImpl::reshape(int width, int height) {
453 if (m_width != width || m_height != height) { 472 if (m_width != width || m_height != height) {
454 m_width = width; 473 m_width = width;
455 m_height = height; 474 m_height = height;
456 m_changeSizeForNextCommit = true; 475 m_changeSizeForNextCommit = true;
457 } 476 }
458 } 477 }
459 478
460 } // namespace blink 479 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698