projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
gallium: adapt to get_query_result interface change
[mesa.git]
/
src
/
gallium
/
drivers
/
llvmpipe
/
lp_state_fs.h
diff --git
a/src/gallium/drivers/llvmpipe/lp_state_fs.h
b/src/gallium/drivers/llvmpipe/lp_state_fs.h
index 593cd4de6beefa5fdf2a1e82e600fc55578fe21a..273d241d8fc1cbc16c0fbcc0c0ad1f0ce612a430 100644
(file)
--- a/
src/gallium/drivers/llvmpipe/lp_state_fs.h
+++ b/
src/gallium/drivers/llvmpipe/lp_state_fs.h
@@
-34,6
+34,8
@@
#include "pipe/p_state.h"
#include "tgsi/tgsi_scan.h" /* for tgsi_shader_info */
#include "gallivm/lp_bld_sample.h" /* for struct lp_sampler_static_state */
#include "pipe/p_state.h"
#include "tgsi/tgsi_scan.h" /* for tgsi_shader_info */
#include "gallivm/lp_bld_sample.h" /* for struct lp_sampler_static_state */
+#include "gallivm/lp_bld_tgsi.h" /* for lp_tgsi_info */
+#include "lp_bld_interp.h" /* for struct lp_shader_input */
struct tgsi_token;
struct tgsi_token;
@@
-49,27
+51,33
@@
struct lp_fragment_shader_variant_key
{
struct pipe_depth_state depth;
struct pipe_stencil_state stencil[2];
{
struct pipe_depth_state depth;
struct pipe_stencil_state stencil[2];
- struct pipe_alpha_state alpha;
struct pipe_blend_state blend;
struct pipe_blend_state blend;
- enum pipe_format zsbuf_format;
+
+ struct {
+ unsigned enabled:1;
+ unsigned func:3;
+ } alpha;
+
unsigned nr_cbufs:8;
unsigned nr_cbufs:8;
+ unsigned nr_samplers:8; /* actually derivable from just the shader */
unsigned flatshade:1;
unsigned flatshade:1;
- unsigned scissor:1;
unsigned occlusion_count:1;
unsigned occlusion_count:1;
- struct {
- ubyte colormask;
- } cbuf_blend[PIPE_MAX_COLOR_BUFS];
+ 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 sampler[PIPE_MAX_SAMPLERS];
};
+
+/** doubly-linked list item */
struct lp_fs_variant_list_item
{
struct lp_fragment_shader_variant *base;
struct lp_fs_variant_list_item *next, *prev;
};
struct lp_fs_variant_list_item
{
struct lp_fragment_shader_variant *base;
struct lp_fs_variant_list_item *next, *prev;
};
+
struct lp_fragment_shader_variant
{
struct lp_fragment_shader_variant_key key;
struct lp_fragment_shader_variant
{
struct lp_fragment_shader_variant_key key;
@@
-80,6
+88,9
@@
struct lp_fragment_shader_variant
lp_jit_frag_func jit_function[2];
lp_jit_frag_func jit_function[2];
+ /* Total number of LLVM instructions generated */
+ unsigned nr_instrs;
+
struct lp_fs_variant_list_item list_item_global, list_item_local;
struct lp_fragment_shader *shader;
struct lp_fs_variant_list_item list_item_global, list_item_local;
struct lp_fragment_shader *shader;
@@
-93,15
+104,29
@@
struct lp_fragment_shader
{
struct pipe_shader_state base;
{
struct pipe_shader_state base;
- struct
tgsi_shader
_info info;
+ struct
lp_tgsi
_info info;
struct lp_fs_variant_list_item variants;
struct lp_fs_variant_list_item variants;
+ struct draw_fragment_shader *draw_data;
+
/* For debugging/profiling purposes */
/* For debugging/profiling purposes */
+ unsigned variant_key_size;
unsigned no;
unsigned variants_created;
unsigned variants_cached;
unsigned no;
unsigned variants_created;
unsigned variants_cached;
+
+ /** Fragment shader input interpolation info */
+ struct lp_shader_input inputs[PIPE_MAX_SHADER_INPUTS];
};
};
+void
+lp_debug_fs_variant(const struct lp_fragment_shader_variant *variant);
+
+void
+llvmpipe_remove_shader_variant(struct llvmpipe_context *lp,
+ struct lp_fragment_shader_variant *variant);
+
+
#endif /* LP_STATE_FS_H_ */
#endif /* LP_STATE_FS_H_ */