Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: c8a6727eec001e27fb9d2fb9cc3fc8af2b1e7f69
https://github.com/WebKit/WebKit/commit/c8a6727eec001e27fb9d2fb9cc3fc8af2b1e7f69
Author: Philippe Normand <[email protected]>
Date: 2026-02-10 (Tue, 10 Feb 2026)
Changed paths:
M Source/WebCore/platform/graphics/egl/GLContext.cpp
M Source/WebCore/platform/graphics/egl/GLContext.h
M Source/WebCore/platform/graphics/gstreamer/VideoFrameGStreamer.cpp
M Source/WebCore/platform/graphics/texmap/BitmapTexture.cpp
M Source/WebCore/platform/graphics/texmap/BitmapTexture.h
M Source/WebCore/platform/graphics/texmap/TextureMapper.cpp
M Source/WebCore/platform/graphics/texmap/TextureMapper.h
M Source/WebCore/platform/graphics/texmap/TextureMapperShaderProgram.cpp
M Source/WebCore/platform/graphics/texmap/TextureMapperShaderProgram.h
M
Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayerBufferExternalOES.cpp
M
Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayerBufferExternalOES.h
M
Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayerBufferVideo.cpp
Log Message:
-----------
[GStreamer] Video rendering support for Qualcomm decoder
https://bugs.webkit.org/show_bug.cgi?id=307151
Reviewed by Xabier Rodriguez-Calvar and Nikolas Zimmermann.
The buffers produced by the Qualcomm decoder contain a single GstMemory which
stores the
GBM FD pointing to the decoded frame. The frame format is YUV (NV12). As this
is stored
in a single memory the existing DMABuf/YUV layer buffers cannot be used for
rendering. So
we rely on the EXT_YUV_target OpenGL ES extension to convert it to a RGB
texture for
rendering.
Manually tested on a device shipping the Qualcomm GStreamer decoder.
* Source/WebCore/platform/graphics/egl/GLContext.cpp:
(WebCore::GLContext::glExtensions const):
* Source/WebCore/platform/graphics/egl/GLContext.h:
* Source/WebCore/platform/graphics/gstreamer/VideoFrameGStreamer.cpp:
(WebCore::videoFormatToDRMFourcc):
(WebCore::VideoFrameGStreamer::infoFromCaps):
* Source/WebCore/platform/graphics/texmap/BitmapTexture.cpp:
(WebCore::BitmapTexture::determineRenderTargetAndBinding):
(WebCore::BitmapTexture::BitmapTexture):
(WebCore::BitmapTexture::createTexture):
(WebCore::BitmapTexture::allocateTexture):
(WebCore::BitmapTexture::allocateTextureFromMemoryMappedGPUBuffer):
(WebCore::BitmapTexture::reset):
(WebCore::BitmapTexture::updateContents):
(WebCore::BitmapTexture::createFboIfNeeded):
(WebCore::BitmapTexture::bindAsSurface):
(WebCore::BitmapTexture::copyFromExternalTexture):
(WebCore::BitmapTexture::colorConvertFlags const):
* Source/WebCore/platform/graphics/texmap/BitmapTexture.h:
* Source/WebCore/platform/graphics/texmap/TextureMapper.cpp:
(WebCore::TextureMapper::drawTexturedQuadWithProgram):
(WebCore::TextureMapper::drawTextureExternalOESYUV):
* Source/WebCore/platform/graphics/texmap/TextureMapper.h:
* Source/WebCore/platform/graphics/texmap/TextureMapperShaderProgram.cpp:
(WebCore::STRINGIFY):
(WebCore::TextureMapperShaderProgram::create):
* Source/WebCore/platform/graphics/texmap/TextureMapperShaderProgram.h:
*
Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayerBufferExternalOES.cpp:
(WebCore::CoordinatedPlatformLayerBufferExternalOES::create):
(WebCore::CoordinatedPlatformLayerBufferExternalOES::CoordinatedPlatformLayerBufferExternalOES):
(WebCore::CoordinatedPlatformLayerBufferExternalOES::paintToTextureMapper):
*
Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayerBufferExternalOES.h:
*
Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayerBufferVideo.cpp:
(WebCore::CoordinatedPlatformLayerBufferVideo::createBufferIfNeeded):
Canonical link: https://commits.webkit.org/307174@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications