diff options
author | Brian Paul <[email protected]> | 2010-05-06 15:10:51 -0600 |
---|---|---|
committer | Brian Paul <[email protected]> | 2010-05-06 15:19:02 -0600 |
commit | 1fce9d58cc70deaff284e1d9d0ffcb15b61e7595 (patch) | |
tree | 359a66509bf0a36ee3695663c4a103f59905504b /src/gallium/drivers/softpipe/sp_context.h | |
parent | 4b274f311c2c72e40e63c02e4a6f9f5ccc59f165 (diff) |
softpipe: fix dangling references to shaders in the TGSI executor
If a shader was bound to the fragment shader TGSI executor and it was
then deleted and a new shader was allocated at the same address as the
old shader, the new fragment shader would not get properly bound to
the TGSI machine and we'd wind up using the old one.
This would not have been a problem if shaders were refcounted.
Now the TGSI machine is owned by the context rather than the quad
pipeline's shader stage so that the softpipe_delete_fs_state()
function can access it.
Fixes sporadic failures of the piglit fp-long-alu test (fd.o bug 27989).
Diffstat (limited to 'src/gallium/drivers/softpipe/sp_context.h')
-rw-r--r-- | src/gallium/drivers/softpipe/sp_context.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/gallium/drivers/softpipe/sp_context.h b/src/gallium/drivers/softpipe/sp_context.h index 92607874b60..aa696257688 100644 --- a/src/gallium/drivers/softpipe/sp_context.h +++ b/src/gallium/drivers/softpipe/sp_context.h @@ -140,6 +140,8 @@ struct softpipe_context { struct sp_sampler_varient *frag_samplers_list[PIPE_MAX_SAMPLERS]; } tgsi; + struct tgsi_exec_machine *fs_machine; + /** The primitive drawing context */ struct draw_context *draw; |