The bug originated from StillImage that is not override Image::currentFrameHasAlpha(), so it always returns false. StillImage is used by ImageBuffer, and if Texmap draws contents on ImageBuffer, TextureMapperBackingStore thinks contents does not have alpha.
Created attachment 146690 [details] patch v.1
Following code causes this bug. void TextureMapperLayer::updateBackingStore(TextureMapper* textureMapper, GraphicsLayerTextureMapper* layer) { ... // Paint the entire dirty rect into an image buffer. This ensures we only paint once. OwnPtr<ImageBuffer> imageBuffer = ImageBuffer::create(dirtyRect.size()); ... RefPtr<Image> image = imageBuffer->copyImage(DontCopyBackingStore); TextureMapperTiledBackingStore* backingStore = static_cast<TextureMapperTiledBackingStore*>(m_backingStore.get()); backingStore->updateContents(textureMapper, image.get(), m_size, dirtyRect); ... } void TextureMapperTiledBackingStore::updateContents(TextureMapper* textureMapper, Image* image, const FloatSize& totalSize, const IntRect& dirtyRect) { createOrDestroyTilesIfNeeded(totalSize, textureMapper->maxTextureSize(), image->currentFrameHasAlpha()); for (size_t i = 0; i < m_tiles.size(); ++i) m_tiles[i].updateContents(textureMapper, image, dirtyRect); }
Comment on attachment 146690 [details] patch v.1 Clearing flags on attachment: 146690 Committed r119908: <http://trac.webkit.org/changeset/119908>
All reviewed patches have been landed. Closing bug.