i965: Save meta stencil blit programs in the context.
authorKenneth Graunke <kenneth@whitecape.org>
Thu, 19 Jun 2014 05:25:33 +0000 (22:25 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Sat, 21 Jun 2014 17:47:47 +0000 (10:47 -0700)
commita20994d61677adea7f15facbc6bb025f32b37c93
tree0df674e08581a6167e693f8272bf813c5d3752ea
parentdfaf6116c9d29b01633601b09c6846c21383aaa9
i965: Save meta stencil blit programs in the context.

When the last context in a share group is destroyed, the hash table
containing all of the shader programs (ctx->Shared->ShaderObjects) is
destroyed, throwing away all of the shader programs.

Using a static variable to store program IDs ends up holding on to them
after this, so we think we still have a compiled program, when it
actually got destroyed.  _mesa_UseProgram then hits GL errors, since no
program by that ID exists.

Instead, store the program IDs in the context, so we know to recompile
if our context gets destroyed and the application creates another one.

Fixes es3conform tests when run without -minfmt (where it creates
separate contexts for testing each visual).

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=77865
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Cc: "10.2" <mesa-stable@lists.freedesktop.org>
src/mesa/drivers/dri/i965/brw_context.h
src/mesa/drivers/dri/i965/brw_meta_stencil_blit.c