From ad1c088a2a5c52a5c95075e1e24dfc31aa41b6c1 Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Tue, 25 Mar 2014 15:27:05 +0100 Subject: Fix the QOpenGL autotest's offscreen surface handling MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Be more robust. Change-Id: I0e37612681140530c81cfd0082cca61f0f21958c Reviewed-by: Jørgen Lind --- tests/auto/gui/qopengl/tst_qopengl.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'tests/auto') diff --git a/tests/auto/gui/qopengl/tst_qopengl.cpp b/tests/auto/gui/qopengl/tst_qopengl.cpp index 4018c00a38..f37602ef78 100644 --- a/tests/auto/gui/qopengl/tst_qopengl.cpp +++ b/tests/auto/gui/qopengl/tst_qopengl.cpp @@ -157,7 +157,22 @@ static QSurface *createSurface(int surfaceClass) window->create(); return window; } else if (surfaceClass == int(QSurface::Offscreen)) { + // Create a window and get the format from that. For example, if an EGL + // implementation provides 565 and 888 configs for PBUFFER_BIT but only + // 888 for WINDOW_BIT, we may end up with a pbuffer surface that is + // incompatible with the context since it could choose the 565 while the + // window and the context uses a config with 888. + static QSurfaceFormat format; + if (format.redBufferSize() == -1) { + QWindow *window = new QWindow; + window->setSurfaceType(QWindow::OpenGLSurface); + window->setGeometry(0, 0, 10, 10); + window->create(); + format = window->format(); + delete window; + } QOffscreenSurface *offscreenSurface = new QOffscreenSurface; + offscreenSurface->setFormat(format); offscreenSurface->create(); return offscreenSurface; } -- cgit v1.2.3