/* * Copyright (C) 2011 Google Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef SharedGraphicsContext3D_h #define SharedGraphicsContext3D_h #include "GraphicsContext3D.h" #include <wtf/RefCounted.h> #include <wtf/RefPtr.h> namespace WebCore { class SharedGraphicsContext3D { public: // The caller may ref this pointer, and hang onto it as long as they like. // However, the context should be checked periodically to determine if it // has been lost. The easiest way to do that is to simply call this // function again. Note that the return value may be 0 if the // GPU is unavailable. static PassRefPtr<GraphicsContext3D> get(); // This one returns the context, and does not touch it or re-create it. // Should only be called on the impl thread. static PassRefPtr<GraphicsContext3D> getForImplThread(); // This one returns if the threaded utility context exists. // Should only be called on the main thread. static bool haveForImplThread(); // This call creates the context unconditionally, but does not touch it. // Should only be called on the main thread. static bool createForImplThread(); }; } #endif // SharedGraphicsContext3D_h