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