D8152: [platforms/drm] Use a shared pointer for gbm_surface
Martin Flöser
noreply at phabricator.kde.org
Thu Oct 5 17:09:56 UTC 2017
graesslin created this revision.
graesslin added reviewers: KWin, Plasma, subdiff.
Restricted Application added a project: KWin.
Restricted Application added subscribers: kwin, plasma-devel.
REVISION SUMMARY
The gbm_surface is owned by the EglGbmBackend, but it's not the only one
using it. The DrmSurfaceBuffer is also using it and needs it to destroy
the gbm_bo. Now this can become a problem in the following situation:
- a page flip is still pending
- the EglGbmBackend destroys the gbm_surface
-> when the page flip happens the DrmSurfaceBuffer will try to destroy
the gbm_bo and crash as the gbm_surface is no longer valid. This
situation can happen when switching screens or when switching compositing
backend (OpenGL 2 -> OpenGL 3).
To address this problem a class GbmSurface is added which wrapps the
gbm_surface pointer. The EglGbmBackend creates and holds a shared pointer
to the GbmSurface and passes that one to the DrmSurfaceBuffer. So when
cleaning up the gbm_surface only the shared pointer is reset and in case
the DrmSurfaceBuffer still needs it, it can access it without problems.
BUG: 385372
FIXED-IN: 5.11.0
TEST PLAN
Not yet
REPOSITORY
R108 KWin
BRANCH
shared-gbm-surface-5.11
REVISION DETAIL
https://phabricator.kde.org/D8152
AFFECTED FILES
plugins/platforms/drm/CMakeLists.txt
plugins/platforms/drm/drm_backend.cpp
plugins/platforms/drm/drm_backend.h
plugins/platforms/drm/drm_buffer_gbm.cpp
plugins/platforms/drm/drm_buffer_gbm.h
plugins/platforms/drm/egl_gbm_backend.cpp
plugins/platforms/drm/egl_gbm_backend.h
plugins/platforms/drm/gbm_surface.cpp
plugins/platforms/drm/gbm_surface.h
To: graesslin, #kwin, #plasma, subdiff
Cc: plasma-devel, kwin, bwowk, ZrenBot, progwolff, lesliezhai, ali-mohamed, hardening, jensreuterberg, abetts, sebas, apol, mart
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/plasma-devel/attachments/20171005/402168b5/attachment.html>
More information about the Plasma-devel
mailing list