Specify swap behavior preserved bit in openvg engine.
Unlike OpenGL, the EGL_SWAP_BEHAVIOR_PRESERVED_BIT was not set for the EGL configuration used with OpenVG. Yet the preserved swap was enabled still, which, according to the EGL spec, should fail. To make sure it still works with other EGL implementations, the bit is now set in the configuration. Reviewed-by: Jani Hautakangas (cherry picked from commit 710aa7f8fbd72ee303c3348aa3aaf12d6984964d)bb10
parent
02ebcdb8c7
commit
dc131f1560
|
|
@ -269,19 +269,20 @@ static QEglContext *createContext(QPaintDevice *device)
|
|||
configProps.setPixelFormat(QImage::Format_ARGB32); // XXX
|
||||
configProps.setValue(EGL_ALPHA_MASK_SIZE, 1);
|
||||
#ifdef EGL_VG_ALPHA_FORMAT_PRE_BIT
|
||||
configProps.setValue(EGL_SURFACE_TYPE, EGL_WINDOW_BIT |
|
||||
EGL_VG_ALPHA_FORMAT_PRE_BIT);
|
||||
configProps.setValue(EGL_SURFACE_TYPE, EGL_WINDOW_BIT
|
||||
| EGL_SWAP_BEHAVIOR_PRESERVED_BIT
|
||||
| EGL_VG_ALPHA_FORMAT_PRE_BIT);
|
||||
configProps.setRenderableType(QEgl::OpenVG);
|
||||
if (!context->chooseConfig(configProps)) {
|
||||
// Try again without the "pre" bit.
|
||||
configProps.setValue(EGL_SURFACE_TYPE, EGL_WINDOW_BIT);
|
||||
configProps.setValue(EGL_SURFACE_TYPE, EGL_WINDOW_BIT | EGL_SWAP_BEHAVIOR_PRESERVED_BIT);
|
||||
if (!context->chooseConfig(configProps)) {
|
||||
delete context;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
#else
|
||||
configProps.setValue(EGL_SURFACE_TYPE, EGL_WINDOW_BIT);
|
||||
configProps.setValue(EGL_SURFACE_TYPE, EGL_WINDOW_BIT | EGL_SWAP_BEHAVIOR_PRESERVED_BIT);
|
||||
configProps.setRenderableType(QEgl::OpenVG);
|
||||
if (!context->chooseConfig(configProps)) {
|
||||
delete context;
|
||||
|
|
|
|||
Loading…
Reference in New Issue