X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Fllvmpipe%2Flp_setup.h;h=8655259d27c72b3249c3f9f9d61fab6bd0e74a12;hb=4445e170bee23a3607ece0e010adef7058ac6a11;hp=ac9c3cc0ee96ccfcb0402e2e3616e88ebbdb0bec;hpb=d904ed88c1d957f662497343de7dc3e9fa743e47;p=mesa.git diff --git a/src/gallium/drivers/llvmpipe/lp_setup.h b/src/gallium/drivers/llvmpipe/lp_setup.h index ac9c3cc0ee9..8655259d27c 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup.h +++ b/src/gallium/drivers/llvmpipe/lp_setup.h @@ -28,106 +28,125 @@ #define LP_SETUP_H #include "pipe/p_compiler.h" +#include "lp_jit.h" -enum lp_interp { - LP_INTERP_CONSTANT, - LP_INTERP_LINEAR, - LP_INTERP_PERSPECTIVE, - LP_INTERP_POSITION, - LP_INTERP_FACING -}; +struct draw_context; +struct vertex_info; -/* Describes how to generate all the fragment shader inputs from the - * the vertices passed into our triangle/line/point functions. - * - * Vertices are treated as an array of float[4] values, indexed by - * src_index. - */ -struct lp_shader_input { - enum lp_interp interp; /* how to interpolate values */ - unsigned src_index; /* where to find values in incoming vertices */ -}; - -struct pipe_texture; + +struct pipe_resource; +struct pipe_query; struct pipe_surface; struct pipe_blend_color; -struct setup_context; -struct lp_fragment_shader; +struct pipe_screen; +struct pipe_framebuffer_state; +struct lp_fragment_shader_variant; struct lp_jit_context; +struct llvmpipe_query; +struct pipe_fence_handle; +struct lp_setup_variant; +struct lp_setup_context; + +void lp_setup_reset( struct lp_setup_context *setup ); -struct setup_context * -lp_setup_create( void ); +struct lp_setup_context * +lp_setup_create( struct pipe_context *pipe, + struct draw_context *draw ); void -lp_setup_clear(struct setup_context *setup, +lp_setup_clear(struct lp_setup_context *setup, const float *clear_color, double clear_depth, unsigned clear_stencil, unsigned flags); -void -lp_setup_tri(struct setup_context *setup, - const float (*v0)[4], - const float (*v1)[4], - const float (*v2)[4]); -void -lp_setup_line(struct setup_context *setup, - const float (*v0)[4], - const float (*v1)[4]); void -lp_setup_point( struct setup_context *setup, - const float (*v0)[4] ); +lp_setup_flush( struct lp_setup_context *setup, + struct pipe_fence_handle **fence, + const char *reason); void -lp_setup_flush( struct setup_context *setup, - unsigned flags ); +lp_setup_bind_framebuffer( struct lp_setup_context *setup, + const struct pipe_framebuffer_state *fb ); +void +lp_setup_set_triangle_state( struct lp_setup_context *setup, + unsigned cullmode, + boolean front_is_ccw, + boolean scissor, + boolean gl_rasterization_rules ); -void -lp_setup_bind_framebuffer( struct setup_context *setup, - struct pipe_surface *color, - struct pipe_surface *zstencil ); +void +lp_setup_set_line_state( struct lp_setup_context *setup, + float line_width); void -lp_setup_set_triangle_state( struct setup_context *setup, - unsigned cullmode, - boolean front_is_ccw ); +lp_setup_set_point_state( struct lp_setup_context *setup, + float point_size, + boolean point_size_per_vertex, + uint sprite_coord_enable, + uint sprite_coord_origin); void -lp_setup_set_fs_inputs( struct setup_context *setup, - const struct lp_shader_input *interp, - unsigned nr ); +lp_setup_set_setup_variant( struct lp_setup_context *setup, + const struct lp_setup_variant *variant ); void -lp_setup_set_fs( struct setup_context *setup, - struct lp_fragment_shader *fs ); +lp_setup_set_fs_variant( struct lp_setup_context *setup, + struct lp_fragment_shader_variant *variant ); void -lp_setup_set_fs_constants(struct setup_context *setup, - struct pipe_buffer *buffer); +lp_setup_set_fs_constants(struct lp_setup_context *setup, + struct pipe_resource *buffer); void -lp_setup_set_alpha_ref_value( struct setup_context *setup, +lp_setup_set_alpha_ref_value( struct lp_setup_context *setup, float alpha_ref_value ); void -lp_setup_set_blend_color( struct setup_context *setup, +lp_setup_set_stencil_ref_values( struct lp_setup_context *setup, + const ubyte refs[2] ); + +void +lp_setup_set_blend_color( struct lp_setup_context *setup, const struct pipe_blend_color *blend_color ); void -lp_setup_set_sampler_textures( struct setup_context *setup, - unsigned num, struct pipe_texture **texture); +lp_setup_set_scissor( struct lp_setup_context *setup, + const struct pipe_scissor_state *scissor ); -boolean -lp_setup_is_texture_referenced( struct setup_context *setup, - const struct pipe_texture *texture ); +void +lp_setup_set_fragment_sampler_views(struct lp_setup_context *setup, + unsigned num, + struct pipe_sampler_view **views); +void +lp_setup_set_fragment_sampler_state(struct lp_setup_context *setup, + unsigned num, + const struct pipe_sampler_state **samplers); -void -lp_setup_destroy( struct setup_context *setup ); +unsigned +lp_setup_is_resource_referenced( const struct lp_setup_context *setup, + const struct pipe_resource *texture ); + +void +lp_setup_set_flatshade_first( struct lp_setup_context *setup, + boolean flatshade_first ); + +void +lp_setup_set_vertex_info( struct lp_setup_context *setup, + struct vertex_info *info ); + +void +lp_setup_begin_query(struct lp_setup_context *setup, + struct llvmpipe_query *pq); + +void +lp_setup_end_query(struct lp_setup_context *setup, + struct llvmpipe_query *pq); #endif