Subversion Repositories Kolibri OS

Rev

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

  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 <stdio.h>
  24. #include <errno.h>
  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_vs_sampler_view(struct pipe_context *ctx, unsigned count,
  128.                                         struct pipe_sampler_view **views)
  129. {
  130. }
  131.  
  132. static void noop_set_ps_sampler_view(struct pipe_context *ctx, unsigned count,
  133.                                         struct pipe_sampler_view **views)
  134. {
  135. }
  136.  
  137. static void noop_bind_sampler(struct pipe_context *ctx, unsigned count, void **states)
  138. {
  139. }
  140.  
  141. static void noop_set_clip_state(struct pipe_context *ctx,
  142.                                 const struct pipe_clip_state *state)
  143. {
  144. }
  145.  
  146. static void noop_set_polygon_stipple(struct pipe_context *ctx,
  147.                                          const struct pipe_poly_stipple *state)
  148. {
  149. }
  150.  
  151. static void noop_set_sample_mask(struct pipe_context *pipe, unsigned sample_mask)
  152. {
  153. }
  154.  
  155. static void noop_set_scissor_states(struct pipe_context *ctx,
  156.                                     unsigned start_slot,
  157.                                     unsigned num_scissors,
  158.                                     const struct pipe_scissor_state *state)
  159. {
  160. }
  161.  
  162. static void noop_set_stencil_ref(struct pipe_context *ctx,
  163.                                 const struct pipe_stencil_ref *state)
  164. {
  165. }
  166.  
  167. static void noop_set_viewport_states(struct pipe_context *ctx,
  168.                                      unsigned start_slot,
  169.                                      unsigned num_viewports,
  170.                                      const struct pipe_viewport_state *state)
  171. {
  172. }
  173.  
  174. static void noop_set_framebuffer_state(struct pipe_context *ctx,
  175.                                         const struct pipe_framebuffer_state *state)
  176. {
  177. }
  178.  
  179. static void noop_set_constant_buffer(struct pipe_context *ctx,
  180.                                         uint shader, uint index,
  181.                                         struct pipe_constant_buffer *cb)
  182. {
  183. }
  184.  
  185.  
  186. static void noop_sampler_view_destroy(struct pipe_context *ctx,
  187.                                 struct pipe_sampler_view *state)
  188. {
  189.         pipe_resource_reference(&state->texture, NULL);
  190.         FREE(state);
  191. }
  192.  
  193.  
  194. static void noop_surface_destroy(struct pipe_context *ctx,
  195.                                  struct pipe_surface *surface)
  196. {
  197.         pipe_resource_reference(&surface->texture, NULL);
  198.         FREE(surface);
  199. }
  200.  
  201. static void noop_bind_state(struct pipe_context *ctx, void *state)
  202. {
  203. }
  204.  
  205. static void noop_delete_state(struct pipe_context *ctx, void *state)
  206. {
  207.         FREE(state);
  208. }
  209.  
  210. static void noop_delete_vertex_element(struct pipe_context *ctx, void *state)
  211. {
  212.         FREE(state);
  213. }
  214.  
  215.  
  216. static void noop_set_index_buffer(struct pipe_context *ctx,
  217.                                         const struct pipe_index_buffer *ib)
  218. {
  219. }
  220.  
  221. static void noop_set_vertex_buffers(struct pipe_context *ctx,
  222.                                     unsigned start_slot, unsigned count,
  223.                                     const struct pipe_vertex_buffer *buffers)
  224. {
  225. }
  226.  
  227. static void *noop_create_vertex_elements(struct pipe_context *ctx,
  228.                                         unsigned count,
  229.                                         const struct pipe_vertex_element *state)
  230. {
  231.         struct pipe_vertex_element *nstate = CALLOC_STRUCT(pipe_vertex_element);
  232.  
  233.         if (nstate == NULL) {
  234.                 return NULL;
  235.         }
  236.         *nstate = *state;
  237.         return nstate;
  238. }
  239.  
  240. static void *noop_create_shader_state(struct pipe_context *ctx,
  241.                                         const struct pipe_shader_state *state)
  242. {
  243.         struct pipe_shader_state *nstate = CALLOC_STRUCT(pipe_shader_state);
  244.  
  245.         if (nstate == NULL) {
  246.                 return NULL;
  247.         }
  248.         *nstate = *state;
  249.         return nstate;
  250. }
  251.  
  252. static struct pipe_stream_output_target *noop_create_stream_output_target(
  253.       struct pipe_context *ctx,
  254.       struct pipe_resource *res,
  255.       unsigned buffer_offset,
  256.       unsigned buffer_size)
  257. {
  258.    struct pipe_stream_output_target *t = CALLOC_STRUCT(pipe_stream_output_target);
  259.    if (!t)
  260.       return NULL;
  261.  
  262.    pipe_reference_init(&t->reference, 1);
  263.    pipe_resource_reference(&t->buffer, res);
  264.    t->buffer_offset = buffer_offset;
  265.    t->buffer_size = buffer_size;
  266.    return t;
  267. }
  268.  
  269. static void noop_stream_output_target_destroy(struct pipe_context *ctx,
  270.                                       struct pipe_stream_output_target *t)
  271. {
  272.    pipe_resource_reference(&t->buffer, NULL);
  273.    FREE(t);
  274. }
  275.  
  276. static void noop_set_stream_output_targets(struct pipe_context *ctx,
  277.                            unsigned num_targets,
  278.                            struct pipe_stream_output_target **targets,
  279.                            unsigned append_bitmask)
  280. {
  281. }
  282.  
  283. void noop_init_state_functions(struct pipe_context *ctx);
  284.  
  285. void noop_init_state_functions(struct pipe_context *ctx)
  286. {
  287.         ctx->create_blend_state = noop_create_blend_state;
  288.         ctx->create_depth_stencil_alpha_state = noop_create_dsa_state;
  289.         ctx->create_fs_state = noop_create_shader_state;
  290.         ctx->create_rasterizer_state = noop_create_rs_state;
  291.         ctx->create_sampler_state = noop_create_sampler_state;
  292.         ctx->create_sampler_view = noop_create_sampler_view;
  293.         ctx->create_surface = noop_create_surface;
  294.         ctx->create_vertex_elements_state = noop_create_vertex_elements;
  295.         ctx->create_vs_state = noop_create_shader_state;
  296.         ctx->bind_blend_state = noop_bind_state;
  297.         ctx->bind_depth_stencil_alpha_state = noop_bind_state;
  298.         ctx->bind_fragment_sampler_states = noop_bind_sampler;
  299.         ctx->bind_fs_state = noop_bind_state;
  300.         ctx->bind_rasterizer_state = noop_bind_state;
  301.         ctx->bind_vertex_elements_state = noop_bind_state;
  302.         ctx->bind_vertex_sampler_states = noop_bind_sampler;
  303.         ctx->bind_vs_state = noop_bind_state;
  304.         ctx->delete_blend_state = noop_delete_state;
  305.         ctx->delete_depth_stencil_alpha_state = noop_delete_state;
  306.         ctx->delete_fs_state = noop_delete_state;
  307.         ctx->delete_rasterizer_state = noop_delete_state;
  308.         ctx->delete_sampler_state = noop_delete_state;
  309.         ctx->delete_vertex_elements_state = noop_delete_vertex_element;
  310.         ctx->delete_vs_state = noop_delete_state;
  311.         ctx->set_blend_color = noop_set_blend_color;
  312.         ctx->set_clip_state = noop_set_clip_state;
  313.         ctx->set_constant_buffer = noop_set_constant_buffer;
  314.         ctx->set_fragment_sampler_views = noop_set_ps_sampler_view;
  315.         ctx->set_framebuffer_state = noop_set_framebuffer_state;
  316.         ctx->set_polygon_stipple = noop_set_polygon_stipple;
  317.         ctx->set_sample_mask = noop_set_sample_mask;
  318.         ctx->set_scissor_states = noop_set_scissor_states;
  319.         ctx->set_stencil_ref = noop_set_stencil_ref;
  320.         ctx->set_vertex_buffers = noop_set_vertex_buffers;
  321.         ctx->set_index_buffer = noop_set_index_buffer;
  322.         ctx->set_vertex_sampler_views = noop_set_vs_sampler_view;
  323.         ctx->set_viewport_states = noop_set_viewport_states;
  324.         ctx->sampler_view_destroy = noop_sampler_view_destroy;
  325.         ctx->surface_destroy = noop_surface_destroy;
  326.         ctx->draw_vbo = noop_draw_vbo;
  327.         ctx->create_stream_output_target = noop_create_stream_output_target;
  328.         ctx->stream_output_target_destroy = noop_stream_output_target_destroy;
  329.         ctx->set_stream_output_targets = noop_set_stream_output_targets;
  330. }
  331.