Subversion Repositories Kolibri OS

Rev

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

  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. #ifndef LP_SETUP_H
  28. #define LP_SETUP_H
  29.  
  30. #include "pipe/p_compiler.h"
  31. #include "lp_jit.h"
  32.  
  33. struct draw_context;
  34. struct vertex_info;
  35.  
  36.  
  37. struct pipe_resource;
  38. struct pipe_query;
  39. struct pipe_surface;
  40. struct pipe_blend_color;
  41. struct pipe_screen;
  42. struct pipe_framebuffer_state;
  43. struct lp_fragment_shader_variant;
  44. struct lp_jit_context;
  45. struct llvmpipe_query;
  46. struct pipe_fence_handle;
  47. struct lp_setup_variant;
  48. struct lp_setup_context;
  49.  
  50. void lp_setup_reset( struct lp_setup_context *setup );
  51.  
  52. struct lp_setup_context *
  53. lp_setup_create( struct pipe_context *pipe,
  54.                  struct draw_context *draw );
  55.  
  56. void
  57. lp_setup_clear(struct lp_setup_context *setup,
  58.                const union pipe_color_union *clear_color,
  59.                double clear_depth,
  60.                unsigned clear_stencil,
  61.                unsigned flags);
  62.  
  63.  
  64.  
  65. void
  66. lp_setup_flush( struct lp_setup_context *setup,
  67.                 struct pipe_fence_handle **fence,
  68.                 const char *reason);
  69.  
  70.  
  71. void
  72. lp_setup_bind_framebuffer( struct lp_setup_context *setup,
  73.                            const struct pipe_framebuffer_state *fb );
  74.  
  75. void
  76. lp_setup_set_triangle_state( struct lp_setup_context *setup,
  77.                              unsigned cullmode,
  78.                              boolean front_is_ccw,
  79.                              boolean scissor,
  80.                              boolean half_pixel_center,
  81.                              boolean bottom_edge_rule);
  82.  
  83. void
  84. lp_setup_set_line_state( struct lp_setup_context *setup,
  85.                          float line_width);
  86.  
  87. void
  88. lp_setup_set_point_state( struct lp_setup_context *setup,
  89.                           float point_size,                          
  90.                           boolean point_size_per_vertex,
  91.                           uint sprite_coord_enable,
  92.                           uint sprite_coord_origin);
  93.  
  94. void
  95. lp_setup_set_setup_variant( struct lp_setup_context *setup,
  96.                             const struct lp_setup_variant *variant );
  97.  
  98. void
  99. lp_setup_set_fs_variant( struct lp_setup_context *setup,
  100.                          struct lp_fragment_shader_variant *variant );
  101.  
  102. void
  103. lp_setup_set_fs_constants(struct lp_setup_context *setup,
  104.                           unsigned num,
  105.                           struct pipe_constant_buffer *buffers);
  106.  
  107. void
  108. lp_setup_set_alpha_ref_value( struct lp_setup_context *setup,
  109.                               float alpha_ref_value );
  110.  
  111. void
  112. lp_setup_set_stencil_ref_values( struct lp_setup_context *setup,
  113.                                  const ubyte refs[2] );
  114.  
  115. void
  116. lp_setup_set_blend_color( struct lp_setup_context *setup,
  117.                           const struct pipe_blend_color *blend_color );
  118.  
  119. void
  120. lp_setup_set_scissors( struct lp_setup_context *setup,
  121.                        const struct pipe_scissor_state *scissors );
  122.  
  123. void
  124. lp_setup_set_fragment_sampler_views(struct lp_setup_context *setup,
  125.                                     unsigned num,
  126.                                     struct pipe_sampler_view **views);
  127.  
  128. void
  129. lp_setup_set_fragment_sampler_state(struct lp_setup_context *setup,
  130.                                     unsigned num,
  131.                                     struct pipe_sampler_state **samplers);
  132.  
  133. unsigned
  134. lp_setup_is_resource_referenced( const struct lp_setup_context *setup,
  135.                                 const struct pipe_resource *texture );
  136.  
  137. void
  138. lp_setup_set_flatshade_first( struct lp_setup_context *setup,
  139.                               boolean flatshade_first );
  140.  
  141. void
  142. lp_setup_set_rasterizer_discard( struct lp_setup_context *setup,
  143.                                  boolean rasterizer_discard );
  144.  
  145. void
  146. lp_setup_set_vertex_info( struct lp_setup_context *setup,
  147.                           struct vertex_info *info );
  148.  
  149. void
  150. lp_setup_begin_query(struct lp_setup_context *setup,
  151.                      struct llvmpipe_query *pq);
  152.  
  153. void
  154. lp_setup_end_query(struct lp_setup_context *setup,
  155.                    struct llvmpipe_query *pq);
  156.  
  157. static INLINE unsigned
  158. lp_clamp_scissor_idx(int idx)
  159. {
  160.    return (PIPE_MAX_VIEWPORTS > idx && idx >= 0) ? idx : 0;
  161. }
  162.  
  163. #endif
  164.