OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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_TEST_TEST_WEB_GRAPHICS_CONTEXT_3D_H_ | 5 #ifndef CC_TEST_TEST_WEB_GRAPHICS_CONTEXT_3D_H_ |
6 #define CC_TEST_TEST_WEB_GRAPHICS_CONTEXT_3D_H_ | 6 #define CC_TEST_TEST_WEB_GRAPHICS_CONTEXT_3D_H_ |
7 | 7 |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
(...skipping 13 matching lines...) Expand all Loading... |
24 | 24 |
25 namespace cc { | 25 namespace cc { |
26 class TestContextSupport; | 26 class TestContextSupport; |
27 | 27 |
28 class TestWebGraphicsContext3D : public FakeWebGraphicsContext3D { | 28 class TestWebGraphicsContext3D : public FakeWebGraphicsContext3D { |
29 public: | 29 public: |
30 static scoped_ptr<TestWebGraphicsContext3D> Create(); | 30 static scoped_ptr<TestWebGraphicsContext3D> Create(); |
31 | 31 |
32 virtual ~TestWebGraphicsContext3D(); | 32 virtual ~TestWebGraphicsContext3D(); |
33 | 33 |
34 virtual void reshapeWithScaleFactor( | 34 virtual void reshapeWithScaleFactor(int width, |
35 int width, int height, float scale_factor); | 35 int height, |
| 36 float scale_factor); |
36 | 37 |
37 virtual bool isContextLost(); | 38 virtual bool isContextLost() OVERRIDE; |
38 | 39 |
39 virtual void attachShader(blink::WebGLId program, blink::WebGLId shader); | 40 virtual void attachShader(blink::WebGLId program, |
40 virtual void bindFramebuffer( | 41 blink::WebGLId shader) OVERRIDE; |
41 blink::WGC3Denum target, blink::WebGLId framebuffer); | 42 virtual void bindFramebuffer(blink::WGC3Denum target, |
42 virtual void bindRenderbuffer( | 43 blink::WebGLId framebuffer) OVERRIDE; |
43 blink::WGC3Denum target, blink::WebGLId renderbuffer); | 44 virtual void bindRenderbuffer(blink::WGC3Denum target, |
44 virtual void bindTexture( | 45 blink::WebGLId renderbuffer) OVERRIDE; |
45 blink::WGC3Denum target, | 46 virtual void bindTexture(blink::WGC3Denum target, |
46 blink::WebGLId texture_id); | 47 blink::WebGLId texture_id) OVERRIDE; |
47 | 48 |
48 virtual void texParameteri(blink::WGC3Denum target, | 49 virtual void texParameteri(blink::WGC3Denum target, |
49 blink::WGC3Denum pname, | 50 blink::WGC3Denum pname, |
50 blink::WGC3Dint param); | 51 blink::WGC3Dint param) OVERRIDE; |
51 virtual void getTexParameteriv(blink::WGC3Denum target, | 52 virtual void getTexParameteriv(blink::WGC3Denum target, |
52 blink::WGC3Denum pname, | 53 blink::WGC3Denum pname, |
53 blink::WGC3Dint* value); | 54 blink::WGC3Dint* value) OVERRIDE; |
| 55 virtual void asyncTexImage2DCHROMIUM(GLenum target, |
| 56 GLint level, |
| 57 GLenum internalformat, |
| 58 GLsizei width, |
| 59 GLsizei height, |
| 60 GLint border, |
| 61 GLenum format, |
| 62 GLenum type, |
| 63 const void* pixels) {} |
| 64 virtual void asyncTexSubImage2DCHROMIUM(GLenum target, |
| 65 GLint level, |
| 66 GLint xoffset, |
| 67 GLint yoffset, |
| 68 GLsizei width, |
| 69 GLsizei height, |
| 70 GLenum format, |
| 71 GLenum type, |
| 72 const void* pixels) {} |
| 73 virtual void waitAsyncTexImage2DCHROMIUM(GLenum target) {} |
| 74 virtual void releaseTexImage2DCHROMIUM(GLenum target, GLint image_id) {} |
54 | 75 |
55 virtual blink::WGC3Denum checkFramebufferStatus(blink::WGC3Denum target); | 76 virtual blink::WGC3Denum checkFramebufferStatus(blink::WGC3Denum target) |
| 77 OVERRIDE; |
56 | 78 |
57 virtual Attributes getContextAttributes(); | 79 virtual blink::WebString getString(blink::WGC3Denum name) OVERRIDE; |
| 80 virtual blink::WGC3Dint getUniformLocation(blink::WebGLId program, |
| 81 const blink::WGC3Dchar* name) |
| 82 OVERRIDE; |
| 83 virtual blink::WGC3Dsizeiptr getVertexAttribOffset(blink::WGC3Duint index, |
| 84 blink::WGC3Denum pname) |
| 85 OVERRIDE; |
58 | 86 |
59 virtual blink::WebString getString(blink::WGC3Denum name); | 87 virtual blink::WGC3Dboolean isBuffer(blink::WebGLId buffer) OVERRIDE; |
60 virtual blink::WGC3Dint getUniformLocation( | 88 virtual blink::WGC3Dboolean isEnabled(blink::WGC3Denum cap) OVERRIDE; |
61 blink::WebGLId program, | 89 virtual blink::WGC3Dboolean isFramebuffer(blink::WebGLId framebuffer) |
62 const blink::WGC3Dchar* name); | 90 OVERRIDE; |
63 virtual blink::WGC3Dsizeiptr getVertexAttribOffset( | 91 virtual blink::WGC3Dboolean isProgram(blink::WebGLId program) OVERRIDE; |
64 blink::WGC3Duint index, | 92 virtual blink::WGC3Dboolean isRenderbuffer(blink::WebGLId renderbuffer) |
65 blink::WGC3Denum pname); | 93 OVERRIDE; |
| 94 virtual blink::WGC3Dboolean isShader(blink::WebGLId shader) OVERRIDE; |
| 95 virtual blink::WGC3Dboolean isTexture(blink::WebGLId texture) OVERRIDE; |
66 | 96 |
67 virtual blink::WGC3Dboolean isBuffer(blink::WebGLId buffer); | 97 virtual void useProgram(blink::WebGLId program) OVERRIDE; |
68 virtual blink::WGC3Dboolean isEnabled(blink::WGC3Denum cap); | |
69 virtual blink::WGC3Dboolean isFramebuffer(blink::WebGLId framebuffer); | |
70 virtual blink::WGC3Dboolean isProgram(blink::WebGLId program); | |
71 virtual blink::WGC3Dboolean isRenderbuffer(blink::WebGLId renderbuffer); | |
72 virtual blink::WGC3Dboolean isShader(blink::WebGLId shader); | |
73 virtual blink::WGC3Dboolean isTexture(blink::WebGLId texture); | |
74 | 98 |
75 virtual void useProgram(blink::WebGLId program); | 99 virtual void genBuffers(blink::WGC3Dsizei count, |
| 100 blink::WebGLId* ids) OVERRIDE; |
| 101 virtual void genFramebuffers(blink::WGC3Dsizei count, |
| 102 blink::WebGLId* ids) OVERRIDE; |
| 103 virtual void genRenderbuffers(blink::WGC3Dsizei count, |
| 104 blink::WebGLId* ids) OVERRIDE; |
| 105 virtual void genTextures(blink::WGC3Dsizei count, |
| 106 blink::WebGLId* ids) OVERRIDE; |
76 | 107 |
77 virtual void genBuffers(blink::WGC3Dsizei count, blink::WebGLId* ids); | 108 virtual void deleteBuffers(blink::WGC3Dsizei count, |
78 virtual void genFramebuffers(blink::WGC3Dsizei count, blink::WebGLId* ids); | 109 blink::WebGLId* ids) OVERRIDE; |
79 virtual void genRenderbuffers(blink::WGC3Dsizei count, blink::WebGLId* ids); | 110 virtual void deleteFramebuffers(blink::WGC3Dsizei count, |
80 virtual void genTextures(blink::WGC3Dsizei count, blink::WebGLId* ids); | 111 blink::WebGLId* ids) OVERRIDE; |
| 112 virtual void deleteRenderbuffers(blink::WGC3Dsizei count, |
| 113 blink::WebGLId* ids) OVERRIDE; |
| 114 virtual void deleteTextures(blink::WGC3Dsizei count, |
| 115 blink::WebGLId* ids) OVERRIDE; |
81 | 116 |
82 virtual void deleteBuffers(blink::WGC3Dsizei count, blink::WebGLId* ids); | 117 virtual blink::WebGLId createBuffer() OVERRIDE; |
83 virtual void deleteFramebuffers( | 118 virtual blink::WebGLId createFramebuffer() OVERRIDE; |
84 blink::WGC3Dsizei count, blink::WebGLId* ids); | 119 virtual blink::WebGLId createRenderbuffer() OVERRIDE; |
85 virtual void deleteRenderbuffers( | 120 virtual blink::WebGLId createTexture() OVERRIDE; |
86 blink::WGC3Dsizei count, blink::WebGLId* ids); | |
87 virtual void deleteTextures(blink::WGC3Dsizei count, blink::WebGLId* ids); | |
88 | 121 |
89 virtual blink::WebGLId createBuffer(); | 122 virtual void deleteBuffer(blink::WebGLId id) OVERRIDE; |
90 virtual blink::WebGLId createFramebuffer(); | 123 virtual void deleteFramebuffer(blink::WebGLId id) OVERRIDE; |
91 virtual blink::WebGLId createRenderbuffer(); | 124 virtual void deleteRenderbuffer(blink::WebGLId id) OVERRIDE; |
92 virtual blink::WebGLId createTexture(); | 125 virtual void deleteTexture(blink::WebGLId id) OVERRIDE; |
93 | 126 |
94 virtual void deleteBuffer(blink::WebGLId id); | 127 virtual blink::WebGLId createProgram() OVERRIDE; |
95 virtual void deleteFramebuffer(blink::WebGLId id); | 128 virtual blink::WebGLId createShader(blink::WGC3Denum) OVERRIDE; |
96 virtual void deleteRenderbuffer(blink::WebGLId id); | |
97 virtual void deleteTexture(blink::WebGLId id); | |
98 | |
99 virtual blink::WebGLId createProgram(); | |
100 virtual blink::WebGLId createShader(blink::WGC3Denum); | |
101 virtual blink::WebGLId createExternalTexture(); | 129 virtual blink::WebGLId createExternalTexture(); |
102 | 130 |
103 virtual void deleteProgram(blink::WebGLId id); | 131 virtual void deleteProgram(blink::WebGLId id) OVERRIDE; |
104 virtual void deleteShader(blink::WebGLId id); | 132 virtual void deleteShader(blink::WebGLId id) OVERRIDE; |
105 | 133 |
106 virtual void endQueryEXT(blink::WGC3Denum target); | 134 virtual void endQueryEXT(blink::WGC3Denum target) OVERRIDE; |
107 virtual void getQueryObjectuivEXT( | 135 virtual void getQueryObjectuivEXT(blink::WebGLId query, |
108 blink::WebGLId query, | 136 blink::WGC3Denum pname, |
109 blink::WGC3Denum pname, | 137 blink::WGC3Duint* params) OVERRIDE; |
110 blink::WGC3Duint* params); | |
111 | 138 |
112 virtual void getIntegerv( | 139 virtual void getIntegerv(blink::WGC3Denum pname, |
113 blink::WGC3Denum pname, | 140 blink::WGC3Dint* value) OVERRIDE; |
114 blink::WGC3Dint* value); | |
115 | 141 |
116 virtual void genMailboxCHROMIUM(blink::WGC3Dbyte* mailbox); | 142 virtual void genMailboxCHROMIUM(blink::WGC3Dbyte* mailbox); |
117 virtual void produceTextureCHROMIUM(blink::WGC3Denum target, | 143 virtual void produceTextureCHROMIUM(blink::WGC3Denum target, |
118 const blink::WGC3Dbyte* mailbox) { } | 144 const blink::WGC3Dbyte* mailbox) {} |
119 virtual void consumeTextureCHROMIUM(blink::WGC3Denum target, | 145 virtual void consumeTextureCHROMIUM(blink::WGC3Denum target, |
120 const blink::WGC3Dbyte* mailbox) { } | 146 const blink::WGC3Dbyte* mailbox) {} |
121 | 147 |
122 virtual void setContextLostCallback( | 148 virtual void setContextLostCallback( |
123 WebGraphicsContextLostCallback* callback); | 149 blink::WebGraphicsContext3D::WebGraphicsContextLostCallback* callback) |
| 150 OVERRIDE; |
124 | 151 |
125 virtual void loseContextCHROMIUM(blink::WGC3Denum current, | 152 virtual void loseContextCHROMIUM(blink::WGC3Denum current, |
126 blink::WGC3Denum other); | 153 blink::WGC3Denum other) OVERRIDE; |
127 | 154 |
128 virtual void finish(); | 155 virtual void finish() OVERRIDE; |
129 virtual void flush(); | 156 virtual void flush() OVERRIDE; |
130 | 157 |
131 virtual void bindBuffer(blink::WGC3Denum target, blink::WebGLId buffer); | 158 virtual void bindBuffer(blink::WGC3Denum target, |
| 159 blink::WebGLId buffer) OVERRIDE; |
132 virtual void bufferData(blink::WGC3Denum target, | 160 virtual void bufferData(blink::WGC3Denum target, |
133 blink::WGC3Dsizeiptr size, | 161 blink::WGC3Dsizeiptr size, |
134 const void* data, | 162 const void* data, |
135 blink::WGC3Denum usage); | 163 blink::WGC3Denum usage) OVERRIDE; |
136 virtual void* mapBufferCHROMIUM(blink::WGC3Denum target, | 164 virtual void* mapBufferCHROMIUM(blink::WGC3Denum target, |
137 blink::WGC3Denum access); | 165 blink::WGC3Denum access); |
138 virtual blink::WGC3Dboolean unmapBufferCHROMIUM(blink::WGC3Denum target); | 166 virtual blink::WGC3Dboolean unmapBufferCHROMIUM(blink::WGC3Denum target); |
139 | 167 |
140 virtual blink::WGC3Duint createImageCHROMIUM( | 168 virtual blink::WGC3Duint createImageCHROMIUM(blink::WGC3Dsizei width, |
141 blink::WGC3Dsizei width, | 169 blink::WGC3Dsizei height, |
142 blink::WGC3Dsizei height, | 170 blink::WGC3Denum internalformat) |
143 blink::WGC3Denum internalformat); | 171 OVERRIDE; |
144 virtual void destroyImageCHROMIUM(blink::WGC3Duint image_id); | 172 virtual void destroyImageCHROMIUM(blink::WGC3Duint image_id) OVERRIDE; |
145 virtual void getImageParameterivCHROMIUM( | 173 virtual void getImageParameterivCHROMIUM(blink::WGC3Duint image_id, |
146 blink::WGC3Duint image_id, | 174 blink::WGC3Denum pname, |
147 blink::WGC3Denum pname, | 175 blink::WGC3Dint* params) OVERRIDE; |
148 blink::WGC3Dint* params); | 176 virtual void* mapImageCHROMIUM(blink::WGC3Duint image_id, |
149 virtual void* mapImageCHROMIUM( | 177 blink::WGC3Denum access) OVERRIDE; |
150 blink::WGC3Duint image_id, | 178 virtual void unmapImageCHROMIUM(blink::WGC3Duint image_id) OVERRIDE; |
151 blink::WGC3Denum access); | 179 virtual void texImageIOSurface2DCHROMIUM(GLenum target, |
152 virtual void unmapImageCHROMIUM(blink::WGC3Duint image_id); | 180 GLsizei width, |
| 181 GLsizei height, |
| 182 GLuint io_surface_id, |
| 183 GLuint plane) {} |
153 | 184 |
154 virtual unsigned insertSyncPoint() OVERRIDE; | 185 virtual unsigned insertSyncPoint(); |
155 virtual void waitSyncPoint(unsigned sync_point) OVERRIDE; | 186 virtual void waitSyncPoint(unsigned sync_point); |
156 | 187 |
157 unsigned last_waited_sync_point() const { return last_waited_sync_point_; } | 188 unsigned last_waited_sync_point() const { return last_waited_sync_point_; } |
158 | 189 |
159 const ContextProvider::Capabilities& test_capabilities() const { | 190 const ContextProvider::Capabilities& test_capabilities() const { |
160 return test_capabilities_; | 191 return test_capabilities_; |
161 } | 192 } |
162 | 193 |
163 void set_context_lost(bool context_lost) { context_lost_ = context_lost; } | 194 void set_context_lost(bool context_lost) { context_lost_ = context_lost; } |
164 void set_times_bind_texture_succeeds(int times) { | 195 void set_times_bind_texture_succeeds(int times) { |
165 times_bind_texture_succeeds_ = times; | 196 times_bind_texture_succeeds_ = times; |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
203 test_capabilities_.discard_framebuffer = have; | 234 test_capabilities_.discard_framebuffer = have; |
204 } | 235 } |
205 void set_support_compressed_texture_etc1(bool support) { | 236 void set_support_compressed_texture_etc1(bool support) { |
206 test_capabilities_.texture_format_etc1 = support; | 237 test_capabilities_.texture_format_etc1 = support; |
207 } | 238 } |
208 void set_support_texture_storage(bool support) { | 239 void set_support_texture_storage(bool support) { |
209 test_capabilities_.texture_storage = support; | 240 test_capabilities_.texture_storage = support; |
210 } | 241 } |
211 | 242 |
212 // When this context is lost, all contexts in its share group are also lost. | 243 // When this context is lost, all contexts in its share group are also lost. |
213 void add_share_group_context(blink::WebGraphicsContext3D* context3d) { | 244 void add_share_group_context(TestWebGraphicsContext3D* context3d) { |
214 shared_contexts_.push_back(context3d); | 245 shared_contexts_.push_back(context3d); |
215 } | 246 } |
216 | 247 |
217 void set_max_texture_size(int size) { max_texture_size_ = size; } | 248 void set_max_texture_size(int size) { max_texture_size_ = size; } |
218 | 249 |
219 static const blink::WebGLId kExternalTextureId; | 250 static const blink::WebGLId kExternalTextureId; |
220 virtual blink::WebGLId NextTextureId(); | 251 virtual blink::WebGLId NextTextureId(); |
221 virtual void RetireTextureId(blink::WebGLId id); | 252 virtual void RetireTextureId(blink::WebGLId id); |
222 | 253 |
223 virtual blink::WebGLId NextBufferId(); | 254 virtual blink::WebGLId NextBufferId(); |
(...skipping 19 matching lines...) Expand all Loading... |
243 float scale_factor() const { return scale_factor_; } | 274 float scale_factor() const { return scale_factor_; } |
244 | 275 |
245 enum UpdateType { | 276 enum UpdateType { |
246 NoUpdate = 0, | 277 NoUpdate = 0, |
247 PrepareTexture, | 278 PrepareTexture, |
248 PostSubBuffer | 279 PostSubBuffer |
249 }; | 280 }; |
250 | 281 |
251 gfx::Rect update_rect() const { return update_rect_; } | 282 gfx::Rect update_rect() const { return update_rect_; } |
252 | 283 |
253 UpdateType last_update_type() { | 284 UpdateType last_update_type() { return last_update_type_; } |
254 return last_update_type_; | |
255 } | |
256 | 285 |
257 protected: | 286 protected: |
258 struct TextureTargets { | 287 struct TextureTargets { |
259 TextureTargets(); | 288 TextureTargets(); |
260 ~TextureTargets(); | 289 ~TextureTargets(); |
261 | 290 |
262 void BindTexture(blink::WGC3Denum target, blink::WebGLId id); | 291 void BindTexture(blink::WGC3Denum target, blink::WebGLId id); |
263 void UnbindTexture(blink::WebGLId id); | 292 void UnbindTexture(blink::WebGLId id); |
264 | 293 |
265 blink::WebGLId BoundTexture(blink::WGC3Denum target); | 294 blink::WebGLId BoundTexture(blink::WGC3Denum target); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
310 }; | 339 }; |
311 | 340 |
312 TestWebGraphicsContext3D(); | 341 TestWebGraphicsContext3D(); |
313 | 342 |
314 void CreateNamespace(); | 343 void CreateNamespace(); |
315 blink::WebGLId BoundTextureId(blink::WGC3Denum target); | 344 blink::WebGLId BoundTextureId(blink::WGC3Denum target); |
316 scoped_refptr<TestTexture> BoundTexture(blink::WGC3Denum target); | 345 scoped_refptr<TestTexture> BoundTexture(blink::WGC3Denum target); |
317 void CheckTextureIsBound(blink::WGC3Denum target); | 346 void CheckTextureIsBound(blink::WGC3Denum target); |
318 | 347 |
319 unsigned context_id_; | 348 unsigned context_id_; |
320 Attributes attributes_; | |
321 ContextProvider::Capabilities test_capabilities_; | 349 ContextProvider::Capabilities test_capabilities_; |
322 int times_bind_texture_succeeds_; | 350 int times_bind_texture_succeeds_; |
323 int times_end_query_succeeds_; | 351 int times_end_query_succeeds_; |
324 int times_gen_mailbox_succeeds_; | 352 int times_gen_mailbox_succeeds_; |
325 bool context_lost_; | 353 bool context_lost_; |
326 int times_map_image_chromium_succeeds_; | 354 int times_map_image_chromium_succeeds_; |
327 int times_map_buffer_chromium_succeeds_; | 355 int times_map_buffer_chromium_succeeds_; |
328 WebGraphicsContextLostCallback* context_lost_callback_; | 356 blink::WebGraphicsContext3D::WebGraphicsContextLostCallback* |
| 357 context_lost_callback_; |
329 base::hash_set<unsigned> used_textures_; | 358 base::hash_set<unsigned> used_textures_; |
330 unsigned next_program_id_; | 359 unsigned next_program_id_; |
331 base::hash_set<unsigned> program_set_; | 360 base::hash_set<unsigned> program_set_; |
332 unsigned next_shader_id_; | 361 unsigned next_shader_id_; |
333 base::hash_set<unsigned> shader_set_; | 362 base::hash_set<unsigned> shader_set_; |
334 std::vector<blink::WebGraphicsContext3D*> shared_contexts_; | 363 std::vector<TestWebGraphicsContext3D*> shared_contexts_; |
335 int max_texture_size_; | 364 int max_texture_size_; |
336 bool reshape_called_; | 365 bool reshape_called_; |
337 int width_; | 366 int width_; |
338 int height_; | 367 int height_; |
339 float scale_factor_; | 368 float scale_factor_; |
340 TestContextSupport* test_support_; | 369 TestContextSupport* test_support_; |
341 gfx::Rect update_rect_; | 370 gfx::Rect update_rect_; |
342 UpdateType last_update_type_; | 371 UpdateType last_update_type_; |
343 unsigned next_insert_sync_point_; | 372 unsigned next_insert_sync_point_; |
344 unsigned last_waited_sync_point_; | 373 unsigned last_waited_sync_point_; |
345 | 374 |
346 unsigned bound_buffer_; | 375 unsigned bound_buffer_; |
347 TextureTargets texture_targets_; | 376 TextureTargets texture_targets_; |
348 | 377 |
349 size_t peak_transfer_buffer_memory_used_bytes_; | 378 size_t peak_transfer_buffer_memory_used_bytes_; |
350 | 379 |
351 scoped_refptr<Namespace> namespace_; | 380 scoped_refptr<Namespace> namespace_; |
352 static Namespace* shared_namespace_; | 381 static Namespace* shared_namespace_; |
353 | 382 |
354 base::WeakPtrFactory<TestWebGraphicsContext3D> weak_ptr_factory_; | 383 base::WeakPtrFactory<TestWebGraphicsContext3D> weak_ptr_factory_; |
355 }; | 384 }; |
356 | 385 |
357 } // namespace cc | 386 } // namespace cc |
358 | 387 |
359 #endif // CC_TEST_TEST_WEB_GRAPHICS_CONTEXT_3D_H_ | 388 #endif // CC_TEST_TEST_WEB_GRAPHICS_CONTEXT_3D_H_ |
OLD | NEW |