Skip to main content

x11rb/protocol/
dri2.rs

1// This file contains generated code. Do not edit directly.
2// To regenerate this, run 'make'.
3
4//! Bindings to the `DRI2` X11 extension.
5
6#![allow(clippy::too_many_arguments)]
7
8#[allow(unused_imports)]
9use std::borrow::Cow;
10#[allow(unused_imports)]
11use std::convert::TryInto;
12#[allow(unused_imports)]
13use crate::utils::RawFdContainer;
14#[allow(unused_imports)]
15use crate::x11_utils::{Request, RequestHeader, Serialize, TryParse, TryParseFd};
16use std::io::IoSlice;
17use crate::connection::RequestConnection;
18#[allow(unused_imports)]
19use crate::connection::Connection as X11Connection;
20#[allow(unused_imports)]
21use crate::cookie::{Cookie, CookieWithFds, VoidCookie};
22use crate::errors::ConnectionError;
23#[allow(unused_imports)]
24use crate::errors::ReplyOrIdError;
25#[allow(unused_imports)]
26use super::xproto;
27
28pub use x11rb_protocol::protocol::dri2::*;
29
30/// Get the major opcode of this extension
31fn major_opcode<Conn: RequestConnection + ?Sized>(conn: &Conn) -> Result<u8, ConnectionError> {
32    let info = conn.extension_information(X11_EXTENSION_NAME)?;
33    let info = info.ok_or(ConnectionError::UnsupportedExtension)?;
34    Ok(info.major_opcode)
35}
36
37pub fn query_version<Conn>(conn: &Conn, major_version: u32, minor_version: u32) -> Result<Cookie<'_, Conn, QueryVersionReply>, ConnectionError>
38where
39    Conn: RequestConnection + ?Sized,
40{
41    let request0 = QueryVersionRequest {
42        major_version,
43        minor_version,
44    };
45    let (bytes, fds) = request0.serialize(major_opcode(conn)?);
46    let slices = [IoSlice::new(&bytes[0])];
47    assert_eq!(slices.len(), bytes.len());
48    conn.send_request_with_reply(&slices, fds)
49}
50
51pub fn connect<Conn>(conn: &Conn, window: xproto::Window, driver_type: DriverType) -> Result<Cookie<'_, Conn, ConnectReply>, ConnectionError>
52where
53    Conn: RequestConnection + ?Sized,
54{
55    let request0 = ConnectRequest {
56        window,
57        driver_type,
58    };
59    let (bytes, fds) = request0.serialize(major_opcode(conn)?);
60    let slices = [IoSlice::new(&bytes[0])];
61    assert_eq!(slices.len(), bytes.len());
62    conn.send_request_with_reply(&slices, fds)
63}
64
65pub fn authenticate<Conn>(conn: &Conn, window: xproto::Window, magic: u32) -> Result<Cookie<'_, Conn, AuthenticateReply>, ConnectionError>
66where
67    Conn: RequestConnection + ?Sized,
68{
69    let request0 = AuthenticateRequest {
70        window,
71        magic,
72    };
73    let (bytes, fds) = request0.serialize(major_opcode(conn)?);
74    let slices = [IoSlice::new(&bytes[0])];
75    assert_eq!(slices.len(), bytes.len());
76    conn.send_request_with_reply(&slices, fds)
77}
78
79pub fn create_drawable<Conn>(conn: &Conn, drawable: xproto::Drawable) -> Result<VoidCookie<'_, Conn>, ConnectionError>
80where
81    Conn: RequestConnection + ?Sized,
82{
83    let request0 = CreateDrawableRequest {
84        drawable,
85    };
86    let (bytes, fds) = request0.serialize(major_opcode(conn)?);
87    let slices = [IoSlice::new(&bytes[0])];
88    assert_eq!(slices.len(), bytes.len());
89    conn.send_request_without_reply(&slices, fds)
90}
91
92pub fn destroy_drawable<Conn>(conn: &Conn, drawable: xproto::Drawable) -> Result<VoidCookie<'_, Conn>, ConnectionError>
93where
94    Conn: RequestConnection + ?Sized,
95{
96    let request0 = DestroyDrawableRequest {
97        drawable,
98    };
99    let (bytes, fds) = request0.serialize(major_opcode(conn)?);
100    let slices = [IoSlice::new(&bytes[0])];
101    assert_eq!(slices.len(), bytes.len());
102    conn.send_request_without_reply(&slices, fds)
103}
104
105pub fn get_buffers<'c, 'input, Conn>(conn: &'c Conn, drawable: xproto::Drawable, count: u32, attachments: &'input [u32]) -> Result<Cookie<'c, Conn, GetBuffersReply>, ConnectionError>
106where
107    Conn: RequestConnection + ?Sized,
108{
109    let request0 = GetBuffersRequest {
110        drawable,
111        count,
112        attachments: Cow::Borrowed(attachments),
113    };
114    let (bytes, fds) = request0.serialize(major_opcode(conn)?);
115    let slices = [IoSlice::new(&bytes[0]), IoSlice::new(&bytes[1]), IoSlice::new(&bytes[2])];
116    assert_eq!(slices.len(), bytes.len());
117    conn.send_request_with_reply(&slices, fds)
118}
119
120pub fn copy_region<Conn>(conn: &Conn, drawable: xproto::Drawable, region: u32, dest: u32, src: u32) -> Result<Cookie<'_, Conn, CopyRegionReply>, ConnectionError>
121where
122    Conn: RequestConnection + ?Sized,
123{
124    let request0 = CopyRegionRequest {
125        drawable,
126        region,
127        dest,
128        src,
129    };
130    let (bytes, fds) = request0.serialize(major_opcode(conn)?);
131    let slices = [IoSlice::new(&bytes[0])];
132    assert_eq!(slices.len(), bytes.len());
133    conn.send_request_with_reply(&slices, fds)
134}
135
136pub fn get_buffers_with_format<'c, 'input, Conn>(conn: &'c Conn, drawable: xproto::Drawable, count: u32, attachments: &'input [AttachFormat]) -> Result<Cookie<'c, Conn, GetBuffersWithFormatReply>, ConnectionError>
137where
138    Conn: RequestConnection + ?Sized,
139{
140    let request0 = GetBuffersWithFormatRequest {
141        drawable,
142        count,
143        attachments: Cow::Borrowed(attachments),
144    };
145    let (bytes, fds) = request0.serialize(major_opcode(conn)?);
146    let slices = [IoSlice::new(&bytes[0]), IoSlice::new(&bytes[1]), IoSlice::new(&bytes[2])];
147    assert_eq!(slices.len(), bytes.len());
148    conn.send_request_with_reply(&slices, fds)
149}
150
151pub fn swap_buffers<Conn>(conn: &Conn, drawable: xproto::Drawable, target_msc_hi: u32, target_msc_lo: u32, divisor_hi: u32, divisor_lo: u32, remainder_hi: u32, remainder_lo: u32) -> Result<Cookie<'_, Conn, SwapBuffersReply>, ConnectionError>
152where
153    Conn: RequestConnection + ?Sized,
154{
155    let request0 = SwapBuffersRequest {
156        drawable,
157        target_msc_hi,
158        target_msc_lo,
159        divisor_hi,
160        divisor_lo,
161        remainder_hi,
162        remainder_lo,
163    };
164    let (bytes, fds) = request0.serialize(major_opcode(conn)?);
165    let slices = [IoSlice::new(&bytes[0])];
166    assert_eq!(slices.len(), bytes.len());
167    conn.send_request_with_reply(&slices, fds)
168}
169
170pub fn get_msc<Conn>(conn: &Conn, drawable: xproto::Drawable) -> Result<Cookie<'_, Conn, GetMSCReply>, ConnectionError>
171where
172    Conn: RequestConnection + ?Sized,
173{
174    let request0 = GetMSCRequest {
175        drawable,
176    };
177    let (bytes, fds) = request0.serialize(major_opcode(conn)?);
178    let slices = [IoSlice::new(&bytes[0])];
179    assert_eq!(slices.len(), bytes.len());
180    conn.send_request_with_reply(&slices, fds)
181}
182
183pub fn wait_msc<Conn>(conn: &Conn, drawable: xproto::Drawable, target_msc_hi: u32, target_msc_lo: u32, divisor_hi: u32, divisor_lo: u32, remainder_hi: u32, remainder_lo: u32) -> Result<Cookie<'_, Conn, WaitMSCReply>, ConnectionError>
184where
185    Conn: RequestConnection + ?Sized,
186{
187    let request0 = WaitMSCRequest {
188        drawable,
189        target_msc_hi,
190        target_msc_lo,
191        divisor_hi,
192        divisor_lo,
193        remainder_hi,
194        remainder_lo,
195    };
196    let (bytes, fds) = request0.serialize(major_opcode(conn)?);
197    let slices = [IoSlice::new(&bytes[0])];
198    assert_eq!(slices.len(), bytes.len());
199    conn.send_request_with_reply(&slices, fds)
200}
201
202pub fn wait_sbc<Conn>(conn: &Conn, drawable: xproto::Drawable, target_sbc_hi: u32, target_sbc_lo: u32) -> Result<Cookie<'_, Conn, WaitSBCReply>, ConnectionError>
203where
204    Conn: RequestConnection + ?Sized,
205{
206    let request0 = WaitSBCRequest {
207        drawable,
208        target_sbc_hi,
209        target_sbc_lo,
210    };
211    let (bytes, fds) = request0.serialize(major_opcode(conn)?);
212    let slices = [IoSlice::new(&bytes[0])];
213    assert_eq!(slices.len(), bytes.len());
214    conn.send_request_with_reply(&slices, fds)
215}
216
217pub fn swap_interval<Conn>(conn: &Conn, drawable: xproto::Drawable, interval: u32) -> Result<VoidCookie<'_, Conn>, ConnectionError>
218where
219    Conn: RequestConnection + ?Sized,
220{
221    let request0 = SwapIntervalRequest {
222        drawable,
223        interval,
224    };
225    let (bytes, fds) = request0.serialize(major_opcode(conn)?);
226    let slices = [IoSlice::new(&bytes[0])];
227    assert_eq!(slices.len(), bytes.len());
228    conn.send_request_without_reply(&slices, fds)
229}
230
231pub fn get_param<Conn>(conn: &Conn, drawable: xproto::Drawable, param: u32) -> Result<Cookie<'_, Conn, GetParamReply>, ConnectionError>
232where
233    Conn: RequestConnection + ?Sized,
234{
235    let request0 = GetParamRequest {
236        drawable,
237        param,
238    };
239    let (bytes, fds) = request0.serialize(major_opcode(conn)?);
240    let slices = [IoSlice::new(&bytes[0])];
241    assert_eq!(slices.len(), bytes.len());
242    conn.send_request_with_reply(&slices, fds)
243}
244
245/// Extension trait defining the requests of this extension.
246pub trait ConnectionExt: RequestConnection {
247    fn dri2_query_version(&self, major_version: u32, minor_version: u32) -> Result<Cookie<'_, Self, QueryVersionReply>, ConnectionError>
248    {
249        query_version(self, major_version, minor_version)
250    }
251    fn dri2_connect(&self, window: xproto::Window, driver_type: DriverType) -> Result<Cookie<'_, Self, ConnectReply>, ConnectionError>
252    {
253        connect(self, window, driver_type)
254    }
255    fn dri2_authenticate(&self, window: xproto::Window, magic: u32) -> Result<Cookie<'_, Self, AuthenticateReply>, ConnectionError>
256    {
257        authenticate(self, window, magic)
258    }
259    fn dri2_create_drawable(&self, drawable: xproto::Drawable) -> Result<VoidCookie<'_, Self>, ConnectionError>
260    {
261        create_drawable(self, drawable)
262    }
263    fn dri2_destroy_drawable(&self, drawable: xproto::Drawable) -> Result<VoidCookie<'_, Self>, ConnectionError>
264    {
265        destroy_drawable(self, drawable)
266    }
267    fn dri2_get_buffers<'c, 'input>(&'c self, drawable: xproto::Drawable, count: u32, attachments: &'input [u32]) -> Result<Cookie<'c, Self, GetBuffersReply>, ConnectionError>
268    {
269        get_buffers(self, drawable, count, attachments)
270    }
271    fn dri2_copy_region(&self, drawable: xproto::Drawable, region: u32, dest: u32, src: u32) -> Result<Cookie<'_, Self, CopyRegionReply>, ConnectionError>
272    {
273        copy_region(self, drawable, region, dest, src)
274    }
275    fn dri2_get_buffers_with_format<'c, 'input>(&'c self, drawable: xproto::Drawable, count: u32, attachments: &'input [AttachFormat]) -> Result<Cookie<'c, Self, GetBuffersWithFormatReply>, ConnectionError>
276    {
277        get_buffers_with_format(self, drawable, count, attachments)
278    }
279    fn dri2_swap_buffers(&self, drawable: xproto::Drawable, target_msc_hi: u32, target_msc_lo: u32, divisor_hi: u32, divisor_lo: u32, remainder_hi: u32, remainder_lo: u32) -> Result<Cookie<'_, Self, SwapBuffersReply>, ConnectionError>
280    {
281        swap_buffers(self, drawable, target_msc_hi, target_msc_lo, divisor_hi, divisor_lo, remainder_hi, remainder_lo)
282    }
283    fn dri2_get_msc(&self, drawable: xproto::Drawable) -> Result<Cookie<'_, Self, GetMSCReply>, ConnectionError>
284    {
285        get_msc(self, drawable)
286    }
287    fn dri2_wait_msc(&self, drawable: xproto::Drawable, target_msc_hi: u32, target_msc_lo: u32, divisor_hi: u32, divisor_lo: u32, remainder_hi: u32, remainder_lo: u32) -> Result<Cookie<'_, Self, WaitMSCReply>, ConnectionError>
288    {
289        wait_msc(self, drawable, target_msc_hi, target_msc_lo, divisor_hi, divisor_lo, remainder_hi, remainder_lo)
290    }
291    fn dri2_wait_sbc(&self, drawable: xproto::Drawable, target_sbc_hi: u32, target_sbc_lo: u32) -> Result<Cookie<'_, Self, WaitSBCReply>, ConnectionError>
292    {
293        wait_sbc(self, drawable, target_sbc_hi, target_sbc_lo)
294    }
295    fn dri2_swap_interval(&self, drawable: xproto::Drawable, interval: u32) -> Result<VoidCookie<'_, Self>, ConnectionError>
296    {
297        swap_interval(self, drawable, interval)
298    }
299    fn dri2_get_param(&self, drawable: xproto::Drawable, param: u32) -> Result<Cookie<'_, Self, GetParamReply>, ConnectionError>
300    {
301        get_param(self, drawable, param)
302    }
303}
304
305impl<C: RequestConnection + ?Sized> ConnectionExt for C {}