Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  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.  
  61. struct dri_drawable
  62. {
  63.     XID x_drawable;
  64.     int is_window;
  65.     int x;
  66.     int y;
  67.     unsigned int width;
  68.     unsigned int height;
  69.     struct dri_drawable *next;
  70. };
  71.  
  72. #define DRAWABLE_HASH_SZ 32
  73. struct dri_state
  74. {
  75.     struct drm_state base;
  76. #ifndef ANDROID
  77.     struct dri_drawable *drawable_hash[DRAWABLE_HASH_SZ];
  78.  
  79.     struct dri_drawable *(*createDrawable)(VADriverContextP ctx, XID x_drawable);
  80.     void (*destroyDrawable)(VADriverContextP ctx, struct dri_drawable *dri_drawable);
  81.     void (*swapBuffer)(VADriverContextP ctx, struct dri_drawable *dri_drawable);
  82.     union dri_buffer *(*getRenderingBuffer)(VADriverContextP ctx, struct dri_drawable *dri_drawable);
  83.     void (*close)(VADriverContextP ctx);
  84. #endif
  85. };
  86.  
  87. Bool isDRI2Connected(VADriverContextP ctx, char **driver_name);
  88. void free_drawable(VADriverContextP ctx, struct dri_drawable* dri_drawable);
  89. void free_drawable_hashtable(VADriverContextP ctx);
  90. struct dri_drawable *dri_get_drawable(VADriverContextP ctx, XID drawable);
  91. void dri_swap_buffer(VADriverContextP ctx, struct dri_drawable *dri_drawable);
  92. union dri_buffer *dri_get_rendering_buffer(VADriverContextP ctx, struct dri_drawable *dri_drawable);
  93.  
  94. #endif /* _VA_DRICOMMON_H_ */
  95.