KWin
Loading...
Searching...
No Matches
drmclientbuffer.cpp
Go to the documentation of this file.
1/*
2 SPDX-FileCopyrightText: 2021 Vlad Zahorodnii <vlad.zahorodnii@kde.org>
3
4 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
5*/
6
7#include "drmclientbuffer.h"
8#include "display.h"
9#include "utils/common.h"
10
11#include "qwayland-server-drm.h"
12
13namespace KWin
14{
15
16static constexpr int s_version = 2;
17
18class DrmClientBufferIntegrationPrivate : public QtWaylandServer::wl_drm
19{
20public:
22
23 QString nodeName;
24
25protected:
26 void drm_bind_resource(Resource *resource) override;
27 void drm_authenticate(Resource *resource, uint32_t id) override;
28 void drm_create_buffer(Resource *resource,
29 uint32_t id,
30 uint32_t name,
31 int32_t width,
32 int32_t height,
33 uint32_t stride,
34 uint32_t format) override;
35 void drm_create_planar_buffer(Resource *resource,
36 uint32_t id,
37 uint32_t name,
38 int32_t width,
39 int32_t height,
40 uint32_t format,
41 int32_t offset0,
42 int32_t stride0,
43 int32_t offset1,
44 int32_t stride1,
45 int32_t offset2,
46 int32_t stride2) override;
47 void drm_create_prime_buffer(Resource *resource,
48 uint32_t id,
49 int32_t name,
50 int32_t width,
51 int32_t height,
52 uint32_t format,
53 int32_t offset0,
54 int32_t stride0,
55 int32_t offset1,
56 int32_t stride1,
57 int32_t offset2,
58 int32_t stride2) override;
59};
60
62 : QtWaylandServer::wl_drm(*display, s_version)
63{
64}
65
67{
68 send_device(resource->handle, nodeName);
69 send_capabilities(resource->handle, capability_prime);
70}
71
72void DrmClientBufferIntegrationPrivate::drm_authenticate(Resource *resource, uint32_t id)
73{
74 send_authenticated(resource->handle);
75}
76
78 uint32_t id,
79 uint32_t name,
80 int32_t width,
81 int32_t height,
82 uint32_t stride,
83 uint32_t format)
84{
85 wl_resource_post_error(resource->handle, 0, "wl_drm.create_buffer is not implemented");
86}
87
89 uint32_t id,
90 uint32_t name,
91 int32_t width,
92 int32_t height,
93 uint32_t format,
94 int32_t offset0,
95 int32_t stride0,
96 int32_t offset1,
97 int32_t stride1,
98 int32_t offset2,
99 int32_t stride2)
100{
101 wl_resource_post_error(resource->handle, 0, "wl_drm.create_planar_buffer is not implemented");
102}
103
105 uint32_t id,
106 int32_t name,
107 int32_t width,
108 int32_t height,
109 uint32_t format,
110 int32_t offset0,
111 int32_t stride0,
112 int32_t offset1,
113 int32_t stride1,
114 int32_t offset2,
115 int32_t stride2)
116{
117 close(name);
118 wl_resource_post_error(resource->handle, 0, "wl_drm.create_prime_buffer is not implemented");
119}
120
122 : QObject(display)
123 , d(std::make_unique<DrmClientBufferIntegrationPrivate>(display))
124{
125}
126
130
132{
133 d->nodeName = node;
134}
135
136} // namespace KWin
137
138#include "moc_drmclientbuffer.cpp"
Class holding the Wayland server display loop.
Definition display.h:34
void setDevice(const QString &node)
void drm_create_buffer(Resource *resource, uint32_t id, uint32_t name, int32_t width, int32_t height, uint32_t stride, uint32_t format) override
void drm_create_prime_buffer(Resource *resource, uint32_t id, int32_t name, int32_t width, int32_t height, uint32_t format, int32_t offset0, int32_t stride0, int32_t offset1, int32_t stride1, int32_t offset2, int32_t stride2) override
void drm_bind_resource(Resource *resource) override
void drm_authenticate(Resource *resource, uint32_t id) override
void drm_create_planar_buffer(Resource *resource, uint32_t id, uint32_t name, int32_t width, int32_t height, uint32_t format, int32_t offset0, int32_t stride0, int32_t offset1, int32_t stride1, int32_t offset2, int32_t stride2) override
GLenum format
Definition gltexture.cpp:49