EGL/GLX: Resolve depth buffer more intelligently
If a depth buffer size >=32 is requested, try 24 bits as a fallback. Task-number: QTBUG-44029 Done-with: Laszlo Agocs <laszlo.agocs@theqtcompany.com> Change-Id: I43157d17c2bfe19b3b4a9139412e4c297e6150b7 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
This commit is contained in:
parent
77c0730f55
commit
36bc247775
@ -172,6 +172,17 @@ bool q_reduceConfigAttributes(QVector<EGLint> *configAttributes)
|
||||
return true;
|
||||
}
|
||||
|
||||
i = configAttributes->indexOf(EGL_DEPTH_SIZE);
|
||||
if (i >= 0) {
|
||||
if (configAttributes->at(i + 1) >= 32)
|
||||
configAttributes->replace(i + 1, 24);
|
||||
else if (configAttributes->at(i + 1) > 1)
|
||||
configAttributes->replace(i + 1, 1);
|
||||
else
|
||||
configAttributes->remove(i, 2);
|
||||
return true;
|
||||
}
|
||||
|
||||
i = configAttributes->indexOf(EGL_ALPHA_SIZE);
|
||||
if (i >= 0) {
|
||||
configAttributes->remove(i,2);
|
||||
@ -195,14 +206,6 @@ bool q_reduceConfigAttributes(QVector<EGLint> *configAttributes)
|
||||
return true;
|
||||
}
|
||||
|
||||
i = configAttributes->indexOf(EGL_DEPTH_SIZE);
|
||||
if (i >= 0) {
|
||||
if (configAttributes->at(i + 1) > 1)
|
||||
configAttributes->replace(i + 1, 1);
|
||||
else
|
||||
configAttributes->remove(i, 2);
|
||||
return true;
|
||||
}
|
||||
#ifdef EGL_BIND_TO_TEXTURE_RGB
|
||||
i = configAttributes->indexOf(EGL_BIND_TO_TEXTURE_RGB);
|
||||
if (i >= 0) {
|
||||
|
@ -323,7 +323,11 @@ QSurfaceFormat qglx_reduceSurfaceFormat(const QSurfaceFormat &format, bool *redu
|
||||
QSurfaceFormat retFormat = format;
|
||||
*reduced = true;
|
||||
|
||||
if (retFormat.redBufferSize() > 1) {
|
||||
if (retFormat.depthBufferSize() >= 32) {
|
||||
retFormat.setDepthBufferSize(24);
|
||||
} else if (retFormat.depthBufferSize() > 0) {
|
||||
retFormat.setDepthBufferSize(0);
|
||||
} else if (retFormat.redBufferSize() > 1) {
|
||||
retFormat.setRedBufferSize(1);
|
||||
} else if (retFormat.greenBufferSize() > 1) {
|
||||
retFormat.setGreenBufferSize(1);
|
||||
@ -337,8 +341,6 @@ QSurfaceFormat qglx_reduceSurfaceFormat(const QSurfaceFormat &format, bool *redu
|
||||
retFormat.setStencilBufferSize(0);
|
||||
}else if (retFormat.hasAlpha()) {
|
||||
retFormat.setAlphaBufferSize(0);
|
||||
}else if (retFormat.depthBufferSize() > 0) {
|
||||
retFormat.setDepthBufferSize(0);
|
||||
}else if (retFormat.swapBehavior() != QSurfaceFormat::SingleBuffer) {
|
||||
retFormat.setSwapBehavior(QSurfaceFormat::SingleBuffer);
|
||||
}else{
|
||||
|
Loading…
x
Reference in New Issue
Block a user