Device: Use std::unique_ptr instead of raw pointers

Instead of using raw pointers, use `std::unique_ptr`.

Bug: b/126126820
Change-Id: Ia095f6aec1448c2153a0b0159f25a2946054e64b
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/43813
Tested-by: Ben Clayton <bclayton@google.com>
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Reviewed-by: Chris Forbes <chrisforbes@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Device/PixelProcessor.cpp b/src/Device/PixelProcessor.cpp
index 7f9706e..bccdb3f 100644
--- a/src/Device/PixelProcessor.cpp
+++ b/src/Device/PixelProcessor.cpp
@@ -50,16 +50,9 @@
 
 PixelProcessor::PixelProcessor()
 {
-	routineCache = nullptr;
 	setRoutineCacheSize(1024);
 }
 
-PixelProcessor::~PixelProcessor()
-{
-	delete routineCache;
-	routineCache = nullptr;
-}
-
 void PixelProcessor::setBlendConstant(const float4 &blendConstant)
 {
 	// TODO(b/140935644): Check if clamp is required
@@ -86,8 +79,7 @@
 
 void PixelProcessor::setRoutineCacheSize(int cacheSize)
 {
-	delete routineCache;
-	routineCache = new RoutineCacheType(clamp(cacheSize, 1, 65536));
+	routineCache = std::make_unique<RoutineCacheType>(clamp(cacheSize, 1, 65536));
 }
 
 const PixelProcessor::State PixelProcessor::update(const Context *context) const
diff --git a/src/Device/PixelProcessor.hpp b/src/Device/PixelProcessor.hpp
index 309fa4e..ba190a6 100644
--- a/src/Device/PixelProcessor.hpp
+++ b/src/Device/PixelProcessor.hpp
@@ -19,6 +19,8 @@
 #include "Memset.hpp"
 #include "RoutineCache.hpp"
 
+#include <memory>
+
 namespace sw {
 
 class PixelShader;
@@ -146,8 +148,6 @@
 
 	PixelProcessor();
 
-	virtual ~PixelProcessor();
-
 	void setBlendConstant(const float4 &blendConstant);
 
 	const State update(const Context *context) const;
@@ -160,7 +160,7 @@
 
 private:
 	using RoutineCacheType = RoutineCache<State, RasterizerFunction::CFunctionType>;
-	RoutineCacheType *routineCache;
+	std::unique_ptr<RoutineCacheType> routineCache;
 };
 
 }  // namespace sw
diff --git a/src/Device/SetupProcessor.cpp b/src/Device/SetupProcessor.cpp
index bda0df0..b0d85f5 100644
--- a/src/Device/SetupProcessor.cpp
+++ b/src/Device/SetupProcessor.cpp
@@ -52,16 +52,9 @@
 
 SetupProcessor::SetupProcessor()
 {
-	routineCache = nullptr;
 	setRoutineCacheSize(1024);
 }
 
-SetupProcessor::~SetupProcessor()
-{
-	delete routineCache;
-	routineCache = nullptr;
-}
-
 SetupProcessor::State SetupProcessor::update(const sw::Context *context) const
 {
 	State state;
@@ -117,8 +110,7 @@
 
 void SetupProcessor::setRoutineCacheSize(int cacheSize)
 {
-	delete routineCache;
-	routineCache = new RoutineCacheType(clamp(cacheSize, 1, 65536));
+	routineCache = std::make_unique<RoutineCacheType>(clamp(cacheSize, 1, 65536));
 }
 
 }  // namespace sw
diff --git a/src/Device/SetupProcessor.hpp b/src/Device/SetupProcessor.hpp
index c86bb00..8d6a43c 100644
--- a/src/Device/SetupProcessor.hpp
+++ b/src/Device/SetupProcessor.hpp
@@ -21,6 +21,8 @@
 #include "System/Types.hpp"
 #include <Pipeline/SpirvShader.hpp>
 
+#include <memory>
+
 namespace sw {
 
 struct Primitive;
@@ -71,8 +73,6 @@
 
 	SetupProcessor();
 
-	~SetupProcessor();
-
 	State update(const sw::Context *context) const;
 	RoutineType routine(const State &state);
 
@@ -80,7 +80,7 @@
 
 private:
 	using RoutineCacheType = RoutineCache<State, SetupFunction::CFunctionType>;
-	RoutineCacheType *routineCache;
+	std::unique_ptr<RoutineCacheType> routineCache;
 };
 
 }  // namespace sw
diff --git a/src/Device/VertexProcessor.cpp b/src/Device/VertexProcessor.cpp
index f069c1c..c7c403c 100644
--- a/src/Device/VertexProcessor.cpp
+++ b/src/Device/VertexProcessor.cpp
@@ -57,20 +57,12 @@
 
 VertexProcessor::VertexProcessor()
 {
-	routineCache = nullptr;
 	setRoutineCacheSize(1024);
 }
 
-VertexProcessor::~VertexProcessor()
-{
-	delete routineCache;
-	routineCache = nullptr;
-}
-
 void VertexProcessor::setRoutineCacheSize(int cacheSize)
 {
-	delete routineCache;
-	routineCache = new RoutineCacheType(clamp(cacheSize, 1, 65536));
+	routineCache = std::make_unique<RoutineCacheType>(clamp(cacheSize, 1, 65536));
 }
 
 const VertexProcessor::State VertexProcessor::update(const sw::Context *context)
diff --git a/src/Device/VertexProcessor.hpp b/src/Device/VertexProcessor.hpp
index 44a7be7..c84dc70 100644
--- a/src/Device/VertexProcessor.hpp
+++ b/src/Device/VertexProcessor.hpp
@@ -21,6 +21,8 @@
 #include "Vertex.hpp"
 #include "Pipeline/SpirvShader.hpp"
 
+#include <memory>
+
 namespace sw {
 
 struct DrawData;
@@ -92,8 +94,6 @@
 
 	VertexProcessor();
 
-	virtual ~VertexProcessor();
-
 	const State update(const sw::Context *context);
 	RoutineType routine(const State &state, vk::PipelineLayout const *pipelineLayout,
 	                    SpirvShader const *vertexShader, const vk::DescriptorSet::Bindings &descriptorSets);
@@ -102,7 +102,7 @@
 
 private:
 	using RoutineCacheType = RoutineCache<State, VertexRoutineFunction::CFunctionType>;
-	RoutineCacheType *routineCache;
+	std::unique_ptr<RoutineCacheType> routineCache;
 };
 
 }  // namespace sw