1/* 2 * Copyright (C) 2011 Google Inc. All rights reserved. 3 * Copyright (C) 2012 Research In Motion Limited. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 2. Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * 15 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 16 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 19 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 */ 26 27#ifndef Extensions3DOpenGLCommon_h 28#define Extensions3DOpenGLCommon_h 29 30#include "Extensions3D.h" 31 32#include "GraphicsContext3D.h" 33#include <wtf/HashSet.h> 34#include <wtf/text/StringHash.h> 35 36namespace WebCore { 37 38class Extensions3DOpenGLCommon : public Extensions3D { 39public: 40 virtual ~Extensions3DOpenGLCommon(); 41 42 // Extensions3D methods. 43 virtual bool supports(const String&); 44 virtual void ensureEnabled(const String&); 45 virtual bool isEnabled(const String&); 46 virtual int getGraphicsResetStatusARB(); 47 48 virtual Platform3DObject createVertexArrayOES() = 0; 49 virtual void deleteVertexArrayOES(Platform3DObject) = 0; 50 virtual GC3Dboolean isVertexArrayOES(Platform3DObject) = 0; 51 virtual void bindVertexArrayOES(Platform3DObject) = 0; 52 53 virtual void drawBuffersEXT(GC3Dsizei, const GC3Denum*) = 0; 54 55 virtual String getTranslatedShaderSourceANGLE(Platform3DObject); 56 57 // EXT Robustness - uses getGraphicsResetStatusARB() 58 virtual void readnPixelsEXT(int x, int y, GC3Dsizei width, GC3Dsizei height, GC3Denum format, GC3Denum type, GC3Dsizei bufSize, void *data); 59 virtual void getnUniformfvEXT(GC3Duint program, int location, GC3Dsizei bufSize, float *params); 60 virtual void getnUniformivEXT(GC3Duint program, int location, GC3Dsizei bufSize, int *params); 61 62 virtual bool isNVIDIA() { return m_isNVIDIA; } 63 virtual bool isAMD() { return m_isAMD; } 64 virtual bool isIntel() { return m_isIntel; } 65 virtual bool isImagination() { return m_isImagination; } 66 virtual String vendor() { return m_vendor; } 67 68 virtual bool maySupportMultisampling() { return m_maySupportMultisampling; } 69 virtual bool requiresBuiltInFunctionEmulation() { return m_requiresBuiltInFunctionEmulation; } 70 virtual bool requiresRestrictedMaximumTextureSize() { return m_requiresRestrictedMaximumTextureSize; } 71 72protected: 73 friend class Extensions3DOpenGLES; 74 Extensions3DOpenGLCommon(GraphicsContext3D*); 75 76 virtual bool supportsExtension(const String&) = 0; 77 virtual String getExtensions() = 0; 78 79 virtual void initializeAvailableExtensions(); 80 bool m_initializedAvailableExtensions; 81 HashSet<String> m_availableExtensions; 82 83 // Weak pointer back to GraphicsContext3D 84 GraphicsContext3D* m_context; 85 86 bool m_isNVIDIA; 87 bool m_isAMD; 88 bool m_isIntel; 89 bool m_isImagination; 90 bool m_maySupportMultisampling; 91 bool m_requiresBuiltInFunctionEmulation; 92 bool m_requiresRestrictedMaximumTextureSize; 93 94 String m_vendor; 95 String m_renderer; 96}; 97 98} // namespace WebCore 99 100#endif // Extensions3DOpenGLCommon_h 101