44 Window *platformWindow =
static_cast<Window *
>(window()->handle());
45 Swapchain *swapchain = platformWindow->
swapchain({{DRM_FORMAT_ARGB8888, {DRM_FORMAT_MOD_LINEAR}}});
47 qCCritical(KWIN_QPA,
"Failed to ceate a swapchain for the backing store!");
51 const auto oldBuffer = m_buffer;
52 m_buffer = swapchain->
acquire();
54 qCCritical(KWIN_QPA,
"Failed to acquire a graphics buffer for the backing store");
59 if (m_bufferView->isNull()) {
60 qCCritical(KWIN_QPA) <<
"Failed to map a graphics buffer for the backing store";
64 if (oldBuffer && oldBuffer != m_buffer && oldBuffer->size() == m_buffer->size()) {
66 std::memcpy(m_bufferView->image()->bits(), oldView.
image()->constBits(), oldView.
image()->sizeInBytes());
69 QImage *image = m_bufferView->image();
72 if (image->hasAlphaChannel()) {
74 p.setCompositionMode(QPainter::CompositionMode_Source);
75 const QColor blank = Qt::transparent;
76 for (
const QRect &rect : region) {
77 p.fillRect(rect, blank);
89 Window *platformWindow =
static_cast<Window *
>(window->handle());
91 if (!internalWindow) {
97 for (
const QRect &rect : region) {
98 bufferDamage += QRectF(rect.x() * scale, rect.y() * scale, rect.width() * scale, rect.height() * scale).toAlignedRect();
103 .bufferDamage = bufferDamage,