| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 #if defined(ENABLE_GPU) | 5 #if defined(ENABLE_GPU) |
| 6 | 6 |
| 7 #include "webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.h" | 7 #include "webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.h" |
| 8 | 8 |
| 9 #include <GLES2/gl2.h> | 9 #include <GLES2/gl2.h> |
| 10 #ifndef GL_GLEXT_PROTOTYPES | 10 #ifndef GL_GLEXT_PROTOTYPES |
| (...skipping 825 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 836 // framebuffer vertically before reading it back for compositing | 836 // framebuffer vertically before reading it back for compositing |
| 837 // via software. This code was quite complicated, used a lot of | 837 // via software. This code was quite complicated, used a lot of |
| 838 // GPU memory, and didn't provide an obvious speedup. Since this | 838 // GPU memory, and didn't provide an obvious speedup. Since this |
| 839 // vertical flip is only a temporary solution anyway until Chrome | 839 // vertical flip is only a temporary solution anyway until Chrome |
| 840 // is fully GPU composited, it wasn't worth the complexity. | 840 // is fully GPU composited, it wasn't worth the complexity. |
| 841 | 841 |
| 842 bool mustRestoreFBO = (bound_fbo_ != framebuffer); | 842 bool mustRestoreFBO = (bound_fbo_ != framebuffer); |
| 843 if (mustRestoreFBO) { | 843 if (mustRestoreFBO) { |
| 844 gl_->BindFramebuffer(GL_FRAMEBUFFER, framebuffer); | 844 gl_->BindFramebuffer(GL_FRAMEBUFFER, framebuffer); |
| 845 } | 845 } |
| 846 gl_->ReadPixels(0, 0, width, height, | 846 gl_->ReadPixels(0, 0, width, height, |
| 847 GL_RGBA, GL_UNSIGNED_BYTE, pixels); | 847 GL_RGBA, GL_UNSIGNED_BYTE, pixels); |
| 848 | 848 |
| 849 // Swizzle red and blue channels | 849 // Swizzle red and blue channels |
| 850 // TODO(kbr): expose GL_BGRA as extension | 850 // TODO(kbr): expose GL_BGRA as extension |
| 851 for (size_t i = 0; i < buffer_size; i += 4) { | 851 for (size_t i = 0; i < buffer_size; i += 4) { |
| 852 std::swap(pixels[i], pixels[i + 2]); | 852 std::swap(pixels[i], pixels[i + 2]); |
| 853 } | 853 } |
| 854 | 854 |
| 855 if (mustRestoreFBO) { | 855 if (mustRestoreFBO) { |
| 856 gl_->BindFramebuffer(GL_FRAMEBUFFER, bound_fbo_); | 856 gl_->BindFramebuffer(GL_FRAMEBUFFER, bound_fbo_); |
| 857 } | 857 } |
| 858 | 858 |
| 859 #ifdef FLIP_FRAMEBUFFER_VERTICALLY | 859 #ifdef FLIP_FRAMEBUFFER_VERTICALLY |
| 860 if (pixels) { | 860 if (pixels) { |
| 861 FlipVertically(pixels, width, height); | 861 FlipVertically(pixels, width, height); |
| 862 } | 862 } |
| 863 #endif | 863 #endif |
| 864 | 864 |
| 865 return true; | 865 return true; |
| 866 } | 866 } |
| 867 | 867 |
| 868 bool WebGraphicsContext3DInProcessCommandBufferImpl::readBackFramebuffer( | 868 bool WebGraphicsContext3DInProcessCommandBufferImpl::readBackFramebuffer( |
| 869 unsigned char* pixels, | 869 unsigned char* pixels, |
| 870 size_t buffer_size) { | 870 size_t buffer_size, bool bindDefaultBackbuffer) { |
| 871 return readBackFramebuffer(pixels, buffer_size, 0, width(), height()); | 871 if (bindDefaultBackbuffer) |
| 872 return readBackFramebuffer(pixels, buffer_size, 0, width(), height()); |
| 873 |
| 874 return readBackFramebuffer(pixels, buffer_size, bound_fbo_, width(), height())
; |
| 872 } | 875 } |
| 873 | 876 |
| 874 void WebGraphicsContext3DInProcessCommandBufferImpl::synthesizeGLError( | 877 void WebGraphicsContext3DInProcessCommandBufferImpl::synthesizeGLError( |
| 875 WGC3Denum error) { | 878 WGC3Denum error) { |
| 876 if (find(synthetic_errors_.begin(), synthetic_errors_.end(), error) == | 879 if (find(synthetic_errors_.begin(), synthetic_errors_.end(), error) == |
| 877 synthetic_errors_.end()) { | 880 synthetic_errors_.end()) { |
| 878 synthetic_errors_.push_back(error); | 881 synthetic_errors_.push_back(error); |
| 879 } | 882 } |
| 880 } | 883 } |
| 881 | 884 |
| (...skipping 749 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1631 if (context_lost_callback_) { | 1634 if (context_lost_callback_) { |
| 1632 context_lost_callback_->onContextLost(); | 1635 context_lost_callback_->onContextLost(); |
| 1633 } | 1636 } |
| 1634 } | 1637 } |
| 1635 | 1638 |
| 1636 } // namespace gpu | 1639 } // namespace gpu |
| 1637 } // namespace webkit | 1640 } // namespace webkit |
| 1638 | 1641 |
| 1639 #endif // defined(ENABLE_GPU) | 1642 #endif // defined(ENABLE_GPU) |
| 1640 | 1643 |
| OLD | NEW |