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