Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4358 Serge 1
/**************************************************************************
2
 *
3
 * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
4
 * All Rights Reserved.
5
 *
6
 * Permission is hereby granted, free of charge, to any person obtaining a
7
 * copy of this software and associated documentation files (the
8
 * "Software"), to deal in the Software without restriction, including
9
 * without limitation the rights to use, copy, modify, merge, publish,
10
 * distribute, sub license, and/or sell copies of the Software, and to
11
 * permit persons to whom the Software is furnished to do so, subject to
12
 * the following conditions:
13
 *
14
 * The above copyright notice and this permission notice (including the
15
 * next paragraph) shall be included in all copies or substantial portions
16
 * of the Software.
17
 *
18
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
21
 * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
22
 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23
 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24
 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
 *
26
 **************************************************************************/
27
 
28
/* Authors:  Keith Whitwell 
29
 */
30
 
31
#ifndef LP_STATE_H
32
#define LP_STATE_H
33
 
34
#include "pipe/p_state.h"
35
#include "lp_jit.h"
36
#include "lp_state_fs.h"
37
#include "gallivm/lp_bld.h"
38
 
39
 
40
#define LP_NEW_VIEWPORT      0x1
41
#define LP_NEW_RASTERIZER    0x2
42
#define LP_NEW_FS            0x4
43
#define LP_NEW_BLEND         0x8
44
#define LP_NEW_CLIP          0x10
45
#define LP_NEW_SCISSOR       0x20
46
#define LP_NEW_STIPPLE       0x40
47
#define LP_NEW_FRAMEBUFFER   0x80
48
#define LP_NEW_DEPTH_STENCIL_ALPHA 0x100
49
#define LP_NEW_CONSTANTS     0x200
50
#define LP_NEW_SAMPLER       0x400
51
#define LP_NEW_SAMPLER_VIEW  0x800
52
#define LP_NEW_VERTEX        0x1000
53
#define LP_NEW_VS            0x2000
54
#define LP_NEW_OCCLUSION_QUERY 0x4000
55
#define LP_NEW_BLEND_COLOR   0x8000
56
#define LP_NEW_GS            0x10000
57
#define LP_NEW_SO            0x20000
58
#define LP_NEW_SO_BUFFERS    0x40000
59
 
60
 
61
 
62
struct vertex_info;
63
struct pipe_context;
64
struct llvmpipe_context;
65
 
66
 
67
 
68
/** Subclass of pipe_shader_state */
69
struct lp_vertex_shader
70
{
71
   struct pipe_shader_state shader;
72
   struct draw_vertex_shader *draw_data;
73
};
74
 
75
/** Subclass of pipe_shader_state */
76
struct lp_geometry_shader {
77
   struct pipe_shader_state shader;
78
   struct draw_geometry_shader *draw_data;
79
};
80
 
81
/** Vertex element state */
82
struct lp_velems_state
83
{
84
   unsigned count;
85
   struct pipe_vertex_element velem[PIPE_MAX_ATTRIBS];
86
};
87
 
88
struct lp_so_state {
89
   struct pipe_stream_output_info base;
90
};
91
 
92
 
93
void
94
llvmpipe_set_framebuffer_state(struct pipe_context *,
95
                               const struct pipe_framebuffer_state *);
96
 
97
void
98
llvmpipe_update_fs(struct llvmpipe_context *lp);
99
 
100
void
101
llvmpipe_update_setup(struct llvmpipe_context *lp);
102
 
103
void
104
llvmpipe_update_derived(struct llvmpipe_context *llvmpipe);
105
 
106
void
107
llvmpipe_init_sampler_funcs(struct llvmpipe_context *llvmpipe);
108
 
109
void
110
llvmpipe_init_blend_funcs(struct llvmpipe_context *llvmpipe);
111
 
112
void
113
llvmpipe_init_vertex_funcs(struct llvmpipe_context *llvmpipe);
114
 
115
void
116
llvmpipe_init_draw_funcs(struct llvmpipe_context *llvmpipe);
117
 
118
void
119
llvmpipe_init_clip_funcs(struct llvmpipe_context *llvmpipe);
120
 
121
void
122
llvmpipe_init_fs_funcs(struct llvmpipe_context *llvmpipe);
123
 
124
void
125
llvmpipe_init_vs_funcs(struct llvmpipe_context *llvmpipe);
126
 
127
void
128
llvmpipe_init_gs_funcs(struct llvmpipe_context *llvmpipe);
129
 
130
void
131
llvmpipe_init_rasterizer_funcs(struct llvmpipe_context *llvmpipe);
132
 
133
void
134
llvmpipe_init_so_funcs(struct llvmpipe_context *llvmpipe);
135
 
136
void
137
llvmpipe_prepare_vertex_sampling(struct llvmpipe_context *ctx,
138
                                 unsigned num,
139
                                 struct pipe_sampler_view **views);
140
void
141
llvmpipe_cleanup_vertex_sampling(struct llvmpipe_context *ctx);
142
 
143
 
144
void
145
llvmpipe_prepare_geometry_sampling(struct llvmpipe_context *ctx,
146
                                   unsigned num,
147
                                   struct pipe_sampler_view **views);
148
void
149
llvmpipe_cleanup_geometry_sampling(struct llvmpipe_context *ctx);
150
 
151
 
152
#endif