diff options
author | Keith Whitwell <keithw@vmware.com> | 2009-11-19 18:55:18 -0800 |
---|---|---|
committer | Keith Whitwell <keithw@vmware.com> | 2009-11-19 18:55:18 -0800 |
commit | 47cef2bb8f5979ae690e89943f83060999a29a55 (patch) | |
tree | 55c7d53fc062717a0ac3f21d1437907129b1a048 /src/gallium/drivers/i965/brw_pipe_shader.c | |
parent | c58e20fbbb87b8dbd0c58294d4ad3d297c3aa747 (diff) |
i965g: add new state flag tracking fs signature changes
Diffstat (limited to 'src/gallium/drivers/i965/brw_pipe_shader.c')
-rw-r--r-- | src/gallium/drivers/i965/brw_pipe_shader.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/gallium/drivers/i965/brw_pipe_shader.c b/src/gallium/drivers/i965/brw_pipe_shader.c index 02bc8fa130..c755fa6889 100644 --- a/src/gallium/drivers/i965/brw_pipe_shader.c +++ b/src/gallium/drivers/i965/brw_pipe_shader.c @@ -58,9 +58,20 @@ static GLboolean has_flow_control(const struct tgsi_shader_info *info) static void brw_bind_fs_state( struct pipe_context *pipe, void *prog ) { + struct brw_fragment_shader *fs = (struct brw_fragment_shader *)prog; struct brw_context *brw = brw_context(pipe); + + if (brw->curr.fragment_shader == fs) + return; + + if (brw->curr.fragment_shader == NULL || + fs == NULL || + memcmp(&brw->curr.fragment_shader->signature, &fs->signature, + brw_fs_signature_size(&fs->signature)) != 0) { + brw->state.dirty.mesa |= PIPE_NEW_FRAGMENT_SIGNATURE; + } - brw->curr.fragment_shader = (struct brw_fragment_shader *)prog; + brw->curr.fragment_shader = fs; brw->state.dirty.mesa |= PIPE_NEW_FRAGMENT_SHADER; } |