I think the best way is not to do anything if one of the shaders is NULL. Just like my patch that I just sent.
Marek On Fri, Jun 26, 2015 at 3:04 AM, Ilia Mirkin <[email protected]> wrote: > 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
