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/browser/renderer_host/compositor_impl_android.h" | 5 #include "content/browser/renderer_host/compositor_impl_android.h" |
6 | 6 |
7 #include <android/bitmap.h> | 7 #include <android/bitmap.h> |
8 #include <android/native_window_jni.h> | 8 #include <android/native_window_jni.h> |
9 #include <map> | 9 #include <map> |
10 | 10 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
45 class JavaBitmap; | 45 class JavaBitmap; |
46 } | 46 } |
47 | 47 |
48 namespace { | 48 namespace { |
49 | 49 |
50 // Used for drawing directly to the screen. Bypasses resizing and swaps. | 50 // Used for drawing directly to the screen. Bypasses resizing and swaps. |
51 class DirectOutputSurface : public cc::OutputSurface { | 51 class DirectOutputSurface : public cc::OutputSurface { |
52 public: | 52 public: |
53 DirectOutputSurface( | 53 DirectOutputSurface( |
54 const scoped_refptr<cc::ContextProvider>& context_provider) | 54 const scoped_refptr<cc::ContextProvider>& context_provider) |
55 : cc::OutputSurface(context_provider) { | 55 : cc::OutputSurface(context_provider, |
| 56 OutputSurface::kDefaultMaxTransferBufferUsageBytes) { |
56 capabilities_.adjust_deadline_for_parent = false; | 57 capabilities_.adjust_deadline_for_parent = false; |
57 } | 58 } |
58 | 59 |
59 virtual void Reshape(gfx::Size size, float scale_factor) OVERRIDE { | 60 virtual void Reshape(gfx::Size size, float scale_factor) OVERRIDE { |
60 surface_size_ = size; | 61 surface_size_ = size; |
61 } | 62 } |
62 virtual void SwapBuffers(cc::CompositorFrame*) OVERRIDE { | 63 virtual void SwapBuffers(cc::CompositorFrame*) OVERRIDE { |
63 context_provider_->Context3d()->shallowFlushCHROMIUM(); | 64 context_provider_->Context3d()->shallowFlushCHROMIUM(); |
64 } | 65 } |
65 }; | 66 }; |
66 | 67 |
67 // Used to override capabilities_.adjust_deadline_for_parent to false | 68 // Used to override capabilities_.adjust_deadline_for_parent to false |
68 class OutputSurfaceWithoutParent : public cc::OutputSurface { | 69 class OutputSurfaceWithoutParent : public cc::OutputSurface { |
69 public: | 70 public: |
70 OutputSurfaceWithoutParent( | 71 OutputSurfaceWithoutParent( |
71 const scoped_refptr< | 72 const scoped_refptr< |
72 content::ContextProviderCommandBuffer>& context_provider) | 73 content::ContextProviderCommandBuffer>& context_provider) |
73 : cc::OutputSurface(context_provider) { | 74 : cc::OutputSurface(context_provider, |
| 75 OutputSurface::kDefaultMaxTransferBufferUsageBytes) { |
74 capabilities_.adjust_deadline_for_parent = false; | 76 capabilities_.adjust_deadline_for_parent = false; |
75 } | 77 } |
76 | 78 |
77 virtual void SwapBuffers(cc::CompositorFrame* frame) OVERRIDE { | 79 virtual void SwapBuffers(cc::CompositorFrame* frame) OVERRIDE { |
78 content::WebGraphicsContext3DCommandBufferImpl* command_buffer_context = | 80 content::WebGraphicsContext3DCommandBufferImpl* command_buffer_context = |
79 static_cast<content::WebGraphicsContext3DCommandBufferImpl*>( | 81 static_cast<content::WebGraphicsContext3DCommandBufferImpl*>( |
80 context_provider_->Context3d()); | 82 context_provider_->Context3d()); |
81 content::CommandBufferProxyImpl* command_buffer_proxy = | 83 content::CommandBufferProxyImpl* command_buffer_proxy = |
82 command_buffer_context->GetCommandBufferProxy(); | 84 command_buffer_context->GetCommandBufferProxy(); |
83 DCHECK(command_buffer_proxy); | 85 DCHECK(command_buffer_proxy); |
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
410 scoped_ptr<WebGraphicsContext3DInProcessCommandBufferImpl> context3d = | 412 scoped_ptr<WebGraphicsContext3DInProcessCommandBufferImpl> context3d = |
411 WebGraphicsContext3DInProcessCommandBufferImpl::CreateViewContext( | 413 WebGraphicsContext3DInProcessCommandBufferImpl::CreateViewContext( |
412 attrs, window_); | 414 attrs, window_); |
413 scoped_refptr<webkit::gpu::ContextProviderInProcess> context_provider = | 415 scoped_refptr<webkit::gpu::ContextProviderInProcess> context_provider = |
414 webkit::gpu::ContextProviderInProcess::Create(context3d.Pass()); | 416 webkit::gpu::ContextProviderInProcess::Create(context3d.Pass()); |
415 | 417 |
416 scoped_ptr<cc::OutputSurface> output_surface; | 418 scoped_ptr<cc::OutputSurface> output_surface; |
417 if (!window_) | 419 if (!window_) |
418 output_surface.reset(new DirectOutputSurface(context_provider)); | 420 output_surface.reset(new DirectOutputSurface(context_provider)); |
419 else | 421 else |
420 output_surface.reset(new cc::OutputSurface(context_provider)); | 422 output_surface.reset( |
| 423 new cc::OutputSurface( |
| 424 context_provider, |
| 425 cc::OutputSurface::kDefaultMaxTransferBufferUsageBytes)); |
421 return output_surface.Pass(); | 426 return output_surface.Pass(); |
422 } | 427 } |
423 | 428 |
424 DCHECK(window_); | 429 DCHECK(window_); |
425 DCHECK(surface_id_); | 430 DCHECK(surface_id_); |
426 | 431 |
427 scoped_refptr<ContextProviderCommandBuffer> context_provider = | 432 scoped_refptr<ContextProviderCommandBuffer> context_provider = |
428 ContextProviderCommandBuffer::Create(CreateGpuProcessViewContext( | 433 ContextProviderCommandBuffer::Create(CreateGpuProcessViewContext( |
429 attrs, surface_id_, weak_factory_.GetWeakPtr())); | 434 attrs, surface_id_, weak_factory_.GetWeakPtr())); |
430 if (!context_provider.get()) { | 435 if (!context_provider.get()) { |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
524 case ANDROID_BITMAP_FORMAT_RGBA_8888: | 529 case ANDROID_BITMAP_FORMAT_RGBA_8888: |
525 return GL_UNSIGNED_BYTE; | 530 return GL_UNSIGNED_BYTE; |
526 break; | 531 break; |
527 case ANDROID_BITMAP_FORMAT_RGB_565: | 532 case ANDROID_BITMAP_FORMAT_RGB_565: |
528 default: | 533 default: |
529 return GL_UNSIGNED_SHORT_5_6_5; | 534 return GL_UNSIGNED_SHORT_5_6_5; |
530 } | 535 } |
531 } | 536 } |
532 | 537 |
533 } // namespace content | 538 } // namespace content |
OLD | NEW |