freedreno/a3xx: add blend state
[mesa.git] / src / gallium / drivers / ilo / ilo_blitter.h
1 /*
2 * Mesa 3-D graphics library
3 *
4 * Copyright (C) 2013 LunarG, Inc.
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the "Software"),
8 * to deal in the Software without restriction, including without limitation
9 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
10 * and/or sell copies of the Software, and to permit persons to whom the
11 * Software is furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included
14 * in all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
23 *
24 * Authors:
25 * Chia-I Wu <olv@lunarg.com>
26 */
27
28 #ifndef ILO_BLITTER_H
29 #define ILO_BLITTER_H
30
31 #include "ilo_common.h"
32
33 struct ilo_context;
34 struct blitter_context;
35
36 struct ilo_blitter {
37 struct ilo_context *ilo;
38
39 struct blitter_context *pipe_blitter;
40 };
41
42 struct ilo_blitter *
43 ilo_blitter_create(struct ilo_context *ilo);
44
45 void
46 ilo_blitter_destroy(struct ilo_blitter *blitter);
47
48 bool
49 ilo_blitter_pipe_blit(struct ilo_blitter *blitter,
50 const struct pipe_blit_info *info);
51
52 bool
53 ilo_blitter_pipe_copy_resource(struct ilo_blitter *blitter,
54 struct pipe_resource *dst, unsigned dst_level,
55 unsigned dst_x, unsigned dst_y, unsigned dst_z,
56 struct pipe_resource *src, unsigned src_level,
57 const struct pipe_box *src_box);
58
59 bool
60 ilo_blitter_pipe_clear_rt(struct ilo_blitter *blitter,
61 struct pipe_surface *rt,
62 const union pipe_color_union *color,
63 unsigned x, unsigned y,
64 unsigned width, unsigned height);
65
66 bool
67 ilo_blitter_pipe_clear_zs(struct ilo_blitter *blitter,
68 struct pipe_surface *zs,
69 unsigned clear_flags,
70 double depth, unsigned stencil,
71 unsigned x, unsigned y,
72 unsigned width, unsigned height);
73
74 bool
75 ilo_blitter_pipe_clear_fb(struct ilo_blitter *blitter,
76 unsigned buffers,
77 const union pipe_color_union *color,
78 double depth, unsigned stencil);
79
80 bool
81 ilo_blitter_blt_copy_resource(struct ilo_blitter *blitter,
82 struct pipe_resource *dst, unsigned dst_level,
83 unsigned dst_x, unsigned dst_y, unsigned dst_z,
84 struct pipe_resource *src, unsigned src_level,
85 const struct pipe_box *src_box);
86
87 bool
88 ilo_blitter_blt_clear_rt(struct ilo_blitter *blitter,
89 struct pipe_surface *rt,
90 const union pipe_color_union *color,
91 unsigned x, unsigned y,
92 unsigned width, unsigned height);
93
94 bool
95 ilo_blitter_blt_clear_zs(struct ilo_blitter *blitter,
96 struct pipe_surface *zs,
97 unsigned clear_flags,
98 double depth, unsigned stencil,
99 unsigned x, unsigned y,
100 unsigned width, unsigned height);
101
102 #endif /* ILO_BLITTER_H */