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

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

Issue 1427543002: Modified old wait sync point functions to also accept new sync tokens. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix mock gpu video accelerator factory Created 5 years, 1 month 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 /* 1 /*
2 * Copyright (c) 2010, Google Inc. All rights reserved. 2 * Copyright (c) 2010, Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 362
363 RefPtr<MailboxInfo> mailboxInfo; 363 RefPtr<MailboxInfo> mailboxInfo;
364 for (size_t i = 0; i < m_textureMailboxes.size(); i++) { 364 for (size_t i = 0; i < m_textureMailboxes.size(); i++) {
365 if (nameEquals(m_textureMailboxes[i]->mailbox, mailbox)) { 365 if (nameEquals(m_textureMailboxes[i]->mailbox, mailbox)) {
366 mailboxInfo = m_textureMailboxes[i]; 366 mailboxInfo = m_textureMailboxes[i];
367 break; 367 break;
368 } 368 }
369 } 369 }
370 ASSERT(mailboxInfo); 370 ASSERT(mailboxInfo);
371 371
372 if (mailboxInfo->mailbox.syncPoint) { 372 if (mailboxInfo->mailbox.syncPoint || mailboxInfo->mailbox.validSyncToken) {
373 m_context->waitSyncPoint(mailboxInfo->mailbox.syncPoint); 373 m_context->waitSyncPoint(mailboxInfo->mailbox.syncPoint,
374 mailboxInfo->mailbox.syncToken);
374 mailboxInfo->mailbox.syncPoint = 0; 375 mailboxInfo->mailbox.syncPoint = 0;
376 mailboxInfo->mailbox.validSyncToken = false;
375 } 377 }
376 378
377 if (mailboxInfo->size != m_size) { 379 if (mailboxInfo->size != m_size) {
378 m_context->bindTexture(GL_TEXTURE_2D, mailboxInfo->textureInfo.textureId ); 380 m_context->bindTexture(GL_TEXTURE_2D, mailboxInfo->textureInfo.textureId );
379 allocateTextureMemory(&mailboxInfo->textureInfo, m_size); 381 allocateTextureMemory(&mailboxInfo->textureInfo, m_size);
380 mailboxInfo->size = m_size; 382 mailboxInfo->size = m_size;
381 } 383 }
382 384
383 return mailboxInfo.release(); 385 return mailboxInfo.release();
384 } 386 }
385 387
386 PassRefPtr<DrawingBuffer::MailboxInfo> DrawingBuffer::createNewMailbox(const Tex tureInfo& info) 388 PassRefPtr<DrawingBuffer::MailboxInfo> DrawingBuffer::createNewMailbox(const Tex tureInfo& info)
387 { 389 {
388 RefPtr<MailboxInfo> returnMailbox = adoptRef(new MailboxInfo()); 390 RefPtr<MailboxInfo> returnMailbox = adoptRef(new MailboxInfo());
389 m_context->genMailboxCHROMIUM(returnMailbox->mailbox.name); 391 m_context->genMailboxCHROMIUM(returnMailbox->mailbox.name);
390 returnMailbox->textureInfo = info; 392 returnMailbox->textureInfo = info;
391 returnMailbox->size = m_size; 393 returnMailbox->size = m_size;
392 m_textureMailboxes.append(returnMailbox); 394 m_textureMailboxes.append(returnMailbox);
393 return returnMailbox.release(); 395 return returnMailbox.release();
394 } 396 }
395 397
396 void DrawingBuffer::deleteMailbox(const WebExternalTextureMailbox& mailbox) 398 void DrawingBuffer::deleteMailbox(const WebExternalTextureMailbox& mailbox)
397 { 399 {
398 for (size_t i = 0; i < m_textureMailboxes.size(); i++) { 400 for (size_t i = 0; i < m_textureMailboxes.size(); i++) {
399 if (nameEquals(m_textureMailboxes[i]->mailbox, mailbox)) { 401 if (nameEquals(m_textureMailboxes[i]->mailbox, mailbox)) {
400 if (mailbox.syncPoint) 402 if (mailbox.syncPoint || mailbox.validSyncToken)
401 m_context->waitSyncPoint(mailbox.syncPoint); 403 m_context->waitSyncPoint(mailbox.syncPoint, mailbox.syncToken);
402 404
403 deleteChromiumImageForTexture(&m_textureMailboxes[i]->textureInfo); 405 deleteChromiumImageForTexture(&m_textureMailboxes[i]->textureInfo);
404 406
405 m_context->deleteTexture(m_textureMailboxes[i]->textureInfo.textureI d); 407 m_context->deleteTexture(m_textureMailboxes[i]->textureInfo.textureI d);
406 m_textureMailboxes.remove(i); 408 m_textureMailboxes.remove(i);
407 return; 409 return;
408 } 410 }
409 } 411 }
410 ASSERT_NOT_REACHED(); 412 ASSERT_NOT_REACHED();
411 } 413 }
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 textureId = m_frontColorBuffer.texInfo.textureId; 504 textureId = m_frontColorBuffer.texInfo.textureId;
503 mailbox = m_frontColorBuffer.mailbox; 505 mailbox = m_frontColorBuffer.mailbox;
504 } else { 506 } else {
505 textureId = m_colorBuffer.textureId; 507 textureId = m_colorBuffer.textureId;
506 m_context->genMailboxCHROMIUM(mailbox.name); 508 m_context->genMailboxCHROMIUM(mailbox.name);
507 m_context->produceTextureDirectCHROMIUM(textureId, GL_TEXTURE_2D, mailbo x.name); 509 m_context->produceTextureDirectCHROMIUM(textureId, GL_TEXTURE_2D, mailbo x.name);
508 m_context->flush(); 510 m_context->flush();
509 mailbox.syncPoint = m_context->insertSyncPoint(); 511 mailbox.syncPoint = m_context->insertSyncPoint();
510 } 512 }
511 513
512 context->waitSyncPoint(mailbox.syncPoint); 514 context->waitSyncPoint(mailbox.syncPoint, mailbox.syncToken);
513 Platform3DObject sourceTexture = context->createAndConsumeTextureCHROMIUM(GL _TEXTURE_2D, mailbox.name); 515 Platform3DObject sourceTexture = context->createAndConsumeTextureCHROMIUM(GL _TEXTURE_2D, mailbox.name);
514 516
515 GLboolean unpackPremultiplyAlphaNeeded = GL_FALSE; 517 GLboolean unpackPremultiplyAlphaNeeded = GL_FALSE;
516 GLboolean unpackUnpremultiplyAlphaNeeded = GL_FALSE; 518 GLboolean unpackUnpremultiplyAlphaNeeded = GL_FALSE;
517 if (m_actualAttributes.alpha && m_actualAttributes.premultipliedAlpha && !pr emultiplyAlpha) 519 if (m_actualAttributes.alpha && m_actualAttributes.premultipliedAlpha && !pr emultiplyAlpha)
518 unpackUnpremultiplyAlphaNeeded = GL_TRUE; 520 unpackUnpremultiplyAlphaNeeded = GL_TRUE;
519 else if (m_actualAttributes.alpha && !m_actualAttributes.premultipliedAlpha && premultiplyAlpha) 521 else if (m_actualAttributes.alpha && !m_actualAttributes.premultipliedAlpha && premultiplyAlpha)
520 unpackPremultiplyAlphaNeeded = GL_TRUE; 522 unpackPremultiplyAlphaNeeded = GL_TRUE;
521 523
522 context->copyTextureCHROMIUM(GL_TEXTURE_2D, sourceTexture, texture, internal Format, destType, flipY, unpackPremultiplyAlphaNeeded, unpackUnpremultiplyAlphaN eeded); 524 context->copyTextureCHROMIUM(GL_TEXTURE_2D, sourceTexture, texture, internal Format, destType, flipY, unpackPremultiplyAlphaNeeded, unpackUnpremultiplyAlphaN eeded);
523 525
524 context->deleteTexture(sourceTexture); 526 context->deleteTexture(sourceTexture);
525 527
526 context->flush(); 528 context->flush();
527 m_context->waitSyncPoint(context->insertSyncPoint()); 529 m_context->waitSyncPoint(context->insertSyncPoint(), nullptr);
528 530
529 return true; 531 return true;
530 } 532 }
531 533
532 Platform3DObject DrawingBuffer::framebuffer() const 534 Platform3DObject DrawingBuffer::framebuffer() const
533 { 535 {
534 return m_fbo; 536 return m_fbo;
535 } 537 }
536 538
537 WebLayer* DrawingBuffer::platformLayer() 539 WebLayer* DrawingBuffer::platformLayer()
(...skipping 479 matching lines...) Expand 10 before | Expand all | Expand 10 after
1017 void DrawingBuffer::deleteChromiumImageForTexture(TextureInfo* info) 1019 void DrawingBuffer::deleteChromiumImageForTexture(TextureInfo* info)
1018 { 1020 {
1019 if (info->imageId) { 1021 if (info->imageId) {
1020 m_context->releaseTexImage2DCHROMIUM(GL_TEXTURE_2D, info->imageId); 1022 m_context->releaseTexImage2DCHROMIUM(GL_TEXTURE_2D, info->imageId);
1021 m_context->destroyImageCHROMIUM(info->imageId); 1023 m_context->destroyImageCHROMIUM(info->imageId);
1022 info->imageId = 0; 1024 info->imageId = 0;
1023 } 1025 }
1024 } 1026 }
1025 1027
1026 } // namespace blink 1028 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698