X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Fllvmpipe%2Flp_state.h;h=94a21a0158bdde9ac64ace262419478598c25def;hb=294d8a71efe0d85d7212c9b0f465e8637cc25e77;hp=18143807c915136af46c8b588a5428d0b7d1808f;hpb=7662e3519bef3802024da3050b886068281e02b1;p=mesa.git diff --git a/src/gallium/drivers/llvmpipe/lp_state.h b/src/gallium/drivers/llvmpipe/lp_state.h index 18143807c91..94a21a0158b 100644 --- a/src/gallium/drivers/llvmpipe/lp_state.h +++ b/src/gallium/drivers/llvmpipe/lp_state.h @@ -32,10 +32,9 @@ #define LP_STATE_H #include "pipe/p_state.h" -#include "tgsi/tgsi_scan.h" #include "lp_jit.h" +#include "lp_state_fs.h" #include "gallivm/lp_bld.h" -#include "gallivm/lp_bld_sample.h" /* for struct lp_sampler_static_state */ #define LP_NEW_VIEWPORT 0x1 @@ -52,57 +51,18 @@ #define LP_NEW_SAMPLER_VIEW 0x800 #define LP_NEW_VERTEX 0x1000 #define LP_NEW_VS 0x2000 -#define LP_NEW_QUERY 0x4000 +#define LP_NEW_OCCLUSION_QUERY 0x4000 #define LP_NEW_BLEND_COLOR 0x8000 +#define LP_NEW_GS 0x10000 +#define LP_NEW_SO 0x20000 +#define LP_NEW_SO_BUFFERS 0x40000 + struct vertex_info; struct pipe_context; struct llvmpipe_context; -struct lp_fragment_shader; - - -struct lp_fragment_shader_variant_key -{ - struct pipe_depth_state depth; - struct pipe_stencil_state stencil[2]; - struct pipe_alpha_state alpha; - struct pipe_blend_state blend; - enum pipe_format zsbuf_format; - unsigned nr_cbufs:8; - unsigned flatshade:1; - unsigned scissor:1; - - struct { - ubyte colormask; - } cbuf_blend[PIPE_MAX_COLOR_BUFS]; - - struct lp_sampler_static_state sampler[PIPE_MAX_SAMPLERS]; -}; - - -struct lp_fragment_shader_variant -{ - struct lp_fragment_shader_variant_key key; - - LLVMValueRef function[2]; - - lp_jit_frag_func jit_function[2]; - - struct lp_fragment_shader_variant *next; -}; - - -/** Subclass of pipe_shader_state */ -struct lp_fragment_shader -{ - struct pipe_shader_state base; - - struct tgsi_shader_info info; - - struct lp_fragment_shader_variant *variants; -}; /** Subclass of pipe_shader_state */ @@ -112,6 +72,11 @@ struct lp_vertex_shader struct draw_vertex_shader *draw_data; }; +/** Subclass of pipe_shader_state */ +struct lp_geometry_shader { + struct pipe_shader_state shader; + struct draw_geometry_shader *draw_data; +}; /** Vertex element state */ struct lp_velems_state @@ -120,6 +85,10 @@ struct lp_velems_state struct pipe_vertex_element velem[PIPE_MAX_ATTRIBS]; }; +struct lp_so_state { + struct pipe_stream_output_info base; +}; + void llvmpipe_set_framebuffer_state(struct pipe_context *, @@ -128,6 +97,9 @@ llvmpipe_set_framebuffer_state(struct pipe_context *, void llvmpipe_update_fs(struct llvmpipe_context *lp); +void +llvmpipe_update_setup(struct llvmpipe_context *lp); + void llvmpipe_update_derived(struct llvmpipe_context *llvmpipe); @@ -152,8 +124,21 @@ llvmpipe_init_fs_funcs(struct llvmpipe_context *llvmpipe); void llvmpipe_init_vs_funcs(struct llvmpipe_context *llvmpipe); +void +llvmpipe_init_gs_funcs(struct llvmpipe_context *llvmpipe); + void llvmpipe_init_rasterizer_funcs(struct llvmpipe_context *llvmpipe); +void +llvmpipe_init_so_funcs(struct llvmpipe_context *llvmpipe); + +void +llvmpipe_prepare_vertex_sampling(struct llvmpipe_context *ctx, + unsigned num, + struct pipe_sampler_view **views); +void +llvmpipe_cleanup_vertex_sampling(struct llvmpipe_context *ctx); + #endif