Index: webkit/common/gpu/webgraphicscontext3d_impl.h |
diff --git a/webkit/common/gpu/webgraphicscontext3d_in_process_command_buffer_impl.h b/webkit/common/gpu/webgraphicscontext3d_impl.h |
similarity index 85% |
copy from webkit/common/gpu/webgraphicscontext3d_in_process_command_buffer_impl.h |
copy to webkit/common/gpu/webgraphicscontext3d_impl.h |
index 5909c36c97e7990aaa8cfd0193903e23206983f3..ccc9046e2e4544e542d264eec447304499f36318 100644 |
--- a/webkit/common/gpu/webgraphicscontext3d_in_process_command_buffer_impl.h |
+++ b/webkit/common/gpu/webgraphicscontext3d_impl.h |
@@ -2,24 +2,23 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#ifndef WEBKIT_COMMON_GPU_WEBGRAPHICSCONTEXT3D_IN_PROCESS_COMMAND_BUFFER_IMPL_H_ |
-#define WEBKIT_COMMON_GPU_WEBGRAPHICSCONTEXT3D_IN_PROCESS_COMMAND_BUFFER_IMPL_H_ |
+#ifndef WEBKIT_COMMON_GPU_WEBGRAPHICSCONTEXT3D_IMPL_H_ |
+#define WEBKIT_COMMON_GPU_WEBGRAPHICSCONTEXT3D_IMPL_H_ |
+#include <string> |
#include <vector> |
-#include "base/compiler_specific.h" |
+#include "base/callback.h" |
#include "base/memory/scoped_ptr.h" |
#include "third_party/WebKit/public/platform/WebGraphicsContext3D.h" |
#include "third_party/WebKit/public/platform/WebString.h" |
-#include "ui/gfx/native_widget_types.h" |
#include "webkit/common/gpu/webkit_gpu_export.h" |
namespace gpu { |
-class ContextSupport; |
namespace gles2 { |
class GLES2Interface; |
-class GLES2Implementation; |
+class GLES2ImplementationErrorMessageCallback; |
} |
} |
@@ -38,48 +37,25 @@ using blink::WGC3Dclampf; |
using blink::WGC3Dintptr; |
using blink::WGC3Dsizeiptr; |
-namespace gpu { |
-class GLInProcessContext; |
-struct GLInProcessContextAttribs; |
-} |
+namespace content { |
jamesr
2014/06/03 21:22:56
what on earth? why are we defining symbols in name
bajones
2014/06/03 21:25:13
Ack! That's a mistake. (File was originally a copy
|
-namespace webkit { |
-namespace gpu { |
+class WebGraphicsContext3DErrorMessageCallback; |
-class WEBKIT_GPU_EXPORT WebGraphicsContext3DInProcessCommandBufferImpl |
+class WEBKIT_GPU_EXPORT WebGraphicsContext3DImpl |
: public NON_EXPORTED_BASE(blink::WebGraphicsContext3D) { |
public: |
- static scoped_ptr<WebGraphicsContext3DInProcessCommandBufferImpl> |
- CreateViewContext( |
- const blink::WebGraphicsContext3D::Attributes& attributes, |
- bool lose_context_when_out_of_memory, |
- gfx::AcceleratedWidget window); |
- |
- static scoped_ptr<WebGraphicsContext3DInProcessCommandBufferImpl> |
- CreateOffscreenContext( |
- const blink::WebGraphicsContext3D::Attributes& attributes, |
- bool lose_context_when_out_of_memory); |
- |
- static scoped_ptr<WebGraphicsContext3DInProcessCommandBufferImpl> |
- WrapContext( |
- scoped_ptr< ::gpu::GLInProcessContext> context, |
- const blink::WebGraphicsContext3D::Attributes& attributes); |
- |
- virtual ~WebGraphicsContext3DInProcessCommandBufferImpl(); |
- |
- // Convert WebGL context creation attributes into GLInProcessContext / EGL |
- // size requests. |
- static void ConvertAttributes( |
- const blink::WebGraphicsContext3D::Attributes& attributes, |
- ::gpu::GLInProcessContextAttribs* output_attribs); |
- |
//---------------------------------------------------------------------- |
// WebGraphicsContext3D methods |
- virtual bool makeContextCurrent(); |
virtual uint32_t lastFlushID(); |
- virtual void reshapeWithScaleFactor(int width, int height, float scaleFactor); |
+ virtual unsigned int insertSyncPoint(); |
+ virtual void waitSyncPoint(unsigned int sync_point); |
+ |
+ virtual void loseContextCHROMIUM(WGC3Denum current, WGC3Denum other); |
+ |
+ virtual void reshapeWithScaleFactor( |
+ int width, int height, float scale_factor); |
virtual void prepareTexture(); |
virtual void postSubBufferCHROMIUM(int x, int y, int width, int height); |
@@ -204,8 +180,6 @@ class WEBKIT_GPU_EXPORT WebGraphicsContext3DInProcessCommandBufferImpl |
virtual WGC3Denum getError(); |
- virtual bool isContextLost(); |
- |
virtual void getFloatv(WGC3Denum pname, WGC3Dfloat* value); |
virtual void getFramebufferAttachmentParameteriv(WGC3Denum target, |
@@ -446,7 +420,6 @@ class WEBKIT_GPU_EXPORT WebGraphicsContext3DInProcessCommandBufferImpl |
virtual void discardFramebufferEXT(WGC3Denum target, |
WGC3Dsizei numAttachments, |
const WGC3Denum* attachments); |
- |
virtual void copyTextureToParentTextureCHROMIUM( |
WebGLId texture, WebGLId parentTexture); |
@@ -465,30 +438,21 @@ class WEBKIT_GPU_EXPORT WebGraphicsContext3DInProcessCommandBufferImpl |
virtual void setContextLostCallback( |
WebGraphicsContext3D::WebGraphicsContextLostCallback* callback); |
- virtual WGC3Denum getGraphicsResetStatusARB(); |
+ |
+ virtual void setErrorMessageCallback( |
+ WebGraphicsContext3D::WebGraphicsErrorMessageCallback* callback); |
virtual void texImageIOSurface2DCHROMIUM( |
WGC3Denum target, WGC3Dint width, WGC3Dint height, |
WGC3Duint ioSurfaceId, WGC3Duint plane); |
- virtual void bindTexImage2DCHROMIUM(WGC3Denum target, WGC3Dint imageId); |
- virtual void releaseTexImage2DCHROMIUM(WGC3Denum target, WGC3Dint imageId); |
- |
virtual void texStorage2DEXT( |
WGC3Denum target, WGC3Dint levels, WGC3Duint internalformat, |
WGC3Dint width, WGC3Dint height); |
- virtual WGC3Duint createImageCHROMIUM(WGC3Dsizei width, |
- WGC3Dsizei height, |
- WGC3Denum internalformat, |
- WGC3Denum usage); |
- virtual void destroyImageCHROMIUM(WGC3Duint image_id); |
- virtual void getImageParameterivCHROMIUM( |
- WGC3Duint image_id, WGC3Denum pname, WGC3Dint* params); |
- virtual void* mapImageCHROMIUM(WGC3Duint image_id); |
- virtual void unmapImageCHROMIUM(WGC3Duint image_id); |
+ |
virtual WebGLId createQueryEXT(); |
virtual void deleteQueryEXT(WebGLId query); |
- virtual WGC3Dboolean isQueryEXT(WebGLId query); |
+ virtual WGC3Dboolean isQueryEXT(WGC3Duint query); |
virtual void beginQueryEXT(WGC3Denum target, WebGLId query); |
virtual void endQueryEXT(WGC3Denum target); |
virtual void getQueryivEXT( |
@@ -496,8 +460,8 @@ class WEBKIT_GPU_EXPORT WebGraphicsContext3DInProcessCommandBufferImpl |
virtual void getQueryObjectuivEXT( |
WebGLId query, WGC3Denum pname, WGC3Duint* params); |
- virtual void copyTextureCHROMIUM(WGC3Denum target, WGC3Duint source_id, |
- WGC3Duint dest_id, WGC3Dint level, |
+ virtual void copyTextureCHROMIUM(WGC3Denum target, WebGLId source_id, |
+ WebGLId dest_id, WGC3Dint level, |
WGC3Denum internal_format, |
WGC3Denum dest_type); |
@@ -517,21 +481,17 @@ class WEBKIT_GPU_EXPORT WebGraphicsContext3DInProcessCommandBufferImpl |
virtual void pushGroupMarkerEXT(const WGC3Dchar* marker); |
virtual void popGroupMarkerEXT(); |
- virtual void* mapBufferCHROMIUM(WGC3Denum target, WGC3Denum access); |
- virtual WGC3Dboolean unmapBufferCHROMIUM(WGC3Denum target); |
+ // GL_OES_vertex_array_object |
+ virtual WebGLId createVertexArrayOES(); |
+ virtual void deleteVertexArrayOES(WebGLId array); |
+ virtual WGC3Dboolean isVertexArrayOES(WebGLId array); |
+ virtual void bindVertexArrayOES(WebGLId array); |
- virtual void framebufferTexture2DMultisampleEXT(WGC3Denum target, |
- WGC3Denum attachment, |
- WGC3Denum textarget, |
- WebGLId texture, |
- WGC3Dint level, |
- WGC3Dsizei samples); |
- virtual void renderbufferStorageMultisampleEXT(WGC3Denum target, |
- WGC3Dsizei samples, |
- WGC3Denum internalformat, |
- WGC3Dsizei width, |
- WGC3Dsizei height); |
+ virtual void bindTexImage2DCHROMIUM(WGC3Denum target, WGC3Dint image_id); |
+ virtual void releaseTexImage2DCHROMIUM(WGC3Denum target, WGC3Dint image_id); |
+ virtual void* mapBufferCHROMIUM(WGC3Denum target, WGC3Denum access); |
+ virtual WGC3Dboolean unmapBufferCHROMIUM(WGC3Denum target); |
// Async pixel transfer functions. |
virtual void asyncTexImage2DCHROMIUM( |
@@ -556,62 +516,83 @@ class WEBKIT_GPU_EXPORT WebGraphicsContext3DInProcessCommandBufferImpl |
const void* pixels); |
virtual void waitAsyncTexImage2DCHROMIUM(WGC3Denum target); |
- virtual void drawBuffersEXT(WGC3Dsizei n, const WGC3Denum* bufs); |
+ // GL_EXT_draw_buffers |
+ virtual void drawBuffersEXT( |
+ WGC3Dsizei n, |
+ const WGC3Denum* bufs); |
- virtual unsigned insertSyncPoint(); |
+ // GL_ANGLE_instanced_arrays |
+ virtual void drawArraysInstancedANGLE(WGC3Denum mode, WGC3Dint first, |
+ WGC3Dsizei count, WGC3Dsizei primcount); |
+ virtual void drawElementsInstancedANGLE(WGC3Denum mode, WGC3Dsizei count, |
+ WGC3Denum type, WGC3Dintptr offset, WGC3Dsizei primcount); |
+ virtual void vertexAttribDivisorANGLE(WGC3Duint index, WGC3Duint divisor); |
- virtual void loseContextCHROMIUM(WGC3Denum current, WGC3Denum other); |
+ // GL_CHROMIUM_map_image |
+ virtual WGC3Duint createImageCHROMIUM(WGC3Dsizei width, |
+ WGC3Dsizei height, |
+ WGC3Denum internalformat, |
+ WGC3Denum usage); |
+ virtual void destroyImageCHROMIUM(WGC3Duint image_id); |
+ virtual void getImageParameterivCHROMIUM( |
+ WGC3Duint image_id, WGC3Denum pname, WGC3Dint* params); |
+ virtual void* mapImageCHROMIUM(WGC3Duint image_id); |
+ virtual void unmapImageCHROMIUM(WGC3Duint image_id); |
- virtual GrGLInterface* createGrGLInterface(); |
+ // GL_EXT_multisampled_render_to_texture |
+ virtual void framebufferTexture2DMultisampleEXT(WGC3Denum target, |
+ WGC3Denum attachment, |
+ WGC3Denum textarget, |
+ WebGLId texture, |
+ WGC3Dint level, |
+ WGC3Dsizei samples); |
+ virtual void renderbufferStorageMultisampleEXT( |
+ WGC3Denum target, WGC3Dsizei samples, WGC3Denum internalformat, |
+ WGC3Dsizei width, WGC3Dsizei height); |
- ::gpu::gles2::GLES2Interface* GetGLInterface(); |
- ::gpu::ContextSupport* GetContextSupport(); |
+ virtual GrGLInterface* createGrGLInterface(); |
- ::gpu::gles2::GLES2Implementation* GetImplementation() { |
+ gpu::gles2::GLES2Interface* GetGLInterface() { |
return gl_; |
} |
- private: |
- WebGraphicsContext3DInProcessCommandBufferImpl( |
- scoped_ptr< ::gpu::GLInProcessContext> context, |
- const blink::WebGraphicsContext3D::Attributes& attributes, |
- bool lose_context_when_out_of_memory, |
- bool is_offscreen, |
- gfx::AcceleratedWidget window); |
+ protected: |
+ friend class WebGraphicsContext3DErrorMessageCallback; |
- void OnContextLost(); |
+ WebGraphicsContext3DImpl( |
+ const Attributes& attributes, |
+ bool lose_context_when_out_of_memory); |
+ virtual ~WebGraphicsContext3DImpl(); |
- bool MaybeInitializeGL(); |
+ gpu::gles2::GLES2ImplementationErrorMessageCallback* |
+ getErrorMessageCallback(); |
+ virtual void OnErrorMessage(const std::string& message, int id); |
- // Used to try to find bugs in code that calls gl directly through the gl api |
- // instead of going through WebGraphicsContext3D. |
- void ClearContext(); |
- |
- bool is_offscreen_; |
- // Only used when not offscreen. |
- gfx::AcceleratedWidget window_; |
+ void setGLInterface(gpu::gles2::GLES2Interface* gl) { |
+ gl_ = gl; |
+ } |
bool initialized_; |
bool initialize_failed_; |
- // The context we use for OpenGL rendering. |
- scoped_ptr< ::gpu::GLInProcessContext> context_; |
- // The GLES2Implementation we use for OpenGL rendering. |
- ::gpu::gles2::GLES2Implementation* gl_; |
- |
WebGraphicsContext3D::WebGraphicsContextLostCallback* context_lost_callback_; |
WGC3Denum context_lost_reason_; |
+ WebGraphicsContext3D::WebGraphicsErrorMessageCallback* |
+ error_message_callback_; |
+ scoped_ptr<WebGraphicsContext3DErrorMessageCallback> |
+ client_error_message_callback_; |
+ |
blink::WebGraphicsContext3D::Attributes attributes_; |
- bool lose_context_when_out_of_memory_; |
// Errors raised by synthesizeGLError(). |
std::vector<WGC3Denum> synthetic_errors_; |
+ gpu::gles2::GLES2Interface* gl_; |
+ bool lose_context_when_out_of_memory_; |
uint32_t flush_id_; |
}; |
-} // namespace gpu |
-} // namespace webkit |
+} // namespace content |
-#endif // WEBKIT_COMMON_GPU_WEBGRAPHICSCONTEXT3D_IN_PROCESS_COMMAND_BUFFER_IMPL_H_ |
+#endif // WEBKIT_COMMON_GPU_WEBGRAPHICSCONTEXT3D_IMPL_H_ |