Index: cc/test/test_web_graphics_context_3d.h |
diff --git a/cc/test/test_web_graphics_context_3d.h b/cc/test/test_web_graphics_context_3d.h |
deleted file mode 100644 |
index d8219f5827560bee78926c77a89d92bef7058dd4..0000000000000000000000000000000000000000 |
--- a/cc/test/test_web_graphics_context_3d.h |
+++ /dev/null |
@@ -1,488 +0,0 @@ |
-// Copyright 2013 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#ifndef CC_TEST_TEST_WEB_GRAPHICS_CONTEXT_3D_H_ |
-#define CC_TEST_TEST_WEB_GRAPHICS_CONTEXT_3D_H_ |
- |
-#include <vector> |
- |
-#include "base/callback.h" |
-#include "base/compiler_specific.h" |
-#include "base/containers/hash_tables.h" |
-#include "base/containers/scoped_ptr_hash_map.h" |
-#include "base/memory/ref_counted.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/memory/weak_ptr.h" |
-#include "base/stl_util.h" |
-#include "base/synchronization/lock.h" |
-#include "cc/output/context_provider.h" |
-#include "cc/test/ordered_texture_map.h" |
-#include "cc/test/test_texture.h" |
-#include "third_party/khronos/GLES2/gl2.h" |
-#include "ui/gfx/geometry/rect.h" |
- |
-extern "C" typedef struct _ClientBuffer* ClientBuffer; |
- |
-namespace cc { |
-class TestContextSupport; |
- |
-class TestWebGraphicsContext3D { |
- public: |
- static scoped_ptr<TestWebGraphicsContext3D> Create(); |
- |
- virtual ~TestWebGraphicsContext3D(); |
- |
- void set_context_lost_callback(const base::Closure& callback) { |
- context_lost_callback_ = callback; |
- } |
- |
- virtual void reshapeWithScaleFactor(int width, |
- int height, |
- float scale_factor); |
- |
- virtual bool isContextLost(); |
- |
- virtual void discardFramebufferEXT(GLenum target, |
- GLsizei num_attachments, |
- const GLenum* attachments) {} |
- |
- virtual void activeTexture(GLenum texture) {} |
- virtual void attachShader(GLuint program, GLuint shader); |
- virtual void bindFramebuffer(GLenum target, GLuint framebuffer); |
- virtual void bindRenderbuffer(GLenum target, GLuint renderbuffer); |
- virtual void bindTexture(GLenum target, GLuint texture_id); |
- |
- virtual void texParameteri(GLenum target, GLenum pname, GLint param); |
- virtual void getTexParameteriv(GLenum target, GLenum pname, GLint* value); |
- virtual void asyncTexImage2DCHROMIUM(GLenum target, |
- GLint level, |
- GLenum internalformat, |
- GLsizei width, |
- GLsizei height, |
- GLint border, |
- GLenum format, |
- GLenum type, |
- const void* pixels) {} |
- virtual void asyncTexSubImage2DCHROMIUM(GLenum target, |
- GLint level, |
- GLint xoffset, |
- GLint yoffset, |
- GLsizei width, |
- GLsizei height, |
- GLenum format, |
- GLenum type, |
- const void* pixels) {} |
- virtual void waitAsyncTexImage2DCHROMIUM(GLenum target) {} |
- virtual void releaseTexImage2DCHROMIUM(GLenum target, GLint image_id) {} |
- virtual void framebufferRenderbuffer(GLenum target, |
- GLenum attachment, |
- GLenum renderbuffertarget, |
- GLuint renderbuffer) {} |
- virtual void framebufferTexture2D(GLenum target, |
- GLenum attachment, |
- GLenum textarget, |
- GLuint texture, |
- GLint level) {} |
- virtual void renderbufferStorage(GLenum target, |
- GLenum internalformat, |
- GLsizei width, |
- GLsizei height) {} |
- |
- virtual GLenum checkFramebufferStatus(GLenum target); |
- |
- virtual void clear(GLbitfield mask) {} |
- virtual void clearColor(GLclampf red, |
- GLclampf green, |
- GLclampf blue, |
- GLclampf alpha) {} |
- virtual void clearStencil(GLint s) {} |
- virtual void compressedTexImage2D(GLenum target, |
- GLint level, |
- GLenum internal_format, |
- GLsizei width, |
- GLsizei height, |
- GLint border, |
- GLsizei image_size, |
- const void* data) {} |
- virtual GLint getUniformLocation(GLuint program, const GLchar* name); |
- virtual GLsizeiptr getVertexAttribOffset(GLuint index, GLenum pname); |
- |
- virtual GLboolean isBuffer(GLuint buffer); |
- virtual GLboolean isEnabled(GLenum cap); |
- virtual GLboolean isFramebuffer(GLuint framebuffer); |
- virtual GLboolean isProgram(GLuint program); |
- virtual GLboolean isRenderbuffer(GLuint renderbuffer); |
- virtual GLboolean isShader(GLuint shader); |
- virtual GLboolean isTexture(GLuint texture); |
- |
- virtual void useProgram(GLuint program); |
- |
- virtual void viewport(GLint x, GLint y, GLsizei width, GLsizei height) {} |
- |
- virtual void genBuffers(GLsizei count, GLuint* ids); |
- virtual void genFramebuffers(GLsizei count, GLuint* ids); |
- virtual void genRenderbuffers(GLsizei count, GLuint* ids); |
- virtual void genTextures(GLsizei count, GLuint* ids); |
- |
- virtual void deleteBuffers(GLsizei count, GLuint* ids); |
- virtual void deleteFramebuffers(GLsizei count, GLuint* ids); |
- virtual void deleteRenderbuffers(GLsizei count, GLuint* ids); |
- virtual void deleteTextures(GLsizei count, GLuint* ids); |
- |
- virtual GLuint createBuffer(); |
- virtual GLuint createFramebuffer(); |
- virtual GLuint createRenderbuffer(); |
- virtual GLuint createTexture(); |
- |
- virtual void deleteBuffer(GLuint id); |
- virtual void deleteFramebuffer(GLuint id); |
- virtual void deleteRenderbuffer(GLuint id); |
- virtual void deleteTexture(GLuint id); |
- |
- virtual GLuint createProgram(); |
- virtual GLuint createShader(GLenum); |
- virtual GLuint createExternalTexture(); |
- |
- virtual void deleteProgram(GLuint id); |
- virtual void deleteShader(GLuint id); |
- |
- virtual void texStorage2DEXT(GLenum target, |
- GLint levels, |
- GLuint internalformat, |
- GLint width, |
- GLint height) {} |
- |
- virtual GLuint createQueryEXT(); |
- virtual void deleteQueryEXT(GLuint query) {} |
- virtual void beginQueryEXT(GLenum target, GLuint query) {} |
- virtual void endQueryEXT(GLenum target); |
- virtual void getQueryObjectuivEXT(GLuint query, GLenum pname, GLuint* params); |
- |
- virtual void scissor(GLint x, GLint y, GLsizei width, GLsizei height) {} |
- |
- virtual void texImage2D(GLenum target, |
- GLint level, |
- GLenum internalformat, |
- GLsizei width, |
- GLsizei height, |
- GLint border, |
- GLenum format, |
- GLenum type, |
- const void* pixels) {} |
- |
- virtual void texSubImage2D(GLenum target, |
- GLint level, |
- GLint xoffset, |
- GLint yoffset, |
- GLsizei width, |
- GLsizei height, |
- GLenum format, |
- GLenum type, |
- const void* pixels) {} |
- |
- virtual void genMailboxCHROMIUM(GLbyte* mailbox); |
- virtual void produceTextureCHROMIUM(GLenum target, |
- const GLbyte* mailbox) { } |
- virtual void produceTextureDirectCHROMIUM(GLuint texture, |
- GLenum target, |
- const GLbyte* mailbox) {} |
- virtual void consumeTextureCHROMIUM(GLenum target, |
- const GLbyte* mailbox) { } |
- virtual GLuint createAndConsumeTextureCHROMIUM(GLenum target, |
- const GLbyte* mailbox); |
- |
- virtual void loseContextCHROMIUM(GLenum current, GLenum other); |
- |
- virtual void bindTexImage2DCHROMIUM(GLenum target, GLint image_id) {} |
- |
- virtual void drawArrays(GLenum mode, GLint first, GLsizei count) {} |
- virtual void drawElements(GLenum mode, |
- GLsizei count, |
- GLenum type, |
- GLintptr offset) {} |
- virtual void disable(GLenum cap) {} |
- virtual void enable(GLenum cap) {} |
- virtual void finish(); |
- virtual void flush(); |
- virtual void shallowFlushCHROMIUM() {} |
- |
- virtual void getAttachedShaders(GLuint program, |
- GLsizei max_count, |
- GLsizei* count, |
- GLuint* shaders) {} |
- virtual GLint getAttribLocation(GLuint program, const GLchar* name); |
- virtual void getBooleanv(GLenum pname, GLboolean* value) {} |
- virtual void getBufferParameteriv(GLenum target, GLenum pname, GLint* value) { |
- } |
- virtual GLenum getError(); |
- virtual void getFloatv(GLenum pname, GLfloat* value) {} |
- virtual void getFramebufferAttachmentParameteriv(GLenum target, |
- GLenum attachment, |
- GLenum pname, |
- GLint* value) {} |
- |
- virtual void getIntegerv(GLenum pname, GLint* value); |
- |
- virtual void getProgramiv(GLuint program, GLenum pname, GLint* value); |
- |
- virtual void getRenderbufferParameteriv(GLenum target, |
- GLenum pname, |
- GLint* value) {} |
- |
- virtual void getShaderiv(GLuint shader, GLenum pname, GLint* value); |
- |
- virtual void getShaderPrecisionFormat(GLenum shadertype, |
- GLenum precisiontype, |
- GLint* range, |
- GLint* precision); |
- |
- virtual void getTexParameterfv(GLenum target, GLenum pname, GLfloat* value) {} |
- virtual void getUniformfv(GLuint program, GLint location, GLfloat* value) {} |
- virtual void getUniformiv(GLuint program, GLint location, GLint* value) {} |
- virtual void getVertexAttribfv(GLuint index, GLenum pname, GLfloat* value) {} |
- virtual void getVertexAttribiv(GLuint index, GLenum pname, GLint* value) {} |
- |
- virtual void bindBuffer(GLenum target, GLuint buffer); |
- virtual void bufferData(GLenum target, |
- GLsizeiptr size, |
- const void* data, |
- GLenum usage); |
- virtual void pixelStorei(GLenum pname, GLint param); |
- virtual void* mapBufferCHROMIUM(GLenum target, |
- GLenum access); |
- virtual GLboolean unmapBufferCHROMIUM(GLenum target); |
- |
- virtual GLuint createImageCHROMIUM(ClientBuffer buffer, |
- GLsizei width, |
- GLsizei height, |
- GLenum internalformat); |
- virtual void destroyImageCHROMIUM(GLuint image_id); |
- virtual GLuint createGpuMemoryBufferImageCHROMIUM(GLsizei width, |
- GLsizei height, |
- GLenum internalformat, |
- GLenum usage); |
- |
- virtual void texImageIOSurface2DCHROMIUM(GLenum target, |
- GLsizei width, |
- GLsizei height, |
- GLuint io_surface_id, |
- GLuint plane) {} |
- |
- virtual unsigned insertSyncPoint(); |
- virtual void waitSyncPoint(unsigned sync_point); |
- |
- unsigned last_waited_sync_point() const { return last_waited_sync_point_; } |
- |
- const ContextProvider::Capabilities& test_capabilities() const { |
- return test_capabilities_; |
- } |
- |
- void set_context_lost(bool context_lost) { context_lost_ = context_lost; } |
- void set_times_bind_texture_succeeds(int times) { |
- times_bind_texture_succeeds_ = times; |
- } |
- void set_times_end_query_succeeds(int times) { |
- times_end_query_succeeds_ = times; |
- } |
- |
- // When set, mapBufferCHROMIUM will return NULL after this many times. |
- void set_times_map_buffer_chromium_succeeds(int times) { |
- times_map_buffer_chromium_succeeds_ = times; |
- } |
- |
- size_t NumTextures() const; |
- GLuint TextureAt(int i) const; |
- |
- size_t NumUsedTextures() const { return used_textures_.size(); } |
- bool UsedTexture(int texture) const { |
- return ContainsKey(used_textures_, texture); |
- } |
- void ResetUsedTextures() { used_textures_.clear(); } |
- |
- void set_have_extension_io_surface(bool have) { |
- test_capabilities_.gpu.iosurface = have; |
- test_capabilities_.gpu.texture_rectangle = have; |
- } |
- void set_have_extension_egl_image(bool have) { |
- test_capabilities_.gpu.egl_image_external = have; |
- } |
- void set_have_post_sub_buffer(bool have) { |
- test_capabilities_.gpu.post_sub_buffer = have; |
- } |
- void set_have_discard_framebuffer(bool have) { |
- test_capabilities_.gpu.discard_framebuffer = have; |
- } |
- void set_support_compressed_texture_etc1(bool support) { |
- test_capabilities_.gpu.texture_format_etc1 = support; |
- } |
- void set_support_texture_format_bgra8888(bool support) { |
- test_capabilities_.gpu.texture_format_bgra8888 = support; |
- } |
- void set_support_texture_storage(bool support) { |
- test_capabilities_.gpu.texture_storage = support; |
- } |
- void set_support_texture_usage(bool support) { |
- test_capabilities_.gpu.texture_usage = support; |
- } |
- void set_support_sync_query(bool support) { |
- test_capabilities_.gpu.sync_query = support; |
- } |
- void set_support_image(bool support) { |
- test_capabilities_.gpu.image = support; |
- } |
- void set_support_texture_rectangle(bool support) { |
- test_capabilities_.gpu.texture_rectangle = support; |
- } |
- |
- // When this context is lost, all contexts in its share group are also lost. |
- void add_share_group_context(TestWebGraphicsContext3D* context3d) { |
- shared_contexts_.push_back(context3d); |
- } |
- |
- void set_max_texture_size(int size) { max_texture_size_ = size; } |
- |
- static const GLuint kExternalTextureId; |
- virtual GLuint NextTextureId(); |
- virtual void RetireTextureId(GLuint id); |
- |
- virtual GLuint NextBufferId(); |
- virtual void RetireBufferId(GLuint id); |
- |
- virtual GLuint NextImageId(); |
- virtual void RetireImageId(GLuint id); |
- |
- virtual GLuint NextFramebufferId(); |
- virtual void RetireFramebufferId(GLuint id); |
- |
- virtual GLuint NextRenderbufferId(); |
- virtual void RetireRenderbufferId(GLuint id); |
- |
- void SetMaxTransferBufferUsageBytes(size_t max_transfer_buffer_usage_bytes); |
- size_t max_used_transfer_buffer_usage_bytes() const { |
- return max_used_transfer_buffer_usage_bytes_; |
- } |
- |
- void set_test_support(TestContextSupport* test_support) { |
- test_support_ = test_support; |
- } |
- |
- int width() const { return width_; } |
- int height() const { return height_; } |
- bool reshape_called() const { return reshape_called_; } |
- void clear_reshape_called() { reshape_called_ = false; } |
- float scale_factor() const { return scale_factor_; } |
- |
- enum UpdateType { NO_UPDATE = 0, PREPARE_TEXTURE, POST_SUB_BUFFER }; |
- |
- gfx::Rect update_rect() const { return update_rect_; } |
- |
- UpdateType last_update_type() { return last_update_type_; } |
- |
- protected: |
- struct TextureTargets { |
- TextureTargets(); |
- ~TextureTargets(); |
- |
- void BindTexture(GLenum target, GLuint id); |
- void UnbindTexture(GLuint id); |
- |
- GLuint BoundTexture(GLenum target); |
- |
- private: |
- typedef base::hash_map<GLenum, GLuint> TargetTextureMap; |
- TargetTextureMap bound_textures_; |
- }; |
- |
- struct Buffer { |
- Buffer(); |
- ~Buffer(); |
- |
- GLenum target; |
- scoped_ptr<uint8[]> pixels; |
- size_t size; |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(Buffer); |
- }; |
- |
- struct Image { |
- Image(); |
- ~Image(); |
- |
- scoped_ptr<uint8[]> pixels; |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(Image); |
- }; |
- |
- struct Namespace : public base::RefCountedThreadSafe<Namespace> { |
- Namespace(); |
- |
- // Protects all fields. |
- base::Lock lock; |
- unsigned next_buffer_id; |
- unsigned next_image_id; |
- unsigned next_texture_id; |
- unsigned next_renderbuffer_id; |
- base::ScopedPtrHashMap<unsigned, Buffer> buffers; |
- base::hash_set<unsigned> images; |
- OrderedTextureMap textures; |
- base::hash_set<unsigned> renderbuffer_set; |
- |
- private: |
- friend class base::RefCountedThreadSafe<Namespace>; |
- ~Namespace(); |
- DISALLOW_COPY_AND_ASSIGN(Namespace); |
- }; |
- |
- TestWebGraphicsContext3D(); |
- |
- void CreateNamespace(); |
- GLuint BoundTextureId(GLenum target); |
- scoped_refptr<TestTexture> BoundTexture(GLenum target); |
- scoped_refptr<TestTexture> UnboundTexture(GLuint texture); |
- void CheckTextureIsBound(GLenum target); |
- |
- unsigned context_id_; |
- ContextProvider::Capabilities test_capabilities_; |
- int times_bind_texture_succeeds_; |
- int times_end_query_succeeds_; |
- bool context_lost_; |
- int times_map_buffer_chromium_succeeds_; |
- int current_used_transfer_buffer_usage_bytes_; |
- int max_used_transfer_buffer_usage_bytes_; |
- base::Closure context_lost_callback_; |
- base::hash_set<unsigned> used_textures_; |
- unsigned next_program_id_; |
- base::hash_set<unsigned> program_set_; |
- unsigned next_shader_id_; |
- base::hash_set<unsigned> shader_set_; |
- unsigned next_framebuffer_id_; |
- base::hash_set<unsigned> framebuffer_set_; |
- unsigned current_framebuffer_; |
- std::vector<TestWebGraphicsContext3D*> shared_contexts_; |
- int max_texture_size_; |
- bool reshape_called_; |
- int width_; |
- int height_; |
- float scale_factor_; |
- TestContextSupport* test_support_; |
- gfx::Rect update_rect_; |
- UpdateType last_update_type_; |
- unsigned next_insert_sync_point_; |
- unsigned last_waited_sync_point_; |
- int unpack_alignment_; |
- |
- unsigned bound_buffer_; |
- TextureTargets texture_targets_; |
- |
- scoped_refptr<Namespace> namespace_; |
- static Namespace* shared_namespace_; |
- |
- base::WeakPtrFactory<TestWebGraphicsContext3D> weak_ptr_factory_; |
-}; |
- |
-} // namespace cc |
- |
-#endif // CC_TEST_TEST_WEB_GRAPHICS_CONTEXT_3D_H_ |