From 22ae5eec6314b59c8a969b743a9c05fb184cc9b2 Mon Sep 17 00:00:00 2001 From: Val Doroshchuk Date: Thu, 28 May 2020 17:35:16 +0200 Subject: Introduce QAbstractVideoBuffer::MTLTextureHandle MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added MTLTextureHandle to render metal textures. Is used by default if rhi is enabled for metal backend. Also fixed the frame renderer to create new opengl context and use provided one from the video surface as a share context. To remember, when the quick item is created and updatePaintNode is called, current gl context is set to the video surface as a property. When the frame renderer is ready, it extracts the gl context and uses it as a share one. Task-number: QTBUG-78678 Change-Id: I51ce666ca7c2adc10dd2c1d1dfed99cc9f596e2b Reviewed-by: Christian Strømme --- src/multimedia/video/qabstractvideobuffer.cpp | 3 +++ src/multimedia/video/qabstractvideobuffer.h | 1 + 2 files changed, 4 insertions(+) (limited to 'src/multimedia') diff --git a/src/multimedia/video/qabstractvideobuffer.cpp b/src/multimedia/video/qabstractvideobuffer.cpp index f0dd6d2eb..793241be9 100644 --- a/src/multimedia/video/qabstractvideobuffer.cpp +++ b/src/multimedia/video/qabstractvideobuffer.cpp @@ -97,6 +97,7 @@ int QAbstractVideoBufferPrivate::map( \value NoHandle The buffer has no handle, its data can only be accessed by mapping the buffer. \value GLTextureHandle The handle of the buffer is an OpenGL texture ID. + \value MTLTextureHandle The handle of the buffer is an Metal texture ID. \value XvShmImageHandle The handle contains pointer to shared memory XVideo image. \value CoreImageHandle The handle contains pointer to \macos CIImage. \value QPixmapHandle The handle of the buffer is a QPixmap. @@ -363,6 +364,8 @@ QDebug operator<<(QDebug dbg, QAbstractVideoBuffer::HandleType type) return dbg << "NoHandle"; case QAbstractVideoBuffer::GLTextureHandle: return dbg << "GLTextureHandle"; + case QAbstractVideoBuffer::MTLTextureHandle: + return dbg << "MTLTextureHandle"; case QAbstractVideoBuffer::XvShmImageHandle: return dbg << "XvShmImageHandle"; case QAbstractVideoBuffer::CoreImageHandle: diff --git a/src/multimedia/video/qabstractvideobuffer.h b/src/multimedia/video/qabstractvideobuffer.h index 2352c0f3d..b3f31b377 100644 --- a/src/multimedia/video/qabstractvideobuffer.h +++ b/src/multimedia/video/qabstractvideobuffer.h @@ -60,6 +60,7 @@ public: { NoHandle, GLTextureHandle, + MTLTextureHandle, XvShmImageHandle, CoreImageHandle, QPixmapHandle, -- cgit v1.2.3