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

Reply via email to