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