Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5361 serge 1
/*
2
 * Copyright © 2006 Intel Corporation
3
 *
4
 * Permission is hereby granted, free of charge, to any person obtaining a
5
 * copy of this software and associated documentation files (the "Software"),
6
 * to deal in the Software without restriction, including without limitation
7
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8
 * and/or sell copies of the Software, and to permit persons to whom the
9
 * Software is furnished to do so, subject to the following conditions:
10
 *
11
 * The above copyright notice and this permission notice (including the next
12
 * paragraph) shall be included in all copies or substantial portions of the
13
 * Software.
14
 *
15
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
18
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21
 * DEALINGS IN THE SOFTWARE.
22
 *
23
 * Authors:
24
 *    Xiang Haihao 
25
 *
26
 */
27
 
28
#ifndef _I965_RENDER_H_
29
#define _I965_RENDER_H_
30
 
31
#define MAX_SAMPLERS            16
32
#define MAX_RENDER_SURFACES     (MAX_SAMPLERS + 1)
33
 
34
#define NUM_RENDER_KERNEL       3
35
 
36
#define VA_SRC_COLOR_MASK       0x000000f0
37
 
38
#include "i965_post_processing.h"
39
 
40
struct i965_kernel;
41
 
42
struct i965_render_state
43
{
44
    struct {
45
        dri_bo *vertex_buffer;
46
    } vb;
47
 
48
    struct {
49
        dri_bo *state;
50
    } vs;
51
 
52
    struct {
53
        dri_bo *state;
54
    } sf;
55
 
56
    struct {
57
        int sampler_count;
58
        dri_bo *sampler;
59
        dri_bo *state;
60
        dri_bo *surface_state_binding_table_bo;
61
    } wm;
62
 
63
    struct {
64
        dri_bo *state;
65
        dri_bo *viewport;
66
        dri_bo *blend;
67
        dri_bo *depth_stencil;
68
    } cc;
69
 
70
    struct {
71
        dri_bo *bo;
72
    } curbe;
73
 
74
    unsigned short interleaved_uv;
75
    unsigned short inited;
76
    struct intel_region *draw_region;
77
 
78
    int pp_flag; /* 0: disable, 1: enable */
79
 
80
    struct i965_kernel render_kernels[3];
81
 
82
    struct {
83
        dri_bo *bo;
84
        int bo_size;
85
        unsigned int end_offset;
86
    } instruction_state;
87
 
88
    struct {
89
        dri_bo *bo;
90
    } indirect_state;
91
 
92
    struct {
93
        dri_bo *bo;
94
        int bo_size;
95
        unsigned int end_offset;
96
    } dynamic_state;
97
 
98
    unsigned int curbe_offset;
99
    int curbe_size;
100
 
101
    unsigned int sampler_offset;
102
    int sampler_size;
103
 
104
    unsigned int cc_viewport_offset;
105
    int cc_viewport_size;
106
 
107
    unsigned int cc_state_offset;
108
    int cc_state_size;
109
 
110
    unsigned int blend_state_offset;
111
    int blend_state_size;
112
 
113
    unsigned int sf_clip_offset;
114
    int sf_clip_size;
115
 
116
    unsigned int scissor_offset;
117
    int scissor_size;
118
 
119
    void (*render_put_surface)(VADriverContextP ctx, struct object_surface *,
120
                               const VARectangle *src_rec,
121
                               const VARectangle *dst_rect,
122
                               unsigned int flags);
123
    void (*render_put_subpicture)(VADriverContextP ctx, struct object_surface *,
124
                               const VARectangle *src_rec,
125
                               const VARectangle *dst_rect);
126
    void (*render_terminate)(VADriverContextP ctx);
127
};
128
 
129
bool i965_render_init(VADriverContextP ctx);
130
void i965_render_terminate(VADriverContextP ctx);
131
 
132
void
133
intel_render_put_surface(
134
    VADriverContextP   ctx,
135
    struct object_surface *obj_surface,
136
    const VARectangle *src_rect,
137
    const VARectangle *dst_rect,
138
    unsigned int       flags
139
);
140
 
141
void
142
intel_render_put_subpicture(
143
    VADriverContextP   ctx,
144
    struct object_surface *obj_surface,
145
    const VARectangle *src_rect,
146
    const VARectangle *dst_rect
147
);
148
 
149
struct gen7_surface_state;
150
 
151
void
152
gen7_render_set_surface_scs(struct gen7_surface_state *ss);
153
 
154
struct gen8_surface_state;
155
void
156
gen8_render_set_surface_scs(struct gen8_surface_state *ss);
157
 
158
extern bool gen8_render_init(VADriverContextP ctx);
159
 
160
#endif /* _I965_RENDER_H_ */