renderer.h revision 54cb382ea55610688c97465ef048a4990b8fd4d7
1544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin/**************************************************************************
2544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin *
3544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * Copyright 2009 VMware, Inc.  All Rights Reserved.
459309337e40106f734efc1e33f956f6f1f4301acChia-I Wu * Copyright 2010 LunarG, Inc.  All Rights Reserved.
5544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin *
6544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * Permission is hereby granted, free of charge, to any person obtaining a
7544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * copy of this software and associated documentation files (the
8544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * "Software"), to deal in the Software without restriction, including
9544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * without limitation the rights to use, copy, modify, merge, publish,
10544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * distribute, sub license, and/or sell copies of the Software, and to
11544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * permit persons to whom the Software is furnished to do so, subject to
12544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * the following conditions:
13544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin *
14544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * The above copyright notice and this permission notice (including the
15544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * next paragraph) shall be included in all copies or substantial portions
16544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * of the Software.
17544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin *
18544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
21544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
22544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin *
26544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin **************************************************************************/
27544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin
28544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin#ifndef RENDERER_H
29544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin#define RENDERER_H
30544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin
31544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin#include "VG/openvg.h"
32544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin
33544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusinstruct renderer;
34544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin
35544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusinstruct vg_context;
36287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwellstruct pipe_resource;
37e5f0384ad06359aa1b9dc1b4bc6f475f7a119af2Roland Scheideggerstruct pipe_sampler_view;
38544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusinstruct pipe_surface;
39544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin
40544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusinstruct renderer *renderer_create(struct vg_context *owner);
41544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusinvoid renderer_destroy(struct renderer *);
42544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin
4359309337e40106f734efc1e33f956f6f1f4301acChia-I WuVGboolean renderer_copy_begin(struct renderer *renderer,
4459309337e40106f734efc1e33f956f6f1f4301acChia-I Wu                              struct pipe_surface *dst,
4559309337e40106f734efc1e33f956f6f1f4301acChia-I Wu                              VGboolean y0_top,
4659309337e40106f734efc1e33f956f6f1f4301acChia-I Wu                              struct pipe_sampler_view *src);
4759309337e40106f734efc1e33f956f6f1f4301acChia-I Wu
4859309337e40106f734efc1e33f956f6f1f4301acChia-I Wuvoid renderer_copy(struct renderer *renderer,
4959309337e40106f734efc1e33f956f6f1f4301acChia-I Wu                   VGint x, VGint y, VGint w, VGint h,
5059309337e40106f734efc1e33f956f6f1f4301acChia-I Wu                   VGint sx, VGint sy, VGint sw, VGint sh);
5159309337e40106f734efc1e33f956f6f1f4301acChia-I Wu
5259309337e40106f734efc1e33f956f6f1f4301acChia-I Wuvoid renderer_copy_end(struct renderer *renderer);
5359309337e40106f734efc1e33f956f6f1f4301acChia-I Wu
54e31a04ea3bc957b2a43b910b1f51807b12da18a6Chia-I WuVGboolean renderer_drawtex_begin(struct renderer *renderer,
55e31a04ea3bc957b2a43b910b1f51807b12da18a6Chia-I Wu                                 struct pipe_sampler_view *src);
56e31a04ea3bc957b2a43b910b1f51807b12da18a6Chia-I Wu
57e31a04ea3bc957b2a43b910b1f51807b12da18a6Chia-I Wuvoid renderer_drawtex(struct renderer *renderer,
58e31a04ea3bc957b2a43b910b1f51807b12da18a6Chia-I Wu                      VGint x, VGint y, VGint w, VGint h,
59e31a04ea3bc957b2a43b910b1f51807b12da18a6Chia-I Wu                      VGint sx, VGint sy, VGint sw, VGint sh);
60e31a04ea3bc957b2a43b910b1f51807b12da18a6Chia-I Wu
61e31a04ea3bc957b2a43b910b1f51807b12da18a6Chia-I Wuvoid renderer_drawtex_end(struct renderer *renderer);
62e31a04ea3bc957b2a43b910b1f51807b12da18a6Chia-I Wu
6354cb382ea55610688c97465ef048a4990b8fd4d7Chia-I WuVGboolean renderer_scissor_begin(struct renderer *renderer,
6454cb382ea55610688c97465ef048a4990b8fd4d7Chia-I Wu                                 VGboolean restore_dsa);
6554cb382ea55610688c97465ef048a4990b8fd4d7Chia-I Wu
6654cb382ea55610688c97465ef048a4990b8fd4d7Chia-I Wuvoid renderer_scissor(struct renderer *renderer,
6754cb382ea55610688c97465ef048a4990b8fd4d7Chia-I Wu                      VGint x, VGint y, VGint width, VGint height);
6854cb382ea55610688c97465ef048a4990b8fd4d7Chia-I Wu
6954cb382ea55610688c97465ef048a4990b8fd4d7Chia-I Wuvoid renderer_scissor_end(struct renderer *renderer);
7054cb382ea55610688c97465ef048a4990b8fd4d7Chia-I Wu
71544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusinvoid renderer_draw_quad(struct renderer *,
72544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin                        VGfloat x1, VGfloat y1,
73544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin                        VGfloat x2, VGfloat y2,
74544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin                        VGfloat depth);
75544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusinvoid renderer_draw_texture(struct renderer *,
76287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell                           struct pipe_resource *texture,
77544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin                           VGfloat x1offset, VGfloat y1offset,
78544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin                           VGfloat x2offset, VGfloat y2offset,
79544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin                           VGfloat x1, VGfloat y1,
80544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin                           VGfloat x2, VGfloat y2);
81544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusinvoid renderer_texture_quad(struct renderer *,
82287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell                           struct pipe_resource *texture,
83544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin                           VGfloat x1offset, VGfloat y1offset,
84544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin                           VGfloat x2offset, VGfloat y2offset,
85544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin                           VGfloat x1, VGfloat y1,
86544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin                           VGfloat x2, VGfloat y2,
87544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin                           VGfloat x3, VGfloat y3,
88544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin                           VGfloat x4, VGfloat y4);
89544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusinvoid renderer_copy_texture(struct renderer *r,
90e5f0384ad06359aa1b9dc1b4bc6f475f7a119af2Roland Scheidegger                           struct pipe_sampler_view *src,
91544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin                           VGfloat sx1, VGfloat sy1,
92544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin                           VGfloat sx2, VGfloat sy2,
93287c94ea4987033f9c99a2f91c5750c9083504caKeith Whitwell                           struct pipe_resource *dst,
94544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin                           VGfloat dx1, VGfloat dy1,
95544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin                           VGfloat dx2, VGfloat dy2);
96544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusinvoid renderer_copy_surface(struct renderer *r,
97544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin                           struct pipe_surface *src,
98544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin                           int sx1, int sy1,
99544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin                           int sx2, int sy2,
100544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin                           struct pipe_surface *dst,
101544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin                           int dx1, int dy1,
102544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin                           int dx2, int dy2,
103544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin                           float z, unsigned filter);
104544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin
105544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin
106544dd4b11f7be76bb00fe29a60eaf2772dcc69caZack Rusin#endif
107