xref: /aosp_15_r20/external/libva/va/x11/va_dricommon.h (revision 54e60f844a168e9a219354de272cd517ee8cd4b7)
1*54e60f84SAndroid Build Coastguard Worker /*
2*54e60f84SAndroid Build Coastguard Worker  * Copyright (c) 2012 Intel Corporation. All Rights Reserved.
3*54e60f84SAndroid Build Coastguard Worker  *
4*54e60f84SAndroid Build Coastguard Worker  * Permission is hereby granted, free of charge, to any person obtaining a
5*54e60f84SAndroid Build Coastguard Worker  * copy of this software and associated documentation files (the
6*54e60f84SAndroid Build Coastguard Worker  * "Software"), to deal in the Software without restriction, including
7*54e60f84SAndroid Build Coastguard Worker  * without limitation the rights to use, copy, modify, merge, publish,
8*54e60f84SAndroid Build Coastguard Worker  * distribute, sub license, and/or sell copies of the Software, and to
9*54e60f84SAndroid Build Coastguard Worker  * permit persons to whom the Software is furnished to do so, subject to
10*54e60f84SAndroid Build Coastguard Worker  * the following conditions:
11*54e60f84SAndroid Build Coastguard Worker  *
12*54e60f84SAndroid Build Coastguard Worker  * The above copyright notice and this permission notice (including the
13*54e60f84SAndroid Build Coastguard Worker  * next paragraph) shall be included in all copies or substantial portions
14*54e60f84SAndroid Build Coastguard Worker  * of the Software.
15*54e60f84SAndroid Build Coastguard Worker  *
16*54e60f84SAndroid Build Coastguard Worker  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17*54e60f84SAndroid Build Coastguard Worker  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18*54e60f84SAndroid Build Coastguard Worker  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
19*54e60f84SAndroid Build Coastguard Worker  * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
20*54e60f84SAndroid Build Coastguard Worker  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21*54e60f84SAndroid Build Coastguard Worker  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22*54e60f84SAndroid Build Coastguard Worker  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23*54e60f84SAndroid Build Coastguard Worker  */
24*54e60f84SAndroid Build Coastguard Worker #ifndef _VA_DRICOMMON_H_
25*54e60f84SAndroid Build Coastguard Worker #define _VA_DRICOMMON_H_
26*54e60f84SAndroid Build Coastguard Worker 
27*54e60f84SAndroid Build Coastguard Worker #include <X11/Xlib.h>
28*54e60f84SAndroid Build Coastguard Worker #include <xf86drm.h>
29*54e60f84SAndroid Build Coastguard Worker #include <drm.h>
30*54e60f84SAndroid Build Coastguard Worker 
31*54e60f84SAndroid Build Coastguard Worker #include <va/va_backend.h>
32*54e60f84SAndroid Build Coastguard Worker #include <va/va_drmcommon.h>
33*54e60f84SAndroid Build Coastguard Worker 
34*54e60f84SAndroid Build Coastguard Worker enum {
35*54e60f84SAndroid Build Coastguard Worker     /* Compatibility. Do not use for newly-written code. */
36*54e60f84SAndroid Build Coastguard Worker     VA_NONE     = VA_DRM_AUTH_NONE,
37*54e60f84SAndroid Build Coastguard Worker     VA_DRI1     = VA_DRM_AUTH_DRI1,
38*54e60f84SAndroid Build Coastguard Worker     VA_DRI2     = VA_DRM_AUTH_DRI2,
39*54e60f84SAndroid Build Coastguard Worker     VA_DUMMY    = VA_DRM_AUTH_CUSTOM
40*54e60f84SAndroid Build Coastguard Worker };
41*54e60f84SAndroid Build Coastguard Worker 
42*54e60f84SAndroid Build Coastguard Worker union dri_buffer {
43*54e60f84SAndroid Build Coastguard Worker     struct {
44*54e60f84SAndroid Build Coastguard Worker         unsigned int attachment;
45*54e60f84SAndroid Build Coastguard Worker         unsigned int name;
46*54e60f84SAndroid Build Coastguard Worker         unsigned int pitch;
47*54e60f84SAndroid Build Coastguard Worker         unsigned int cpp;
48*54e60f84SAndroid Build Coastguard Worker         unsigned int flags;
49*54e60f84SAndroid Build Coastguard Worker         /** \brief Reserved bytes for future use, must be zero */
50*54e60f84SAndroid Build Coastguard Worker         unsigned int va_reserved[8];
51*54e60f84SAndroid Build Coastguard Worker     } dri2;
52*54e60f84SAndroid Build Coastguard Worker };
53*54e60f84SAndroid Build Coastguard Worker 
54*54e60f84SAndroid Build Coastguard Worker struct dri_drawable {
55*54e60f84SAndroid Build Coastguard Worker     XID x_drawable;
56*54e60f84SAndroid Build Coastguard Worker     int is_window;
57*54e60f84SAndroid Build Coastguard Worker     int x;
58*54e60f84SAndroid Build Coastguard Worker     int y;
59*54e60f84SAndroid Build Coastguard Worker     unsigned int width;
60*54e60f84SAndroid Build Coastguard Worker     unsigned int height;
61*54e60f84SAndroid Build Coastguard Worker     struct dri_drawable *next;
62*54e60f84SAndroid Build Coastguard Worker };
63*54e60f84SAndroid Build Coastguard Worker 
64*54e60f84SAndroid Build Coastguard Worker #define DRAWABLE_HASH_SZ 32
65*54e60f84SAndroid Build Coastguard Worker struct dri_state {
66*54e60f84SAndroid Build Coastguard Worker     struct drm_state base;
67*54e60f84SAndroid Build Coastguard Worker     struct dri_drawable *drawable_hash[DRAWABLE_HASH_SZ];
68*54e60f84SAndroid Build Coastguard Worker 
69*54e60f84SAndroid Build Coastguard Worker     struct dri_drawable *(*createDrawable)(VADriverContextP ctx, XID x_drawable);
70*54e60f84SAndroid Build Coastguard Worker     void (*destroyDrawable)(VADriverContextP ctx, struct dri_drawable *dri_drawable);
71*54e60f84SAndroid Build Coastguard Worker     void (*swapBuffer)(VADriverContextP ctx, struct dri_drawable *dri_drawable);
72*54e60f84SAndroid Build Coastguard Worker     union dri_buffer *(*getRenderingBuffer)(VADriverContextP ctx, struct dri_drawable *dri_drawable);
73*54e60f84SAndroid Build Coastguard Worker     void (*close)(VADriverContextP ctx);
74*54e60f84SAndroid Build Coastguard Worker     /** \brief Reserved bytes for future use, must be zero */
75*54e60f84SAndroid Build Coastguard Worker     unsigned long  va_reserved[16];
76*54e60f84SAndroid Build Coastguard Worker };
77*54e60f84SAndroid Build Coastguard Worker 
78*54e60f84SAndroid Build Coastguard Worker Bool va_isDRI2Connected(VADriverContextP ctx, char **driver_name);
79*54e60f84SAndroid Build Coastguard Worker void va_dri_free_drawable(VADriverContextP ctx, struct dri_drawable* dri_drawable);
80*54e60f84SAndroid Build Coastguard Worker void va_dri_free_drawable_hashtable(VADriverContextP ctx);
81*54e60f84SAndroid Build Coastguard Worker struct dri_drawable *va_dri_get_drawable(VADriverContextP ctx, XID drawable);
82*54e60f84SAndroid Build Coastguard Worker void va_dri_swap_buffer(VADriverContextP ctx, struct dri_drawable *dri_drawable);
83*54e60f84SAndroid Build Coastguard Worker union dri_buffer *va_dri_get_rendering_buffer(VADriverContextP ctx, struct dri_drawable *dri_drawable);
84*54e60f84SAndroid Build Coastguard Worker 
85*54e60f84SAndroid Build Coastguard Worker #endif /* _VA_DRICOMMON_H_ */
86