This repository was archived by the owner on Feb 25, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +13
-9
lines changed Expand file tree Collapse file tree 2 files changed +13
-9
lines changed Original file line number Diff line number Diff line change 12
12
13
13
#include < cstdint>
14
14
15
+ #include < atomic>
15
16
#include < limits>
16
17
#include < map>
17
18
@@ -61,8 +62,6 @@ class ResourceSerial
61
62
uintptr_t mValue ;
62
63
};
63
64
64
- class SerialFactory ;
65
-
66
65
class Serial final
67
66
{
68
67
public:
@@ -93,27 +92,32 @@ class Serial final
93
92
constexpr uint64_t getValue () const { return mValue ; }
94
93
95
94
private:
96
- friend class SerialFactory ;
95
+ template <typename T>
96
+ friend class SerialFactoryBase ;
97
97
constexpr explicit Serial (uint64_t value) : mValue(value) {}
98
98
uint64_t mValue ;
99
99
static constexpr uint64_t kInvalid = 0 ;
100
100
};
101
101
102
- class SerialFactory final : angle::NonCopyable
102
+ template <typename SerialBaseType>
103
+ class SerialFactoryBase final : angle::NonCopyable
103
104
{
104
105
public:
105
- SerialFactory () : mSerial (1 ) {}
106
+ SerialFactoryBase () : mSerial (1 ) {}
106
107
107
108
Serial generate ()
108
109
{
109
- ASSERT (mSerial != std::numeric_limits< uint64_t >:: max () );
110
+ ASSERT (mSerial + 1 > mSerial );
110
111
return Serial (mSerial ++);
111
112
}
112
113
113
114
private:
114
- uint64_t mSerial ;
115
+ SerialBaseType mSerial ;
115
116
};
116
117
118
+ using SerialFactory = SerialFactoryBase<uint64_t >;
119
+ using AtomicSerialFactory = SerialFactoryBase<std::atomic<uint64_t >>;
120
+
117
121
using MipGenerationFunction = void (*)(size_t sourceWidth,
118
122
size_t sourceHeight,
119
123
size_t sourceDepth,
Original file line number Diff line number Diff line change @@ -187,8 +187,8 @@ class RendererVk : angle::NonCopyable
187
187
uint32_t mCurrentQueueFamilyIndex ;
188
188
uint32_t mMaxVertexAttribDivisor ;
189
189
VkDevice mDevice ;
190
- SerialFactory mQueueSerialFactory ;
191
- SerialFactory mShaderSerialFactory ;
190
+ AtomicSerialFactory mQueueSerialFactory ;
191
+ AtomicSerialFactory mShaderSerialFactory ;
192
192
Serial mCurrentQueueSerial ;
193
193
194
194
bool mDeviceLost ;
You can’t perform that action at this time.
0 commit comments