u_vbuf: don't try to delete NULL driver CSO
authorIago Toral Quiroga <itoral@igalia.com>
Thu, 2 Jan 2020 09:10:57 +0000 (10:10 +0100)
committerIago Toral Quiroga <itoral@igalia.com>
Fri, 3 Jan 2020 06:58:35 +0000 (07:58 +0100)
Since 18a8c3f7f11 we don't create a driver CSO if there are any
incompatible elements, so only ask backends to delete it if it exists.

Fixes multiple CTS crashes in V3D.

Fixes: 18a8c3f7f11 ("u_vbuf: Only create driver CSO if no incompatible elements")
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/gallium/auxiliary/util/u_vbuf.c

index 70eaebb453ed43cbd57643fb575005e66acac20c..8d50092b4c40eb00d38d838bcf37ff11199e5c15 100644 (file)
@@ -849,7 +849,8 @@ static void u_vbuf_delete_vertex_elements(struct u_vbuf *mgr, void *cso)
    struct pipe_context *pipe = mgr->pipe;
    struct u_vbuf_elements *ve = cso;
 
-   pipe->delete_vertex_elements_state(pipe, ve->driver_cso);
+   if (ve->driver_cso)
+      pipe->delete_vertex_elements_state(pipe, ve->driver_cso);
    FREE(ve);
 }