Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(645)

Side by Side Diff: content/renderer/gpu/webgraphicscontext3d_command_buffer_impl.h

Issue 9270025: Remove renderer dependencies from the GPU client classes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: add overrides Created 8 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 #ifndef CONTENT_RENDERER_GPU_WEBGRAPHICSCONTEXT3D_COMMAND_BUFFER_IMPL_H_ 5 #ifndef CONTENT_RENDERER_GPU_WEBGRAPHICSCONTEXT3D_COMMAND_BUFFER_IMPL_H_
6 #define CONTENT_RENDERER_GPU_WEBGRAPHICSCONTEXT3D_COMMAND_BUFFER_IMPL_H_ 6 #define CONTENT_RENDERER_GPU_WEBGRAPHICSCONTEXT3D_COMMAND_BUFFER_IMPL_H_
7 #pragma once 7 #pragma once
8 8
9 #if defined(ENABLE_GPU)
10
11 #include <string> 9 #include <string>
12 #include <vector> 10 #include <vector>
13 11
14 #include "base/memory/scoped_ptr.h" 12 #include "base/memory/scoped_ptr.h"
15 #include "base/memory/weak_ptr.h" 13 #include "base/memory/weak_ptr.h"
16 #include "content/renderer/gpu/renderer_gl_context.h" 14 #include "content/renderer/gpu/renderer_gl_context.h"
17 #include "googleurl/src/gurl.h" 15 #include "googleurl/src/gurl.h"
18 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebGraphicsC ontext3D.h" 16 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebGraphicsC ontext3D.h"
19 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebString.h" 17 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebString.h"
20 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" 18 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
(...skipping 19 matching lines...) Expand all
40 using WebKit::WGC3Dboolean; 38 using WebKit::WGC3Dboolean;
41 using WebKit::WGC3Dbitfield; 39 using WebKit::WGC3Dbitfield;
42 using WebKit::WGC3Dint; 40 using WebKit::WGC3Dint;
43 using WebKit::WGC3Dsizei; 41 using WebKit::WGC3Dsizei;
44 using WebKit::WGC3Duint; 42 using WebKit::WGC3Duint;
45 using WebKit::WGC3Dfloat; 43 using WebKit::WGC3Dfloat;
46 using WebKit::WGC3Dclampf; 44 using WebKit::WGC3Dclampf;
47 using WebKit::WGC3Dintptr; 45 using WebKit::WGC3Dintptr;
48 using WebKit::WGC3Dsizeiptr; 46 using WebKit::WGC3Dsizeiptr;
49 47
48 // TODO(piman): move this logic to the compositor and remove it from the
49 // context...
50 class WebGraphicsContext3DSwapBuffersClient {
51 public:
52 virtual ~WebGraphicsContext3DSwapBuffersClient() { }
53 virtual void OnViewContextSwapBuffersPosted() = 0;
54 virtual void OnViewContextSwapBuffersComplete() = 0;
55 virtual void OnViewContextSwapBuffersAborted() = 0;
56 };
57
50 class WebGraphicsContext3DCommandBufferImpl 58 class WebGraphicsContext3DCommandBufferImpl
51 : public WebKit::WebGraphicsContext3D { 59 : public WebKit::WebGraphicsContext3D {
52 public: 60 public:
53 WebGraphicsContext3DCommandBufferImpl(); 61 WebGraphicsContext3DCommandBufferImpl(
62 int surface_id,
63 const GURL& active_url,
64 const base::WeakPtr<WebGraphicsContext3DSwapBuffersClient>& swap_client);
54 virtual ~WebGraphicsContext3DCommandBufferImpl(); 65 virtual ~WebGraphicsContext3DCommandBufferImpl();
55 66
67 bool Initialize(const Attributes& attributes);
68
56 //---------------------------------------------------------------------- 69 //----------------------------------------------------------------------
57 // WebGraphicsContext3D methods 70 // WebGraphicsContext3D methods
58 virtual bool initialize(WebGraphicsContext3D::Attributes attributes,
59 WebKit::WebView*,
60 bool renderDirectlyToWebView);
61 71
62 // Must be called after initialize() and before any of the following methods. 72 // Must be called after initialize() and before any of the following methods.
63 // Permanently binds to the first calling thread. Returns false if the 73 // Permanently binds to the first calling thread. Returns false if the
64 // graphics context fails to create. Do not call from more than one thread. 74 // graphics context fails to create. Do not call from more than one thread.
65 virtual bool makeContextCurrent(); 75 virtual bool makeContextCurrent();
66 76
67 virtual int width(); 77 virtual int width();
68 virtual int height(); 78 virtual int height();
69 79
70 virtual bool isGLES2Compliant(); 80 virtual bool isGLES2Compliant();
(...skipping 412 matching lines...) Expand 10 before | Expand all | Expand 10 after
483 493
484 bool initialize_failed_; 494 bool initialize_failed_;
485 495
486 // The context we use for OpenGL rendering. 496 // The context we use for OpenGL rendering.
487 RendererGLContext* context_; 497 RendererGLContext* context_;
488 // The GLES2Implementation we use for OpenGL rendering. 498 // The GLES2Implementation we use for OpenGL rendering.
489 gpu::gles2::GLES2Implementation* gl_; 499 gpu::gles2::GLES2Implementation* gl_;
490 500
491 // State needed by MaybeInitializeGL. 501 // State needed by MaybeInitializeGL.
492 GpuChannelHost* host_; 502 GpuChannelHost* host_;
503 int32 surface_id_;
493 GURL active_url_; 504 GURL active_url_;
494 int32 surface_id_; 505 base::WeakPtr<WebGraphicsContext3DSwapBuffersClient> swap_client_;
495 506
496 bool render_directly_to_web_view_;
497
498 // If rendering directly to WebView, weak pointer to it.
499 // This is only set when the context is bound to the main thread.
500 WebKit::WebView* web_view_;
501
502 #if defined(OS_MACOSX)
503 // "Fake" plugin window handle in browser process for the compositor's output.
504 gfx::PluginWindowHandle plugin_handle_;
505 #endif
506 WebGraphicsContext3D::WebGraphicsContextLostCallback* context_lost_callback_; 507 WebGraphicsContext3D::WebGraphicsContextLostCallback* context_lost_callback_;
507 WGC3Denum context_lost_reason_; 508 WGC3Denum context_lost_reason_;
508 509
509 WebGraphicsContext3D::WebGraphicsSwapBuffersCompleteCallbackCHROMIUM* 510 WebGraphicsContext3D::WebGraphicsSwapBuffersCompleteCallbackCHROMIUM*
510 swapbuffers_complete_callback_; 511 swapbuffers_complete_callback_;
511 512
512 WebKit::WebGraphicsContext3D::Attributes attributes_; 513 WebKit::WebGraphicsContext3D::Attributes attributes_;
513 gfx::GpuPreference gpu_preference_; 514 gfx::GpuPreference gpu_preference_;
514 int cached_width_, cached_height_; 515 int cached_width_, cached_height_;
515 516
516 // For tracking which FBO is bound. 517 // For tracking which FBO is bound.
517 WebGLId bound_fbo_; 518 WebGLId bound_fbo_;
518 519
519 // Errors raised by synthesizeGLError(). 520 // Errors raised by synthesizeGLError().
520 std::vector<WGC3Denum> synthetic_errors_; 521 std::vector<WGC3Denum> synthetic_errors_;
521 522
522 base::WeakPtrFactory<WebGraphicsContext3DCommandBufferImpl> weak_ptr_factory_; 523 base::WeakPtrFactory<WebGraphicsContext3DCommandBufferImpl> weak_ptr_factory_;
523 524
524 #ifdef FLIP_FRAMEBUFFER_VERTICALLY 525 #ifdef FLIP_FRAMEBUFFER_VERTICALLY
525 scoped_array<uint8> scanline_; 526 scoped_array<uint8> scanline_;
526 void FlipVertically(uint8* framebuffer, 527 void FlipVertically(uint8* framebuffer,
527 unsigned int width, 528 unsigned int width,
528 unsigned int height); 529 unsigned int height);
529 #endif 530 #endif
530 }; 531 };
531 532
532 #endif // defined(ENABLE_GPU)
533 #endif // CONTENT_RENDERER_GPU_WEBGRAPHICSCONTEXT3D_COMMAND_BUFFER_IMPL_H_ 533 #endif // CONTENT_RENDERER_GPU_WEBGRAPHICSCONTEXT3D_COMMAND_BUFFER_IMPL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698