OLD | NEW |
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/gl_helper.h" | 5 #include "content/common/gpu/client/gl_helper.h" |
6 | 6 |
7 #include <queue> | 7 #include <queue> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 474 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
485 | 485 |
486 void GLHelper::CopyTextureToImpl::ReadbackAsync( | 486 void GLHelper::CopyTextureToImpl::ReadbackAsync( |
487 const gfx::Size& dst_size, | 487 const gfx::Size& dst_size, |
488 int32 bytes_per_row, | 488 int32 bytes_per_row, |
489 int32 row_stride_bytes, | 489 int32 row_stride_bytes, |
490 unsigned char* out, | 490 unsigned char* out, |
491 GLenum format, | 491 GLenum format, |
492 GLenum type, | 492 GLenum type, |
493 size_t bytes_per_pixel, | 493 size_t bytes_per_pixel, |
494 const base::Callback<void(bool)>& callback) { | 494 const base::Callback<void(bool)>& callback) { |
495 TRACE_EVENT0("mirror", "GLHelper::CopyTextureToImpl::ReadbackAsync"); | 495 TRACE_EVENT0("gpu.capture", "GLHelper::CopyTextureToImpl::ReadbackAsync"); |
496 Request* request = | 496 Request* request = |
497 new Request(dst_size, bytes_per_row, row_stride_bytes, out, callback); | 497 new Request(dst_size, bytes_per_row, row_stride_bytes, out, callback); |
498 request_queue_.push(request); | 498 request_queue_.push(request); |
499 request->buffer = 0u; | 499 request->buffer = 0u; |
500 | 500 |
501 gl_->GenBuffers(1, &request->buffer); | 501 gl_->GenBuffers(1, &request->buffer); |
502 gl_->BindBuffer(GL_PIXEL_PACK_TRANSFER_BUFFER_CHROMIUM, request->buffer); | 502 gl_->BindBuffer(GL_PIXEL_PACK_TRANSFER_BUFFER_CHROMIUM, request->buffer); |
503 gl_->BufferData(GL_PIXEL_PACK_TRANSFER_BUFFER_CHROMIUM, | 503 gl_->BufferData(GL_PIXEL_PACK_TRANSFER_BUFFER_CHROMIUM, |
504 bytes_per_pixel * dst_size.GetArea(), | 504 bytes_per_pixel * dst_size.GetArea(), |
505 NULL, | 505 NULL, |
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
700 gfx::Rect(src_size), | 700 gfx::Rect(src_size), |
701 dst_size, | 701 dst_size, |
702 vertically_flip_texture, | 702 vertically_flip_texture, |
703 false, | 703 false, |
704 kRGBA_8888_SkColorType, // GL_RGBA | 704 kRGBA_8888_SkColorType, // GL_RGBA |
705 quality); | 705 quality); |
706 } | 706 } |
707 | 707 |
708 void GLHelper::CopyTextureToImpl::ReadbackDone(Request* finished_request, | 708 void GLHelper::CopyTextureToImpl::ReadbackDone(Request* finished_request, |
709 int bytes_per_pixel) { | 709 int bytes_per_pixel) { |
710 TRACE_EVENT0("mirror", | 710 TRACE_EVENT0("gpu.capture", |
711 "GLHelper::CopyTextureToImpl::CheckReadbackFramebufferComplete"); | 711 "GLHelper::CopyTextureToImpl::CheckReadbackFramebufferComplete"); |
712 finished_request->done = true; | 712 finished_request->done = true; |
713 | 713 |
714 FinishRequestHelper finish_request_helper; | 714 FinishRequestHelper finish_request_helper; |
715 | 715 |
716 // We process transfer requests in the order they were received, regardless | 716 // We process transfer requests in the order they were received, regardless |
717 // of the order we get the callbacks in. | 717 // of the order we get the callbacks in. |
718 while (!request_queue_.empty()) { | 718 while (!request_queue_.empty()) { |
719 Request* request = request_queue_.front(); | 719 Request* request = request_queue_.front(); |
720 if (!request->done) { | 720 if (!request->done) { |
(...skipping 24 matching lines...) Expand all Loading... |
745 gl_->BindBuffer(GL_PIXEL_PACK_TRANSFER_BUFFER_CHROMIUM, 0); | 745 gl_->BindBuffer(GL_PIXEL_PACK_TRANSFER_BUFFER_CHROMIUM, 0); |
746 } | 746 } |
747 FinishRequest(request, result, &finish_request_helper); | 747 FinishRequest(request, result, &finish_request_helper); |
748 } | 748 } |
749 } | 749 } |
750 | 750 |
751 void GLHelper::CopyTextureToImpl::FinishRequest( | 751 void GLHelper::CopyTextureToImpl::FinishRequest( |
752 Request* request, | 752 Request* request, |
753 bool result, | 753 bool result, |
754 FinishRequestHelper* finish_request_helper) { | 754 FinishRequestHelper* finish_request_helper) { |
755 TRACE_EVENT0("mirror", "GLHelper::CopyTextureToImpl::FinishRequest"); | 755 TRACE_EVENT0("gpu.capture", "GLHelper::CopyTextureToImpl::FinishRequest"); |
756 DCHECK(request_queue_.front() == request); | 756 DCHECK(request_queue_.front() == request); |
757 request_queue_.pop(); | 757 request_queue_.pop(); |
758 request->result = result; | 758 request->result = result; |
759 ScopedFlush flush(gl_); | 759 ScopedFlush flush(gl_); |
760 if (request->query != 0) { | 760 if (request->query != 0) { |
761 gl_->DeleteQueriesEXT(1, &request->query); | 761 gl_->DeleteQueriesEXT(1, &request->query); |
762 request->query = 0; | 762 request->query = 0; |
763 } | 763 } |
764 if (request->buffer != 0) { | 764 if (request->buffer != 0) { |
765 gl_->DeleteBuffers(1, &request->buffer); | 765 gl_->DeleteBuffers(1, &request->buffer); |
(...skipping 610 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1376 InitCopyTextToImpl(); | 1376 InitCopyTextToImpl(); |
1377 return copy_texture_to_impl_->CreateReadbackPipelineYUV(quality, | 1377 return copy_texture_to_impl_->CreateReadbackPipelineYUV(quality, |
1378 src_size, | 1378 src_size, |
1379 src_subrect, | 1379 src_subrect, |
1380 dst_size, | 1380 dst_size, |
1381 flip_vertically, | 1381 flip_vertically, |
1382 use_mrt); | 1382 use_mrt); |
1383 } | 1383 } |
1384 | 1384 |
1385 } // namespace content | 1385 } // namespace content |
OLD | NEW |