diff options
author | Jorgen Lind <jorgen.lind@digia.com> | 2013-12-20 14:34:16 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-01-06 10:19:53 +0100 |
commit | 445cf0105544eb0002971b652460efc6b841e671 (patch) | |
tree | 8caae6c04918583cfcafff8591c52e34394e6ae5 /src/hardwareintegration/compositor/drm-egl-server/drmeglserverbufferintegration.cpp | |
parent | 76bb668aee8be5e8e1f022c4d09603d957e8e7e7 (diff) |
update DrmEglServerIntegration to handle experimental 8 bit support
Change-Id: I8fa4ecf8b0848ca681f944a5fa56a4f6bb0a76be
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Diffstat (limited to 'src/hardwareintegration/compositor/drm-egl-server/drmeglserverbufferintegration.cpp')
-rw-r--r-- | src/hardwareintegration/compositor/drm-egl-server/drmeglserverbufferintegration.cpp | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/hardwareintegration/compositor/drm-egl-server/drmeglserverbufferintegration.cpp b/src/hardwareintegration/compositor/drm-egl-server/drmeglserverbufferintegration.cpp index 3a7986ede..d43fc70b4 100644 --- a/src/hardwareintegration/compositor/drm-egl-server/drmeglserverbufferintegration.cpp +++ b/src/hardwareintegration/compositor/drm-egl-server/drmeglserverbufferintegration.cpp @@ -48,24 +48,30 @@ DrmEglServerBuffer::DrmEglServerBuffer(DrmEglServerBufferIntegration *integratio : QWaylandServerBuffer(size,format) , m_integration(integration) { - m_format = RGBA32; + m_format = format; + EGLint egl_format; switch (m_format) { case RGBA32: m_drm_format = QtWaylandServer::qt_drm_egl_server_buffer::format_RGBA32; + egl_format = EGL_DRM_BUFFER_FORMAT_ARGB32_MESA; break; +#ifdef EGL_DRM_BUFFER_FORMAT_A8_MESA case A8: m_drm_format = QtWaylandServer::qt_drm_egl_server_buffer::format_A8; + egl_format = EGL_DRM_BUFFER_FORMAT_A8_MESA; break; +#endif default: - qWarning("DrmEglServerBuffer: invalid format"); + qWarning("DrmEglServerBuffer: unsupported format"); m_drm_format = QtWaylandServer::qt_drm_egl_server_buffer::format_RGBA32; + egl_format = EGL_DRM_BUFFER_FORMAT_ARGB32_MESA; break; } EGLint imageAttribs[] = { EGL_WIDTH, m_size.width(), EGL_HEIGHT, m_size.height(), - EGL_DRM_BUFFER_FORMAT_MESA, EGL_DRM_BUFFER_FORMAT_ARGB32_MESA, + EGL_DRM_BUFFER_FORMAT_MESA, egl_format, EGL_DRM_BUFFER_USE_MESA, EGL_DRM_BUFFER_USE_SHARE_MESA, EGL_NONE }; @@ -106,8 +112,14 @@ GLuint DrmEglServerBuffer::createTexture() GLuint texture; glGenTextures(1, &texture); glBindTexture(GL_TEXTURE_2D, texture); + m_integration->glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, m_image); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + return texture; } |