[Mesa-dev] [PATCH 2/2] llvmpipe: Simplify vertex and geometry shaders.

Zack Rusin zackr at vmware.com
Wed Mar 26 09:03:57 PDT 2014


> 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


More information about the mesa-dev mailing list