Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
5564 | serge | 1 | /* |
2 | * Copyright 2010 Red Hat Inc. |
||
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 | * on the rights to use, copy, modify, merge, publish, distribute, sub |
||
8 | * license, and/or sell copies of the Software, and to permit persons to whom |
||
9 | * the 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 NON-INFRINGEMENT. IN NO EVENT SHALL |
||
18 | * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, |
||
19 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR |
||
20 | * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE |
||
21 | * USE OR OTHER DEALINGS IN THE SOFTWARE. |
||
22 | */ |
||
23 | #include |
||
24 | #include |
||
25 | #include "pipe/p_defines.h" |
||
26 | #include "pipe/p_state.h" |
||
27 | #include "pipe/p_context.h" |
||
28 | #include "pipe/p_screen.h" |
||
29 | #include "util/u_memory.h" |
||
30 | #include "util/u_inlines.h" |
||
31 | #include "util/u_transfer.h" |
||
32 | |||
33 | static void noop_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *info) |
||
34 | { |
||
35 | } |
||
36 | |||
37 | static void noop_set_blend_color(struct pipe_context *ctx, |
||
38 | const struct pipe_blend_color *state) |
||
39 | { |
||
40 | } |
||
41 | |||
42 | static void *noop_create_blend_state(struct pipe_context *ctx, |
||
43 | const struct pipe_blend_state *state) |
||
44 | { |
||
45 | struct pipe_blend_state *nstate = CALLOC_STRUCT(pipe_blend_state); |
||
46 | |||
47 | if (nstate == NULL) { |
||
48 | return NULL; |
||
49 | } |
||
50 | *nstate = *state; |
||
51 | return nstate; |
||
52 | } |
||
53 | |||
54 | static void *noop_create_dsa_state(struct pipe_context *ctx, |
||
55 | const struct pipe_depth_stencil_alpha_state *state) |
||
56 | { |
||
57 | struct pipe_depth_stencil_alpha_state *nstate = CALLOC_STRUCT(pipe_depth_stencil_alpha_state); |
||
58 | |||
59 | if (nstate == NULL) { |
||
60 | return NULL; |
||
61 | } |
||
62 | *nstate = *state; |
||
63 | return nstate; |
||
64 | } |
||
65 | |||
66 | static void *noop_create_rs_state(struct pipe_context *ctx, |
||
67 | const struct pipe_rasterizer_state *state) |
||
68 | { |
||
69 | struct pipe_rasterizer_state *nstate = CALLOC_STRUCT(pipe_rasterizer_state); |
||
70 | |||
71 | if (nstate == NULL) { |
||
72 | return NULL; |
||
73 | } |
||
74 | *nstate = *state; |
||
75 | return nstate; |
||
76 | } |
||
77 | |||
78 | static void *noop_create_sampler_state(struct pipe_context *ctx, |
||
79 | const struct pipe_sampler_state *state) |
||
80 | { |
||
81 | struct pipe_sampler_state *nstate = CALLOC_STRUCT(pipe_sampler_state); |
||
82 | |||
83 | if (nstate == NULL) { |
||
84 | return NULL; |
||
85 | } |
||
86 | *nstate = *state; |
||
87 | return nstate; |
||
88 | } |
||
89 | |||
90 | static struct pipe_sampler_view *noop_create_sampler_view(struct pipe_context *ctx, |
||
91 | struct pipe_resource *texture, |
||
92 | const struct pipe_sampler_view *state) |
||
93 | { |
||
94 | struct pipe_sampler_view *sampler_view = CALLOC_STRUCT(pipe_sampler_view); |
||
95 | |||
96 | if (sampler_view == NULL) |
||
97 | return NULL; |
||
98 | /* initialize base object */ |
||
99 | pipe_resource_reference(&sampler_view->texture, texture); |
||
100 | pipe_reference_init(&sampler_view->reference, 1); |
||
101 | sampler_view->context = ctx; |
||
102 | return sampler_view; |
||
103 | } |
||
104 | |||
105 | static struct pipe_surface *noop_create_surface(struct pipe_context *ctx, |
||
106 | struct pipe_resource *texture, |
||
107 | const struct pipe_surface *surf_tmpl) |
||
108 | { |
||
109 | struct pipe_surface *surface = CALLOC_STRUCT(pipe_surface); |
||
110 | |||
111 | if (surface == NULL) |
||
112 | return NULL; |
||
113 | pipe_reference_init(&surface->reference, 1); |
||
114 | pipe_resource_reference(&surface->texture, texture); |
||
115 | surface->context = ctx; |
||
116 | surface->format = surf_tmpl->format; |
||
117 | surface->width = texture->width0; |
||
118 | surface->height = texture->height0; |
||
119 | surface->texture = texture; |
||
120 | surface->u.tex.first_layer = surf_tmpl->u.tex.first_layer; |
||
121 | surface->u.tex.last_layer = surf_tmpl->u.tex.last_layer; |
||
122 | surface->u.tex.level = surf_tmpl->u.tex.level; |
||
123 | |||
124 | return surface; |
||
125 | } |
||
126 | |||
127 | static void noop_set_sampler_views(struct pipe_context *ctx, unsigned shader, |
||
128 | unsigned start, unsigned count, |
||
129 | struct pipe_sampler_view **views) |
||
130 | { |
||
131 | } |
||
132 | |||
133 | static void noop_bind_sampler_states(struct pipe_context *ctx, unsigned shader, |
||
134 | unsigned start, unsigned count, |
||
135 | void **states) |
||
136 | { |
||
137 | } |
||
138 | |||
139 | static void noop_set_clip_state(struct pipe_context *ctx, |
||
140 | const struct pipe_clip_state *state) |
||
141 | { |
||
142 | } |
||
143 | |||
144 | static void noop_set_polygon_stipple(struct pipe_context *ctx, |
||
145 | const struct pipe_poly_stipple *state) |
||
146 | { |
||
147 | } |
||
148 | |||
149 | static void noop_set_sample_mask(struct pipe_context *pipe, unsigned sample_mask) |
||
150 | { |
||
151 | } |
||
152 | |||
153 | static void noop_set_scissor_states(struct pipe_context *ctx, |
||
154 | unsigned start_slot, |
||
155 | unsigned num_scissors, |
||
156 | const struct pipe_scissor_state *state) |
||
157 | { |
||
158 | } |
||
159 | |||
160 | static void noop_set_stencil_ref(struct pipe_context *ctx, |
||
161 | const struct pipe_stencil_ref *state) |
||
162 | { |
||
163 | } |
||
164 | |||
165 | static void noop_set_viewport_states(struct pipe_context *ctx, |
||
166 | unsigned start_slot, |
||
167 | unsigned num_viewports, |
||
168 | const struct pipe_viewport_state *state) |
||
169 | { |
||
170 | } |
||
171 | |||
172 | static void noop_set_framebuffer_state(struct pipe_context *ctx, |
||
173 | const struct pipe_framebuffer_state *state) |
||
174 | { |
||
175 | } |
||
176 | |||
177 | static void noop_set_constant_buffer(struct pipe_context *ctx, |
||
178 | uint shader, uint index, |
||
179 | struct pipe_constant_buffer *cb) |
||
180 | { |
||
181 | } |
||
182 | |||
183 | |||
184 | static void noop_sampler_view_destroy(struct pipe_context *ctx, |
||
185 | struct pipe_sampler_view *state) |
||
186 | { |
||
187 | pipe_resource_reference(&state->texture, NULL); |
||
188 | FREE(state); |
||
189 | } |
||
190 | |||
191 | |||
192 | static void noop_surface_destroy(struct pipe_context *ctx, |
||
193 | struct pipe_surface *surface) |
||
194 | { |
||
195 | pipe_resource_reference(&surface->texture, NULL); |
||
196 | FREE(surface); |
||
197 | } |
||
198 | |||
199 | static void noop_bind_state(struct pipe_context *ctx, void *state) |
||
200 | { |
||
201 | } |
||
202 | |||
203 | static void noop_delete_state(struct pipe_context *ctx, void *state) |
||
204 | { |
||
205 | FREE(state); |
||
206 | } |
||
207 | |||
208 | static void noop_delete_vertex_element(struct pipe_context *ctx, void *state) |
||
209 | { |
||
210 | FREE(state); |
||
211 | } |
||
212 | |||
213 | |||
214 | static void noop_set_index_buffer(struct pipe_context *ctx, |
||
215 | const struct pipe_index_buffer *ib) |
||
216 | { |
||
217 | } |
||
218 | |||
219 | static void noop_set_vertex_buffers(struct pipe_context *ctx, |
||
220 | unsigned start_slot, unsigned count, |
||
221 | const struct pipe_vertex_buffer *buffers) |
||
222 | { |
||
223 | } |
||
224 | |||
225 | static void *noop_create_vertex_elements(struct pipe_context *ctx, |
||
226 | unsigned count, |
||
227 | const struct pipe_vertex_element *state) |
||
228 | { |
||
229 | struct pipe_vertex_element *nstate = CALLOC_STRUCT(pipe_vertex_element); |
||
230 | |||
231 | if (nstate == NULL) { |
||
232 | return NULL; |
||
233 | } |
||
234 | *nstate = *state; |
||
235 | return nstate; |
||
236 | } |
||
237 | |||
238 | static void *noop_create_shader_state(struct pipe_context *ctx, |
||
239 | const struct pipe_shader_state *state) |
||
240 | { |
||
241 | struct pipe_shader_state *nstate = CALLOC_STRUCT(pipe_shader_state); |
||
242 | |||
243 | if (nstate == NULL) { |
||
244 | return NULL; |
||
245 | } |
||
246 | *nstate = *state; |
||
247 | return nstate; |
||
248 | } |
||
249 | |||
250 | static struct pipe_stream_output_target *noop_create_stream_output_target( |
||
251 | struct pipe_context *ctx, |
||
252 | struct pipe_resource *res, |
||
253 | unsigned buffer_offset, |
||
254 | unsigned buffer_size) |
||
255 | { |
||
256 | struct pipe_stream_output_target *t = CALLOC_STRUCT(pipe_stream_output_target); |
||
257 | if (!t) |
||
258 | return NULL; |
||
259 | |||
260 | pipe_reference_init(&t->reference, 1); |
||
261 | pipe_resource_reference(&t->buffer, res); |
||
262 | t->buffer_offset = buffer_offset; |
||
263 | t->buffer_size = buffer_size; |
||
264 | return t; |
||
265 | } |
||
266 | |||
267 | static void noop_stream_output_target_destroy(struct pipe_context *ctx, |
||
268 | struct pipe_stream_output_target *t) |
||
269 | { |
||
270 | pipe_resource_reference(&t->buffer, NULL); |
||
271 | FREE(t); |
||
272 | } |
||
273 | |||
274 | static void noop_set_stream_output_targets(struct pipe_context *ctx, |
||
275 | unsigned num_targets, |
||
276 | struct pipe_stream_output_target **targets, |
||
277 | const unsigned *offsets) |
||
278 | { |
||
279 | } |
||
280 | |||
281 | void noop_init_state_functions(struct pipe_context *ctx); |
||
282 | |||
283 | void noop_init_state_functions(struct pipe_context *ctx) |
||
284 | { |
||
285 | ctx->create_blend_state = noop_create_blend_state; |
||
286 | ctx->create_depth_stencil_alpha_state = noop_create_dsa_state; |
||
287 | ctx->create_fs_state = noop_create_shader_state; |
||
288 | ctx->create_rasterizer_state = noop_create_rs_state; |
||
289 | ctx->create_sampler_state = noop_create_sampler_state; |
||
290 | ctx->create_sampler_view = noop_create_sampler_view; |
||
291 | ctx->create_surface = noop_create_surface; |
||
292 | ctx->create_vertex_elements_state = noop_create_vertex_elements; |
||
293 | ctx->create_vs_state = noop_create_shader_state; |
||
294 | ctx->bind_blend_state = noop_bind_state; |
||
295 | ctx->bind_depth_stencil_alpha_state = noop_bind_state; |
||
296 | ctx->bind_sampler_states = noop_bind_sampler_states; |
||
297 | ctx->bind_fs_state = noop_bind_state; |
||
298 | ctx->bind_rasterizer_state = noop_bind_state; |
||
299 | ctx->bind_vertex_elements_state = noop_bind_state; |
||
300 | ctx->bind_vs_state = noop_bind_state; |
||
301 | ctx->delete_blend_state = noop_delete_state; |
||
302 | ctx->delete_depth_stencil_alpha_state = noop_delete_state; |
||
303 | ctx->delete_fs_state = noop_delete_state; |
||
304 | ctx->delete_rasterizer_state = noop_delete_state; |
||
305 | ctx->delete_sampler_state = noop_delete_state; |
||
306 | ctx->delete_vertex_elements_state = noop_delete_vertex_element; |
||
307 | ctx->delete_vs_state = noop_delete_state; |
||
308 | ctx->set_blend_color = noop_set_blend_color; |
||
309 | ctx->set_clip_state = noop_set_clip_state; |
||
310 | ctx->set_constant_buffer = noop_set_constant_buffer; |
||
311 | ctx->set_sampler_views = noop_set_sampler_views; |
||
312 | ctx->set_framebuffer_state = noop_set_framebuffer_state; |
||
313 | ctx->set_polygon_stipple = noop_set_polygon_stipple; |
||
314 | ctx->set_sample_mask = noop_set_sample_mask; |
||
315 | ctx->set_scissor_states = noop_set_scissor_states; |
||
316 | ctx->set_stencil_ref = noop_set_stencil_ref; |
||
317 | ctx->set_vertex_buffers = noop_set_vertex_buffers; |
||
318 | ctx->set_index_buffer = noop_set_index_buffer; |
||
319 | ctx->set_viewport_states = noop_set_viewport_states; |
||
320 | ctx->sampler_view_destroy = noop_sampler_view_destroy; |
||
321 | ctx->surface_destroy = noop_surface_destroy; |
||
322 | ctx->draw_vbo = noop_draw_vbo; |
||
323 | ctx->create_stream_output_target = noop_create_stream_output_target; |
||
324 | ctx->stream_output_target_destroy = noop_stream_output_target_destroy; |
||
325 | ctx->set_stream_output_targets = noop_set_stream_output_targets; |
||
326 | } |