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