Diff
Modified: trunk/Source/WebCore/ChangeLog (222956 => 222957)
--- trunk/Source/WebCore/ChangeLog 2017-10-06 03:51:35 UTC (rev 222956)
+++ trunk/Source/WebCore/ChangeLog 2017-10-06 05:00:18 UTC (rev 222957)
@@ -1,3 +1,23 @@
+2017-10-05 Commit Queue <[email protected]>
+
+ Unreviewed, rolling out r222951 and r222952.
+ https://bugs.webkit.org/show_bug.cgi?id=177992
+
+ "Broke the iOS build and introduced a webgl LayoutTest
+ failure." (Requested by ryanhaddad on #webkit).
+
+ Reverted changesets:
+
+ "Lots of missing frames in YouTube360 when fullscreen on
+ MacBook"
+ https://bugs.webkit.org/show_bug.cgi?id=177903
+ http://trac.webkit.org/changeset/222951
+
+ "Lots of missing frames in YouTube360 when fullscreen on
+ MacBook"
+ https://bugs.webkit.org/show_bug.cgi?id=177903
+ http://trac.webkit.org/changeset/222952
+
2017-10-05 Ryosuke Niwa <[email protected]>
DataTransfer shouldn't contain text/html when performing Paste and Match Style
Modified: trunk/Source/WebCore/PAL/ChangeLog (222956 => 222957)
--- trunk/Source/WebCore/PAL/ChangeLog 2017-10-06 03:51:35 UTC (rev 222956)
+++ trunk/Source/WebCore/PAL/ChangeLog 2017-10-06 05:00:18 UTC (rev 222957)
@@ -1,3 +1,23 @@
+2017-10-05 Commit Queue <[email protected]>
+
+ Unreviewed, rolling out r222951 and r222952.
+ https://bugs.webkit.org/show_bug.cgi?id=177992
+
+ "Broke the iOS build and introduced a webgl LayoutTest
+ failure." (Requested by ryanhaddad on #webkit).
+
+ Reverted changesets:
+
+ "Lots of missing frames in YouTube360 when fullscreen on
+ MacBook"
+ https://bugs.webkit.org/show_bug.cgi?id=177903
+ http://trac.webkit.org/changeset/222951
+
+ "Lots of missing frames in YouTube360 when fullscreen on
+ MacBook"
+ https://bugs.webkit.org/show_bug.cgi?id=177903
+ http://trac.webkit.org/changeset/222952
+
2017-10-05 Dean Jackson <[email protected]>
Lots of missing frames in YouTube360 when fullscreen on MacBook
Modified: trunk/Source/WebCore/PAL/pal/spi/cocoa/QuartzCoreSPI.h (222956 => 222957)
--- trunk/Source/WebCore/PAL/pal/spi/cocoa/QuartzCoreSPI.h 2017-10-06 03:51:35 UTC (rev 222956)
+++ trunk/Source/WebCore/PAL/pal/spi/cocoa/QuartzCoreSPI.h 2017-10-06 05:00:18 UTC (rev 222957)
@@ -91,7 +91,7 @@
- (void)setContextId:(uint32_t)contextID;
- (CGSize)size;
- (void *)regionBeingDrawn;
-- (void)reloadValueForKeyPath:(NSString *)keyPath;
+- (void)setContentsChanged;
@property BOOL allowsGroupBlending;
@property BOOL canDrawConcurrently;
@property BOOL contentsOpaque;
Modified: trunk/Source/WebCore/platform/graphics/GraphicsContext3D.h (222956 => 222957)
--- trunk/Source/WebCore/platform/graphics/GraphicsContext3D.h 2017-10-06 03:51:35 UTC (rev 222956)
+++ trunk/Source/WebCore/platform/graphics/GraphicsContext3D.h 2017-10-06 05:00:18 UTC (rev 222957)
@@ -747,7 +747,7 @@
#if PLATFORM(COCOA)
PlatformGraphicsContext3D platformGraphicsContext3D() const { return m_contextObj; }
- Platform3DObject platformTexture() const { return m_texture; }
+ Platform3DObject platformTexture() const { return m_fbo; }
CALayer* platformLayer() const { return reinterpret_cast<CALayer*>(m_webGLLayer.get()); }
#else
PlatformGraphicsContext3D platformGraphicsContext3D();
@@ -1147,16 +1147,12 @@
RefPtr<ImageData> paintRenderingResultsToImageData();
bool paintCompositedResultsToCanvas(ImageBuffer*);
-#if PLATFORM(COCOA)
+#if PLATFORM(IOS)
void endPaint();
#endif
-
#if PLATFORM(MAC)
- void allocateIOSurfaceBackingStore(IntSize);
- void updateFramebufferTextureBackingStoreFromLayer();
void updateCGLContext();
#endif
-
void setContextVisibility(bool);
GraphicsContext3DPowerPreference powerPreferenceUsedForCreation() const { return m_powerPreferenceUsedForCreation; }
Modified: trunk/Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm (222956 => 222957)
--- trunk/Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm 2017-10-06 03:51:35 UTC (rev 222956)
+++ trunk/Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm 2017-10-06 05:00:18 UTC (rev 222957)
@@ -411,7 +411,7 @@
if ([m_layer contents] != [caLayer contents])
[m_layer setContents:[caLayer contents]];
else
- [m_layer reloadValueForKeyPath:@"contents"];
+ [m_layer setContentsChanged];
END_BLOCK_OBJC_EXCEPTIONS
}
Modified: trunk/Source/WebCore/platform/graphics/cocoa/GraphicsContext3DCocoa.mm (222956 => 222957)
--- trunk/Source/WebCore/platform/graphics/cocoa/GraphicsContext3DCocoa.mm 2017-10-06 03:51:35 UTC (rev 222956)
+++ trunk/Source/WebCore/platform/graphics/cocoa/GraphicsContext3DCocoa.mm 2017-10-06 05:00:18 UTC (rev 222957)
@@ -479,22 +479,20 @@
::glEnable(GL_MULTISAMPLE);
#endif
- // Create the texture that will be used for the framebuffer.
#if PLATFORM(IOS)
::glGenRenderbuffers(1, &m_texture);
#else
+ // create a texture to render into
::glGenTextures(1, &m_texture);
- // We bind to GL_TEXTURE_RECTANGLE_EXT rather than TEXTURE_2D because
- // that's what is required for a texture backed by IOSurface.
- ::glBindTexture(GL_TEXTURE_RECTANGLE_EXT, m_texture);
- ::glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- ::glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- ::glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- ::glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
- ::glBindTexture(GL_TEXTURE_RECTANGLE_EXT, 0);
+ ::glBindTexture(GL_TEXTURE_2D, m_texture);
+ ::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ ::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ ::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+ ::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+ ::glBindTexture(GL_TEXTURE_2D, 0);
#endif
- // Create the framebuffer object.
+ // create an FBO
::glGenFramebuffersEXT(1, &m_fbo);
::glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, m_fbo);
@@ -502,7 +500,7 @@
if (!m_attrs.antialias && (m_attrs.stencil || m_attrs.depth))
::glGenRenderbuffersEXT(1, &m_depthStencilBuffer);
- // If necessary, create another framebuffer for the multisample results.
+ // create an multisample FBO
if (m_attrs.antialias) {
::glGenFramebuffersEXT(1, &m_multisampleFBO);
::glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, m_multisampleFBO);
@@ -656,35 +654,20 @@
#endif
}
+#if PLATFORM(IOS)
void GraphicsContext3D::endPaint()
{
makeContextCurrent();
if (m_attrs.antialias)
resolveMultisamplingIfNecessary();
-#if PLATFORM(IOS)
- // This is the place where we actually push our current rendering
- // results to the compositor on iOS. On macOS it comes from the
- // calling function, which is inside WebGLLayer.
::glFlush();
::glBindRenderbuffer(GL_RENDERBUFFER, m_texture);
[static_cast<EAGLContext*>(m_contextObj) presentRenderbuffer:GL_RENDERBUFFER];
[EAGLContext setCurrentContext:nil];
+}
#endif
-}
#if PLATFORM(MAC)
-void GraphicsContext3D::allocateIOSurfaceBackingStore(IntSize size)
-{
- LOG(WebGL, "GraphicsContext3D::allocateIOSurfaceBackingStore at %d x %d. (%p)", size.width(), size.height(), this);
- [m_webGLLayer allocateIOSurfaceBackingStoreWithSize:size usingAlpha:m_attrs.alpha];
-}
-
-void GraphicsContext3D::updateFramebufferTextureBackingStoreFromLayer()
-{
- LOG(WebGL, "GraphicsContext3D::updateFramebufferTextureBackingStoreFromLayer(). (%p)", this);
- [m_webGLLayer bindFramebufferToNextAvailableSurface];
-}
-
void GraphicsContext3D::updateCGLContext()
{
if (!m_contextObj)
Modified: trunk/Source/WebCore/platform/graphics/cocoa/WebGLLayer.h (222956 => 222957)
--- trunk/Source/WebCore/platform/graphics/cocoa/WebGLLayer.h 2017-10-06 03:51:35 UTC (rev 222956)
+++ trunk/Source/WebCore/platform/graphics/cocoa/WebGLLayer.h 2017-10-06 05:00:18 UTC (rev 222957)
@@ -25,8 +25,6 @@
#pragma once
-#import "IOSurface.h"
-#import "IntSize.h"
#import <QuartzCore/QuartzCore.h>
namespace WebCore {
@@ -34,21 +32,14 @@
class GraphicsContext3D;
}
-#if PLATFORM(MAC)
-@interface WebGLLayer : CALayer
+#if PLATFORM(IOS)
+@interface WebGLLayer : CAEAGLLayer
#else
-@interface WebGLLayer : CAEAGLLayer
+@interface WebGLLayer : CAOpenGLLayer
#endif
{
WebCore::GraphicsContext3D* _context;
float _devicePixelRatio;
-#if PLATFORM(MAC)
- std::unique_ptr<WebCore::IOSurface> _contentsBuffer;
- std::unique_ptr<WebCore::IOSurface> _drawingBuffer;
- std::unique_ptr<WebCore::IOSurface> _spareBuffer;
- WebCore::IntSize _bufferSize;
- BOOL _usingAlpha;
-#endif
}
@property (nonatomic) WebCore::GraphicsContext3D* context;
@@ -57,10 +48,5 @@
- (CGImageRef)copyImageSnapshotWithColorSpace:(CGColorSpaceRef)colorSpace;
-#if PLATFORM(MAC)
-- (void)allocateIOSurfaceBackingStoreWithSize:(WebCore::IntSize)size usingAlpha:(BOOL)usingAlpha;
-- (void)bindFramebufferToNextAvailableSurface;
-#endif
-
@end
Modified: trunk/Source/WebCore/platform/graphics/cocoa/WebGLLayer.mm (222956 => 222957)
--- trunk/Source/WebCore/platform/graphics/cocoa/WebGLLayer.mm 2017-10-06 03:51:35 UTC (rev 222956)
+++ trunk/Source/WebCore/platform/graphics/cocoa/WebGLLayer.mm 2017-10-06 05:00:18 UTC (rev 222957)
@@ -33,11 +33,10 @@
#import "GraphicsLayer.h"
#import "GraphicsLayerCA.h"
#import "PlatformCALayer.h"
-#import <pal/spi/cocoa/QuartzCoreSPI.h>
#import <wtf/FastMalloc.h>
#import <wtf/RetainPtr.h>
-#if PLATFORM(MAC)
+#if !PLATFORM(IOS)
#import <OpenGL/OpenGL.h>
#import <OpenGL/gl.h>
#endif
@@ -54,37 +53,113 @@
self = [super init];
_devicePixelRatio = context->getContextAttributes().devicePixelRatio;
#if PLATFORM(MAC)
- if (!context->getContextAttributes().alpha)
- self.opaque = YES;
- self.transform = CATransform3DIdentity;
self.contentsScale = _devicePixelRatio;
+ self.colorspace = sRGBColorSpaceRef();
#endif
return self;
}
-#if PLATFORM(MAC)
-// On Mac, we need to flip the layer to take into account
-// that the IOSurface provides content in Y-up. This
-// means that any incoming transform (unlikely, since this
-// is a contents layer) and anchor point must add a
-// Y scale of -1 and make sure the transform happens from
-// the top.
+#if !PLATFORM(IOS)
+-(CGLPixelFormatObj)copyCGLPixelFormatForDisplayMask:(uint32_t)mask
+{
+ // We're basically copying the pixel format object from the existing
+ // WebGL context, so we don't need to use the display mask.
+ UNUSED_PARAM(mask);
-- (void)setTransform:(CATransform3D)t
+ CGLPixelFormatObj webglPixelFormat = CGLGetPixelFormat(_context->platformGraphicsContext3D());
+
+ Vector<CGLPixelFormatAttribute> attribs;
+ GLint value;
+
+ CGLDescribePixelFormat(webglPixelFormat, 0, kCGLPFAColorSize, &value);
+ attribs.append(kCGLPFAColorSize);
+ attribs.append(static_cast<CGLPixelFormatAttribute>(value));
+
+ // We don't need to specify a depth size since we're only
+ // using this context as a 2d blit destination for the WebGL FBO.
+ attribs.append(kCGLPFADepthSize);
+ attribs.append(static_cast<CGLPixelFormatAttribute>(0));
+
+ CGLDescribePixelFormat(webglPixelFormat, 0, kCGLPFAAllowOfflineRenderers, &value);
+ if (value)
+ attribs.append(kCGLPFAAllowOfflineRenderers);
+
+ CGLDescribePixelFormat(webglPixelFormat, 0, kCGLPFAAccelerated, &value);
+ if (value)
+ attribs.append(kCGLPFAAccelerated);
+
+ CGLDescribePixelFormat(webglPixelFormat, 0, kCGLPFAOpenGLProfile, &value);
+ if (value) {
+ attribs.append(kCGLPFAOpenGLProfile);
+ attribs.append(static_cast<CGLPixelFormatAttribute>(value));
+ }
+
+ attribs.append(static_cast<CGLPixelFormatAttribute>(0));
+
+ CGLPixelFormatObj pixelFormat;
+ GLint numPixelFormats = 0;
+ CGLChoosePixelFormat(attribs.data(), &pixelFormat, &numPixelFormats);
+
+ ASSERT(pixelFormat);
+ ASSERT(numPixelFormats);
+
+ return pixelFormat;
+}
+
+-(CGLContextObj)copyCGLContextForPixelFormat:(CGLPixelFormatObj)pixelFormat
{
- [super setTransform:CATransform3DScale(t, 1, -1, 1)];
+ CGLContextObj contextObj;
+ CGLCreateContext(pixelFormat, _context->platformGraphicsContext3D(), &contextObj);
+ return contextObj;
}
-- (void)setAnchorPoint:(CGPoint)p
+-(void)drawInCGLContext:(CGLContextObj)glContext pixelFormat:(CGLPixelFormatObj)pixelFormat forLayerTime:(CFTimeInterval)timeInterval displayTime:(const CVTimeStamp *)timeStamp
{
- [super setAnchorPoint:CGPointMake(p.x, 1.0 - p.y)];
+ if (!_context)
+ return;
+
+ _context->prepareTexture();
+
+ CGLSetCurrentContext(glContext);
+
+ CGRect frame = [self frame];
+ frame.size.width *= _devicePixelRatio;
+ frame.size.height *= _devicePixelRatio;
+
+ // draw the FBO into the layer
+ glViewport(0, 0, frame.size.width, frame.size.height);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ glOrtho(-1, 1, -1, 1, -1, 1);
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+
+ glEnable(GL_TEXTURE_2D);
+ glBindTexture(GL_TEXTURE_2D, _context->platformTexture());
+
+ glBegin(GL_TRIANGLE_FAN);
+ glTexCoord2f(0, 0);
+ glVertex2f(-1, -1);
+ glTexCoord2f(1, 0);
+ glVertex2f(1, -1);
+ glTexCoord2f(1, 1);
+ glVertex2f(1, 1);
+ glTexCoord2f(0, 1);
+ glVertex2f(-1, 1);
+ glEnd();
+
+ glBindTexture(GL_TEXTURE_2D, 0);
+ glDisable(GL_TEXTURE_2D);
+
+ // Call super to finalize the drawing. By default all it does is call glFlush().
+ [super drawInCGLContext:glContext pixelFormat:pixelFormat forLayerTime:timeInterval displayTime:timeStamp];
}
-#endif
static void freeData(void *, const void *data, size_t /* size */)
{
fastFree(const_cast<void *>(data));
}
+#endif
-(CGImageRef)copyImageSnapshotWithColorSpace:(CGColorSpaceRef)colorSpace
{
@@ -128,18 +203,11 @@
if (!_context)
return;
+#if PLATFORM(IOS)
_context->endPaint();
-
-#if PLATFORM(MAC)
- _context->prepareTexture();
- if (_drawingBuffer) {
- std::swap(_contentsBuffer, _drawingBuffer);
- self.contents = _contentsBuffer->asLayerContents();
- [self reloadValueForKeyPath:@"contents"];
- [self bindFramebufferToNextAvailableSurface];
- }
+#else
+ [super display];
#endif
-
_context->markLayerComposited();
PlatformCALayer* layer = PlatformCALayer::platformCALayer(self);
if (layer && layer->owner())
@@ -146,37 +214,6 @@
layer->owner()->platformCALayerLayerDidDisplay(layer);
}
-#if PLATFORM(MAC)
-- (void)allocateIOSurfaceBackingStoreWithSize:(IntSize)size usingAlpha:(BOOL)usingAlpha
-{
- _bufferSize = size;
- _usingAlpha = usingAlpha;
- _contentsBuffer = WebCore::IOSurface::create(size, sRGBColorSpaceRef());
- _drawingBuffer = WebCore::IOSurface::create(size, sRGBColorSpaceRef());
- ASSERT(_contentsBuffer);
- ASSERT(_drawingBuffer);
-}
-
-- (void)bindFramebufferToNextAvailableSurface
-{
- GC3Denum texture = _context->platformTexture();
- glBindTexture(GL_TEXTURE_RECTANGLE_ARB, texture);
-
- if (_drawingBuffer && _drawingBuffer->isInUse()) {
- if (!_spareBuffer)
- _spareBuffer = WebCore::IOSurface::create(_bufferSize, sRGBColorSpaceRef());
- std::swap(_drawingBuffer, _spareBuffer);
- }
-
- IOSurfaceRef ioSurface = _drawingBuffer->surface();
- GC3Denum internalFormat = _usingAlpha ? GL_RGBA : GL_RGB;
-
- // Link the IOSurface to the texture.
- CGLError error = CGLTexImageIOSurface2D(_context->platformGraphicsContext3D(), GL_TEXTURE_RECTANGLE_ARB, internalFormat, _bufferSize.width(), _bufferSize.height(), GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, ioSurface, 0);
- ASSERT_UNUSED(error, error == kCGLNoError);
-}
-#endif
-
@end
#endif // ENABLE(WEBGL)
Modified: trunk/Source/WebCore/platform/graphics/mac/WebLayer.mm (222956 => 222957)
--- trunk/Source/WebCore/platform/graphics/mac/WebLayer.mm 2017-10-06 03:51:35 UTC (rev 222956)
+++ trunk/Source/WebCore/platform/graphics/mac/WebLayer.mm 2017-10-06 05:00:18 UTC (rev 222957)
@@ -30,7 +30,6 @@
#import "GraphicsLayerCA.h"
#import "PlatformCALayer.h"
#import <QuartzCore/QuartzCore.h>
-#import <pal/spi/cocoa/QuartzCoreSPI.h>
#import <wtf/SetForScope.h>
#if PLATFORM(IOS)
@@ -39,6 +38,10 @@
#import "WebCoreThread.h"
#endif
+@interface CALayer(WebCoreCALayerPrivate)
+- (void)reloadValueForKeyPath:(NSString *)keyPath;
+@end
+
using namespace WebCore;
#if PLATFORM(IOS)
Modified: trunk/Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGL.cpp (222956 => 222957)
--- trunk/Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGL.cpp 2017-10-06 03:51:35 UTC (rev 222956)
+++ trunk/Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGL.cpp 2017-10-06 05:00:18 UTC (rev 222957)
@@ -29,15 +29,16 @@
#if ENABLE(GRAPHICS_CONTEXT_3D)
#include "GraphicsContext3D.h"
-
#if PLATFORM(IOS)
#include "GraphicsContext3DIOS.h"
#endif
+
#include "Extensions3DOpenGL.h"
#include "IntRect.h"
#include "IntSize.h"
#include "NotImplemented.h"
#include "TemporaryOpenGLSetting.h"
+
#include <algorithm>
#include <cstring>
#include <wtf/MainThread.h>
@@ -69,17 +70,6 @@
notImplemented();
}
-#if PLATFORM(MAC)
-static void wipeAlphaChannelFromPixels(int width, int height, unsigned char* pixels)
-{
- // We can assume this doesn't overflow because the calling functions
- // use checked arithmetic.
- int totalBytes = width * height * 4;
- for (int i = 0; i < totalBytes; i += 4)
- pixels[i + 3] = 255;
-}
-#endif
-
void GraphicsContext3D::readPixelsAndConvertToBGRAIfNecessary(int x, int y, int width, int height, unsigned char* pixels)
{
// NVIDIA drivers have a bug where calling readPixels in BGRA can return the wrong values for the alpha channel when the alpha is off for the context.
@@ -108,11 +98,6 @@
#endif
} else
::glReadPixels(x, y, width, height, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, pixels);
-
-#if PLATFORM(MAC)
- if (!m_attrs.alpha)
- wipeAlphaChannelFromPixels(width, height, pixels);
-#endif
}
void GraphicsContext3D::validateAttributes()
@@ -185,10 +170,6 @@
::glBindRenderbuffer(GL_RENDERBUFFER, m_texture);
::glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, m_texture);
setRenderbufferStorageFromDrawable(m_currentWidth, m_currentHeight);
-#elif PLATFORM(MAC)
- allocateIOSurfaceBackingStore(IntSize(width, height));
- updateFramebufferTextureBackingStoreFromLayer();
- ::glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_RECTANGLE_ARB, m_texture, 0);
#else
::glBindTexture(GL_TEXTURE_2D, m_texture);
::glTexImage2D(GL_TEXTURE_2D, 0, m_internalColorFormat, width, height, 0, colorFormat, GL_UNSIGNED_BYTE, 0);
@@ -461,11 +442,6 @@
::glReadPixels(x, y, width, height, format, type, data);
if (m_attrs.antialias && m_state.boundFBO == m_multisampleFBO)
::glBindFramebufferEXT(GraphicsContext3D::FRAMEBUFFER, m_multisampleFBO);
-
-#if PLATFORM(MAC)
- if (!m_attrs.alpha && (format == GraphicsContext3D::RGBA || format == GraphicsContext3D::BGRA) && (m_state.boundFBO == m_fbo || (m_attrs.antialias && m_state.boundFBO == m_multisampleFBO)))
- wipeAlphaChannelFromPixels(width, height, static_cast<unsigned char*>(data));
-#endif
}
}