File indexing completed on 2024-05-12 05:31:41

0001 /*
0002     KWin - the KDE window manager
0003     This file is part of the KDE project.
0004 
0005     SPDX-FileCopyrightText: 2021 Xaver Hugl <xaver.hugl@gmail.com>
0006 
0007     SPDX-License-Identifier: GPL-2.0-or-later
0008 */
0009 #pragma once
0010 
0011 #include <QOpenGLContext>
0012 #include <QString>
0013 #include <epoxy/egl.h>
0014 
0015 static inline QString getEglErrorString(EGLint errorCode)
0016 {
0017     switch (errorCode) {
0018     case EGL_SUCCESS:
0019         return QStringLiteral("EGL_SUCCESS");
0020     case EGL_NOT_INITIALIZED:
0021         return QStringLiteral("EGL_NOT_INITIALIZED");
0022     case EGL_BAD_ACCESS:
0023         return QStringLiteral("EGL_BAD_ACCESS");
0024     case EGL_BAD_ALLOC:
0025         return QStringLiteral("EGL_BAD_ALLOC");
0026     case EGL_BAD_ATTRIBUTE:
0027         return QStringLiteral("EGL_BAD_ATTRIBUTE");
0028     case EGL_BAD_CONTEXT:
0029         return QStringLiteral("EGL_BAD_CONTEXT");
0030     case EGL_BAD_CONFIG:
0031         return QStringLiteral("EGL_BAD_CONFIG");
0032     case EGL_BAD_CURRENT_SURFACE:
0033         return QStringLiteral("EGL_BAD_CURRENT_SURFACE");
0034     case EGL_BAD_DISPLAY:
0035         return QStringLiteral("EGL_BAD_DISPLAY");
0036     case EGL_BAD_SURFACE:
0037         return QStringLiteral("EGL_BAD_SURFACE");
0038     case EGL_BAD_MATCH:
0039         return QStringLiteral("EGL_BAD_MATCH");
0040     case EGL_BAD_PARAMETER:
0041         return QStringLiteral("EGL_BAD_PARAMETER");
0042     case EGL_BAD_NATIVE_PIXMAP:
0043         return QStringLiteral("EGL_BAD_NATIVE_PIXMAP");
0044     case EGL_BAD_NATIVE_WINDOW:
0045         return QStringLiteral("EGL_BAD_NATIVE_WINDOW");
0046     case EGL_CONTEXT_LOST:
0047         return QStringLiteral("EGL_CONTEXT_LOST");
0048     default:
0049         return QString::number(errorCode, 16);
0050     }
0051 }
0052 
0053 static inline QString getEglErrorString()
0054 {
0055     return getEglErrorString(eglGetError());
0056 }
0057 
0058 static inline bool isOpenGLES()
0059 {
0060     if (qstrcmp(qgetenv("KWIN_COMPOSE"), "O2ES") == 0) {
0061         return true;
0062     }
0063     return QOpenGLContext::openGLModuleType() == QOpenGLContext::LibGLES;
0064 }