Skip to content

Commit 681eb08

Browse files
Moving the device mask to ResourcePoolDescriptor. (o3de#18133)
Signed-off-by: Joerg H. Mueller <[email protected]>
1 parent f20851f commit 681eb08

40 files changed

+103
-94
lines changed

Gems/Atom/Feature/Common/Code/Source/ACES/AcesDisplayMapperFeatureProcessor.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,7 @@ namespace AZ::Render
352352
imagePoolDesc.m_bindFlags = RHI::ImageBindFlags::ShaderReadWrite;
353353
imagePoolDesc.m_budgetInBytes = ImagePoolBudget;
354354

355-
RHI::ResultCode resultCode = m_displayMapperImagePool->Init(RHI::MultiDevice::AllDevices, imagePoolDesc);
355+
RHI::ResultCode resultCode = m_displayMapperImagePool->Init(imagePoolDesc);
356356
if (resultCode != RHI::ResultCode::Success)
357357
{
358358
AZ_Error("AcesDisplayMapperFeatureProcessor", false, "Failed to initialize image pool.");

Gems/Atom/Feature/Common/Code/Source/AuxGeom/FixedShapeProcessor.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,11 @@ namespace AZ
5353
RHI::BufferPoolDescriptor desc;
5454
desc.m_heapMemoryLevel = RHI::HeapMemoryLevel::Device;
5555
desc.m_bindFlags = RHI::BufferBindFlags::InputAssembly;
56+
desc.m_deviceMask = deviceMask;
5657

5758
m_bufferPool = aznew RHI::BufferPool;
5859
m_bufferPool->SetName(Name("AuxGeomFixedShapeBufferPool"));
59-
RHI::ResultCode resultCode = m_bufferPool->Init(deviceMask, desc);
60+
RHI::ResultCode resultCode = m_bufferPool->Init(desc);
6061

6162
if (resultCode != RHI::ResultCode::Success)
6263
{

Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbeFeatureProcessor.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ namespace AZ
4444

4545
m_bufferPool = aznew RHI::BufferPool;
4646
m_bufferPool->SetName(Name("ReflectionProbeBoxBufferPool"));
47-
[[maybe_unused]] RHI::ResultCode resultCode = m_bufferPool->Init(RHI::MultiDevice::AllDevices, desc);
47+
[[maybe_unused]] RHI::ResultCode resultCode = m_bufferPool->Init(desc);
4848
AZ_Error("ReflectionProbeFeatureProcessor", resultCode == RHI::ResultCode::Success, "Failed to initialize buffer pool");
4949

5050
// create box mesh vertices and indices

Gems/Atom/RHI/Code/Include/Atom/RHI.Reflect/ResourcePoolDescriptor.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#pragma once
99

1010
#include <Atom/RHI.Reflect/Base.h>
11+
#include <Atom/RHI.Reflect/Limits.h>
1112
#include <Atom/RHI.Reflect/MemoryEnums.h>
1213
#include <AzCore/Memory/SystemAllocator.h>
1314

@@ -34,5 +35,8 @@ namespace AZ::RHI
3435
//! the platform itself may still report out of memory errors. Therefore, it is strongly recommended to assign
3536
//! a budget to Device pools where virtual memory is not present on most platforms.
3637
AZ::u64 m_budgetInBytes = 0;
38+
39+
/// The device mask used to create resources from this pool.
40+
MultiDevice::DeviceMask m_deviceMask = MultiDevice::AllDevices;
3741
};
3842
}

Gems/Atom/RHI/Code/Include/Atom/RHI/BufferPool.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ namespace AZ::RHI
4848
//! @param descriptor The descriptor containing properties used to initialize the pool.
4949
//! @return A result code denoting the status of the call. If successful, the pool is considered
5050
//! initialized and is able to service buffer requests. If failure, the pool remains uninitialized.
51-
ResultCode Init(MultiDevice::DeviceMask deviceMask, const BufferPoolDescriptor& descriptor);
51+
ResultCode Init(const BufferPoolDescriptor& descriptor);
5252

5353
//! Initializes a buffer instance created from this pool. The buffer must be in an uninitialized
5454
//! state, or the call will fail. To re-use an existing buffer instance, first call Shutdown

Gems/Atom/RHI/Code/Include/Atom/RHI/ImagePool.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ namespace AZ::RHI
3232
virtual ~ImagePool() = default;
3333

3434
//! Initializes the pool. The pool must be initialized before images can be registered with it.
35-
ResultCode Init(MultiDevice::DeviceMask deviceMask, const ImagePoolDescriptor& descriptor);
35+
ResultCode Init(const ImagePoolDescriptor& descriptor);
3636

3737
//! Initializes an image onto the pool. The pool provides backing GPU resources to the image.
3838
ResultCode InitImage(const ImageInitRequest& request);

Gems/Atom/RHI/Code/Include/Atom/RHI/QueryPool.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,9 @@ namespace AZ::RHI
3535
QueryPool() = default;
3636
virtual ~QueryPool() override = default;
3737

38-
//! Initialize the QueryPool by initializing all device-specific QueryPools for each device mentioned in the deviceMask.
39-
ResultCode Init(MultiDevice::DeviceMask deviceMask, const QueryPoolDescriptor& descriptor);
38+
//! Initialize the QueryPool by initializing all device-specific QueryPools for each device mentioned in the descriptor's
39+
//! deviceMask.
40+
ResultCode Init(const QueryPoolDescriptor& descriptor);
4041

4142
//! Initialize a query from the pool (one device-specific query for each DeviceQueryPool).
4243
//! When initializing multiple queries use the other version of InitQuery

Gems/Atom/RHI/Code/Include/Atom/RHI/ShaderResourceGroupPool.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ namespace AZ::RHI
3434
virtual ~ShaderResourceGroupPool() override = default;
3535

3636
//! Initializes the shader resource group pool for all devices noted in the deviceMask.
37-
ResultCode Init(MultiDevice::DeviceMask deviceMask, const ShaderResourceGroupPoolDescriptor& descriptor);
37+
ResultCode Init(const ShaderResourceGroupPoolDescriptor& descriptor);
3838

3939
//! Initializes the resource group and associates it with the pool. The resource
4040
//! group must be updated on this pool.

Gems/Atom/RHI/Code/Include/Atom/RHI/StreamingImagePool.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ namespace AZ
3333
virtual ~StreamingImagePool() = default;
3434

3535
//! Initializes the pool. The pool must be initialized before images can be registered with it.
36-
ResultCode Init(MultiDevice::DeviceMask deviceMask, const StreamingImagePoolDescriptor& descriptor);
36+
ResultCode Init(const StreamingImagePoolDescriptor& descriptor);
3737

3838
//! Initializes the backing resources of an image.
3939
ResultCode InitImage(const StreamingImageInitRequest& request);

Gems/Atom/RHI/Code/Source/RHI/BufferPool.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,10 +100,10 @@ namespace AZ::RHI
100100
return true;
101101
}
102102

