summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorVaL Doroshchuk <valentyn.doroshchuk@qt.io>2020-05-28 13:23:50 +0200
committerVaL Doroshchuk <valentyn.doroshchuk@qt.io>2020-05-28 17:40:56 +0200
commit37e3e759fb7c6209d7b5d81edf690a48914e6829 (patch)
tree00d4f0fdb34b73d46e23a4306ff662bb47dd8885 /src/plugins
parent75a27a1ab03801bf040c6f901d5dc3af2434b91e (diff)
Remove ANGLE
Since it is already removed from qtbase Change-Id: If3a8169705b57d2e39167e2f718524cf3fe8bb1e Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/common/evr/evrd3dpresentengine.cpp239
-rw-r--r--src/plugins/wmf/player/mfvideorenderercontrol.cpp1
2 files changed, 0 insertions, 240 deletions
diff --git a/src/plugins/common/evr/evrd3dpresentengine.cpp b/src/plugins/common/evr/evrd3dpresentengine.cpp
index d8e2da6d3..964504e48 100644
--- a/src/plugins/common/evr/evrd3dpresentengine.cpp
+++ b/src/plugins/common/evr/evrd3dpresentengine.cpp
@@ -46,187 +46,12 @@
#include <qvideoframe.h>
#include <QDebug>
#include <qthread.h>
-#include <private/qmediaopenglhelper_p.h>
#include <QOffscreenSurface>
-#ifdef MAYBE_ANGLE
-# include <qguiapplication.h>
-# include <qpa/qplatformnativeinterface.h>
-# include <qopenglfunctions.h>
-# include <EGL/eglext.h>
-#endif
-
static const int PRESENTER_BUFFER_COUNT = 3;
QT_BEGIN_NAMESPACE
-#ifdef MAYBE_ANGLE
-
-EGLWrapper::EGLWrapper()
-{
-#ifndef QT_OPENGL_ES_2_ANGLE_STATIC
- // Resolve the EGL functions we use. When configured for dynamic OpenGL, no
- // component in Qt will link to libEGL.lib and libGLESv2.lib. We know
- // however that libEGL is loaded for sure, since this is an ANGLE-only path.
-
-# ifdef QT_DEBUG
- HMODULE eglHandle = GetModuleHandle(L"libEGLd.dll");
-# else
- HMODULE eglHandle = GetModuleHandle(L"libEGL.dll");
-# endif
-
- if (!eglHandle)
- qWarning("No EGL library loaded");
-
- m_eglGetProcAddress = (EglGetProcAddress) GetProcAddress(eglHandle, "eglGetProcAddress");
- m_eglCreatePbufferSurface = (EglCreatePbufferSurface) GetProcAddress(eglHandle, "eglCreatePbufferSurface");
- m_eglDestroySurface = (EglDestroySurface) GetProcAddress(eglHandle, "eglDestroySurface");
- m_eglBindTexImage = (EglBindTexImage) GetProcAddress(eglHandle, "eglBindTexImage");
- m_eglReleaseTexImage = (EglReleaseTexImage) GetProcAddress(eglHandle, "eglReleaseTexImage");
-#else
- // Static ANGLE-only build. There is no libEGL.dll in use.
-
- m_eglGetProcAddress = ::eglGetProcAddress;
- m_eglCreatePbufferSurface = ::eglCreatePbufferSurface;
- m_eglDestroySurface = ::eglDestroySurface;
- m_eglBindTexImage = ::eglBindTexImage;
- m_eglReleaseTexImage = ::eglReleaseTexImage;
-#endif
-}
-
-__eglMustCastToProperFunctionPointerType EGLWrapper::getProcAddress(const char *procname)
-{
- Q_ASSERT(m_eglGetProcAddress);
- return m_eglGetProcAddress(procname);
-}
-
-EGLSurface EGLWrapper::createPbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list)
-{
- Q_ASSERT(m_eglCreatePbufferSurface);
- return m_eglCreatePbufferSurface(dpy, config, attrib_list);
-}
-
-EGLBoolean EGLWrapper::destroySurface(EGLDisplay dpy, EGLSurface surface)
-{
- Q_ASSERT(m_eglDestroySurface);
- return m_eglDestroySurface(dpy, surface);
-}
-
-EGLBoolean EGLWrapper::bindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
-{
- Q_ASSERT(m_eglBindTexImage);
- return m_eglBindTexImage(dpy, surface, buffer);
-}
-
-EGLBoolean EGLWrapper::releaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
-{
- Q_ASSERT(m_eglReleaseTexImage);
- return m_eglReleaseTexImage(dpy, surface, buffer);
-}
-
-
-class OpenGLResources : public QObject
-{
-public:
- OpenGLResources()
- : m_egl(new EGLWrapper)
- , m_eglDisplay(nullptr)
- , m_eglSurface(nullptr)
- , m_glTexture(0)
- , m_glContext(QOpenGLContext::currentContext())
- {
- Q_ASSERT(m_glContext);
- }
-
- unsigned int glTexture() const
- {
- return m_glTexture;
- }
-
- void createTexture(const QVideoSurfaceFormat &format, IDirect3DDevice9Ex *device,
- IDirect3DTexture9 **texture)
- {
- if (!m_glContext)
- return;
-
- m_glContext->functions()->glGenTextures(1, &m_glTexture);
- QPlatformNativeInterface *nativeInterface = QGuiApplication::platformNativeInterface();
- m_eglDisplay = static_cast<EGLDisplay*>(
- nativeInterface->nativeResourceForContext("eglDisplay", m_glContext));
- EGLConfig *eglConfig = static_cast<EGLConfig*>(
- nativeInterface->nativeResourceForContext("eglConfig", m_glContext));
-
- const bool hasAlpha = m_glContext->format().hasAlpha();
-
- EGLint attribs[] = {
- EGL_WIDTH, format.frameWidth(),
- EGL_HEIGHT, format.frameHeight(),
- EGL_TEXTURE_FORMAT, (hasAlpha ? EGL_TEXTURE_RGBA : EGL_TEXTURE_RGB),
- EGL_TEXTURE_TARGET, EGL_TEXTURE_2D,
- EGL_NONE
- };
-
- m_eglSurface = m_egl->createPbufferSurface(m_eglDisplay, eglConfig, attribs);
-
- HANDLE share_handle = 0;
- PFNEGLQUERYSURFACEPOINTERANGLEPROC eglQuerySurfacePointerANGLE =
- reinterpret_cast<PFNEGLQUERYSURFACEPOINTERANGLEPROC>(
- m_egl->getProcAddress("eglQuerySurfacePointerANGLE"));
- Q_ASSERT(eglQuerySurfacePointerANGLE);
- eglQuerySurfacePointerANGLE(
- m_eglDisplay,
- m_eglSurface,
- EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE, &share_handle);
-
- device->CreateTexture(format.frameWidth(), format.frameHeight(), 1,
- D3DUSAGE_RENDERTARGET,
- (hasAlpha ? D3DFMT_A8R8G8B8 : D3DFMT_X8R8G8B8),
- D3DPOOL_DEFAULT, texture, &share_handle);
-
- m_glContext->functions()->glBindTexture(GL_TEXTURE_2D, m_glTexture);
- m_egl->bindTexImage(m_eglDisplay, m_eglSurface, EGL_BACK_BUFFER);
- }
-
- void release()
- {
- if (thread() == QThread::currentThread())
- delete this;
- else
- deleteLater();
- }
-
-private:
- EGLWrapper *m_egl;
- EGLDisplay *m_eglDisplay;
- EGLSurface m_eglSurface;
- unsigned int m_glTexture;
- QOpenGLContext *m_glContext;
-
- ~OpenGLResources() override
- {
- QScopedPointer<QOffscreenSurface> surface;
- if (m_glContext != QOpenGLContext::currentContext()) {
- surface.reset(new QOffscreenSurface);
- surface->create();
- m_glContext->makeCurrent(surface.data());
- }
-
- if (m_eglSurface && m_egl) {
- m_egl->releaseTexImage(m_eglDisplay, m_eglSurface, EGL_BACK_BUFFER);
- m_egl->destroySurface(m_eglDisplay, m_eglSurface);
- }
- if (m_glTexture)
- m_glContext->functions()->glDeleteTextures(1, &m_glTexture);
-
- delete m_egl;
- if (surface)
- m_glContext->doneCurrent();
- }
-};
-
-#endif // MAYBE_ANGLE
-
-
class IMFSampleVideoBuffer: public QAbstractVideoBuffer
{
public:
@@ -311,11 +136,6 @@ void IMFSampleVideoBuffer::unmap()
QVariant IMFSampleVideoBuffer::handle() const
{
-#ifdef MAYBE_ANGLE
- if (handleType() == GLTextureHandle && !m_textureId)
- m_textureId = m_engine->updateTexture(m_surface);
-#endif
-
return m_textureId;
}
@@ -326,10 +146,6 @@ D3DPresentEngine::D3DPresentEngine()
, m_device(0)
, m_deviceManager(0)
, m_useTextureRendering(false)
-#ifdef MAYBE_ANGLE
- , m_glResources(0)
- , m_texture(0)
-#endif
{
ZeroMemory(&m_displayMode, sizeof(m_displayMode));
@@ -441,15 +257,6 @@ bool D3DPresentEngine::isValid() const
void D3DPresentEngine::releaseResources()
{
m_surfaceFormat = QVideoSurfaceFormat();
-
-#ifdef MAYBE_ANGLE
- qt_evr_safe_release(&m_texture);
-
- if (m_glResources) {
- m_glResources->release(); // deleted in GL thread
- m_glResources = NULL;
- }
-#endif
}
HRESULT D3DPresentEngine::getService(REFGUID, REFIID riid, void** ppv)
@@ -507,11 +314,7 @@ HRESULT D3DPresentEngine::checkFormat(D3DFORMAT format)
bool D3DPresentEngine::supportsTextureRendering() const
{
-#ifdef MAYBE_ANGLE
- return QMediaOpenGLHelper::isANGLE();
-#else
return false;
-#endif
}
void D3DPresentEngine::setHint(Hint hint, bool enable)
@@ -607,46 +410,4 @@ QVideoFrame D3DPresentEngine::makeVideoFrame(IMFSample *sample)
return frame;
}
-#ifdef MAYBE_ANGLE
-
-unsigned int D3DPresentEngine::updateTexture(IDirect3DSurface9 *src)
-{
- if (!m_texture) {
- if (m_glResources)
- m_glResources->release();
-
- m_glResources = new OpenGLResources;
- m_glResources->createTexture(m_surfaceFormat, m_device, &m_texture);
- }
-
- IDirect3DSurface9 *dest = NULL;
-
- // Copy the sample surface to the shared D3D/EGL surface
- HRESULT hr = m_texture ? m_texture->GetSurfaceLevel(0, &dest) : E_FAIL;
- if (FAILED(hr))
- goto done;
-
- hr = m_device->StretchRect(src, NULL, dest, NULL, D3DTEXF_NONE);
- if (FAILED(hr)) {
- qWarning("Failed to copy D3D surface");
- } else {
- // Shared surfaces are not synchronized, there's no guarantee that
- // StretchRect is complete when the texture is later rendered by Qt.
- // To make sure the next rendered frame is up to date, flush the command pipeline
- // using an event query.
- IDirect3DQuery9 *eventQuery = NULL;
- m_device->CreateQuery(D3DQUERYTYPE_EVENT, &eventQuery);
- eventQuery->Issue(D3DISSUE_END);
- while (eventQuery->GetData(NULL, 0, D3DGETDATA_FLUSH) == S_FALSE);
- eventQuery->Release();
- }
-
-done:
- qt_evr_safe_release(&dest);
-
- return (SUCCEEDED(hr) && m_glResources) ? m_glResources->glTexture() : 0;
-}
-
-#endif // MAYBE_ANGLE
-
QT_END_NAMESPACE
diff --git a/src/plugins/wmf/player/mfvideorenderercontrol.cpp b/src/plugins/wmf/player/mfvideorenderercontrol.cpp
index 94d5f68be..137fc5fc5 100644
--- a/src/plugins/wmf/player/mfvideorenderercontrol.cpp
+++ b/src/plugins/wmf/player/mfvideorenderercontrol.cpp
@@ -51,7 +51,6 @@
#include <qtcore/qthread.h>
#include "guiddef.h"
#include <qtcore/qdebug.h>
-#include <QtMultimedia/private/qmediaopenglhelper_p.h>
//#define DEBUG_MEDIAFOUNDATION
#define PAD_TO_DWORD(x) (((x) + 3) & ~3)