<table><tr><td style="">zzag created this revision.<br />zzag added a reviewer: KWin.<br />Herald added a project: KWin.<br />Herald added a subscriber: kwin.<br />zzag requested review of this revision.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D22215">View Revision</a></tr></table><br /><div><strong>REVISION SUMMARY</strong><div><p>This change is a prerequisite for multi-GPU support.</p>

<p>Overall, the desired design:</p>

<ul class="remarkup-list">
<li class="remarkup-list-item">there are multiple DrmDevice devices;</li>
<li class="remarkup-list-item">all DrmDevice devices form master-slave relationship, where master</li>
</ul>

<p>device, aka primary device, is used for all rendering and exporting<br />
PRIME buffers;</p>

<ul class="remarkup-list">
<li class="remarkup-list-item">Each DRM object is associated with one particular DRM device.</li>
</ul>

<p>In general it would be nice to refactor rendering infrastructure in<br />
kwin, perhaps we need several "renderers." One that is used for rendering<br />
the scene, and the other one is used to render cursors (animated cursors<br />
is PITA).</p>

<p>The DrmDevice class is currently a no-op. I submitted this change just<br />
to let you know what I'm working on.</p></div></div><br /><div><strong>REPOSITORY</strong><div><div>R108 KWin</div></div></div><br /><div><strong>BRANCH</strong><div><div>platform-drm-device</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D22215">https://phabricator.kde.org/D22215</a></div></div><br /><div><strong>AFFECTED FILES</strong><div><div>CMakeLists.txt<br />
autotests/libinput/context_test.cpp<br />
autotests/libinput/mock_udev.cpp<br />
libinput/connection.cpp<br />
libinput/context.cpp<br />
libinput/context.h<br />
plugins/platforms/drm/CMakeLists.txt<br />
plugins/platforms/drm/drm_backend.cpp<br />
plugins/platforms/drm/drm_backend.h<br />
plugins/platforms/drm/drm_device.cpp<br />
plugins/platforms/drm/drm_device.h<br />
plugins/platforms/drm/drm_device_manager.cpp<br />
plugins/platforms/drm/drm_device_manager.h<br />
plugins/platforms/fbdev/fb_backend.cpp<br />
tests/CMakeLists.txt<br />
toolkit/udev_context.cpp<br />
toolkit/udev_context.h<br />
toolkit/udev_device.cpp<br />
toolkit/udev_device.h<br />
toolkit/udev_enumerator.cpp<br />
toolkit/udev_enumerator.h<br />
toolkit/udev_monitor.cpp<br />
toolkit/udev_monitor.h<br />
udev.cpp<br />
udev.h</div></div></div><br /><div><strong>To: </strong>zzag, KWin<br /><strong>Cc: </strong>kwin, LeGast00n, sbergeron, jraleigh, fbampaloukas, GB_2, mkulinski, ragreen, jackyalcine, Pitel, iodelay, crozbo, bwowk, ZrenBot, ngraham, alexeymin, himcesjf, lesliezhai, ali-mohamed, hardening, jensreuterberg, abetts, sebas, apol, mart<br /></div>