103-
ResultCode BufferPool::Init(MultiDevice::DeviceMask deviceMask, const BufferPoolDescriptor& descriptor)
103+
ResultCode BufferPool::Init(const BufferPoolDescriptor& descriptor)
104104
{
105105
return ResourcePool::Init(
106-
deviceMask,
106+
descriptor.m_deviceMask,
107107
[this, &descriptor]()
108108
{
109109
if (!ValidatePoolDescriptor(descriptor))

Gems/Atom/RHI/Code/Source/RHI/FrameScheduler.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ namespace AZ::RHI
6464
return resultCode;
6565
}
6666

67-
RHI::MultiDevice::DeviceMask transientAttachmentPoolDeviceMask{0};
67+
RHI::MultiDevice::DeviceMask transientAttachmentPoolDeviceMask{ 0 };
6868

6969
for (auto& [deviceIndex, transientAttachmentPoolDescriptor] : descriptor.m_transientAttachmentPoolDescriptors)
7070
{
@@ -77,7 +77,8 @@ namespace AZ::RHI
7777
if (transientAttachmentPoolDeviceMask != static_cast<RHI::MultiDevice::DeviceMask>(0))
7878
{
7979
m_transientAttachmentPool = aznew TransientAttachmentPool();
80-
resultCode = m_transientAttachmentPool->Init(transientAttachmentPoolDeviceMask, descriptor.m_transientAttachmentPoolDescriptors);
80+
resultCode =
81+
m_transientAttachmentPool->Init(transientAttachmentPoolDeviceMask, descriptor.m_transientAttachmentPoolDescriptors);
8182

8283
if (resultCode != ResultCode::Success)
8384
{

Gems/Atom/RHI/Code/Source/RHI/ImagePool.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212

1313
namespace AZ::RHI
1414
{
15-
ResultCode ImagePool::Init(MultiDevice::DeviceMask deviceMask, const ImagePoolDescriptor& descriptor)
15+
ResultCode ImagePool::Init(const ImagePoolDescriptor& descriptor)
1616
{
1717
return ResourcePool::Init(
18-
deviceMask,
18+
descriptor.m_deviceMask,
1919
[this, &descriptor]()
2020
{
2121
// Assign the descriptor prior to initialization. Technically, the descriptor is undefined

Gems/Atom/RHI/Code/Source/RHI/QueryPool.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
namespace AZ::RHI
1717
{
18-
ResultCode QueryPool::Init(MultiDevice::DeviceMask deviceMask, const QueryPoolDescriptor& descriptor)
18+
ResultCode QueryPool::Init(const QueryPoolDescriptor& descriptor)
1919
{
2020
if (Validation::IsEnabled())
2121
{
@@ -41,7 +41,7 @@ namespace AZ::RHI
4141
}
4242

4343
auto resultCode = ResourcePool::Init(
44-
deviceMask,
44+
descriptor.m_deviceMask,
4545
[this, &descriptor]()
4646
{
4747
// Assign the descriptor prior to initialization. Technically, the descriptor is undefined

Gems/Atom/RHI/Code/Source/RHI/ShaderResourceGroupPool.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,7 @@
1414

1515
namespace AZ::RHI
1616
{
17-
ResultCode ShaderResourceGroupPool::Init(
18-
MultiDevice::DeviceMask deviceMask, const ShaderResourceGroupPoolDescriptor& descriptor)
17+
ResultCode ShaderResourceGroupPool::Init(const ShaderResourceGroupPoolDescriptor& descriptor)
1918
{
2019
if (Validation::IsEnabled())
2120
{
@@ -27,7 +26,7 @@ namespace AZ::RHI
2726
}
2827

2928
ResultCode resultCode = ResourcePool::Init(
30-
deviceMask,
29+
descriptor.m_deviceMask,
3130
[this, &descriptor]()
3231
{
3332
IterateDevices(

Gems/Atom/RHI/Code/Source/RHI/StreamingImagePool.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,12 @@ namespace AZ::RHI
6262
return true;
6363
}
6464

65-
ResultCode StreamingImagePool::Init(MultiDevice::DeviceMask deviceMask, const StreamingImagePoolDescriptor& descriptor)
65+
ResultCode StreamingImagePool::Init(const StreamingImagePoolDescriptor& descriptor)
6666
{
6767
AZ_PROFILE_FUNCTION(RHI);
6868

6969
return ResourcePool::Init(
70-
deviceMask,
70+
descriptor.m_deviceMask,
7171
[this, &descriptor]()
7272
{
7373
// Assign the descriptor prior to initialization. Technically, the descriptor is undefined

Gems/Atom/RHI/Code/Tests/FrameGraphTests.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,8 @@ namespace UnitTest
9090

9191
RHI::BufferPoolDescriptor desc;
9292
desc.m_bindFlags = RHI::BufferBindFlags::ShaderReadWrite;
93-
m_state->m_bufferPool->Init(RHI::MultiDevice::DefaultDevice, desc);
93+
desc.m_deviceMask = RHI::MultiDevice::DefaultDevice;
94+
m_state->m_bufferPool->Init(desc);
9495
}
9596

9697
for (uint32_t i = 0; i < BufferCount; ++i)
@@ -117,7 +118,8 @@ namespace UnitTest
117118

118119
RHI::ImagePoolDescriptor desc;
119120
desc.m_bindFlags = RHI::ImageBindFlags::ShaderReadWrite;
120-
m_state->m_imagePool->Init(RHI::MultiDevice::DefaultDevice, desc);
121+
desc.m_deviceMask = RHI::MultiDevice::DefaultDevice;
122+
m_state->m_imagePool->Init(desc);
121123
}
122124

123125
for (uint32_t i = 0; i < ImageCount; ++i)

Gems/Atom/RHI/Code/Tests/FrameSchedulerTests.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,8 @@ namespace UnitTest
171171

172172
RHI::BufferPoolDescriptor desc;
173173
desc.m_bindFlags = RHI::BufferBindFlags::ShaderReadWrite;
174-
m_state->m_bufferPool->Init(RHI::MultiDevice::DefaultDevice, desc);
174+
desc.m_deviceMask = RHI::MultiDevice::DefaultDevice;
175+
m_state->m_bufferPool->Init(desc);
175176
}
176177

177178
for (uint32_t i = 0; i < ImportedBufferCount; ++i)
@@ -197,7 +198,7 @@ namespace UnitTest
197198

198199
RHI::ImagePoolDescriptor desc;
199200
desc.m_bindFlags = RHI::ImageBindFlags::ShaderReadWrite;
200-
m_state->m_imagePool->Init(RHI::MultiDevice::AllDevices, desc);
201+
m_state->m_imagePool->Init(desc);
201202
}
202203

203204
for (uint32_t i = 0; i < ImportedImageCount; ++i)

Gems/Atom/RHI/Code/Tests/MultiDeviceBufferTests.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ namespace UnitTest
6666

6767
RHI::BufferPoolDescriptor bufferPoolDesc;
6868
bufferPoolDesc.m_bindFlags = RHI::BufferBindFlags::Constant;
69-
bufferPool->Init(DeviceMask, bufferPoolDesc);
69+
bufferPool->Init(bufferPoolDesc);
7070

7171
AZStd::vector<uint8_t> testData(32);
7272
for (uint32_t i = 0; i < 32; ++i)
@@ -140,7 +140,7 @@ namespace UnitTest
140140

141141
RHI::Ptr<AZ::RHI::BufferPool> bufferPoolB;
142142
bufferPoolB = aznew AZ::RHI::BufferPool;
143-
bufferPoolB->Init(DeviceMask, bufferPoolDesc);
143+
bufferPoolB->Init(bufferPoolDesc);
144144

145145
initRequest.m_buffer = bufferB.get();
146146
initRequest.m_descriptor = RHI::BufferDescriptor(RHI::BufferBindFlags::Constant, 16);
@@ -170,7 +170,7 @@ namespace UnitTest
170170

171171
RHI::BufferPoolDescriptor bufferPoolDesc;
172172
bufferPoolDesc.m_bindFlags = RHI::BufferBindFlags::Constant;
173-
bufferPool->Init(DeviceMask, bufferPoolDesc);
173+
bufferPool->Init(bufferPoolDesc);
174174

175175
RHI::Ptr<RHI::Buffer> buffer;
176176
buffer = aznew RHI::Buffer;
@@ -253,7 +253,7 @@ namespace UnitTest
253253
m_bufferPool = aznew AZ::RHI::BufferPool;
254254
RHI::BufferPoolDescriptor bufferPoolDesc;
255255
bufferPoolDesc.m_bindFlags = GetParam().bufferBindFlags;
256-
m_bufferPool->Init(DeviceMask, bufferPoolDesc);
256+
m_bufferPool->Init(bufferPoolDesc);
257257

258258
m_buffer = aznew RHI::Buffer;
259259
RHI::BufferInitRequest initRequest;
@@ -499,7 +499,7 @@ namespace UnitTest
499499

500500
RHI::BufferPoolDescriptor bufferPoolDesc;
501501
bufferPoolDesc.m_bindFlags = RHI::BufferBindFlags::Constant;
502-
bufferPool->Init(DeviceMask, bufferPoolDesc);
502+
bufferPool->Init(bufferPoolDesc);
503503

504504
RHI::Ptr<RHI::Buffer> buffer;
505505
buffer = aznew RHI::Buffer;

Gems/Atom/RHI/Code/Tests/MultiDeviceDrawPacketTests.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,10 @@ namespace UnitTest
6363
MultiDeviceDrawPacketData(SimpleLcgRandom& random)
6464
{
6565
RHI::BufferPoolDescriptor bufferPoolDesc;
66+
bufferPoolDesc.m_deviceMask = LocalDeviceMask;
6667
m_bufferPool = aznew RHI::BufferPool;
6768
m_bufferEmpty = aznew RHI::Buffer;
68-
m_bufferPool->Init(LocalDeviceMask, bufferPoolDesc);
69+
m_bufferPool->Init(bufferPoolDesc);
6970
RHI::BufferInitRequest request;
7071
request.m_buffer = m_bufferEmpty.get();
7172
request.m_descriptor = RHI::BufferDescriptor{};

Gems/Atom/RHI/Code/Tests/MultiDeviceImageTests.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ namespace UnitTest
6161

6262
RHI::ImagePoolDescriptor imagePoolDesc;
6363
imagePoolDesc.m_bindFlags = RHI::ImageBindFlags::Color;
64-
imagePool->Init(DeviceMask, imagePoolDesc);
64+
imagePool->Init(imagePoolDesc);
6565

6666
ASSERT_TRUE(imageA->IsInitialized() == false);
6767
ASSERT_TRUE(imageB->IsInitialized() == false);
@@ -116,7 +116,7 @@ namespace UnitTest
116116

117117
RHI::Ptr<RHI::ImagePool> imagePoolB;
118118
imagePoolB = aznew RHI::ImagePool;
119-
imagePoolB->Init(DeviceMask, imagePoolDesc);
119+
imagePoolB->Init(imagePoolDesc);
120120

121121
initRequest.m_image = imageB.get();
122122
initRequest.m_descriptor = RHI::ImageDescriptor::Create2D(RHI::ImageBindFlags::Color, 8, 8, RHI::Format::R8G8B8A8_UNORM_SRGB);
@@ -145,7 +145,7 @@ namespace UnitTest
145145

146146
RHI::ImagePoolDescriptor imagePoolDesc;
147147
imagePoolDesc.m_bindFlags = RHI::ImageBindFlags::Color;
148-
imagePool->Init(DeviceMask, imagePoolDesc);
148+
imagePool->Init(imagePoolDesc);
149149

150150
RHI::Ptr<RHI::Image> image;
151151
image = aznew RHI::Image;
@@ -249,7 +249,7 @@ namespace UnitTest
249249
m_imagePool = aznew RHI::ImagePool;
250250
RHI::ImagePoolDescriptor imagePoolDesc;
251251
imagePoolDesc.m_bindFlags = GetParam().imageBindFlags;
252-
m_imagePool->Init(DeviceMask, imagePoolDesc);
252+
m_imagePool->Init(imagePoolDesc);
253253

254254
RHI::ImageDescriptor imageDescriptor;
255255
imageDescriptor.m_bindFlags = GetParam().imageBindFlags;

Gems/Atom/RHI/Code/Tests/MultiDeviceIndirectBufferTests.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ namespace UnitTest
5656
m_bufferPool = aznew AZ::RHI::BufferPool;
5757
RHI::BufferPoolDescriptor poolDesc;
5858
poolDesc.m_bindFlags = RHI::BufferBindFlags::ShaderReadWrite;
59-
m_bufferPool->Init(DeviceMask, poolDesc);
59+
m_bufferPool->Init(poolDesc);
6060

6161
m_buffer = aznew AZ::RHI::Buffer;
6262
RHI::BufferInitRequest initRequest;

0 commit comments

Comments
 (0)