xref: /aosp_15_r20/external/libva/va/wayland/va_wayland.h (revision 54e60f844a168e9a219354de272cd517ee8cd4b7)
1*54e60f84SAndroid Build Coastguard Worker /*
2*54e60f84SAndroid Build Coastguard Worker  * va_wayland.h - Wayland API
3*54e60f84SAndroid Build Coastguard Worker  *
4*54e60f84SAndroid Build Coastguard Worker  * Copyright (c) 2012 Intel Corporation. All Rights Reserved.
5*54e60f84SAndroid Build Coastguard Worker  *
6*54e60f84SAndroid Build Coastguard Worker  * Permission is hereby granted, free of charge, to any person obtaining a
7*54e60f84SAndroid Build Coastguard Worker  * copy of this software and associated documentation files (the
8*54e60f84SAndroid Build Coastguard Worker  * "Software"), to deal in the Software without restriction, including
9*54e60f84SAndroid Build Coastguard Worker  * without limitation the rights to use, copy, modify, merge, publish,
10*54e60f84SAndroid Build Coastguard Worker  * distribute, sub license, and/or sell copies of the Software, and to
11*54e60f84SAndroid Build Coastguard Worker  * permit persons to whom the Software is furnished to do so, subject to
12*54e60f84SAndroid Build Coastguard Worker  * the following conditions:
13*54e60f84SAndroid Build Coastguard Worker  *
14*54e60f84SAndroid Build Coastguard Worker  * The above copyright notice and this permission notice (including the
15*54e60f84SAndroid Build Coastguard Worker  * next paragraph) shall be included in all copies or substantial portions
16*54e60f84SAndroid Build Coastguard Worker  * of the Software.
17*54e60f84SAndroid Build Coastguard Worker  *
18*54e60f84SAndroid Build Coastguard Worker  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19*54e60f84SAndroid Build Coastguard Worker  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20*54e60f84SAndroid Build Coastguard Worker  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
21*54e60f84SAndroid Build Coastguard Worker  * IN NO EVENT SHALL INTEL AND/OR ITS SUPPLIERS BE LIABLE FOR
22*54e60f84SAndroid Build Coastguard Worker  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23*54e60f84SAndroid Build Coastguard Worker  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24*54e60f84SAndroid Build Coastguard Worker  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25*54e60f84SAndroid Build Coastguard Worker  */
26*54e60f84SAndroid Build Coastguard Worker 
27*54e60f84SAndroid Build Coastguard Worker #ifndef VA_WAYLAND_H
28*54e60f84SAndroid Build Coastguard Worker #define VA_WAYLAND_H
29*54e60f84SAndroid Build Coastguard Worker 
30*54e60f84SAndroid Build Coastguard Worker #include <va/va.h>
31*54e60f84SAndroid Build Coastguard Worker #include <wayland-client.h>
32*54e60f84SAndroid Build Coastguard Worker 
33*54e60f84SAndroid Build Coastguard Worker /**
34*54e60f84SAndroid Build Coastguard Worker  * \file va_wayland.h
35*54e60f84SAndroid Build Coastguard Worker  * \brief The Wayland rendering API
36*54e60f84SAndroid Build Coastguard Worker  *
37*54e60f84SAndroid Build Coastguard Worker  * This file contains the \ref api_wayland "Wayland rendering API".
38*54e60f84SAndroid Build Coastguard Worker  */
39*54e60f84SAndroid Build Coastguard Worker 
40*54e60f84SAndroid Build Coastguard Worker #ifdef __cplusplus
41*54e60f84SAndroid Build Coastguard Worker extern "C" {
42*54e60f84SAndroid Build Coastguard Worker #endif
43*54e60f84SAndroid Build Coastguard Worker 
44*54e60f84SAndroid Build Coastguard Worker /**
45*54e60f84SAndroid Build Coastguard Worker  * \defgroup api_wayland Wayland rendering API
46*54e60f84SAndroid Build Coastguard Worker  *
47*54e60f84SAndroid Build Coastguard Worker  * @{
48*54e60f84SAndroid Build Coastguard Worker  *
49*54e60f84SAndroid Build Coastguard Worker  * Theory of operations:
50*54e60f84SAndroid Build Coastguard Worker  * - Create a VA display for an active Wayland display ;
51*54e60f84SAndroid Build Coastguard Worker  * - Perform normal VA-API operations, e.g. decode to a VA surface ;
52*54e60f84SAndroid Build Coastguard Worker  * - Get wl_buffer associated to the VA surface ;
53*54e60f84SAndroid Build Coastguard Worker  * - Attach wl_buffer to wl_surface ;
54*54e60f84SAndroid Build Coastguard Worker  */
55*54e60f84SAndroid Build Coastguard Worker 
56*54e60f84SAndroid Build Coastguard Worker /**
57*54e60f84SAndroid Build Coastguard Worker  * \brief Returns a VA display wrapping the specified Wayland display.
58*54e60f84SAndroid Build Coastguard Worker  *
59*54e60f84SAndroid Build Coastguard Worker  * This functions returns a (possibly cached) VA display from the
60*54e60f84SAndroid Build Coastguard Worker  * specified Wayland @display.
61*54e60f84SAndroid Build Coastguard Worker  *
62*54e60f84SAndroid Build Coastguard Worker  * @param[in]   display         the native Wayland display
63*54e60f84SAndroid Build Coastguard Worker  * @return the VA display
64*54e60f84SAndroid Build Coastguard Worker  */
65*54e60f84SAndroid Build Coastguard Worker VADisplay
66*54e60f84SAndroid Build Coastguard Worker vaGetDisplayWl(struct wl_display *display);
67*54e60f84SAndroid Build Coastguard Worker 
68*54e60f84SAndroid Build Coastguard Worker /**
69*54e60f84SAndroid Build Coastguard Worker  * \brief Returns the Wayland buffer associated with a VA surface.
70*54e60f84SAndroid Build Coastguard Worker  *
71*54e60f84SAndroid Build Coastguard Worker  * This function returns a wl_buffer handle that can be used as an
72*54e60f84SAndroid Build Coastguard Worker  * argument to wl_surface_attach(). This buffer references the
73*54e60f84SAndroid Build Coastguard Worker  * underlying VA @surface. As such, the VA @surface and Wayland
74*54e60f84SAndroid Build Coastguard Worker  * @out_buffer have the same size and color format. Should specific
75*54e60f84SAndroid Build Coastguard Worker  * color conversion be needed, then VA/VPP API can fulfill this
76*54e60f84SAndroid Build Coastguard Worker  * purpose.
77*54e60f84SAndroid Build Coastguard Worker  *
78*54e60f84SAndroid Build Coastguard Worker  * The @flags describe the desired picture structure. This is useful
79*54e60f84SAndroid Build Coastguard Worker  * to expose a de-interlaced buffer. If the VA driver does not support
80*54e60f84SAndroid Build Coastguard Worker  * any of the supplied flags, then #VA_STATUS_ERROR_FLAG_NOT_SUPPORTED
81*54e60f84SAndroid Build Coastguard Worker  * is returned. The following flags are allowed: \c VA_FRAME_PICTURE,
82*54e60f84SAndroid Build Coastguard Worker  * \c VA_TOP_FIELD, \c VA_BOTTOM_FIELD.
83*54e60f84SAndroid Build Coastguard Worker  *
84*54e60f84SAndroid Build Coastguard Worker  * @param[in]   dpy         the VA display
85*54e60f84SAndroid Build Coastguard Worker  * @param[in]   surface     the VA surface
86*54e60f84SAndroid Build Coastguard Worker  * @param[in]   flags       the deinterlacing flags
87*54e60f84SAndroid Build Coastguard Worker  * @param[out]  out_buffer  a wl_buffer wrapping the VA @surface
88*54e60f84SAndroid Build Coastguard Worker  * @return VA_STATUS_SUCCESS if successful
89*54e60f84SAndroid Build Coastguard Worker  */
90*54e60f84SAndroid Build Coastguard Worker VAStatus
91*54e60f84SAndroid Build Coastguard Worker vaGetSurfaceBufferWl(
92*54e60f84SAndroid Build Coastguard Worker     VADisplay           dpy,
93*54e60f84SAndroid Build Coastguard Worker     VASurfaceID         surface,
94*54e60f84SAndroid Build Coastguard Worker     unsigned int        flags,
95*54e60f84SAndroid Build Coastguard Worker     struct wl_buffer  **out_buffer
96*54e60f84SAndroid Build Coastguard Worker );
97*54e60f84SAndroid Build Coastguard Worker 
98*54e60f84SAndroid Build Coastguard Worker /**
99*54e60f84SAndroid Build Coastguard Worker  * \brief Returns the Wayland buffer associated with a VA image.
100*54e60f84SAndroid Build Coastguard Worker  *
101*54e60f84SAndroid Build Coastguard Worker  * This function returns a wl_buffer handle that can be used as an
102*54e60f84SAndroid Build Coastguard Worker  * argument to wl_surface_attach(). This buffer references the
103*54e60f84SAndroid Build Coastguard Worker  * underlying VA @image. As such, the VA @image and Wayland
104*54e60f84SAndroid Build Coastguard Worker  * @out_buffer have the same size and color format. Should specific
105*54e60f84SAndroid Build Coastguard Worker  * color conversion be needed, then VA/VPP API can fulfill this
106*54e60f84SAndroid Build Coastguard Worker  * purpose.
107*54e60f84SAndroid Build Coastguard Worker  *
108*54e60f84SAndroid Build Coastguard Worker  * The @flags describe the desired picture structure. See
109*54e60f84SAndroid Build Coastguard Worker  * vaGetSurfaceBufferWl() description for more details.
110*54e60f84SAndroid Build Coastguard Worker  *
111*54e60f84SAndroid Build Coastguard Worker  * @param[in]   dpy         the VA display
112*54e60f84SAndroid Build Coastguard Worker  * @param[in]   image       the VA image
113*54e60f84SAndroid Build Coastguard Worker  * @param[in]   flags       the deinterlacing flags
114*54e60f84SAndroid Build Coastguard Worker  * @param[out]  out_buffer  a wl_buffer wrapping the VA @image
115*54e60f84SAndroid Build Coastguard Worker  * @return VA_STATUS_SUCCESS if successful
116*54e60f84SAndroid Build Coastguard Worker  */
117*54e60f84SAndroid Build Coastguard Worker VAStatus
118*54e60f84SAndroid Build Coastguard Worker vaGetImageBufferWl(
119*54e60f84SAndroid Build Coastguard Worker     VADisplay           dpy,
120*54e60f84SAndroid Build Coastguard Worker     VAImageID           image,
121*54e60f84SAndroid Build Coastguard Worker     unsigned int        flags,
122*54e60f84SAndroid Build Coastguard Worker     struct wl_buffer  **out_buffer
123*54e60f84SAndroid Build Coastguard Worker );
124*54e60f84SAndroid Build Coastguard Worker 
125*54e60f84SAndroid Build Coastguard Worker /**@}*/
126*54e60f84SAndroid Build Coastguard Worker 
127*54e60f84SAndroid Build Coastguard Worker #ifdef __cplusplus
128*54e60f84SAndroid Build Coastguard Worker }
129*54e60f84SAndroid Build Coastguard Worker #endif
130*54e60f84SAndroid Build Coastguard Worker 
131*54e60f84SAndroid Build Coastguard Worker #endif /* VA_WAYLAND_H */
132