Subversion Repositories Kolibri OS

Rev

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_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. }
  327.