Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. /**********************************************************
  2.  * Copyright 2009-2011 VMware, Inc. All rights reserved.
  3.  *
  4.  * Permission is hereby granted, free of charge, to any person
  5.  * obtaining a copy of this software and associated documentation
  6.  * files (the "Software"), to deal in the Software without
  7.  * restriction, including without limitation the rights to use, copy,
  8.  * modify, merge, publish, distribute, sublicense, and/or sell copies
  9.  * of the Software, and to permit persons to whom the Software is
  10.  * furnished to do so, subject to the following conditions:
  11.  *
  12.  * The above copyright notice and this permission notice shall be
  13.  * included in all copies or substantial portions of the Software.
  14.  *
  15.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  16.  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  17.  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  18.  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
  19.  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
  20.  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  21.  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  22.  * SOFTWARE.
  23.  *
  24.  *********************************************************
  25.  * Authors:
  26.  * Zack Rusin <zackr-at-vmware-dot-com>
  27.  * Thomas Hellstrom <thellstrom-at-vmware-dot-com>
  28.  */
  29.  
  30. #ifndef _XA_CONTEXT_H_
  31. #define _XA_CONTEXT_H_
  32. #include "xa_tracker.h"
  33. #include <stdint.h>
  34.  
  35. struct xa_context;
  36.  
  37. extern struct xa_context *xa_context_default(struct xa_tracker *xa);
  38.  
  39. extern struct xa_context *xa_context_create(struct xa_tracker *xa);
  40.  
  41. extern void xa_context_destroy(struct xa_context *r);
  42.  
  43. /**
  44.  * xa_yuv_planar_blit - 2D blit with color conversion and scaling.
  45.  *
  46.  * Performs a scaled blit with color conversion according to
  47.  * (R,G,B,A)^T = (CM)^T (Y,U,V,1)^T, where @conversion_matrix or CM in the
  48.  * formula is a four by four coefficient matrix. The input variable
  49.  * @yuv is an array of three xa_yuv_component surfaces.
  50.  */
  51. extern int xa_yuv_planar_blit(struct xa_context *r,
  52.                               int src_x,
  53.                               int src_y,
  54.                               int src_w,
  55.                               int src_h,
  56.                               int dst_x,
  57.                               int dst_y,
  58.                               int dst_w,
  59.                               int dst_h,
  60.                               struct xa_box *box,
  61.                               unsigned int num_boxes,
  62.                               const float conversion_matrix[],
  63.                               struct xa_surface *dst, struct xa_surface *yuv[]);
  64.  
  65. extern int xa_copy_prepare(struct xa_context *ctx,
  66.                            struct xa_surface *dst, struct xa_surface *src);
  67.  
  68. extern void xa_copy(struct xa_context *ctx,
  69.                     int dx, int dy, int sx, int sy, int width, int height);
  70.  
  71. extern void xa_copy_done(struct xa_context *ctx);
  72.  
  73. extern int xa_surface_dma(struct xa_context *ctx,
  74.                           struct xa_surface *srf,
  75.                           void *data,
  76.                           unsigned int byte_pitch,
  77.                           int to_surface, struct xa_box *boxes,
  78.                           unsigned int num_boxes);
  79.  
  80. extern void *xa_surface_map(struct xa_context *ctx,
  81.                             struct xa_surface *srf, unsigned int usage);
  82.  
  83. extern void xa_surface_unmap(struct xa_surface *srf);
  84.  
  85. extern int
  86. xa_solid_prepare(struct xa_context *ctx, struct xa_surface *dst,
  87.                  uint32_t fg);
  88. extern void
  89. xa_solid(struct xa_context *ctx, int x, int y, int width, int height);
  90.  
  91. extern void
  92. xa_solid_done(struct xa_context *ctx);
  93.  
  94. extern struct xa_fence *xa_fence_get(struct xa_context *ctx);
  95.  
  96. extern int xa_fence_wait(struct xa_fence *fence, uint64_t timeout);
  97.  
  98. extern void xa_fence_destroy(struct xa_fence *fence);
  99. #endif
  100.