summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/vc4/vc4_context.h
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2014-07-01 14:42:42 -0700
committerEric Anholt <[email protected]>2014-08-08 18:59:46 -0700
commitcf2d777fbe7fd87f9076d4bc0ad639b33e7ffb70 (patch)
treeb9e6ddfc4cc60ace7115107fba1ef552027cc9c2 /src/gallium/drivers/vc4/vc4_context.h
parent6cf86dd48786b08991714c338c6b506dde5f75bb (diff)
vc4: Add shader variant caching to handle FS output swizzle.
Diffstat (limited to 'src/gallium/drivers/vc4/vc4_context.h')
-rw-r--r--src/gallium/drivers/vc4/vc4_context.h11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/gallium/drivers/vc4/vc4_context.h b/src/gallium/drivers/vc4/vc4_context.h
index dedd98b4e5b..8258d3046c0 100644
--- a/src/gallium/drivers/vc4/vc4_context.h
+++ b/src/gallium/drivers/vc4/vc4_context.h
@@ -72,6 +72,9 @@ struct vc4_shader_uniform_info {
struct vc4_shader_state {
struct pipe_shader_state base;
+};
+
+struct vc4_compiled_shader {
struct vc4_bo *bo;
struct vc4_shader_uniform_info uniforms[2];
@@ -80,7 +83,8 @@ struct vc4_shader_state {
};
struct vc4_program_stateobj {
- struct vc4_shader_state *vs, *fs;
+ struct vc4_shader_state *bind_vs, *bind_fs;
+ struct vc4_compiled_shader *vs, *fs;
uint32_t dirty;
uint8_t num_exports;
/* Indexed by semantic name or TGSI_SEMANTIC_COUNT + semantic index
@@ -138,6 +142,8 @@ struct vc4_context {
struct primconvert_context *primconvert;
+ struct util_hash_table *fs_cache, *vs_cache;
+
/** @{ Current pipeline state objects */
struct pipe_scissor_state scissor;
struct pipe_blend_state *blend;
@@ -188,7 +194,7 @@ void vc4_simulator_flush(struct vc4_context *vc4,
void *vc4_simulator_alloc(struct vc4_screen *screen, uint32_t size);
void vc4_get_uniform_bo(struct vc4_context *vc4,
- struct vc4_shader_state *shader,
+ struct vc4_compiled_shader *shader,
struct vc4_constbuf_stateobj *cb,
int shader_index, struct vc4_bo **out_bo,
uint32_t *out_offset);
@@ -196,5 +202,6 @@ void vc4_get_uniform_bo(struct vc4_context *vc4,
void vc4_flush(struct pipe_context *pctx);
void vc4_emit_state(struct pipe_context *pctx);
void vc4_generate_code(struct qcompile *c);
+void vc4_update_compiled_shaders(struct vc4_context *vc4);
#endif /* VC4_CONTEXT_H */