linux-drm-syncobj-v1_generated.go RawHistoryFolder
1// Code generated by wlturbo-scanner. DO NOT EDIT.
2// Protocol: linux_drm_syncobj_v1
3// Source: linux-drm-syncobj-v1.xml
4
5package drmsyncobj
6
7import (
8 cross_wl_surface "github.com/bnema/wlturbo/protocol/core"
9 "github.com/bnema/wlturbo/wl"
10)
11
12// ERROR_SURFACE_EXISTS is the error surface_exists value.
13const ERROR_SURFACE_EXISTS = 0
14
15// ERROR_INVALID_TIMELINE is the error invalid_timeline value.
16const ERROR_INVALID_TIMELINE = 1
17
18// ERROR_NO_SURFACE is the error no_surface value.
19const ERROR_NO_SURFACE = 1
20
21// ERROR_UNSUPPORTED_BUFFER is the error unsupported_buffer value.
22const ERROR_UNSUPPORTED_BUFFER = 2
23
24// ERROR_NO_BUFFER is the error no_buffer value.
25const ERROR_NO_BUFFER = 3
26
27// ERROR_NO_ACQUIRE_POINT is the error no_acquire_point value.
28const ERROR_NO_ACQUIRE_POINT = 4
29
30// ERROR_NO_RELEASE_POINT is the error no_release_point value.
31const ERROR_NO_RELEASE_POINT = 5
32
33// ERROR_CONFLICTING_POINTS is the error conflicting_points value.
34const ERROR_CONFLICTING_POINTS = 6
35
36// WpLinuxDrmSyncobjManagerInterface is the protocol interface name.
37const WpLinuxDrmSyncobjManagerInterface = "wp_linux_drm_syncobj_manager_v1"
38
39// WpLinuxDrmSyncobjManager is the generated binding for wp_linux_drm_syncobj_manager_v1 version 1.
40type WpLinuxDrmSyncobjManager struct {
41 wl.BaseProxy
42}
43
44// NewWpLinuxDrmSyncobjManager returns an unbound WpLinuxDrmSyncobjManager.
45func NewWpLinuxDrmSyncobjManager(ctx *wl.Context) *WpLinuxDrmSyncobjManager {
46 obj := &WpLinuxDrmSyncobjManager{}
47 obj.SetContext(ctx)
48 ctx.Register(obj)
49 return obj
50}
51
52// Destroy this explicit synchronization factory object. Other objects shall not be affected by this request.
53func (o *WpLinuxDrmSyncobjManager) Destroy() error {
54 if err := o.Context().Request(wl.Request{Proxy: o, Opcode: 0, Name: "wp_linux_drm_syncobj_manager_v1.destroy", Destructor: true}); err != nil {
55 return err
56 }
57 return nil
58}
59
60// Instantiate an interface extension for the given wl_surface to provide explicit synchronization. If the given wl_surface already has an explicit synchronization object associated, the surface_exists protocol error is raised. Graphics APIs, like EGL or Vulkan, that manage the buffer queue and commits of a wl_surface themselves, are likely to be using this extension internally. If a client is using such an API for a wl_surface, it should not directly use this extension on that surface, to avoid raising a surface_exists protocol error.
61func (o *WpLinuxDrmSyncobjManager) GetSurface(surface *cross_wl_surface.Surface) (*WpLinuxDrmSyncobjSurface, error) {
62 var arg1 wl.Object
63 if surface != nil {
64 arg1 = surface
65 }
66 child := &WpLinuxDrmSyncobjSurface{}
67 child.SetContext(o.Context())
68 if err := o.Context().Request(wl.Request{Proxy: o, Opcode: 1, Name: "wp_linux_drm_syncobj_manager_v1.get_surface", Child: child}, child, arg1); err != nil {
69 return nil, err
70 }
71 return child, nil
72}
73
74// Import a DRM synchronization object timeline. If the FD cannot be imported, the invalid_timeline error is raised.
75func (o *WpLinuxDrmSyncobjManager) ImportTimeline(fd int) (*WpLinuxDrmSyncobjTimeline, error) {
76 child := &WpLinuxDrmSyncobjTimeline{}
77 child.SetContext(o.Context())
78 if err := o.Context().Request(wl.Request{Proxy: o, Opcode: 2, Name: "wp_linux_drm_syncobj_manager_v1.import_timeline", Child: child, FDs: []int{fd}}, child, uintptr(fd)); err != nil {
79 return nil, err
80 }
81 return child, nil
82}
83
84// EventSignature returns the declared event argument types in wire order.
85func (o *WpLinuxDrmSyncobjManager) EventSignature(opcode uint16) (string, bool) {
86 switch opcode {
87 default:
88 return "", false
89 }
90}
91
92// Dispatch decodes one event on wp_linux_drm_syncobj_manager_v1 and calls the registered handlers.
93func (o *WpLinuxDrmSyncobjManager) Dispatch(event *wl.Event) {
94 switch event.Opcode {
95 default:
96 }
97}
98
99// WpLinuxDrmSyncobjTimelineInterface is the protocol interface name.
100const WpLinuxDrmSyncobjTimelineInterface = "wp_linux_drm_syncobj_timeline_v1"
101
102// WpLinuxDrmSyncobjTimeline is the generated binding for wp_linux_drm_syncobj_timeline_v1 version 1.
103type WpLinuxDrmSyncobjTimeline struct {
104 wl.BaseProxy
105}
106
107// NewWpLinuxDrmSyncobjTimeline returns an unbound WpLinuxDrmSyncobjTimeline.
108func NewWpLinuxDrmSyncobjTimeline(ctx *wl.Context) *WpLinuxDrmSyncobjTimeline {
109 obj := &WpLinuxDrmSyncobjTimeline{}
110 obj.SetContext(ctx)
111 ctx.Register(obj)
112 return obj
113}
114
115// Destroy the synchronization object timeline. Other objects are not affected by this request, in particular timeline points set by set_acquire_point and set_release_point are not unset.
116func (o *WpLinuxDrmSyncobjTimeline) Destroy() error {
117 if err := o.Context().Request(wl.Request{Proxy: o, Opcode: 0, Name: "wp_linux_drm_syncobj_timeline_v1.destroy", Destructor: true}); err != nil {
118 return err
119 }
120 return nil
121}
122
123// EventSignature returns the declared event argument types in wire order.
124func (o *WpLinuxDrmSyncobjTimeline) EventSignature(opcode uint16) (string, bool) {
125 switch opcode {
126 default:
127 return "", false
128 }
129}
130
131// Dispatch decodes one event on wp_linux_drm_syncobj_timeline_v1 and calls the registered handlers.
132func (o *WpLinuxDrmSyncobjTimeline) Dispatch(event *wl.Event) {
133 switch event.Opcode {
134 default:
135 }
136}
137
138// WpLinuxDrmSyncobjSurfaceInterface is the protocol interface name.
139const WpLinuxDrmSyncobjSurfaceInterface = "wp_linux_drm_syncobj_surface_v1"
140
141// WpLinuxDrmSyncobjSurface is the generated binding for wp_linux_drm_syncobj_surface_v1 version 1.
142type WpLinuxDrmSyncobjSurface struct {
143 wl.BaseProxy
144}
145
146// NewWpLinuxDrmSyncobjSurface returns an unbound WpLinuxDrmSyncobjSurface.
147func NewWpLinuxDrmSyncobjSurface(ctx *wl.Context) *WpLinuxDrmSyncobjSurface {
148 obj := &WpLinuxDrmSyncobjSurface{}
149 obj.SetContext(ctx)
150 ctx.Register(obj)
151 return obj
152}
153
154// Destroy this surface synchronization object. Any timeline point set by this object with set_acquire_point or set_release_point since the last commit may be discarded by the compositor. Any timeline point set by this object before the last commit will not be affected.
155func (o *WpLinuxDrmSyncobjSurface) Destroy() error {
156 if err := o.Context().Request(wl.Request{Proxy: o, Opcode: 0, Name: "wp_linux_drm_syncobj_surface_v1.destroy", Destructor: true}); err != nil {
157 return err
158 }
159 return nil
160}
161
162// Set the timeline point that must be signalled before the compositor may sample from the buffer attached with wl_surface.attach. The 64-bit unsigned value combined from point_hi and point_lo is the point value. The acquire point is double-buffered state, and will be applied on the next wl_surface.commit request for the associated surface. Thus, it applies only to the buffer that is attached to the surface at commit time. If an acquire point has already been attached during the same commit cycle, the new point replaces the old one. If the associated wl_surface was destroyed, a no_surface error is raised. If at surface commit time there is a pending acquire timeline point set but no pending buffer attached, a no_buffer error is raised. If at surface commit time there is a pending buffer attached but no pending acquire timeline point set, the no_acquire_point protocol error is raised.
163func (o *WpLinuxDrmSyncobjSurface) SetAcquirePoint(timeline *WpLinuxDrmSyncobjTimeline, pointHi uint32, pointLo uint32) error {
164 var arg0 wl.Object
165 if timeline != nil {
166 arg0 = timeline
167 }
168 if err := o.Context().Request(wl.Request{Proxy: o, Opcode: 1, Name: "wp_linux_drm_syncobj_surface_v1.set_acquire_point"}, arg0, pointHi, pointLo); err != nil {
169 return err
170 }
171 return nil
172}
173
174// Set the timeline point that must be signalled by the compositor when it has finished its usage of the buffer attached with wl_surface.attach for the relevant commit. Once the timeline point is signaled, and assuming the associated buffer is not pending release from other wl_surface.commit requests, no additional explicit or implicit synchronization with the compositor is required to safely re-use the buffer. Note that clients cannot rely on the release point being always signaled after the acquire point: compositors may release buffers without ever reading from them. In addition, the compositor may use different presentation paths for different commits, which may have different release behavior. As a result, the compositor may signal the release points in a different order than the client committed them. Because signaling a timeline point also signals every previous point, it is generally not safe to use the same timeline object for the release points of multiple buffers. The out-of-order signaling described above may lead to a release point being signaled before the compositor has finished reading. To avoid this, it is strongly recommended that each buffer should use a separate timeline for its release points. The 64-bit unsigned value combined from point_hi and point_lo is the point value. The release point is double-buffered state, and will be applied on the next wl_surface.commit request for the associated surface. Thus, it applies only to the buffer that is attached to the surface at commit time. If a release point has already been attached during the same commit cycle, the new point replaces the old one. If the associated wl_surface was destroyed, a no_surface error is raised. If at surface commit time there is a pending release timeline point set but no pending buffer attached, a no_buffer error is raised. If at surface commit time there is a pending buffer attached but no pending release timeline point set, the no_release_point protocol error is raised.
175func (o *WpLinuxDrmSyncobjSurface) SetReleasePoint(timeline *WpLinuxDrmSyncobjTimeline, pointHi uint32, pointLo uint32) error {
176 var arg0 wl.Object
177 if timeline != nil {
178 arg0 = timeline
179 }
180 if err := o.Context().Request(wl.Request{Proxy: o, Opcode: 2, Name: "wp_linux_drm_syncobj_surface_v1.set_release_point"}, arg0, pointHi, pointLo); err != nil {
181 return err
182 }
183 return nil
184}
185
186// EventSignature returns the declared event argument types in wire order.
187func (o *WpLinuxDrmSyncobjSurface) EventSignature(opcode uint16) (string, bool) {
188 switch opcode {
189 default:
190 return "", false
191 }
192}
193
194// Dispatch decodes one event on wp_linux_drm_syncobj_surface_v1 and calls the registered handlers.
195func (o *WpLinuxDrmSyncobjSurface) Dispatch(event *wl.Event) {
196 switch event.Opcode {
197 default:
198 }
199}