~mmach/netext73/mesa-haswell

« back to all changes in this revision

Viewing changes to src/egl/wayland/wayland-drm/wayland-drm.h

  • Committer: mmach
  • Date: 2022-09-22 19:56:13 UTC
  • Revision ID: netbit73@gmail.com-20220922195613-wtik9mmy20tmor0i
2022-09-22 21:17:09

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#ifndef WAYLAND_DRM_H
2
 
#define WAYLAND_DRM_H
3
 
 
4
 
#include <wayland-server.h>
5
 
 
6
 
struct wl_display;
7
 
struct wl_resource;
8
 
struct wl_drm_buffer;
9
 
 
10
 
struct wayland_drm_callbacks {
11
 
        int (*authenticate)(void *user_data, uint32_t id);
12
 
 
13
 
        void (*reference_buffer)(void *user_data, uint32_t name, int fd,
14
 
                                 struct wl_drm_buffer *buffer);
15
 
 
16
 
        void (*release_buffer)(void *user_data, struct wl_drm_buffer *buffer);
17
 
 
18
 
        bool (*is_format_supported)(void *user_data, uint32_t format);
19
 
};
20
 
 
21
 
 
22
 
struct wl_drm {
23
 
        struct wl_display *display;
24
 
        struct wl_global *wl_drm_global;
25
 
 
26
 
        void *user_data;
27
 
        char *device_name;
28
 
        uint32_t flags;
29
 
 
30
 
        struct wayland_drm_callbacks callbacks;
31
 
 
32
 
        struct wl_buffer_interface buffer_interface;
33
 
};
34
 
 
35
 
struct wl_drm_buffer {
36
 
        struct wl_resource *resource;
37
 
        struct wl_drm *drm;
38
 
        int32_t width, height;
39
 
        uint32_t format;
40
 
        const void *driver_format;
41
 
        int32_t offset[3];
42
 
        int32_t stride[3];
43
 
        void *driver_buffer;
44
 
};
45
 
 
46
 
enum { WAYLAND_DRM_PRIME = 0x01 };
47
 
 
48
 
static inline struct wl_drm_buffer *
49
 
wayland_drm_buffer_get(struct wl_drm *drm, struct wl_resource *resource)
50
 
{
51
 
        if (resource == NULL)
52
 
                return NULL;
53
 
 
54
 
        if (wl_resource_instance_of(resource, &wl_buffer_interface,
55
 
                                    &drm->buffer_interface))
56
 
                return wl_resource_get_user_data(resource);
57
 
        else
58
 
                return NULL;
59
 
}
60
 
 
61
 
struct wl_drm *
62
 
wayland_drm_init(struct wl_display *display, char *device_name,
63
 
                 const struct wayland_drm_callbacks *callbacks, void *user_data,
64
 
                 uint32_t flags);
65
 
 
66
 
void
67
 
wayland_drm_uninit(struct wl_drm *drm);
68
 
 
69
 
#endif