X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Fllvmpipe%2Flp_state_fs.h;h=2ddd8518834282d8f9e04d7bc2152d1458882cdd;hb=1d53603f1fb49dd839e427f161a8912cf58d80c8;hp=306f5f9669ae8b1274196ae5611db8d62558c450;hpb=75da95c50aedaa4b1abf51ec1dcaf2fe8ddd4f3b;p=mesa.git diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.h b/src/gallium/drivers/llvmpipe/lp_state_fs.h index 306f5f9669a..2ddd8518834 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.h +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.h @@ -47,6 +47,18 @@ struct lp_fragment_shader; #define RAST_EDGE_TEST 1 +struct lp_sampler_static_state +{ + /* + * These attributes are effectively interleaved for more sane key handling. + * However, there might be lots of null space if the amount of samplers and + * textures isn't the same. + */ + struct lp_static_sampler_state sampler_state; + struct lp_static_texture_state texture_state; +}; + + struct lp_fragment_shader_variant_key { struct pipe_depth_state depth; @@ -59,14 +71,17 @@ struct lp_fragment_shader_variant_key } alpha; unsigned nr_cbufs:8; - unsigned nr_samplers:8; /* actually derivable from just the shader */ + unsigned nr_samplers:8; /* actually derivable from just the shader */ + unsigned nr_sampler_views:8; /* actually derivable from just the shader */ unsigned flatshade:1; unsigned occlusion_count:1; + unsigned resource_1d:1; + unsigned depth_clamp:1; enum pipe_format zsbuf_format; enum pipe_format cbuf_format[PIPE_MAX_COLOR_BUFS]; - struct lp_sampler_static_state sampler[PIPE_MAX_SAMPLERS]; + struct lp_sampler_static_state state[PIPE_MAX_SHADER_SAMPLER_VIEWS]; }; @@ -83,6 +98,7 @@ struct lp_fragment_shader_variant struct lp_fragment_shader_variant_key key; boolean opaque; + uint8_t ps_inv_multiplier; struct gallivm_state *gallivm; @@ -134,5 +150,8 @@ void llvmpipe_remove_shader_variant(struct llvmpipe_context *lp, struct lp_fragment_shader_variant *variant); +boolean +llvmpipe_rasterization_disabled(struct llvmpipe_context *lp); + #endif /* LP_STATE_FS_H_ */