- /*
- * Remove stale references to this result to ensure a new result on the
- * same address will be detected as a change.
- */
- if(result == svga->state.hw_draw.vs)
+ draw_delete_vertex_shader(svga->swtnl.draw, vs->draw_shader);
+
+ for (variant = vs->base.variants; variant; variant = tmp) {
+ tmp = variant->next;
+
+ /* Check if deleting currently bound shader */
+ if (variant == svga->state.hw_draw.vs) {
+ ret = svga_set_shader(svga, SVGA3D_SHADERTYPE_VS, NULL);
+ if (ret != PIPE_OK) {
+ svga_context_flush(svga, NULL);
+ ret = svga_set_shader(svga, SVGA3D_SHADERTYPE_VS, NULL);
+ assert(ret == PIPE_OK);
+ }