diff options
author | Marek Olšák <[email protected]> | 2020-03-05 15:09:28 -0500 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2020-03-10 22:19:47 -0400 |
commit | 2dc300421d3079d653f106a876263904ba0faacc (patch) | |
tree | 5ba3065cc8ee26f18ef60234e8da96aa71d7e802 /src/gallium/state_trackers/nine | |
parent | 1fa259b035c000b590a91a5b51412a2ff1972ab0 (diff) |
gallium/cso_context: remove cso_delete_xxx_shader helpers to fix the live cache
With the live shader cache, equivalent shaders can be backed by the same
CSO. This breaks the logic that identifies whether the shader being deleted
is bound.
For example, having shaders A and B, you can bind shader A and delete
shader B. Deleting shader B will unbind shader A if they are equivalent.
Pierre-Eric figured out the root cause for this issue.
Fixes: 0db74f479b9 - radeonsi: use the live shader cache
Closes: #2596
Acked-by: Pierre-Eric Pelloux-Prayer <[email protected]>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4078>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4078>
Diffstat (limited to 'src/gallium/state_trackers/nine')
-rw-r--r-- | src/gallium/state_trackers/nine/vertexshader9.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/gallium/state_trackers/nine/vertexshader9.c b/src/gallium/state_trackers/nine/vertexshader9.c index 04c50ae619f..600e298a393 100644 --- a/src/gallium/state_trackers/nine/vertexshader9.c +++ b/src/gallium/state_trackers/nine/vertexshader9.c @@ -143,7 +143,7 @@ NineVertexShader9_dtor( struct NineVertexShader9 *This ) while (var_so && var_so->vdecl) { if (var_so->cso) { - cso_delete_vertex_shader(This->base.device->cso_sw, var_so->cso ); + This->base.device->pipe_sw->delete_vs_state(This->base.device->pipe_sw, var_so->cso); } var_so = var_so->next; } |