Reactor: Use std::shared_ptr to ref-count rr::Routines

The intrusive reference counting had no smart pointer, making it difficult to correctly manage reference counts. Most of the codebase did not call bind() and unbind() explictly, and relied on some other mechanism for keeping the routine alive.

By switching to std::shared_ptr, we automatically get guarantees that routine cache eviction will not destroy the routine while it is in use.

Bug: b/137524292
Bug: b/137649247
Change-Id: I38b5e8ba3ee084572a427a1de20f4f017ceaae5a
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/34168
Tested-by: Ben Clayton <bclayton@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Renderer/PixelProcessor.hpp b/src/Renderer/PixelProcessor.hpp
index 98300de..4fa627c 100644
--- a/src/Renderer/PixelProcessor.hpp
+++ b/src/Renderer/PixelProcessor.hpp
@@ -306,7 +306,7 @@
 
 	protected:
 		const State update() const;
-		Routine *routine(const State &state);
+		std::shared_ptr<Routine> routine(const State &state);
 		void setRoutineCacheSize(int routineCacheSize);
 
 		// Shader constants