Index: Source/WebCore/platform/graphics/surfaces/glx/GLXConfigSelector.h |
diff --git a/Source/WebCore/platform/graphics/surfaces/glx/GLXConfigSelector.h b/Source/WebCore/platform/graphics/surfaces/glx/GLXConfigSelector.h |
deleted file mode 100644 |
index 2fea7b004471f6bcf4dc307a23ffc17191797fb5..0000000000000000000000000000000000000000 |
--- a/Source/WebCore/platform/graphics/surfaces/glx/GLXConfigSelector.h |
+++ /dev/null |
@@ -1,211 +0,0 @@ |
-/* |
- * Copyright (C) 2012 Intel Corporation. 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 INC. 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 INC. 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 GLXConfigSelector_h |
-#define GLXConfigSelector_h |
- |
-#if USE(ACCELERATED_COMPOSITING) && USE(GLX) |
- |
-#include "X11Helper.h" |
-#include <opengl/GLDefs.h> |
-#include <opengl/GLPlatformSurface.h> |
- |
-namespace WebCore { |
- |
-static int clientAttributes[] = { |
- // The specification is a set key value pairs stored in a simple array. |
- GLX_LEVEL, 0, |
- static_cast<int>(GLX_VISUAL_ID), 0, |
- GLX_DRAWABLE_TYPE, GLX_PIXMAP_BIT, |
- GLX_BIND_TO_TEXTURE_TARGETS_EXT, GLX_TEXTURE_2D_BIT_EXT, |
- GLX_BIND_TO_TEXTURE_RGBA_EXT, TRUE, |
- 0 |
-}; |
- |
-static int glxSurfaceAttributes[] = { |
- GLX_LEVEL, 0, |
- GLX_DRAWABLE_TYPE, GLX_PIXMAP_BIT, |
- GLX_RENDER_TYPE, 0, |
- GLX_RED_SIZE, 1, |
- GLX_GREEN_SIZE, 1, |
- GLX_BLUE_SIZE, 1, |
- GLX_ALPHA_SIZE, 0, |
- GLX_DOUBLEBUFFER, GL_FALSE, |
- None |
-}; |
- |
-class GLXConfigSelector { |
- WTF_MAKE_NONCOPYABLE(GLXConfigSelector); |
- |
-public: |
- GLXConfigSelector(GLPlatformSurface::SurfaceAttributes attr = GLPlatformSurface::Default) |
- : m_surfaceContextFBConfig(0) |
- , m_pixmapContextFBConfig(0) |
- , m_attributes(attr) |
- { |
- } |
- |
- virtual ~GLXConfigSelector() |
- { |
- } |
- |
- XVisualInfo* visualInfo(const GLXFBConfig& config) |
- { |
- return glXGetVisualFromFBConfig(X11Helper::nativeDisplay(), config); |
- } |
- |
- GLXFBConfig pixmapContextConfig() |
- { |
- if (!m_pixmapContextFBConfig) { |
- validateAttributes(); |
- m_pixmapContextFBConfig = findMatchingConfig(glxSurfaceAttributes, m_attributes & GLPlatformSurface::SupportAlpha ? 32 : 24); |
- } |
- |
- return m_pixmapContextFBConfig; |
- } |
- |
- |
- GLXFBConfig surfaceContextConfig() |
- { |
- if (!m_surfaceContextFBConfig) { |
- glxSurfaceAttributes[3] = GLX_WINDOW_BIT; |
- glxSurfaceAttributes[7] = 8; |
- glxSurfaceAttributes[9] = 8; |
- glxSurfaceAttributes[11] = 8; |
- validateAttributes(); |
- m_surfaceContextFBConfig = findMatchingConfig(glxSurfaceAttributes, m_attributes & GLPlatformSurface::SupportAlpha ? 32 : 24); |
- } |
- |
- return m_surfaceContextFBConfig; |
- } |
- |
- GLXFBConfig surfaceClientConfig(int depth, VisualID id) |
- { |
- clientAttributes[3] = static_cast<int>(id); |
- clientAttributes[8] = depth == 32 ? GLX_BIND_TO_TEXTURE_RGBA_EXT : GLX_BIND_TO_TEXTURE_RGB_EXT; |
- // Prefer to match with Visual Id. |
- GLXFBConfig config = findMatchingConfigWithVisualId(clientAttributes, depth, id); |
- |
- if (!config) |
- config = findMatchingConfig(clientAttributes, depth); |
- |
- return config; |
- } |
- |
- void reset() |
- { |
- m_surfaceContextFBConfig = 0; |
- m_pixmapContextFBConfig = 0; |
- } |
- |
- GLPlatformSurface::SurfaceAttributes attributes() const |
- { |
- return m_attributes; |
- } |
- |
-private: |
- void validateAttributes() |
- { |
- if (m_attributes & GLPlatformSurface::SupportAlpha) { |
- glxSurfaceAttributes[13] = 8; |
- glxSurfaceAttributes[5] = GLX_RGBA_BIT; |
- } |
- |
- if (m_attributes & GLPlatformSurface::DoubleBuffered) |
- glxSurfaceAttributes[15] = GL_TRUE; |
- } |
- |
- GLXFBConfig findMatchingConfig(const int attributes[], int depth = 32) |
- { |
- int numAvailableConfigs; |
- OwnPtrX11<GLXFBConfig> temp(glXChooseFBConfig(X11Helper::nativeDisplay(), DefaultScreen(X11Helper::nativeDisplay()), attributes, &numAvailableConfigs)); |
- |
- if (!numAvailableConfigs || !temp.get()) |
- return 0; |
- |
- OwnPtrX11<XVisualInfo> scopedVisualInfo; |
- for (int i = 0; i < numAvailableConfigs; ++i) { |
- scopedVisualInfo = glXGetVisualFromFBConfig(X11Helper::nativeDisplay(), temp[i]); |
- if (!scopedVisualInfo.get()) |
- continue; |
- |
-#if USE(GRAPHICS_SURFACE) && USE(GLX) |
- if (X11Helper::isXRenderExtensionSupported()) { |
- XRenderPictFormat* format = XRenderFindVisualFormat(X11Helper::nativeDisplay(), scopedVisualInfo->visual); |
- |
- if (format) { |
- if (m_attributes & GLPlatformSurface::SupportAlpha) { |
- if (scopedVisualInfo->depth == depth && format->direct.alphaMask > 0) |
- return temp[i]; |
- } else if (!format->direct.alphaMask) |
- return temp[i]; |
- } |
- } |
-#endif |
- if (scopedVisualInfo->depth == depth) |
- return temp[i]; |
- } |
- |
- // Did not find any visual supporting alpha, select the first available config. |
- scopedVisualInfo = glXGetVisualFromFBConfig(X11Helper::nativeDisplay(), temp[0]); |
- |
- if ((m_attributes & GLPlatformSurface::SupportAlpha) && (scopedVisualInfo->depth != 32)) |
- m_attributes &= ~GLPlatformSurface::SupportAlpha; |
- |
- return temp[0]; |
- } |
- |
- GLXFBConfig findMatchingConfigWithVisualId(const int attributes[], int depth, VisualID id) |
- { |
- int numAvailableConfigs; |
- OwnPtrX11<GLXFBConfig> temp(glXChooseFBConfig(X11Helper::nativeDisplay(), DefaultScreen(X11Helper::nativeDisplay()), attributes, &numAvailableConfigs)); |
- |
- if (!numAvailableConfigs || !temp.get()) |
- return 0; |
- |
- OwnPtrX11<XVisualInfo> scopedVisualInfo; |
- for (int i = 0; i < numAvailableConfigs; ++i) { |
- scopedVisualInfo = glXGetVisualFromFBConfig(X11Helper::nativeDisplay(), temp[i]); |
- if (!scopedVisualInfo.get()) |
- continue; |
- |
- if (id && scopedVisualInfo->depth == depth && scopedVisualInfo->visualid == id) |
- return temp[i]; |
- } |
- |
- return 0; |
- } |
- |
- GLXFBConfig m_surfaceContextFBConfig; |
- GLXFBConfig m_pixmapContextFBConfig; |
- GLPlatformSurface::SurfaceAttributes m_attributes : 3; |
-}; |
- |
-} |
- |
-#endif |
- |
-#endif |
- |