summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/kms/qkmsscreen.h
diff options
context:
space:
mode:
authorSamuel Rødal <samuel.rodal@nokia.com>2012-05-29 14:18:04 +0200
committerQt by Nokia <qt-info@nokia.com>2012-05-29 23:48:29 +0200
commitef204659b9c5d21c77a40c8bc11cd98039785303 (patch)
tree42a4bc9337b46717d55f021012b53a5bc7ab7168 /src/plugins/platforms/kms/qkmsscreen.h
parent44f7df439f729aff50f9d1b9dbba06391f151604 (diff)
Fixed KMS y-invertedness.
Upgrade to new gbm_surface API which lets us use eglCreateWindowSurface. Change-Id: I4af86d442375017ae3b4744e7b3bdebf3b496b6e Reviewed-by: Andy Nichols <andy.nichols@nokia.com>
Diffstat (limited to 'src/plugins/platforms/kms/qkmsscreen.h')
-rw-r--r--src/plugins/platforms/kms/qkmsscreen.h41
1 files changed, 34 insertions, 7 deletions
diff --git a/src/plugins/platforms/kms/qkmsscreen.h b/src/plugins/platforms/kms/qkmsscreen.h
index e8e6bda22d..57c96fb137 100644
--- a/src/plugins/platforms/kms/qkmsscreen.h
+++ b/src/plugins/platforms/kms/qkmsscreen.h
@@ -42,8 +42,23 @@
#ifndef QKMSSCREEN_H
#define QKMSSCREEN_H
+#include <stddef.h>
+
+#define EGL_EGLEXT_PROTOTYPES 1
+#define GL_GLEXT_PROTOTYPES 1
+
+extern "C" {
+#include <gbm.h>
+#include <xf86drmMode.h>
+#include <xf86drm.h>
+}
+
+#include <EGL/egl.h>
+#include <EGL/eglext.h>
+#include <GLES2/gl2.h>
+#include <GLES2/gl2ext.h>
+
#include <qpa/qplatformscreen.h>
-#include "qkmsbuffermanager.h"
QT_BEGIN_NAMESPACE
@@ -63,22 +78,28 @@ public:
QSizeF physicalSize() const;
QPlatformCursor *cursor() const;
- GLuint framebufferObject() const;
quint32 crtcId() const { return m_crtcId; }
QKmsDevice *device() const;
+ void initializeWithFormat(const QSurfaceFormat &format);
+
//Called by context for each screen
- void bindFramebuffer();
void swapBuffers();
- void setFlipReady(unsigned int time);
+ void handlePageFlipped();
+
+ EGLSurface eglSurface() const { return m_eglWindowSurface; }
+
+ void waitForPageFlipComplete();
+
+ static QSurfaceFormat tweakFormat(const QSurfaceFormat &format);
private:
void performPageFlip();
void initializeScreenMode();
- void waitForPageFlipComplete();
QKmsDevice *m_device;
- bool m_flipReady;
+ gbm_bo *m_current_bo;
+ gbm_bo *m_next_bo;
quint32 m_connectorId;
quint32 m_crtcId;
@@ -88,9 +109,15 @@ private:
int m_depth;
QImage::Format m_format;
+ drmModeCrtcPtr m_oldCrtc;
+
QKmsCursor *m_cursor;
- QKmsBufferManager m_bufferManager;
unsigned int m_refreshTime;
+
+ gbm_surface *m_gbmSurface;
+ EGLSurface m_eglWindowSurface;
+
+ bool m_modeSet;
};
QT_END_NAMESPACE