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