Hello, A user reported a crash in wine in finalize_textures (called via st_validate_state). In this particular case it was happening through st_BlitFramebuffer (piglit test sent), but there are a number of callsites of st_validate_state from st/mesa.
The reason it dies is that the fragment program isn't specified. Of course if that assumption were relaxed, it'd just crash later on in the process. Even though we specify _MaintainTexEnvProgram, that only gets bound somewhere down the line. One solution, which solved a number of different crashes for this user was to call _mesa_update_state(ctx) when making a context current for the first time. This normalizes a bunch of state, including setting the fragment/vertex programs which avoids the crash. Is this the right solution? Another thought I had was to call _mesa_update_state() from st_validate_state directly -- all the various state updates rely on mesa state being reasonable, and it seems to make sense to first flush those changes (which might e.g. update the currently-bound program, or all sorts of other things), and only then process the st's updates. However I'm unfamiliar with the reasoning behind the current system, so perhaps I'm also just missing something. Thoughts welcome. -ilia _______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
