> I see the crashes you're referring to.
> 
> I don't quite understand why though: concerning the geometry shader, other
> than cosmetic changes, in theory I should just have replaced a null/non-null
> `tokens` pointer with a boolean `no_tokens`, though obviously I missed
> something.

Yea, you missed the entire draw pipeline because you replaced:
if (templ->tokens) {
...
    state->draw_data = draw_create_geometry_shader(llvmpipe->draw, templ);
}

with unconditional:
state->dgs = draw_create_geometry_shader(llvmpipe->draw, templ);

i.e. draw gs is /always/ created whether tokens are there or not. So the 
draw_bind_geometry_shader will always bind gs's with null tokens. And that's 
what draw can't handle. I think that replacing that with:
if (!state->no_tokens) {
  state->dgs = draw_create_geometry_shader(...);
  ...
}

should work.

> I should also had broken this in two separate changes: vs portion, and gs
> portion.

vs's are fine because they're never created with null tokens.

z
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to