Home | History | Annotate | Download | only in llvmpipe
      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 float *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 gl_rasterization_rules );
     81 
     82 void
     83 lp_setup_set_line_state( struct lp_setup_context *setup,
     84                          float line_width);
     85 
     86 void
     87 lp_setup_set_point_state( struct lp_setup_context *setup,
     88                           float point_size,
     89                           boolean point_size_per_vertex,
     90                           uint sprite_coord_enable,
     91                           uint sprite_coord_origin);
     92 
     93 void
     94 lp_setup_set_setup_variant( struct lp_setup_context *setup,
     95 			    const struct lp_setup_variant *variant );
     96 
     97 void
     98 lp_setup_set_fs_variant( struct lp_setup_context *setup,
     99                          struct lp_fragment_shader_variant *variant );
    100 
    101 void
    102 lp_setup_set_fs_constants(struct lp_setup_context *setup,
    103                           struct pipe_resource *buffer);
    104 
    105 
    106 void
    107 lp_setup_set_alpha_ref_value( struct lp_setup_context *setup,
    108                               float alpha_ref_value );
    109 
    110 void
    111 lp_setup_set_stencil_ref_values( struct lp_setup_context *setup,
    112                                  const ubyte refs[2] );
    113 
    114 void
    115 lp_setup_set_blend_color( struct lp_setup_context *setup,
    116                           const struct pipe_blend_color *blend_color );
    117 
    118 void
    119 lp_setup_set_scissor( struct lp_setup_context *setup,
    120                       const struct pipe_scissor_state *scissor );
    121 
    122 void
    123 lp_setup_set_fragment_sampler_views(struct lp_setup_context *setup,
    124                                     unsigned num,
    125                                     struct pipe_sampler_view **views);
    126 
    127 void
    128 lp_setup_set_fragment_sampler_state(struct lp_setup_context *setup,
    129                                     unsigned num,
    130                                     struct pipe_sampler_state **samplers);
    131 
    132 unsigned
    133 lp_setup_is_resource_referenced( const struct lp_setup_context *setup,
    134                                 const struct pipe_resource *texture );
    135 
    136 void
    137 lp_setup_set_flatshade_first( struct lp_setup_context *setup,
    138                               boolean flatshade_first );
    139 
    140 void
    141 lp_setup_set_vertex_info( struct lp_setup_context *setup,
    142                           struct vertex_info *info );
    143 
    144 void
    145 lp_setup_begin_query(struct lp_setup_context *setup,
    146                      struct llvmpipe_query *pq);
    147 
    148 void
    149 lp_setup_end_query(struct lp_setup_context *setup,
    150                    struct llvmpipe_query *pq);
    151 
    152 #endif
    153