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

Unified Diff: Source/WebCore/platform/graphics/surfaces/glx/GLXSurface.cpp

Issue 13046002: Revert 146458 "[EFL][WebGL] Implement a common GraphicsSurface I..." (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1451/
Patch Set: Created 7 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/WebCore/platform/graphics/surfaces/glx/GLXSurface.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/WebCore/platform/graphics/surfaces/glx/GLXSurface.cpp
===================================================================
--- Source/WebCore/platform/graphics/surfaces/glx/GLXSurface.cpp (revision 146732)
+++ Source/WebCore/platform/graphics/surfaces/glx/GLXSurface.cpp (working copy)
@@ -30,40 +30,11 @@
namespace WebCore {
-static PFNGLXBINDTEXIMAGEEXTPROC pGlXBindTexImageEXT = 0;
-static PFNGLXRELEASETEXIMAGEEXTPROC pGlXReleaseTexImageEXT = 0;
+static const int pbufferAttributes[] = { GLX_PBUFFER_WIDTH, 1, GLX_PBUFFER_HEIGHT, 1, 0 };
-static bool resolveGLMethods()
+GLXTransportSurface::GLXTransportSurface(SurfaceAttributes attributes)
+ : GLTransportSurface(attributes)
{
- static bool resolved = false;
- if (resolved)
- return true;
-
- pGlXBindTexImageEXT = reinterpret_cast<PFNGLXBINDTEXIMAGEEXTPROC>(glXGetProcAddress(reinterpret_cast<const GLubyte*>("glXBindTexImageEXT")));
- pGlXReleaseTexImageEXT = reinterpret_cast<PFNGLXRELEASETEXIMAGEEXTPROC>(glXGetProcAddress(reinterpret_cast<const GLubyte*>("glXReleaseTexImageEXT")));
-
- resolved = pGlXBindTexImageEXT && pGlXReleaseTexImageEXT;
-
- return resolved;
-}
-
-static int glxAttributes[] = {
- GLX_TEXTURE_FORMAT_EXT,
- GLX_TEXTURE_FORMAT_RGBA_EXT,
- GLX_TEXTURE_TARGET_EXT,
- GLX_TEXTURE_2D_EXT,
- 0
-};
-
-static bool isMesaGLX()
-{
- static bool isMesa = !!strstr(glXGetClientString(X11Helper::nativeDisplay(), GLX_VENDOR), "Mesa");
- return isMesa;
-}
-
-GLXTransportSurface::GLXTransportSurface(const IntSize& size, SurfaceAttributes attributes)
- : GLTransportSurface(size, attributes)
-{
m_sharedDisplay = X11Helper::nativeDisplay();
attributes |= GLPlatformSurface::DoubleBuffered;
m_configSelector = adoptPtr(new GLXConfigSelector(attributes));
@@ -74,7 +45,7 @@
return;
}
- X11Helper::createOffScreenWindow(&m_bufferHandle, *visInfo.get(), size);
+ X11Helper::createOffScreenWindow(&m_bufferHandle, *visInfo.get());
if (!m_bufferHandle) {
destroy();
@@ -195,92 +166,6 @@
m_drawable = 0;
}
-GLXTransportSurfaceClient::GLXTransportSurfaceClient(const PlatformBufferHandle handle)
- : GLTransportSurfaceClient(handle)
-{
- if (!resolveGLMethods())
- return;
-
- XWindowAttributes attr;
- Display* display = X11Helper::nativeDisplay();
- if (!XGetWindowAttributes(display, handle, &attr))
- return;
-
- // Ensure that the window is mapped.
- if (attr.map_state == IsUnmapped || attr.map_state == IsUnviewable)
- return;
-
- ScopedXPixmapCreationErrorHandler handler;
-
- XRenderPictFormat* format = XRenderFindVisualFormat(display, attr.visual);
- bool hasAlpha = (format->type == PictTypeDirect && format->direct.alphaMask);
- m_xPixmap = XCompositeNameWindowPixmap(display, handle);
-
- if (!m_xPixmap)
- return;
-
- glxAttributes[1] = (format->depth == 32 && hasAlpha) ? GLX_TEXTURE_FORMAT_RGBA_EXT : GLX_TEXTURE_FORMAT_RGB_EXT;
-
- GLPlatformSurface::SurfaceAttributes sharedSurfaceAttributes = GLPlatformSurface::Default;
-
- if (hasAlpha) {
- sharedSurfaceAttributes = GLPlatformSurface::SupportAlpha;
- m_hasAlpha = true;
- }
-
- GLXConfigSelector configSelector(sharedSurfaceAttributes);
-
- m_glxPixmap = glXCreatePixmap(display, configSelector.surfaceClientConfig(format->depth, XVisualIDFromVisual(attr.visual)), m_xPixmap, glxAttributes);
-
- if (!m_glxPixmap || !handler.isValidOperation()) {
- destroy();
- return;
- }
-
- createTexture();
- glXWaitX();
- pGlXBindTexImageEXT(display, m_glxPixmap, GLX_FRONT_EXT, 0);
}
-GLXTransportSurfaceClient::~GLXTransportSurfaceClient()
-{
-}
-
-void GLXTransportSurfaceClient::destroy()
-{
- Display* display = X11Helper::nativeDisplay();
- if (!display)
- return;
-
- if (m_texture) {
- pGlXReleaseTexImageEXT(display, m_glxPixmap, GLX_FRONT_EXT);
- GLTransportSurfaceClient::destroy();
- }
-
- if (m_glxPixmap) {
- glXDestroyPixmap(display, m_glxPixmap);
- m_glxPixmap = 0;
- glXWaitGL();
- }
-
- if (m_xPixmap) {
- X11Helper::destroyPixmap(m_xPixmap);
- m_xPixmap = 0;
- }
-}
-
-void GLXTransportSurfaceClient::prepareTexture()
-{
- if (isMesaGLX() && m_texture) {
- Display* display = X11Helper::nativeDisplay();
- glBindTexture(GL_TEXTURE_2D, m_texture);
- // Mesa doesn't re-bind texture to the front buffer on glXSwapBufer
- // Manually release previous lock and rebind texture to surface to ensure frame updates.
- pGlXReleaseTexImageEXT(display, m_glxPixmap, GLX_FRONT_EXT);
- pGlXBindTexImageEXT(display, m_glxPixmap, GLX_FRONT_EXT, 0);
- }
-}
-
-}
-
#endif
« no previous file with comments | « Source/WebCore/platform/graphics/surfaces/glx/GLXSurface.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698