OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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 #ifndef CC_TEXTURE_UPLOADER_H_ | 5 #ifndef CC_TEXTURE_UPLOADER_H_ |
6 #define CC_TEXTURE_UPLOADER_H_ | 6 #define CC_TEXTURE_UPLOADER_H_ |
7 | 7 |
8 #include "IntRect.h" | |
9 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
10 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
11 #include "cc/scoped_ptr_deque.h" | 10 #include "cc/scoped_ptr_deque.h" |
12 #include <set> | 11 #include <set> |
13 #include "third_party/khronos/GLES2/gl2.h" | 12 #include "third_party/khronos/GLES2/gl2.h" |
14 | 13 |
15 namespace WebKit { | 14 namespace WebKit { |
16 class WebGraphicsContext3D; | 15 class WebGraphicsContext3D; |
17 } | 16 } |
18 | 17 |
| 18 namespace gfx { |
| 19 class Rect; |
| 20 class Size; |
| 21 class Vector2d; |
| 22 } |
| 23 |
19 namespace cc { | 24 namespace cc { |
20 | 25 |
21 class TextureUploader { | 26 class TextureUploader { |
22 public: | 27 public: |
23 static scoped_ptr<TextureUploader> create( | 28 static scoped_ptr<TextureUploader> create( |
24 WebKit::WebGraphicsContext3D* context, bool useMapTexSubImage) | 29 WebKit::WebGraphicsContext3D* context, bool useMapTexSubImage) |
25 { | 30 { |
26 return make_scoped_ptr(new TextureUploader(context, useMapTexSubImage)); | 31 return make_scoped_ptr(new TextureUploader(context, useMapTexSubImage)); |
27 } | 32 } |
28 ~TextureUploader(); | 33 ~TextureUploader(); |
29 | 34 |
30 size_t numBlockingUploads(); | 35 size_t numBlockingUploads(); |
31 void markPendingUploadsAsNonBlocking(); | 36 void markPendingUploadsAsNonBlocking(); |
32 double estimatedTexturesPerSecond(); | 37 double estimatedTexturesPerSecond(); |
33 | 38 |
34 // Let imageRect be a rectangle, and let sourceRect be a sub-rectangle of | 39 // Let imageRect be a rectangle, and let sourceRect be a sub-rectangle of |
35 // imageRect, expressed in the same coordinate system as imageRect. Let | 40 // imageRect, expressed in the same coordinate system as imageRect. Let |
36 // image be a buffer for imageRect. This function will copy the region | 41 // image be a buffer for imageRect. This function will copy the region |
37 // corresponding to sourceRect to destOffset in this sub-image. | 42 // corresponding to sourceRect to destOffset in this sub-image. |
38 void upload(const uint8_t* image, | 43 void upload(const uint8* image, |
39 const IntRect& content_rect, | 44 const gfx::Rect& content_rect, |
40 const IntRect& source_rect, | 45 const gfx::Rect& source_rect, |
41 const IntSize& dest_offset, | 46 const gfx::Vector2d& dest_offset, |
42 GLenum format, | 47 GLenum format, |
43 IntSize size); | 48 const gfx::Size& size); |
44 | 49 |
45 private: | 50 private: |
46 class Query { | 51 class Query { |
47 public: | 52 public: |
48 static scoped_ptr<Query> create(WebKit::WebGraphicsContext3D* context) {
return make_scoped_ptr(new Query(context)); } | 53 static scoped_ptr<Query> create(WebKit::WebGraphicsContext3D* context) {
return make_scoped_ptr(new Query(context)); } |
49 | 54 |
50 virtual ~Query(); | 55 virtual ~Query(); |
51 | 56 |
52 void begin(); | 57 void begin(); |
53 void end(); | 58 void end(); |
(...skipping 12 matching lines...) Expand all Loading... |
66 bool m_hasValue; | 71 bool m_hasValue; |
67 bool m_isNonBlocking; | 72 bool m_isNonBlocking; |
68 }; | 73 }; |
69 | 74 |
70 TextureUploader(WebKit::WebGraphicsContext3D*, bool useMapTexSubImage); | 75 TextureUploader(WebKit::WebGraphicsContext3D*, bool useMapTexSubImage); |
71 | 76 |
72 void beginQuery(); | 77 void beginQuery(); |
73 void endQuery(); | 78 void endQuery(); |
74 void processQueries(); | 79 void processQueries(); |
75 | 80 |
76 void uploadWithTexSubImage(const uint8_t* image, | 81 void uploadWithTexSubImage(const uint8* image, |
77 const IntRect& image_rect, | 82 const gfx::Rect& image_rect, |
78 const IntRect& source_rect, | 83 const gfx::Rect& source_rect, |
79 const IntSize& dest_offset, | 84 const gfx::Vector2d& dest_offset, |
80 GLenum format); | 85 GLenum format); |
81 void uploadWithMapTexSubImage(const uint8_t* image, | 86 void uploadWithMapTexSubImage(const uint8* image, |
82 const IntRect& image_rect, | 87 const gfx::Rect& image_rect, |
83 const IntRect& source_rect, | 88 const gfx::Rect& source_rect, |
84 const IntSize& dest_offset, | 89 const gfx::Vector2d& dest_offset, |
85 GLenum format); | 90 GLenum format); |
86 | 91 |
87 WebKit::WebGraphicsContext3D* m_context; | 92 WebKit::WebGraphicsContext3D* m_context; |
88 ScopedPtrDeque<Query> m_pendingQueries; | 93 ScopedPtrDeque<Query> m_pendingQueries; |
89 ScopedPtrDeque<Query> m_availableQueries; | 94 ScopedPtrDeque<Query> m_availableQueries; |
90 std::multiset<double> m_texturesPerSecondHistory; | 95 std::multiset<double> m_texturesPerSecondHistory; |
91 size_t m_numBlockingTextureUploads; | 96 size_t m_numBlockingTextureUploads; |
92 | 97 |
93 bool m_useMapTexSubImage; | 98 bool m_useMapTexSubImage; |
94 size_t m_subImageSize; | 99 size_t m_subImageSize; |
95 scoped_array<uint8_t> m_subImage; | 100 scoped_array<uint8> m_subImage; |
96 | 101 |
97 DISALLOW_COPY_AND_ASSIGN(TextureUploader); | 102 DISALLOW_COPY_AND_ASSIGN(TextureUploader); |
98 }; | 103 }; |
99 | 104 |
100 } // namespace cc | 105 } // namespace cc |
101 | 106 |
102 #endif // CC_TEXTURE_UPLOADER_H_ | 107 #endif // CC_TEXTURE_UPLOADER_H_ |
OLD | NEW |