Bläddra i källkod

Removing the prefix from all MultiDevice classes.

Signed-off-by: Joerg H. Mueller <[email protected]>
Joerg H. Mueller 1 år sedan
förälder
incheckning
02f1d59375
100 ändrade filer med 969 tillägg och 656 borttagningar
  1. 1 1
      Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/ImageAssetProducer.cpp
  2. 3 3
      Gems/Atom/Feature/Common/Code/Include/Atom/Feature/ACES/AcesDisplayMapperFeatureProcessor.h
  3. 1 1
      Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/AcesOutputTransformLutPass.h
  4. 1 1
      Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/AcesOutputTransformPass.h
  5. 2 2
      Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/BakeAcesOutputTransformLutPass.h
  6. 3 3
      Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/DisplayMapperFeatureProcessorInterface.h
  7. 1 1
      Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/DisplayMapperPass.h
  8. 1 1
      Gems/Atom/Feature/Common/Code/Include/Atom/Feature/MorphTargets/MorphTargetInputBuffers.h
  9. 2 2
      Gems/Atom/Feature/Common/Code/Include/Atom/Feature/SkinnedMesh/SkinnedMeshInputBuffers.h
  10. 1 1
      Gems/Atom/Feature/Common/Code/Include/Atom/Feature/Utils/GpuBufferHandler.h
  11. 3 3
      Gems/Atom/Feature/Common/Code/Source/ACES/AcesDisplayMapperFeatureProcessor.cpp
  12. 5 5
      Gems/Atom/Feature/Common/Code/Source/AuxGeom/DynamicPrimitiveProcessor.cpp
  13. 9 9
      Gems/Atom/Feature/Common/Code/Source/AuxGeom/DynamicPrimitiveProcessor.h
  14. 26 26
      Gems/Atom/Feature/Common/Code/Source/AuxGeom/FixedShapeProcessor.cpp
  15. 27 27
      Gems/Atom/Feature/Common/Code/Source/AuxGeom/FixedShapeProcessor.h
  16. 2 2
      Gems/Atom/Feature/Common/Code/Source/CoreLights/DepthExponentiationPass.h
  17. 2 2
      Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingPass.cpp
  18. 1 1
      Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingPass.h
  19. 1 1
      Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingRemap.cpp
  20. 1 1
      Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingRemap.h
  21. 1 1
      Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingTilePreparePass.cpp
  22. 2 2
      Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingTilePreparePass.h
  23. 2 2
      Gems/Atom/Feature/Common/Code/Source/CoreLights/ShadowmapPass.cpp
  24. 4 4
      Gems/Atom/Feature/Common/Code/Source/CoreLights/ShadowmapPass.h
  25. 1 1
      Gems/Atom/Feature/Common/Code/Source/Decals/DecalTextureArray.cpp
  26. 1 1
      Gems/Atom/Feature/Common/Code/Source/Decals/DecalTextureArray.h
  27. 1 1
      Gems/Atom/Feature/Common/Code/Source/DisplayMapper/AcesOutputTransformPass.cpp
  28. 1 1
      Gems/Atom/Feature/Common/Code/Source/DisplayMapper/DisplayMapperPass.cpp
  29. 3 3
      Gems/Atom/Feature/Common/Code/Source/ImGui/ImGuiPass.cpp
  30. 5 5
      Gems/Atom/Feature/Common/Code/Source/ImGui/ImGuiPass.h
  31. 19 19
      Gems/Atom/Feature/Common/Code/Source/Mesh/MeshFeatureProcessor.cpp
  32. 1 1
      Gems/Atom/Feature/Common/Code/Source/Mesh/MeshInstanceGroupKey.h
  33. 1 1
      Gems/Atom/Feature/Common/Code/Source/Mesh/MeshInstanceGroupList.h
  34. 2 2
      Gems/Atom/Feature/Common/Code/Source/MorphTargets/MorphTargetDispatchItem.cpp
  35. 3 3
      Gems/Atom/Feature/Common/Code/Source/MorphTargets/MorphTargetDispatchItem.h
  36. 1 1
      Gems/Atom/Feature/Common/Code/Source/PostProcess/ExposureControl/ExposureControlSettings.h
  37. 3 3
      Gems/Atom/Feature/Common/Code/Source/PostProcessing/BlendColorGradingLutsPass.h
  38. 3 3
      Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldCopyFocusDepthToCpuPass.cpp
  39. 3 3
      Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldCopyFocusDepthToCpuPass.h
  40. 1 1
      Gems/Atom/Feature/Common/Code/Source/PostProcessing/EyeAdaptationPass.cpp
  41. 1 1
      Gems/Atom/Feature/Common/Code/Source/PostProcessing/EyeAdaptationPass.h
  42. 1 1
      Gems/Atom/Feature/Common/Code/Source/PostProcessing/LookModificationCompositePass.cpp
  43. 1 1
      Gems/Atom/Feature/Common/Code/Source/PostProcessing/LookModificationCompositePass.h
  44. 1 1
      Gems/Atom/Feature/Common/Code/Source/PostProcessing/LookModificationTransformPass.h
  45. 1 1
      Gems/Atom/Feature/Common/Code/Source/PostProcessing/LuminanceHistogramGeneratorPass.cpp
  46. 1 1
      Gems/Atom/Feature/Common/Code/Source/PostProcessing/LuminanceHistogramGeneratorPass.h
  47. 1 1
      Gems/Atom/Feature/Common/Code/Source/PostProcessing/PostProcessingShaderOptionBase.cpp
  48. 2 2
      Gems/Atom/Feature/Common/Code/Source/PostProcessing/PostProcessingShaderOptionBase.h
  49. 1 1
      Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAABasePass.cpp
  50. 1 1
      Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAABasePass.h
  51. 1 1
      Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAABlendingWeightCalculationPass.cpp
  52. 1 1
      Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAAEdgeDetectionPass.cpp
  53. 1 1
      Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAANeighborhoodBlendingPass.cpp
  54. 6 6
      Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingAccelerationStructurePass.cpp
  55. 7 7
      Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingFeatureProcessor.cpp
  56. 33 33
      Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingFeatureProcessor.h
  57. 11 11
      Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingPass.cpp
  58. 5 5
      Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingPass.h
  59. 3 3
      Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbe.cpp
  60. 7 7
      Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbe.h
  61. 7 7
      Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbeFeatureProcessor.cpp
  62. 3 3
      Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbeFeatureProcessor.h
  63. 1 1
      Gems/Atom/Feature/Common/Code/Source/ScreenSpace/DeferredFogPass.cpp
  64. 1 1
      Gems/Atom/Feature/Common/Code/Source/ScreenSpace/DeferredFogPass.h
  65. 1 1
      Gems/Atom/Feature/Common/Code/Source/Shadows/FullscreenShadowPass.cpp
  66. 1 1
      Gems/Atom/Feature/Common/Code/Source/Shadows/FullscreenShadowPass.h
  67. 4 4
      Gems/Atom/Feature/Common/Code/Source/Shadows/ProjectedShadowFeatureProcessor.cpp
  68. 1 1
      Gems/Atom/Feature/Common/Code/Source/Shadows/ProjectedShadowFeatureProcessor.h
  69. 2 2
      Gems/Atom/Feature/Common/Code/Source/SkinnedMesh/SkinnedMeshDispatchItem.cpp
  70. 3 3
      Gems/Atom/Feature/Common/Code/Source/SkinnedMesh/SkinnedMeshDispatchItem.h
  71. 2 2
      Gems/Atom/Feature/Common/Code/Source/SkinnedMesh/SkinnedMeshFeatureProcessor.h
  72. 3 3
      Gems/Atom/Feature/Common/Code/Source/SkinnedMesh/SkinnedMeshInputBuffers.cpp
  73. 1 1
      Gems/Atom/Feature/Common/Code/Source/Utils/GpuBufferHandler.cpp
  74. 14 14
      Gems/Atom/RHI/Code/Include/Atom/RHI.Reflect/ImageSubresource.h
  75. 11 11
      Gems/Atom/RHI/Code/Include/Atom/RHI/AliasedAttachmentAllocator.h
  76. 16 16
      Gems/Atom/RHI/Code/Include/Atom/RHI/AliasedHeap.h
  77. 2 2
      Gems/Atom/RHI/Code/Include/Atom/RHI/AliasingBarrierTracker.h
  78. 34 34
      Gems/Atom/RHI/Code/Include/Atom/RHI/Buffer.h
  79. 5 5
      Gems/Atom/RHI/Code/Include/Atom/RHI/BufferFrameAttachment.h
  80. 26 26
      Gems/Atom/RHI/Code/Include/Atom/RHI/BufferPool.h
  81. 32 0
      Gems/Atom/RHI/Code/Include/Atom/RHI/BufferPoolBase.h
  82. 3 3
      Gems/Atom/RHI/Code/Include/Atom/RHI/BufferScopeAttachment.h
  83. 18 18
      Gems/Atom/RHI/Code/Include/Atom/RHI/CommandList.h
  84. 6 6
      Gems/Atom/RHI/Code/Include/Atom/RHI/CommandListValidator.h
  85. 1 1
      Gems/Atom/RHI/Code/Include/Atom/RHI/CommandQueue.h
  86. 244 0
      Gems/Atom/RHI/Code/Include/Atom/RHI/CopyItem.h
  87. 12 12
      Gems/Atom/RHI/Code/Include/Atom/RHI/DeviceBuffer.h
  88. 29 29
      Gems/Atom/RHI/Code/Include/Atom/RHI/DeviceBufferPool.h
  89. 11 11
      Gems/Atom/RHI/Code/Include/Atom/RHI/DeviceBufferPoolBase.h
  90. 10 10
      Gems/Atom/RHI/Code/Include/Atom/RHI/DeviceBufferView.h
  91. 35 35
      Gems/Atom/RHI/Code/Include/Atom/RHI/DeviceCopyItem.h
  92. 15 15
      Gems/Atom/RHI/Code/Include/Atom/RHI/DeviceDispatchItem.h
  93. 37 0
      Gems/Atom/RHI/Code/Include/Atom/RHI/DeviceDispatchRaysIndirectBuffer.h
  94. 30 30
      Gems/Atom/RHI/Code/Include/Atom/RHI/DeviceDispatchRaysItem.h
  95. 35 35
      Gems/Atom/RHI/Code/Include/Atom/RHI/DeviceDrawItem.h
  96. 19 19
      Gems/Atom/RHI/Code/Include/Atom/RHI/DeviceDrawPacket.h
  97. 19 19
      Gems/Atom/RHI/Code/Include/Atom/RHI/DeviceDrawPacketBuilder.h
  98. 3 3
      Gems/Atom/RHI/Code/Include/Atom/RHI/DeviceFence.h
  99. 16 16
      Gems/Atom/RHI/Code/Include/Atom/RHI/DeviceImage.h
  100. 19 19
      Gems/Atom/RHI/Code/Include/Atom/RHI/DeviceImagePool.h

+ 1 - 1
Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Processing/ImageAssetProducer.cpp

@@ -280,7 +280,7 @@ namespace ImageProcessingAtom
             const auto mipSize = (m_imageObject->GetDepth(0) == 1)
             const auto mipSize = (m_imageObject->GetDepth(0) == 1)
                 ? RHI::Size(m_imageObject->GetWidth(mip), m_imageObject->GetHeight(mip) / arraySize, 1)
                 ? RHI::Size(m_imageObject->GetWidth(mip), m_imageObject->GetHeight(mip) / arraySize, 1)
                 : RHI::Size(m_imageObject->GetWidth(mip), m_imageObject->GetHeight(mip), m_imageObject->GetDepth(mip));
                 : RHI::Size(m_imageObject->GetWidth(mip), m_imageObject->GetHeight(mip), m_imageObject->GetDepth(mip));
-            RHI::SingleDeviceImageSubresourceLayout layout = RHI::GetImageSubresourceLayout(mipSize, format);
+            RHI::DeviceImageSubresourceLayout layout = RHI::GetImageSubresourceLayout(mipSize, format);
             const auto mipSizeInBytes = layout.m_bytesPerImage * mipSize.m_depth;
             const auto mipSizeInBytes = layout.m_bytesPerImage * mipSize.m_depth;
             builder.BeginMip(layout);
             builder.BeginMip(layout);
 
 

+ 3 - 3
Gems/Atom/Feature/Common/Code/Include/Atom/Feature/ACES/AcesDisplayMapperFeatureProcessor.h

@@ -14,8 +14,8 @@
 #include <ACES/Aces.h>
 #include <ACES/Aces.h>
 #include <Atom/Feature/DisplayMapper/DisplayMapperConfigurationDescriptor.h>
 #include <Atom/Feature/DisplayMapper/DisplayMapperConfigurationDescriptor.h>
 
 
-#include <Atom/RHI/SingleDeviceImageView.h>
-#include <Atom/RHI/MultiDeviceImagePool.h>
+#include <Atom/RHI/DeviceImageView.h>
+#include <Atom/RHI/ImagePool.h>
 
 
 #include <Atom/RPI.Reflect/System/AnyAsset.h>
 #include <Atom/RPI.Reflect/System/AnyAsset.h>
 #include <Atom/RPI.Public/Image/StreamingImage.h>
 #include <Atom/RPI.Public/Image/StreamingImage.h>
@@ -106,7 +106,7 @@ namespace AZ
             static const int ImagePoolBudget = 1 << 20; // 1 Megabyte
             static const int ImagePoolBudget = 1 << 20; // 1 Megabyte
 
 
             // LUTs that are baked through shaders
             // LUTs that are baked through shaders
-            RHI::Ptr<RHI::MultiDeviceImagePool> m_displayMapperImagePool;
+            RHI::Ptr<RHI::ImagePool> m_displayMapperImagePool;
             AZStd::unordered_map<AZ::Name, DisplayMapperLut>            m_ownedLuts;
             AZStd::unordered_map<AZ::Name, DisplayMapperLut>            m_ownedLuts;
             // LUTs loaded from assets
             // LUTs loaded from assets
             AZStd::unordered_map<AZStd::string, DisplayMapperAssetLut>  m_assetLuts;
             AZStd::unordered_map<AZStd::string, DisplayMapperAssetLut>  m_assetLuts;

+ 1 - 1
Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/AcesOutputTransformLutPass.h

@@ -10,7 +10,7 @@
 #include <AzCore/Memory/SystemAllocator.h>
 #include <AzCore/Memory/SystemAllocator.h>
 
 
 #include <Atom/RHI/CommandList.h>
 #include <Atom/RHI/CommandList.h>
-#include <Atom/RHI/SingleDeviceDrawItem.h>
+#include <Atom/RHI/DeviceDrawItem.h>
 #include <Atom/RHI/ScopeProducer.h>
 #include <Atom/RHI/ScopeProducer.h>
 
 
 #include <Atom/RPI.Public/Pass/FullscreenTrianglePass.h>
 #include <Atom/RPI.Public/Pass/FullscreenTrianglePass.h>

+ 1 - 1
Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/AcesOutputTransformPass.h

@@ -10,7 +10,7 @@
 #include <AzCore/Memory/SystemAllocator.h>
 #include <AzCore/Memory/SystemAllocator.h>
 
 
 #include <Atom/RHI/CommandList.h>
 #include <Atom/RHI/CommandList.h>
-#include <Atom/RHI/SingleDeviceDrawItem.h>
+#include <Atom/RHI/DeviceDrawItem.h>
 #include <Atom/RHI/ScopeProducer.h>
 #include <Atom/RHI/ScopeProducer.h>
 
 
 #include <Atom/RPI.Public/Pass/FullscreenTrianglePass.h>
 #include <Atom/RPI.Public/Pass/FullscreenTrianglePass.h>

+ 2 - 2
Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/BakeAcesOutputTransformLutPass.h

@@ -10,10 +10,10 @@
 #include <AzCore/Memory/SystemAllocator.h>
 #include <AzCore/Memory/SystemAllocator.h>
 
 
 #include <Atom/RHI/CommandList.h>
 #include <Atom/RHI/CommandList.h>
-#include <Atom/RHI/SingleDeviceDrawItem.h>
+#include <Atom/RHI/DeviceDrawItem.h>
 #include <Atom/RHI/ScopeProducer.h>
 #include <Atom/RHI/ScopeProducer.h>
 
 
-#include <Atom/RHI/MultiDeviceImagePool.h>
+#include <Atom/RHI/ImagePool.h>
 #include <Atom/RPI.Public/Pass/ComputePass.h>
 #include <Atom/RPI.Public/Pass/ComputePass.h>
 #include <Atom/RPI.Public/Pass/FullscreenTrianglePass.h>
 #include <Atom/RPI.Public/Pass/FullscreenTrianglePass.h>
 #include <Atom/RPI.Public/Shader/Shader.h>
 #include <Atom/RPI.Public/Shader/Shader.h>

+ 3 - 3
Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/DisplayMapperFeatureProcessorInterface.h

@@ -12,7 +12,7 @@
 
 
 #include <Atom/Feature/DisplayMapper/DisplayMapperConfigurationDescriptor.h>
 #include <Atom/Feature/DisplayMapper/DisplayMapperConfigurationDescriptor.h>
 
 
-#include <Atom/RHI/MultiDeviceImagePool.h>
+#include <Atom/RHI/ImagePool.h>
 
 
 #include <Atom/RPI.Public/Image/StreamingImage.h>
 #include <Atom/RPI.Public/Image/StreamingImage.h>
 
 
@@ -22,8 +22,8 @@ namespace AZ
     {
     {
         struct DisplayMapperLut
         struct DisplayMapperLut
         {
         {
-            RHI::Ptr<RHI::MultiDeviceImage> m_lutImage;
-            RHI::Ptr<RHI::MultiDeviceImageView> m_lutImageView;
+            RHI::Ptr<RHI::Image> m_lutImage;
+            RHI::Ptr<RHI::ImageView> m_lutImageView;
             RHI::ImageViewDescriptor    m_lutImageViewDescriptor = {};
             RHI::ImageViewDescriptor    m_lutImageViewDescriptor = {};
         };
         };
 
 

+ 1 - 1
Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/DisplayMapperPass.h

@@ -10,7 +10,7 @@
 #include <AzCore/Memory/SystemAllocator.h>
 #include <AzCore/Memory/SystemAllocator.h>
 
 
 #include <Atom/RHI/CommandList.h>
 #include <Atom/RHI/CommandList.h>
-#include <Atom/RHI/SingleDeviceDrawItem.h>
+#include <Atom/RHI/DeviceDrawItem.h>
 #include <Atom/RHI/ScopeProducer.h>
 #include <Atom/RHI/ScopeProducer.h>
 
 
 #include <Atom/RPI.Public/Pass/ParentPass.h>
 #include <Atom/RPI.Public/Pass/ParentPass.h>

+ 1 - 1
Gems/Atom/Feature/Common/Code/Include/Atom/Feature/MorphTargets/MorphTargetInputBuffers.h

@@ -48,7 +48,7 @@ namespace AZ
             //! Set the buffer views and vertex count on the given SRG
             //! Set the buffer views and vertex count on the given SRG
             void SetBufferViewsOnShaderResourceGroup(const Data::Instance<RPI::ShaderResourceGroup>& perInstanceSRG);
             void SetBufferViewsOnShaderResourceGroup(const Data::Instance<RPI::ShaderResourceGroup>& perInstanceSRG);
         private:
         private:
-            RHI::Ptr<RHI::MultiDeviceBufferView> m_vertexDeltaBufferView;
+            RHI::Ptr<RHI::BufferView> m_vertexDeltaBufferView;
             Data::Instance<RPI::Buffer> m_vertexDeltaBuffer;
             Data::Instance<RPI::Buffer> m_vertexDeltaBuffer;
         };
         };
 
 

+ 2 - 2
Gems/Atom/Feature/Common/Code/Include/Atom/Feature/SkinnedMesh/SkinnedMeshInputBuffers.h

@@ -43,7 +43,7 @@ namespace AZ
             struct SrgNameViewPair
             struct SrgNameViewPair
             {
             {
                 Name m_srgName;
                 Name m_srgName;
-                RHI::Ptr<RHI::MultiDeviceBufferView> m_bufferView;
+                RHI::Ptr<RHI::BufferView> m_bufferView;
             };
             };
 
 
             //! Inputs to the skinning compute shader and their corresponding srg names
             //! Inputs to the skinning compute shader and their corresponding srg names
@@ -107,7 +107,7 @@ namespace AZ
 
 
         private:
         private:
             RHI::BufferViewDescriptor CreateInputViewDescriptor(
             RHI::BufferViewDescriptor CreateInputViewDescriptor(
-                SkinnedMeshInputVertexStreams inputStream, RHI::Format elementFormat, const RHI::MultiDeviceStreamBufferView& streamBufferView);
+                SkinnedMeshInputVertexStreams inputStream, RHI::Format elementFormat, const RHI::StreamBufferView& streamBufferView);
             
             
             using HasInputStreamArray = AZStd::array<bool, static_cast<uint8_t>(SkinnedMeshInputVertexStreams::NumVertexStreams)>;
             using HasInputStreamArray = AZStd::array<bool, static_cast<uint8_t>(SkinnedMeshInputVertexStreams::NumVertexStreams)>;
             HasInputStreamArray CreateInputBufferViews(
             HasInputStreamArray CreateInputBufferViews(

+ 1 - 1
Gems/Atom/Feature/Common/Code/Include/Atom/Feature/Utils/GpuBufferHandler.h

@@ -9,7 +9,7 @@
 #pragma once
 #pragma once
 
 
 #include <AzCore/std/string/string.h>
 #include <AzCore/std/string/string.h>
-#include <Atom/RHI/SingleDeviceBufferView.h>
+#include <Atom/RHI/DeviceBufferView.h>
 #include <Atom/RPI.Public/Buffer/Buffer.h>
 #include <Atom/RPI.Public/Buffer/Buffer.h>
 #include <Atom/RPI.Public/Shader/ShaderResourceGroup.h>
 #include <Atom/RPI.Public/Shader/ShaderResourceGroup.h>
 
 

+ 3 - 3
Gems/Atom/Feature/Common/Code/Source/ACES/AcesDisplayMapperFeatureProcessor.cpp

@@ -346,7 +346,7 @@ namespace AZ::Render
 
 
     void AcesDisplayMapperFeatureProcessor::InitializeImagePool()
     void AcesDisplayMapperFeatureProcessor::InitializeImagePool()
     {
     {
-        m_displayMapperImagePool = aznew RHI::MultiDeviceImagePool;
+        m_displayMapperImagePool = aznew RHI::ImagePool;
         m_displayMapperImagePool->SetName(Name("DisplayMapperImagePool"));
         m_displayMapperImagePool->SetName(Name("DisplayMapperImagePool"));
 
 
         RHI::ImagePoolDescriptor   imagePoolDesc = {};
         RHI::ImagePoolDescriptor   imagePoolDesc = {};
@@ -369,10 +369,10 @@ namespace AZ::Render
         }
         }
 
 
         DisplayMapperLut lutResource;
         DisplayMapperLut lutResource;
-        lutResource.m_lutImage = aznew RHI::MultiDeviceImage;
+        lutResource.m_lutImage = aznew RHI::Image;
         lutResource.m_lutImage->SetName(lutName);
         lutResource.m_lutImage->SetName(lutName);
 
 
-        RHI::MultiDeviceImageInitRequest imageRequest;
+        RHI::ImageInitRequest imageRequest;
         imageRequest.m_image = lutResource.m_lutImage.get();
         imageRequest.m_image = lutResource.m_lutImage.get();
         static const int LutSize = 32;
         static const int LutSize = 32;
         imageRequest.m_descriptor = RHI::ImageDescriptor::Create3D(RHI::ImageBindFlags::ShaderReadWrite, LutSize, LutSize, LutSize, LutFormat);
         imageRequest.m_descriptor = RHI::ImageDescriptor::Create3D(RHI::ImageBindFlags::ShaderReadWrite, LutSize, LutSize, LutSize, LutFormat);

+ 5 - 5
Gems/Atom/Feature/Common/Code/Source/AuxGeom/DynamicPrimitiveProcessor.cpp

@@ -9,7 +9,7 @@
 #include "DynamicPrimitiveProcessor.h"
 #include "DynamicPrimitiveProcessor.h"
 #include "AuxGeomDrawProcessorShared.h"
 #include "AuxGeomDrawProcessorShared.h"
 
 
-#include <Atom/RHI/MultiDeviceDrawPacketBuilder.h>
+#include <Atom/RHI/DrawPacketBuilder.h>
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI.Reflect/InputStreamLayoutBuilder.h>
 #include <Atom/RHI.Reflect/InputStreamLayoutBuilder.h>
 
 
@@ -92,7 +92,7 @@ namespace AZ
         void DynamicPrimitiveProcessor::ProcessDynamicPrimitives(const AuxGeomBufferData* bufferData, const RPI::FeatureProcessor::RenderPacket& fpPacket)
         void DynamicPrimitiveProcessor::ProcessDynamicPrimitives(const AuxGeomBufferData* bufferData, const RPI::FeatureProcessor::RenderPacket& fpPacket)
         {
         {
             AZ_PROFILE_SCOPE(AzRender, "DynamicPrimitiveProcessor: ProcessDynamicPrimitives");
             AZ_PROFILE_SCOPE(AzRender, "DynamicPrimitiveProcessor: ProcessDynamicPrimitives");
-            RHI::MultiDeviceDrawPacketBuilder drawPacketBuilder{RHI::MultiDevice::AllDevices};
+            RHI::DrawPacketBuilder drawPacketBuilder{RHI::MultiDevice::AllDevices};
 
 
             const DynamicPrimitiveData& srcPrimitives = bufferData->m_primitiveData;
             const DynamicPrimitiveData& srcPrimitives = bufferData->m_primitiveData;
             // Update the buffers for the dynamic primitives and generate draw packets for them
             // Update the buffers for the dynamic primitives and generate draw packets for them
@@ -385,13 +385,13 @@ namespace AZ
             }
             }
         }
         }
 
 
-        RHI::ConstPtr<RHI::MultiDeviceDrawPacket> DynamicPrimitiveProcessor::BuildDrawPacketForDynamicPrimitive(
+        RHI::ConstPtr<RHI::DrawPacket> DynamicPrimitiveProcessor::BuildDrawPacketForDynamicPrimitive(
             DynamicBufferGroup& group,
             DynamicBufferGroup& group,
             const RPI::Ptr<RPI::PipelineStateForDraw>& pipelineState,
             const RPI::Ptr<RPI::PipelineStateForDraw>& pipelineState,
             Data::Instance<RPI::ShaderResourceGroup> srg,
             Data::Instance<RPI::ShaderResourceGroup> srg,
             uint32_t indexCount,
             uint32_t indexCount,
             uint32_t indexOffset,
             uint32_t indexOffset,
-            RHI::MultiDeviceDrawPacketBuilder& drawPacketBuilder,
+            RHI::DrawPacketBuilder& drawPacketBuilder,
             RHI::DrawItemSortKey sortKey)
             RHI::DrawItemSortKey sortKey)
         {
         {
             RHI::DrawIndexed drawIndexed;
             RHI::DrawIndexed drawIndexed;
@@ -404,7 +404,7 @@ namespace AZ
             drawPacketBuilder.SetIndexBufferView(group.m_indexBufferView);
             drawPacketBuilder.SetIndexBufferView(group.m_indexBufferView);
             drawPacketBuilder.AddShaderResourceGroup(srg->GetRHIShaderResourceGroup());
             drawPacketBuilder.AddShaderResourceGroup(srg->GetRHIShaderResourceGroup());
 
 
-            RHI::MultiDeviceDrawPacketBuilder::MultiDeviceDrawRequest drawRequest;
+            RHI::DrawPacketBuilder::DrawRequest drawRequest;
             drawRequest.m_listTag = m_shaderData.m_drawListTag;
             drawRequest.m_listTag = m_shaderData.m_drawListTag;
             drawRequest.m_pipelineState = pipelineState->GetRHIPipelineState();
             drawRequest.m_pipelineState = pipelineState->GetRHIPipelineState();
             drawRequest.m_streamBufferViews = group.m_streamBufferViews;
             drawRequest.m_streamBufferViews = group.m_streamBufferViews;

+ 9 - 9
Gems/Atom/Feature/Common/Code/Source/AuxGeom/DynamicPrimitiveProcessor.h

@@ -8,9 +8,9 @@
 
 
 #pragma once
 #pragma once
 
 
-#include <Atom/RHI/MultiDeviceIndexBufferView.h>
-#include <Atom/RHI/MultiDeviceStreamBufferView.h>
-#include <Atom/RHI/SingleDevicePipelineState.h>
+#include <Atom/RHI/IndexBufferView.h>
+#include <Atom/RHI/StreamBufferView.h>
+#include <Atom/RHI/DevicePipelineState.h>
 #include <Atom/RHI/DrawList.h>
 #include <Atom/RHI/DrawList.h>
 
 
 #include <Atom/RHI.Reflect/InputStreamLayout.h>
 #include <Atom/RHI.Reflect/InputStreamLayout.h>
@@ -26,7 +26,7 @@ namespace AZ
 {
 {
     namespace RHI
     namespace RHI
     {
     {
-        class MultiDeviceDrawPacketBuilder;
+        class DrawPacketBuilder;
     }
     }
 
 
     namespace RPI
     namespace RPI
@@ -75,18 +75,18 @@ namespace AZ
 
 
         private: // types
         private: // types
 
 
-            using StreamBufferViewsForAllStreams = AZStd::fixed_vector<AZ::RHI::MultiDeviceStreamBufferView, AZ::RHI::Limits::Pipeline::StreamCountMax>;
+            using StreamBufferViewsForAllStreams = AZStd::fixed_vector<AZ::RHI::StreamBufferView, AZ::RHI::Limits::Pipeline::StreamCountMax>;
 
 
             struct DynamicBufferGroup
             struct DynamicBufferGroup
             {
             {
                 //! The view into the index buffer
                 //! The view into the index buffer
-                AZ::RHI::MultiDeviceIndexBufferView m_indexBufferView;
+                AZ::RHI::IndexBufferView m_indexBufferView;
 
 
                 //! The stream views into the vertex buffer (we only have one in our case)
                 //! The stream views into the vertex buffer (we only have one in our case)
                 StreamBufferViewsForAllStreams m_streamBufferViews;
                 StreamBufferViewsForAllStreams m_streamBufferViews;
             };
             };
 
 
-            using DrawPackets = AZStd::vector<AZ::RHI::ConstPtr<RHI::MultiDeviceDrawPacket>>;
+            using DrawPackets = AZStd::vector<AZ::RHI::ConstPtr<RHI::DrawPacket>>;
 
 
             struct ShaderData
             struct ShaderData
             {
             {
@@ -111,13 +111,13 @@ namespace AZ
         private: // functions
         private: // functions
 
 
             //!Uses the given drawPacketBuilder to build a draw packet with given data and returns it
             //!Uses the given drawPacketBuilder to build a draw packet with given data and returns it
-            RHI::ConstPtr<RHI::MultiDeviceDrawPacket> BuildDrawPacketForDynamicPrimitive(
+            RHI::ConstPtr<RHI::DrawPacket> BuildDrawPacketForDynamicPrimitive(
                 DynamicBufferGroup& group,
                 DynamicBufferGroup& group,
                 const RPI::Ptr<RPI::PipelineStateForDraw>& pipelineState,
                 const RPI::Ptr<RPI::PipelineStateForDraw>& pipelineState,
                 Data::Instance<RPI::ShaderResourceGroup> srg,
                 Data::Instance<RPI::ShaderResourceGroup> srg,
                 uint32_t indexCount,
                 uint32_t indexCount,
                 uint32_t indexOffset,
                 uint32_t indexOffset,
-                RHI::MultiDeviceDrawPacketBuilder& drawPacketBuilder,
+                RHI::DrawPacketBuilder& drawPacketBuilder,
                 RHI::DrawItemSortKey sortKey = 0);
                 RHI::DrawItemSortKey sortKey = 0);
 
 
             // Update a dynamic index buffer, given the data from draw requests
             // Update a dynamic index buffer, given the data from draw requests

+ 26 - 26
Gems/Atom/Feature/Common/Code/Source/AuxGeom/FixedShapeProcessor.cpp

@@ -13,7 +13,7 @@
 #include <AzCore/std/containers/array.h>
 #include <AzCore/std/containers/array.h>
 
 
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI/Factory.h>
-#include <Atom/RHI/MultiDeviceDrawPacketBuilder.h>
+#include <Atom/RHI/DrawPacketBuilder.h>
 
 
 #include <Atom/RHI.Reflect/InputStreamLayoutBuilder.h>
 #include <Atom/RHI.Reflect/InputStreamLayoutBuilder.h>
 #include <Atom/RPI.Reflect/Shader/ShaderOptionGroup.h>
 #include <Atom/RPI.Reflect/Shader/ShaderOptionGroup.h>
@@ -54,7 +54,7 @@ namespace AZ
             desc.m_heapMemoryLevel = RHI::HeapMemoryLevel::Device;
             desc.m_heapMemoryLevel = RHI::HeapMemoryLevel::Device;
             desc.m_bindFlags = RHI::BufferBindFlags::InputAssembly;
             desc.m_bindFlags = RHI::BufferBindFlags::InputAssembly;
 
 
-            m_bufferPool = aznew RHI::MultiDeviceBufferPool;
+            m_bufferPool = aznew RHI::BufferPool;
             m_bufferPool->SetName(Name("AuxGeomFixedShapeBufferPool"));
             m_bufferPool->SetName(Name("AuxGeomFixedShapeBufferPool"));
             RHI::ResultCode resultCode = m_bufferPool->Init(deviceMask, desc);
             RHI::ResultCode resultCode = m_bufferPool->Init(deviceMask, desc);
 
 
@@ -78,7 +78,7 @@ namespace AZ
             CreateCylinderBuffersAndViews(AuxGeomShapeType::ShapeType_CylinderNoEnds);
             CreateCylinderBuffersAndViews(AuxGeomShapeType::ShapeType_CylinderNoEnds);
             CreateBoxBuffersAndViews();
             CreateBoxBuffersAndViews();
 
 
-            // cache scene pointer for RHI::MultiDevicePipelineState creation.
+            // cache scene pointer for RHI::PipelineState creation.
             m_scene = scene;
             m_scene = scene;
 
 
             LoadShaders();
             LoadShaders();
@@ -132,7 +132,7 @@ namespace AZ
         {
         {
             AZ_PROFILE_SCOPE(AzRender, "FixedShapeProcessor: ProcessObjects");
             AZ_PROFILE_SCOPE(AzRender, "FixedShapeProcessor: ProcessObjects");
 
 
-            RHI::MultiDeviceDrawPacketBuilder drawPacketBuilder{RHI::MultiDevice::AllDevices};
+            RHI::DrawPacketBuilder drawPacketBuilder{RHI::MultiDevice::AllDevices};
 
 
             // Draw opaque shapes with LODs. This requires a separate draw packet per shape per view that it is in (usually only one)
             // Draw opaque shapes with LODs. This requires a separate draw packet per shape per view that it is in (usually only one)
 
 
@@ -1225,10 +1225,10 @@ namespace AZ
         {
         {
             AZ::RHI::ResultCode result = AZ::RHI::ResultCode::Fail;
             AZ::RHI::ResultCode result = AZ::RHI::ResultCode::Fail;
 
 
-            AZ::RHI::MultiDeviceBufferInitRequest request;
+            AZ::RHI::BufferInitRequest request;
 
 
             // setup m_pointIndexBuffer
             // setup m_pointIndexBuffer
-            objectBuffers.m_pointIndexBuffer = aznew RHI::MultiDeviceBuffer;
+            objectBuffers.m_pointIndexBuffer = aznew RHI::Buffer;
             const auto pointIndexDataSize = static_cast<uint32_t>(meshData.m_pointIndices.size() * sizeof(uint16_t));
             const auto pointIndexDataSize = static_cast<uint32_t>(meshData.m_pointIndices.size() * sizeof(uint16_t));
 
 
             request.m_buffer = objectBuffers.m_pointIndexBuffer.get();
             request.m_buffer = objectBuffers.m_pointIndexBuffer.get();
@@ -1243,7 +1243,7 @@ namespace AZ
             }
             }
 
 
             // setup m_lineIndexBuffer
             // setup m_lineIndexBuffer
-            objectBuffers.m_lineIndexBuffer = aznew RHI::MultiDeviceBuffer;
+            objectBuffers.m_lineIndexBuffer = aznew RHI::Buffer;
             const auto lineIndexDataSize = static_cast<uint32_t>(meshData.m_lineIndices.size() * sizeof(uint16_t));
             const auto lineIndexDataSize = static_cast<uint32_t>(meshData.m_lineIndices.size() * sizeof(uint16_t));
 
 
             request.m_buffer = objectBuffers.m_lineIndexBuffer.get();
             request.m_buffer = objectBuffers.m_lineIndexBuffer.get();
@@ -1258,7 +1258,7 @@ namespace AZ
             }
             }
 
 
             // setup m_triangleIndexBuffer
             // setup m_triangleIndexBuffer
-            objectBuffers.m_triangleIndexBuffer = aznew RHI::MultiDeviceBuffer;
+            objectBuffers.m_triangleIndexBuffer = aznew RHI::Buffer;
             const auto triangleIndexDataSize = static_cast<uint32_t>(meshData.m_triangleIndices.size() * sizeof(uint16_t));
             const auto triangleIndexDataSize = static_cast<uint32_t>(meshData.m_triangleIndices.size() * sizeof(uint16_t));
             request.m_buffer = objectBuffers.m_triangleIndexBuffer.get();
             request.m_buffer = objectBuffers.m_triangleIndexBuffer.get();
             request.m_descriptor = AZ::RHI::BufferDescriptor{ AZ::RHI::BufferBindFlags::InputAssembly, triangleIndexDataSize };
             request.m_descriptor = AZ::RHI::BufferDescriptor{ AZ::RHI::BufferBindFlags::InputAssembly, triangleIndexDataSize };
@@ -1272,7 +1272,7 @@ namespace AZ
             }
             }
 
 
             // setup m_positionBuffer
             // setup m_positionBuffer
-            objectBuffers.m_positionBuffer = aznew RHI::MultiDeviceBuffer;
+            objectBuffers.m_positionBuffer = aznew RHI::Buffer;
             const auto positionDataSize = static_cast<uint32_t>(meshData.m_positions.size() * sizeof(AuxGeomPosition));
             const auto positionDataSize = static_cast<uint32_t>(meshData.m_positions.size() * sizeof(AuxGeomPosition));
 
 
             request.m_buffer = objectBuffers.m_positionBuffer.get();
             request.m_buffer = objectBuffers.m_positionBuffer.get();
@@ -1286,7 +1286,7 @@ namespace AZ
             }
             }
 
 
             // setup m_normalBuffer
             // setup m_normalBuffer
-            objectBuffers.m_normalBuffer = aznew RHI::MultiDeviceBuffer;
+            objectBuffers.m_normalBuffer = aznew RHI::Buffer;
             const auto normalDataSize = static_cast<uint32_t>(meshData.m_normals.size() * sizeof(AuxGeomNormal));
             const auto normalDataSize = static_cast<uint32_t>(meshData.m_normals.size() * sizeof(AuxGeomNormal));
 
 
             request.m_buffer = objectBuffers.m_normalBuffer.get();
             request.m_buffer = objectBuffers.m_normalBuffer.get();
@@ -1301,7 +1301,7 @@ namespace AZ
 
 
             // Setup point index buffer view
             // Setup point index buffer view
             objectBuffers.m_pointIndexCount = static_cast<uint32_t>(meshData.m_pointIndices.size());
             objectBuffers.m_pointIndexCount = static_cast<uint32_t>(meshData.m_pointIndices.size());
-            AZ::RHI::MultiDeviceIndexBufferView pointIndexBufferView =
+            AZ::RHI::IndexBufferView pointIndexBufferView =
             {
             {
                 *objectBuffers.m_pointIndexBuffer,
                 *objectBuffers.m_pointIndexBuffer,
                 0,
                 0,
@@ -1312,7 +1312,7 @@ namespace AZ
 
 
             // Setup line index buffer view
             // Setup line index buffer view
             objectBuffers.m_lineIndexCount = static_cast<uint32_t>(meshData.m_lineIndices.size());
             objectBuffers.m_lineIndexCount = static_cast<uint32_t>(meshData.m_lineIndices.size());
-            AZ::RHI::MultiDeviceIndexBufferView lineIndexBufferView =
+            AZ::RHI::IndexBufferView lineIndexBufferView =
             {
             {
                 *objectBuffers.m_lineIndexBuffer,
                 *objectBuffers.m_lineIndexBuffer,
                 0,
                 0,
@@ -1323,7 +1323,7 @@ namespace AZ
 
 
             // Setup triangle index buffer view
             // Setup triangle index buffer view
             objectBuffers.m_triangleIndexCount = static_cast<uint32_t>(meshData.m_triangleIndices.size());
             objectBuffers.m_triangleIndexCount = static_cast<uint32_t>(meshData.m_triangleIndices.size());
-            AZ::RHI::MultiDeviceIndexBufferView triangleIndexBufferView =
+            AZ::RHI::IndexBufferView triangleIndexBufferView =
             {
             {
                 *objectBuffers.m_triangleIndexBuffer,
                 *objectBuffers.m_triangleIndexBuffer,
                 0,
                 0,
@@ -1336,7 +1336,7 @@ namespace AZ
             const auto positionCount = static_cast<uint32_t>(meshData.m_positions.size());
             const auto positionCount = static_cast<uint32_t>(meshData.m_positions.size());
             const uint32_t positionSize = sizeof(float) * 3;
             const uint32_t positionSize = sizeof(float) * 3;
 
 
-            AZ::RHI::MultiDeviceStreamBufferView positionBufferView =
+            AZ::RHI::StreamBufferView positionBufferView =
             {
             {
                 *objectBuffers.m_positionBuffer,
                 *objectBuffers.m_positionBuffer,
                 0,
                 0,
@@ -1348,7 +1348,7 @@ namespace AZ
             const auto normalCount = static_cast<uint32_t>(meshData.m_normals.size());
             const auto normalCount = static_cast<uint32_t>(meshData.m_normals.size());
             const uint32_t normalSize = sizeof(float) * 3;
             const uint32_t normalSize = sizeof(float) * 3;
 
 
-            AZ::RHI::MultiDeviceStreamBufferView normalBufferView =
+            AZ::RHI::StreamBufferView normalBufferView =
             {
             {
                 *objectBuffers.m_normalBuffer,
                 *objectBuffers.m_normalBuffer,
                 0,
                 0,
@@ -1559,7 +1559,7 @@ namespace AZ
             destPipelineState->Finalize();
             destPipelineState->Finalize();
         }
         }
 
 
-        const AZ::RHI::MultiDeviceIndexBufferView& FixedShapeProcessor::GetShapeIndexBufferView(AuxGeomShapeType shapeType, int drawStyle, LodIndex lodIndex) const
+        const AZ::RHI::IndexBufferView& FixedShapeProcessor::GetShapeIndexBufferView(AuxGeomShapeType shapeType, int drawStyle, LodIndex lodIndex) const
         {
         {
             switch(drawStyle)
             switch(drawStyle)
             {
             {
@@ -1600,8 +1600,8 @@ namespace AZ
             }
             }
         }
         }
 
 
-        RHI::ConstPtr<RHI::MultiDeviceDrawPacket> FixedShapeProcessor::BuildDrawPacketForShape(
-            RHI::MultiDeviceDrawPacketBuilder& drawPacketBuilder,
+        RHI::ConstPtr<RHI::DrawPacket> FixedShapeProcessor::BuildDrawPacketForShape(
+            RHI::DrawPacketBuilder& drawPacketBuilder,
             const ShapeBufferEntry& shape,
             const ShapeBufferEntry& shape,
             int drawStyle,
             int drawStyle,
             const AZStd::vector<AZ::Matrix4x4>& viewProjOverrides,
             const AZStd::vector<AZ::Matrix4x4>& viewProjOverrides,
@@ -1661,7 +1661,7 @@ namespace AZ
             return nullptr;
             return nullptr;
         }
         }
 
 
-        const AZ::RHI::MultiDeviceIndexBufferView& FixedShapeProcessor::GetBoxIndexBufferView(int drawStyle) const
+        const AZ::RHI::IndexBufferView& FixedShapeProcessor::GetBoxIndexBufferView(int drawStyle) const
         {
         {
             switch(drawStyle)
             switch(drawStyle)
             {
             {
@@ -1702,8 +1702,8 @@ namespace AZ
             }
             }
         }
         }
 
 
-        RHI::ConstPtr<RHI::MultiDeviceDrawPacket> FixedShapeProcessor::BuildDrawPacketForBox(
-            RHI::MultiDeviceDrawPacketBuilder& drawPacketBuilder,
+        RHI::ConstPtr<RHI::DrawPacket> FixedShapeProcessor::BuildDrawPacketForBox(
+            RHI::DrawPacketBuilder& drawPacketBuilder,
             const BoxBufferEntry& box,
             const BoxBufferEntry& box,
             int drawStyle,
             int drawStyle,
             const AZStd::vector<AZ::Matrix4x4>& viewProjOverrides,
             const AZStd::vector<AZ::Matrix4x4>& viewProjOverrides,
@@ -1754,14 +1754,14 @@ namespace AZ
                 sortKey);
                 sortKey);
         }
         }
 
 
-        RHI::ConstPtr<RHI::MultiDeviceDrawPacket> FixedShapeProcessor::BuildDrawPacket(
-            RHI::MultiDeviceDrawPacketBuilder& drawPacketBuilder,
+        RHI::ConstPtr<RHI::DrawPacket> FixedShapeProcessor::BuildDrawPacket(
+            RHI::DrawPacketBuilder& drawPacketBuilder,
             AZ::Data::Instance<RPI::ShaderResourceGroup>& srg,
             AZ::Data::Instance<RPI::ShaderResourceGroup>& srg,
             uint32_t indexCount,
             uint32_t indexCount,
-            const RHI::MultiDeviceIndexBufferView& indexBufferView,
+            const RHI::IndexBufferView& indexBufferView,
             const StreamBufferViewsForAllStreams& streamBufferViews,
             const StreamBufferViewsForAllStreams& streamBufferViews,
             RHI::DrawListTag drawListTag,
             RHI::DrawListTag drawListTag,
-            const RHI::MultiDevicePipelineState* pipelineState,
+            const RHI::PipelineState* pipelineState,
             RHI::DrawItemSortKey sortKey)
             RHI::DrawItemSortKey sortKey)
         {
         {
             RHI::DrawIndexed drawIndexed;
             RHI::DrawIndexed drawIndexed;
@@ -1774,7 +1774,7 @@ namespace AZ
             drawPacketBuilder.SetIndexBufferView(indexBufferView);
             drawPacketBuilder.SetIndexBufferView(indexBufferView);
             drawPacketBuilder.AddShaderResourceGroup(srg->GetRHIShaderResourceGroup());
             drawPacketBuilder.AddShaderResourceGroup(srg->GetRHIShaderResourceGroup());
 
 
-            RHI::MultiDeviceDrawPacketBuilder::MultiDeviceDrawRequest drawRequest;
+            RHI::DrawPacketBuilder::DrawRequest drawRequest;
             drawRequest.m_listTag = drawListTag;
             drawRequest.m_listTag = drawListTag;
             drawRequest.m_pipelineState = pipelineState;
             drawRequest.m_pipelineState = pipelineState;
             drawRequest.m_streamBufferViews = streamBufferViews;
             drawRequest.m_streamBufferViews = streamBufferViews;

+ 27 - 27
Gems/Atom/Feature/Common/Code/Source/AuxGeom/FixedShapeProcessor.h

@@ -8,11 +8,11 @@
 
 
 #pragma once
 #pragma once
 
 
-#include <Atom/RHI/MultiDeviceBuffer.h>
-#include <Atom/RHI/MultiDeviceBufferPool.h>
-#include <Atom/RHI/MultiDeviceIndexBufferView.h>
-#include <Atom/RHI/MultiDeviceStreamBufferView.h>
-#include <Atom/RHI/SingleDevicePipelineState.h>
+#include <Atom/RHI/Buffer.h>
+#include <Atom/RHI/BufferPool.h>
+#include <Atom/RHI/IndexBufferView.h>
+#include <Atom/RHI/StreamBufferView.h>
+#include <Atom/RHI/DevicePipelineState.h>
 
 
 #include <Atom/RPI.Public/FeatureProcessor.h>
 #include <Atom/RPI.Public/FeatureProcessor.h>
 #include <Atom/RPI.Public/PipelineState.h>
 #include <Atom/RPI.Public/PipelineState.h>
@@ -29,7 +29,7 @@ namespace AZ
 {
 {
     namespace RHI
     namespace RHI
     {
     {
-        class MultiDeviceDrawPacketBuilder;
+        class DrawPacketBuilder;
     }
     }
 
 
     namespace RPI
     namespace RPI
@@ -51,7 +51,7 @@ namespace AZ
         class FixedShapeProcessor final
         class FixedShapeProcessor final
         {
         {
         public:
         public:
-            using StreamBufferViewsForAllStreams = AZStd::fixed_vector<AZ::RHI::MultiDeviceStreamBufferView, AZ::RHI::Limits::Pipeline::StreamCountMax>;
+            using StreamBufferViewsForAllStreams = AZStd::fixed_vector<AZ::RHI::StreamBufferView, AZ::RHI::Limits::Pipeline::StreamCountMax>;
 
 
             using AuxGeomNormal = AuxGeomPosition;
             using AuxGeomNormal = AuxGeomPosition;
 
 
@@ -88,19 +88,19 @@ namespace AZ
             struct ObjectBuffers
             struct ObjectBuffers
             {
             {
                 uint32_t m_pointIndexCount;
                 uint32_t m_pointIndexCount;
-                AZ::RHI::Ptr<AZ::RHI::MultiDeviceBuffer> m_pointIndexBuffer;
-                AZ::RHI::MultiDeviceIndexBufferView m_pointIndexBufferView;
+                AZ::RHI::Ptr<AZ::RHI::Buffer> m_pointIndexBuffer;
+                AZ::RHI::IndexBufferView m_pointIndexBufferView;
 
 
                 uint32_t m_lineIndexCount;
                 uint32_t m_lineIndexCount;
-                AZ::RHI::Ptr<AZ::RHI::MultiDeviceBuffer> m_lineIndexBuffer;
-                AZ::RHI::MultiDeviceIndexBufferView m_lineIndexBufferView;
+                AZ::RHI::Ptr<AZ::RHI::Buffer> m_lineIndexBuffer;
+                AZ::RHI::IndexBufferView m_lineIndexBufferView;
 
 
                 uint32_t m_triangleIndexCount;
                 uint32_t m_triangleIndexCount;
-                AZ::RHI::Ptr<AZ::RHI::MultiDeviceBuffer> m_triangleIndexBuffer;
-                AZ::RHI::MultiDeviceIndexBufferView m_triangleIndexBufferView;
+                AZ::RHI::Ptr<AZ::RHI::Buffer> m_triangleIndexBuffer;
+                AZ::RHI::IndexBufferView m_triangleIndexBufferView;
 
 
-                AZ::RHI::Ptr<AZ::RHI::MultiDeviceBuffer> m_positionBuffer;
-                AZ::RHI::Ptr<AZ::RHI::MultiDeviceBuffer> m_normalBuffer;
+                AZ::RHI::Ptr<AZ::RHI::Buffer> m_positionBuffer;
+                AZ::RHI::Ptr<AZ::RHI::Buffer> m_normalBuffer;
                 StreamBufferViewsForAllStreams m_streamBufferViews;
                 StreamBufferViewsForAllStreams m_streamBufferViews;
                 StreamBufferViewsForAllStreams m_streamBufferViewsWithNormals;
                 StreamBufferViewsForAllStreams m_streamBufferViewsWithNormals;
             };
             };
@@ -173,13 +173,13 @@ namespace AZ
             void InitPipelineState(const PipelineStateOptions& options);
             void InitPipelineState(const PipelineStateOptions& options);
             RPI::Ptr<RPI::PipelineStateForDraw>& GetPipelineState(const PipelineStateOptions& pipelineStateOptions);
             RPI::Ptr<RPI::PipelineStateForDraw>& GetPipelineState(const PipelineStateOptions& pipelineStateOptions);
 
 
-            const AZ::RHI::MultiDeviceIndexBufferView& GetShapeIndexBufferView(AuxGeomShapeType shapeType, int drawStyle, LodIndex lodIndex) const;
+            const AZ::RHI::IndexBufferView& GetShapeIndexBufferView(AuxGeomShapeType shapeType, int drawStyle, LodIndex lodIndex) const;
             const StreamBufferViewsForAllStreams& GetShapeStreamBufferViews(AuxGeomShapeType shapeType, LodIndex lodIndex, int drawStyle) const;
             const StreamBufferViewsForAllStreams& GetShapeStreamBufferViews(AuxGeomShapeType shapeType, LodIndex lodIndex, int drawStyle) const;
             uint32_t GetShapeIndexCount(AuxGeomShapeType shapeType, int drawStyle, LodIndex lodIndex);
             uint32_t GetShapeIndexCount(AuxGeomShapeType shapeType, int drawStyle, LodIndex lodIndex);
 
 
             //! Uses the given drawPacketBuilder to build a draw packet for given shape and state and returns it
             //! Uses the given drawPacketBuilder to build a draw packet for given shape and state and returns it
-            RHI::ConstPtr<RHI::MultiDeviceDrawPacket> BuildDrawPacketForShape(
-                RHI::MultiDeviceDrawPacketBuilder& drawPacketBuilder,
+            RHI::ConstPtr<RHI::DrawPacket> BuildDrawPacketForShape(
+                RHI::DrawPacketBuilder& drawPacketBuilder,
                 const ShapeBufferEntry& shape,
                 const ShapeBufferEntry& shape,
                 int drawStyle,
                 int drawStyle,
                 const AZStd::vector<AZ::Matrix4x4>& viewProjOverrides,
                 const AZStd::vector<AZ::Matrix4x4>& viewProjOverrides,
@@ -187,13 +187,13 @@ namespace AZ
                 LodIndex lodIndex,
                 LodIndex lodIndex,
                 RHI::DrawItemSortKey sortKey = 0);
                 RHI::DrawItemSortKey sortKey = 0);
 
 
-            const AZ::RHI::MultiDeviceIndexBufferView& GetBoxIndexBufferView(int drawStyle) const;
+            const AZ::RHI::IndexBufferView& GetBoxIndexBufferView(int drawStyle) const;
             const StreamBufferViewsForAllStreams& GetBoxStreamBufferViews(int drawStyle) const;
             const StreamBufferViewsForAllStreams& GetBoxStreamBufferViews(int drawStyle) const;
             uint32_t GetBoxIndexCount(int drawStyle);
             uint32_t GetBoxIndexCount(int drawStyle);
 
 
             //! Uses the given drawPacketBuilder to build a draw packet for given box and state and returns it
             //! Uses the given drawPacketBuilder to build a draw packet for given box and state and returns it
-            RHI::ConstPtr<RHI::MultiDeviceDrawPacket> BuildDrawPacketForBox(
-                RHI::MultiDeviceDrawPacketBuilder& drawPacketBuilder,
+            RHI::ConstPtr<RHI::DrawPacket> BuildDrawPacketForBox(
+                RHI::DrawPacketBuilder& drawPacketBuilder,
                 const BoxBufferEntry& box,
                 const BoxBufferEntry& box,
                 int drawStyle,
                 int drawStyle,
                 const AZStd::vector<AZ::Matrix4x4>& overrideViewProjMatrices,
                 const AZStd::vector<AZ::Matrix4x4>& overrideViewProjMatrices,
@@ -201,20 +201,20 @@ namespace AZ
                 RHI::DrawItemSortKey sortKey = 0);
                 RHI::DrawItemSortKey sortKey = 0);
 
 
             //! Uses the given drawPacketBuilder to build a draw packet with the given data
             //! Uses the given drawPacketBuilder to build a draw packet with the given data
-            RHI::ConstPtr<RHI::MultiDeviceDrawPacket> BuildDrawPacket(
-                RHI::MultiDeviceDrawPacketBuilder& drawPacketBuilder,
+            RHI::ConstPtr<RHI::DrawPacket> BuildDrawPacket(
+                RHI::DrawPacketBuilder& drawPacketBuilder,
                 AZ::Data::Instance<RPI::ShaderResourceGroup>& srg,
                 AZ::Data::Instance<RPI::ShaderResourceGroup>& srg,
                 uint32_t indexCount,
                 uint32_t indexCount,
-                const RHI::MultiDeviceIndexBufferView& indexBufferView,
+                const RHI::IndexBufferView& indexBufferView,
                 const StreamBufferViewsForAllStreams& streamBufferViews,
                 const StreamBufferViewsForAllStreams& streamBufferViews,
                 RHI::DrawListTag drawListTag,
                 RHI::DrawListTag drawListTag,
-                const AZ::RHI::MultiDevicePipelineState* pipelineState,
+                const AZ::RHI::PipelineState* pipelineState,
                 RHI::DrawItemSortKey sortKey);
                 RHI::DrawItemSortKey sortKey);
 
 
         private: // data
         private: // data
 
 
             //! The buffer pool that manages the index and vertex buffers for each shape
             //! The buffer pool that manages the index and vertex buffers for each shape
-            RHI::Ptr<AZ::RHI::MultiDeviceBufferPool> m_bufferPool;
+            RHI::Ptr<AZ::RHI::BufferPool> m_bufferPool;
 
 
             //! The descriptor for drawing an object of each draw style using predefined streams
             //! The descriptor for drawing an object of each draw style using predefined streams
             RHI::InputStreamLayout m_objectStreamLayout[DrawStyle_Count];
             RHI::InputStreamLayout m_objectStreamLayout[DrawStyle_Count];
@@ -256,7 +256,7 @@ namespace AZ
             ShaderData m_perObjectShaderData[ShapeLightingStyle_Count];
             ShaderData m_perObjectShaderData[ShapeLightingStyle_Count];
             ShaderData& GetShaderDataForDrawStyle(int drawStyle) {return m_perObjectShaderData[drawStyle == DrawStyle_Shaded];}
             ShaderData& GetShaderDataForDrawStyle(int drawStyle) {return m_perObjectShaderData[drawStyle == DrawStyle_Shaded];}
 
 
-            AZStd::vector<AZ::RHI::ConstPtr<RHI::MultiDeviceDrawPacket>> m_drawPackets;
+            AZStd::vector<AZ::RHI::ConstPtr<RHI::DrawPacket>> m_drawPackets;
 
 
             const AZ::RPI::Scene* m_scene = nullptr;
             const AZ::RPI::Scene* m_scene = nullptr;
 
 

+ 2 - 2
Gems/Atom/Feature/Common/Code/Source/CoreLights/DepthExponentiationPass.h

@@ -7,7 +7,7 @@
  */
  */
 #pragma once
 #pragma once
 
 
-#include <Atom/RHI/SingleDevicePipelineState.h>
+#include <Atom/RHI/DevicePipelineState.h>
 #include <Atom/RPI.Public/Pass/ComputePass.h>
 #include <Atom/RPI.Public/Pass/ComputePass.h>
 #include <CoreLights/Shadow.h>
 #include <CoreLights/Shadow.h>
 
 
@@ -39,7 +39,7 @@ namespace AZ
             struct ShaderVariantInfo
             struct ShaderVariantInfo
             {
             {
                 const bool m_isFullyBaked = false;
                 const bool m_isFullyBaked = false;
-                const RHI::MultiDevicePipelineState* m_pipelineState = nullptr;
+                const RHI::PipelineState* m_pipelineState = nullptr;
             };
             };
 
 
             DepthExponentiationPass() = delete;
             DepthExponentiationPass() = delete;

+ 2 - 2
Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingPass.cpp

@@ -9,13 +9,13 @@
 #include <CoreLights/LightCullingPass.h>
 #include <CoreLights/LightCullingPass.h>
 
 
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI/Factory.h>
-#include <Atom/RHI/SingleDevicePipelineState.h>
+#include <Atom/RHI/DevicePipelineState.h>
 #include <Atom/RHI/FrameGraphInterface.h>
 #include <Atom/RHI/FrameGraphInterface.h>
 #include <Atom/RHI/FrameGraphAttachmentInterface.h>
 #include <Atom/RHI/FrameGraphAttachmentInterface.h>
 #include <Atom/RHI/Device.h>
 #include <Atom/RHI/Device.h>
 
 
 #include <Atom/Feature/Decals/DecalFeatureProcessorInterface.h>
 #include <Atom/Feature/Decals/DecalFeatureProcessorInterface.h>
-#include <Atom/RHI/MultiDeviceImagePool.h>
+#include <Atom/RHI/ImagePool.h>
 #include <Atom/RHI/RHISystemInterface.h>
 #include <Atom/RHI/RHISystemInterface.h>
 #include <Atom/RPI.Public/Image/AttachmentImage.h>
 #include <Atom/RPI.Public/Image/AttachmentImage.h>
 #include <Atom/RPI.Public/Image/AttachmentImagePool.h>
 #include <Atom/RPI.Public/Image/AttachmentImagePool.h>

+ 1 - 1
Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingPass.h

@@ -10,7 +10,7 @@
 #include <AzCore/Memory/SystemAllocator.h>
 #include <AzCore/Memory/SystemAllocator.h>
 
 
 #include <Atom/RHI/CommandList.h>
 #include <Atom/RHI/CommandList.h>
-#include <Atom/RHI/SingleDeviceDrawItem.h>
+#include <Atom/RHI/DeviceDrawItem.h>
 #include <Atom/RHI/ScopeProducer.h>
 #include <Atom/RHI/ScopeProducer.h>
 #include <Atom/RHI.Reflect/ShaderResourceGroupLayoutDescriptor.h>
 #include <Atom/RHI.Reflect/ShaderResourceGroupLayoutDescriptor.h>
 #include <Atom/RPI.Public/Pass/ComputePass.h>
 #include <Atom/RPI.Public/Pass/ComputePass.h>

+ 1 - 1
Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingRemap.cpp

@@ -9,7 +9,7 @@
 #include <CoreLights/LightCullingRemap.h>
 #include <CoreLights/LightCullingRemap.h>
 
 
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI/Factory.h>
-#include <Atom/RHI/SingleDevicePipelineState.h>
+#include <Atom/RHI/DevicePipelineState.h>
 #include <Atom/RHI/FrameGraphInterface.h>
 #include <Atom/RHI/FrameGraphInterface.h>
 #include <Atom/RHI/FrameGraphAttachmentInterface.h>
 #include <Atom/RHI/FrameGraphAttachmentInterface.h>
 #include <Atom/RHI/Device.h>
 #include <Atom/RHI/Device.h>

+ 1 - 1
Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingRemap.h

@@ -10,7 +10,7 @@
 #include <AzCore/Memory/SystemAllocator.h>
 #include <AzCore/Memory/SystemAllocator.h>
 
 
 #include <Atom/RHI/CommandList.h>
 #include <Atom/RHI/CommandList.h>
-#include <Atom/RHI/SingleDeviceDrawItem.h>
+#include <Atom/RHI/DeviceDrawItem.h>
 #include <Atom/RHI/ScopeProducer.h>
 #include <Atom/RHI/ScopeProducer.h>
 #include <Atom/RHI.Reflect/ShaderResourceGroupLayoutDescriptor.h>
 #include <Atom/RHI.Reflect/ShaderResourceGroupLayoutDescriptor.h>
 #include <Atom/RPI.Public/Pass/ComputePass.h>
 #include <Atom/RPI.Public/Pass/ComputePass.h>

+ 1 - 1
Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingTilePreparePass.cpp

@@ -9,7 +9,7 @@
 #include <CoreLights/LightCullingTilePreparePass.h>
 #include <CoreLights/LightCullingTilePreparePass.h>
 
 
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI/Factory.h>
-#include <Atom/RHI/SingleDevicePipelineState.h>
+#include <Atom/RHI/DevicePipelineState.h>
 #include <Atom/RPI.Public/Pass/PassUtils.h>
 #include <Atom/RPI.Public/Pass/PassUtils.h>
 #include <Atom/RPI.Public/RenderPipeline.h>
 #include <Atom/RPI.Public/RenderPipeline.h>
 #include <Atom/RPI.Public/RPIUtils.h>
 #include <Atom/RPI.Public/RPIUtils.h>

+ 2 - 2
Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingTilePreparePass.h

@@ -10,7 +10,7 @@
 #include <AzCore/Memory/SystemAllocator.h>
 #include <AzCore/Memory/SystemAllocator.h>
 
 
 #include <Atom/RHI/CommandList.h>
 #include <Atom/RHI/CommandList.h>
-#include <Atom/RHI/SingleDeviceDrawItem.h>
+#include <Atom/RHI/DeviceDrawItem.h>
 #include <Atom/RHI/ScopeProducer.h>
 #include <Atom/RHI/ScopeProducer.h>
 #include <Atom/RHI.Reflect/ShaderResourceGroupLayoutDescriptor.h>
 #include <Atom/RHI.Reflect/ShaderResourceGroupLayoutDescriptor.h>
 
 
@@ -74,7 +74,7 @@ namespace AZ
             AZ::RHI::ShaderInputNameIndex m_constantDataIndex = "m_constantData";
             AZ::RHI::ShaderInputNameIndex m_constantDataIndex = "m_constantData";
 
 
             // The shader variant (for choosing the different MSAA version) is sent to the RHI via the PipelineState
             // The shader variant (for choosing the different MSAA version) is sent to the RHI via the PipelineState
-            AZ::RHI::ConstPtr<AZ::RHI::MultiDevicePipelineState> m_msaaPipelineState;
+            AZ::RHI::ConstPtr<AZ::RHI::PipelineState> m_msaaPipelineState;
 
 
             AZ::Name m_msaaNoneName;
             AZ::Name m_msaaNoneName;
             AZ::Name m_msaaMode2xName;
             AZ::Name m_msaaMode2xName;

+ 2 - 2
Gems/Atom/Feature/Common/Code/Source/CoreLights/ShadowmapPass.cpp

@@ -156,7 +156,7 @@ namespace AZ
             m_scissorState = scissor;
             m_scissorState = scissor;
         }
         }
 
 
-        void ShadowmapPass::SetClearShadowDrawPacket(AZ::RHI::ConstPtr<RHI::MultiDeviceDrawPacket> clearShadowDrawPacket)
+        void ShadowmapPass::SetClearShadowDrawPacket(AZ::RHI::ConstPtr<RHI::DrawPacket> clearShadowDrawPacket)
         {
         {
             m_clearShadowDrawPacket = clearShadowDrawPacket;
             m_clearShadowDrawPacket = clearShadowDrawPacket;
             m_clearShadowDrawItemProperties = clearShadowDrawPacket->GetDrawItemProperties(0);
             m_clearShadowDrawItemProperties = clearShadowDrawPacket->GetDrawItemProperties(0);
@@ -201,7 +201,7 @@ namespace AZ
                 if (startIndex == 0)
                 if (startIndex == 0)
                 {
                 {
                     RHI::CommandList* commandList = context.GetCommandList();
                     RHI::CommandList* commandList = context.GetCommandList();
-                    commandList->Submit(m_clearShadowDrawPacket->GetDrawItemProperties(0).m_mdItem->GetDeviceDrawItem(context.GetDeviceIndex()), 0);
+                    commandList->Submit(m_clearShadowDrawPacket->GetDrawItemProperties(0).m_Item->GetDeviceDrawItem(context.GetDeviceIndex()), 0);
                 }
                 }
                 else
                 else
                 {
                 {

+ 4 - 4
Gems/Atom/Feature/Common/Code/Source/CoreLights/ShadowmapPass.h

@@ -8,7 +8,7 @@
 #pragma once
 #pragma once
 
 
 #include <Atom/RHI.Reflect/Size.h>
 #include <Atom/RHI.Reflect/Size.h>
-#include <Atom/RHI/MultiDeviceDrawPacket.h>
+#include <Atom/RHI/DrawPacket.h>
 #include <Atom/RPI.Public/Pass/RasterPass.h>
 #include <Atom/RPI.Public/Pass/RasterPass.h>
 #include <Atom/RPI.Reflect/Pass/RasterPassData.h>
 #include <Atom/RPI.Reflect/Pass/RasterPassData.h>
 
 
@@ -63,7 +63,7 @@ namespace AZ
             void SetViewportScissor(const RHI::Viewport& viewport, const RHI::Scissor& scissor);
             void SetViewportScissor(const RHI::Viewport& viewport, const RHI::Scissor& scissor);
 
 
             //! Sets the draw packet used for clearing a shadow viewport.
             //! Sets the draw packet used for clearing a shadow viewport.
-            void SetClearShadowDrawPacket(AZ::RHI::ConstPtr<AZ::RHI::MultiDeviceDrawPacket> clearShadowDrawPacket);
+            void SetClearShadowDrawPacket(AZ::RHI::ConstPtr<AZ::RHI::DrawPacket> clearShadowDrawPacket);
 
 
         private:
         private:
             ShadowmapPass() = delete;
             ShadowmapPass() = delete;
@@ -83,8 +83,8 @@ namespace AZ
             // Gets the number of expected draws, taking into account if this shadow is static.
             // Gets the number of expected draws, taking into account if this shadow is static.
             uint32_t GetNumDraws() const;
             uint32_t GetNumDraws() const;
 
 
-            RHI::ConstPtr<RHI::MultiDeviceDrawPacket> m_clearShadowDrawPacket;
-            RHI::MultiDeviceDrawItemProperties m_clearShadowDrawItemProperties;
+            RHI::ConstPtr<RHI::DrawPacket> m_clearShadowDrawPacket;
+            RHI::DrawItemProperties m_clearShadowDrawItemProperties;
             RHI::Handle<uint32_t> m_casterMovedBit;
             RHI::Handle<uint32_t> m_casterMovedBit;
             uint16_t m_arraySlice = 0;
             uint16_t m_arraySlice = 0;
             bool m_clearEnabled = true;
             bool m_clearEnabled = true;

+ 1 - 1
Gems/Atom/Feature/Common/Code/Source/Decals/DecalTextureArray.cpp

@@ -260,7 +260,7 @@ namespace AZ
             return imageAsset->GetImageDescriptor().m_mipLevels;
             return imageAsset->GetImageDescriptor().m_mipLevels;
         }
         }
 
 
-        RHI::SingleDeviceImageSubresourceLayout DecalTextureArray::GetLayout(const DecalMapType mapType, int mip) const
+        RHI::DeviceImageSubresourceLayout DecalTextureArray::GetLayout(const DecalMapType mapType, int mip) const
         {
         {
             AZ_Assert(m_materials.size() > 0, "GetLayout() cannot be called unless at least one material has been added");
             AZ_Assert(m_materials.size() > 0, "GetLayout() cannot be called unless at least one material has been added");
 
 

+ 1 - 1
Gems/Atom/Feature/Common/Code/Source/Decals/DecalTextureArray.h

@@ -80,7 +80,7 @@ namespace AZ
             uint16_t GetNumMipLevels(const DecalMapType mapType) const;
             uint16_t GetNumMipLevels(const DecalMapType mapType) const;
             RHI::Size GetImageDimensions(const DecalMapType mapType) const;
             RHI::Size GetImageDimensions(const DecalMapType mapType) const;
             RHI::Format GetFormat(const DecalMapType mapType) const;
             RHI::Format GetFormat(const DecalMapType mapType) const;
-            RHI::SingleDeviceImageSubresourceLayout GetLayout(const DecalMapType mapType, int mip) const;
+            RHI::DeviceImageSubresourceLayout GetLayout(const DecalMapType mapType, int mip) const;
             AZStd::span<const uint8_t> GetRawImageData(const AZ::Name& mapName, int arrayLevel, int mip) const;
             AZStd::span<const uint8_t> GetRawImageData(const AZ::Name& mapName, int arrayLevel, int mip) const;
 
 
             bool AreAllAssetsReady() const;
             bool AreAllAssetsReady() const;

+ 1 - 1
Gems/Atom/Feature/Common/Code/Source/DisplayMapper/AcesOutputTransformPass.cpp

@@ -20,7 +20,7 @@
 
 
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI/FrameScheduler.h>
 #include <Atom/RHI/FrameScheduler.h>
-#include <Atom/RHI/SingleDevicePipelineState.h>
+#include <Atom/RHI/DevicePipelineState.h>
 
 
 #include <AzCore/Asset/AssetCommon.h>
 #include <AzCore/Asset/AssetCommon.h>
 #include <AzCore/Asset/AssetManagerBus.h>
 #include <AzCore/Asset/AssetManagerBus.h>

+ 1 - 1
Gems/Atom/Feature/Common/Code/Source/DisplayMapper/DisplayMapperPass.cpp

@@ -25,7 +25,7 @@
 
 
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI/FrameScheduler.h>
 #include <Atom/RHI/FrameScheduler.h>
-#include <Atom/RHI/SingleDevicePipelineState.h>
+#include <Atom/RHI/DevicePipelineState.h>
 
 
 #include <AzCore/Asset/AssetCommon.h>
 #include <AzCore/Asset/AssetCommon.h>
 #include <AzCore/Asset/AssetManagerBus.h>
 #include <AzCore/Asset/AssetManagerBus.h>

+ 3 - 3
Gems/Atom/Feature/Common/Code/Source/ImGui/ImGuiPass.cpp

@@ -535,7 +535,7 @@ namespace AZ
             desc.m_byteCount = 64;
             desc.m_byteCount = 64;
             desc.m_bufferData = instanceData;
             desc.m_bufferData = instanceData;
             m_instanceBuffer = RPI::BufferSystemInterface::Get()->CreateBufferFromCommonPool(desc);
             m_instanceBuffer = RPI::BufferSystemInterface::Get()->CreateBufferFromCommonPool(desc);
-            m_instanceBufferView = RHI::MultiDeviceStreamBufferView(
+            m_instanceBufferView = RHI::StreamBufferView(
                 *m_instanceBuffer->GetRHIBuffer(),
                 *m_instanceBuffer->GetRHIBuffer(),
                 0,
                 0,
                 aznumeric_cast<uint32_t>(desc.m_byteCount),
                 aznumeric_cast<uint32_t>(desc.m_byteCount),
@@ -679,12 +679,12 @@ namespace AZ
             for (uint32_t i = context.GetSubmitRange().m_startIndex; i < context.GetSubmitRange().m_endIndex; ++i)
             for (uint32_t i = context.GetSubmitRange().m_startIndex; i < context.GetSubmitRange().m_endIndex; ++i)
             {
             {
                 auto indexBufferView{m_indexBufferView.GetDeviceIndexBufferView(context.GetDeviceIndex())};
                 auto indexBufferView{m_indexBufferView.GetDeviceIndexBufferView(context.GetDeviceIndex())};
-                AZStd::array<RHI::SingleDeviceStreamBufferView, 2> vertexBufferView{
+                AZStd::array<RHI::DeviceStreamBufferView, 2> vertexBufferView{
                     m_vertexBufferView[0].GetDeviceStreamBufferView(context.GetDeviceIndex()),
                     m_vertexBufferView[0].GetDeviceStreamBufferView(context.GetDeviceIndex()),
                     m_vertexBufferView[1].GetDeviceStreamBufferView(context.GetDeviceIndex())
                     m_vertexBufferView[1].GetDeviceStreamBufferView(context.GetDeviceIndex())
                 };
                 };
 
 
-                RHI::SingleDeviceDrawItem drawItem;
+                RHI::DeviceDrawItem drawItem;
                 drawItem.m_arguments = m_draws.at(i).m_drawIndexed;
                 drawItem.m_arguments = m_draws.at(i).m_drawIndexed;
                 drawItem.m_pipelineState = m_pipelineState->GetRHIPipelineState()->GetDevicePipelineState(context.GetDeviceIndex()).get();
                 drawItem.m_pipelineState = m_pipelineState->GetRHIPipelineState()->GetDevicePipelineState(context.GetDeviceIndex()).get();
                 drawItem.m_indexBufferView = &indexBufferView;
                 drawItem.m_indexBufferView = &indexBufferView;

+ 5 - 5
Gems/Atom/Feature/Common/Code/Source/ImGui/ImGuiPass.h

@@ -12,8 +12,8 @@
 #include <AzFramework/Input/Events/InputTextEventListener.h>
 #include <AzFramework/Input/Events/InputTextEventListener.h>
 #include <AzFramework/Input/Events/InputChannelEventListener.h>
 #include <AzFramework/Input/Events/InputChannelEventListener.h>
 
 
-#include <Atom/RHI/SingleDevicePipelineState.h>
-#include <Atom/RHI/MultiDeviceStreamBufferView.h>
+#include <Atom/RHI/DevicePipelineState.h>
+#include <Atom/RHI/StreamBufferView.h>
 
 
 #include <Atom/RPI.Public/Image/StreamingImage.h>
 #include <Atom/RPI.Public/Image/StreamingImage.h>
 #include <Atom/RPI.Public/Pass/RenderPass.h>
 #include <Atom/RPI.Public/Pass/RenderPass.h>
@@ -151,8 +151,8 @@ namespace AZ
             RHI::ShaderInputNameIndex m_projectionMatrixIndex = "m_projectionMatrix";
             RHI::ShaderInputNameIndex m_projectionMatrixIndex = "m_projectionMatrix";
             RHI::Viewport m_viewportState;
             RHI::Viewport m_viewportState;
 
 
-            RHI::MultiDeviceIndexBufferView m_indexBufferView;
-            AZStd::array<RHI::MultiDeviceStreamBufferView, 2> m_vertexBufferView; // For vertex buffer and instance data
+            RHI::IndexBufferView m_indexBufferView;
+            AZStd::array<RHI::StreamBufferView, 2> m_vertexBufferView; // For vertex buffer and instance data
             AZStd::vector<DrawInfo> m_draws;
             AZStd::vector<DrawInfo> m_draws;
             Data::Instance<RPI::StreamingImage> m_fontAtlas;
             Data::Instance<RPI::StreamingImage> m_fontAtlas;
 
 
@@ -171,7 +171,7 @@ namespace AZ
 
 
             AZStd::unordered_map<Data::Instance<RPI::StreamingImage>, uint32_t> m_userTextures;
             AZStd::unordered_map<Data::Instance<RPI::StreamingImage>, uint32_t> m_userTextures;
             Data::Instance<RPI::Buffer> m_instanceBuffer;
             Data::Instance<RPI::Buffer> m_instanceBuffer;
-            RHI::MultiDeviceStreamBufferView m_instanceBufferView;
+            RHI::StreamBufferView m_instanceBufferView;
 
 
             // cache the font text id
             // cache the font text id
             void* m_imguiFontTexId = nullptr;
             void* m_imguiFontTexId = nullptr;

+ 19 - 19
Gems/Atom/Feature/Common/Code/Source/Mesh/MeshFeatureProcessor.cpp

@@ -764,12 +764,12 @@ namespace AZ
             {
             {
                 // Since there is only one task that will operate both on this view index and on the bucket with this instance group,
                 // Since there is only one task that will operate both on this view index and on the bucket with this instance group,
                 // there is no need to lock here.
                 // there is no need to lock here.
-                RHI::MultiDeviceDrawPacketBuilder drawPacketBuilder{RHI::MultiDevice::AllDevices};
+                RHI::DrawPacketBuilder drawPacketBuilder{RHI::MultiDevice::AllDevices};
                 instanceGroup.m_perViewDrawPackets[viewIndex] = drawPacketBuilder.Clone(instanceGroup.m_drawPacket.GetRHIDrawPacket());
                 instanceGroup.m_perViewDrawPackets[viewIndex] = drawPacketBuilder.Clone(instanceGroup.m_drawPacket.GetRHIDrawPacket());
             }
             }
 
 
             // Now that we have a valid cloned draw packet, update it with the latest offset + count
             // Now that we have a valid cloned draw packet, update it with the latest offset + count
-            RHI::Ptr<RHI::MultiDeviceDrawPacket> clonedDrawPacket = instanceGroup.m_perViewDrawPackets[viewIndex];
+            RHI::Ptr<RHI::DrawPacket> clonedDrawPacket = instanceGroup.m_perViewDrawPackets[viewIndex];
 
 
             // Set the instance data offset
             // Set the instance data offset
             AZStd::span<uint8_t> data{ reinterpret_cast<uint8_t*>(&instanceGroupBeginIndex), sizeof(uint32_t) };
             AZStd::span<uint8_t> data{ reinterpret_cast<uint8_t*>(&instanceGroupBeginIndex), sizeof(uint32_t) };
@@ -1042,7 +1042,7 @@ namespace AZ
             {
             {
                 for (AZ::RPI::MeshDrawPacket& meshDrawPacket : drawPacketList)
                 for (AZ::RPI::MeshDrawPacket& meshDrawPacket : drawPacketList)
                 {
                 {
-                    RHI::MultiDeviceDrawPacket* drawPacket = meshDrawPacket.GetRHIDrawPacket();
+                    RHI::DrawPacket* drawPacket = meshDrawPacket.GetRHIDrawPacket();
 
 
                     if (drawPacket != nullptr)
                     if (drawPacket != nullptr)
                     {
                     {
@@ -1074,7 +1074,7 @@ namespace AZ
                 u32 drawPacketCounter = 0;
                 u32 drawPacketCounter = 0;
                 for (AZ::RPI::MeshDrawPacket& meshDrawPacket : drawPacketList)
                 for (AZ::RPI::MeshDrawPacket& meshDrawPacket : drawPacketList)
                 {
                 {
-                    RHI::MultiDeviceDrawPacket* drawPacket = meshDrawPacket.GetRHIDrawPacket();
+                    RHI::DrawPacket* drawPacket = meshDrawPacket.GetRHIDrawPacket();
                     if (drawPacket)
                     if (drawPacket)
                     {
                     {
                         size_t numDrawItems = drawPacket->GetDrawItemCount();
                         size_t numDrawItems = drawPacket->GetDrawItemCount();
@@ -1082,7 +1082,7 @@ namespace AZ
 
 
                         for (size_t drawItemIdx = 0; drawItemIdx < numDrawItems; ++drawItemIdx)
                         for (size_t drawItemIdx = 0; drawItemIdx < numDrawItems; ++drawItemIdx)
                         {
                         {
-                            RHI::MultiDeviceDrawItem* drawItem = drawPacket->GetDrawItem(drawItemIdx);
+                            RHI::DrawItem* drawItem = drawPacket->GetDrawItem(drawItemIdx);
                             RHI::DrawListTag tag = drawPacket->GetDrawListTag(drawItemIdx);
                             RHI::DrawListTag tag = drawPacket->GetDrawListTag(drawItemIdx);
                             stringOutput += AZStd::string::format("Item %zu | ", drawItemIdx);
                             stringOutput += AZStd::string::format("Item %zu | ", drawItemIdx);
                             stringOutput += drawItem->GetEnabled() ? "Enabled  | " : "Disabled | ";
                             stringOutput += drawItem->GetEnabled() ? "Enabled  | " : "Disabled | ";
@@ -2235,26 +2235,26 @@ namespace AZ
                 // occupy a portion of the vertex buffer.  This is necessary since we are accessing it using
                 // occupy a portion of the vertex buffer.  This is necessary since we are accessing it using
                 // a ByteAddressBuffer in the raytracing shaders and passing the byte offset to the shader in a constant buffer.
                 // a ByteAddressBuffer in the raytracing shaders and passing the byte offset to the shader in a constant buffer.
                 uint32_t positionBufferByteCount = static_cast<uint32_t>(
                 uint32_t positionBufferByteCount = static_cast<uint32_t>(
-                    const_cast<RHI::MultiDeviceBuffer*>(streamBufferViews[0].GetBuffer())->GetDescriptor().m_byteCount);
+                    const_cast<RHI::Buffer*>(streamBufferViews[0].GetBuffer())->GetDescriptor().m_byteCount);
                 RHI::BufferViewDescriptor positionBufferDescriptor = RHI::BufferViewDescriptor::CreateRaw(0, positionBufferByteCount);
                 RHI::BufferViewDescriptor positionBufferDescriptor = RHI::BufferViewDescriptor::CreateRaw(0, positionBufferByteCount);
 
 
                 uint32_t normalBufferByteCount = static_cast<uint32_t>(
                 uint32_t normalBufferByteCount = static_cast<uint32_t>(
-                    const_cast<RHI::MultiDeviceBuffer*>(streamBufferViews[1].GetBuffer())->GetDescriptor().m_byteCount);
+                    const_cast<RHI::Buffer*>(streamBufferViews[1].GetBuffer())->GetDescriptor().m_byteCount);
                 RHI::BufferViewDescriptor normalBufferDescriptor = RHI::BufferViewDescriptor::CreateRaw(0, normalBufferByteCount);
                 RHI::BufferViewDescriptor normalBufferDescriptor = RHI::BufferViewDescriptor::CreateRaw(0, normalBufferByteCount);
 
 
                 uint32_t tangentBufferByteCount = static_cast<uint32_t>(
                 uint32_t tangentBufferByteCount = static_cast<uint32_t>(
-                    const_cast<RHI::MultiDeviceBuffer*>(streamBufferViews[2].GetBuffer())->GetDescriptor().m_byteCount);
+                    const_cast<RHI::Buffer*>(streamBufferViews[2].GetBuffer())->GetDescriptor().m_byteCount);
                 RHI::BufferViewDescriptor tangentBufferDescriptor = RHI::BufferViewDescriptor::CreateRaw(0, tangentBufferByteCount);
                 RHI::BufferViewDescriptor tangentBufferDescriptor = RHI::BufferViewDescriptor::CreateRaw(0, tangentBufferByteCount);
 
 
                 uint32_t bitangentBufferByteCount = static_cast<uint32_t>(
                 uint32_t bitangentBufferByteCount = static_cast<uint32_t>(
-                    const_cast<RHI::MultiDeviceBuffer*>(streamBufferViews[3].GetBuffer())->GetDescriptor().m_byteCount);
+                    const_cast<RHI::Buffer*>(streamBufferViews[3].GetBuffer())->GetDescriptor().m_byteCount);
                 RHI::BufferViewDescriptor bitangentBufferDescriptor = RHI::BufferViewDescriptor::CreateRaw(0, bitangentBufferByteCount);
                 RHI::BufferViewDescriptor bitangentBufferDescriptor = RHI::BufferViewDescriptor::CreateRaw(0, bitangentBufferByteCount);
 
 
                 uint32_t uvBufferByteCount = static_cast<uint32_t>(
                 uint32_t uvBufferByteCount = static_cast<uint32_t>(
-                    const_cast<RHI::MultiDeviceBuffer*>(streamBufferViews[4].GetBuffer())->GetDescriptor().m_byteCount);
+                    const_cast<RHI::Buffer*>(streamBufferViews[4].GetBuffer())->GetDescriptor().m_byteCount);
                 RHI::BufferViewDescriptor uvBufferDescriptor = RHI::BufferViewDescriptor::CreateRaw(0, uvBufferByteCount);
                 RHI::BufferViewDescriptor uvBufferDescriptor = RHI::BufferViewDescriptor::CreateRaw(0, uvBufferByteCount);
 
 
-                const RHI::MultiDeviceIndexBufferView& indexBufferView = mesh.m_indexBufferView;
+                const RHI::IndexBufferView& indexBufferView = mesh.m_indexBufferView;
                 uint32_t indexElementSize = indexBufferView.GetIndexFormat() == RHI::IndexFormat::Uint16 ? 2 : 4;
                 uint32_t indexElementSize = indexBufferView.GetIndexFormat() == RHI::IndexFormat::Uint16 ? 2 : 4;
                 uint32_t indexElementCount = (uint32_t)indexBufferView.GetBuffer()->GetDescriptor().m_byteCount / indexElementSize;
                 uint32_t indexElementCount = (uint32_t)indexBufferView.GetBuffer()->GetDescriptor().m_byteCount / indexElementSize;
                 RHI::BufferViewDescriptor indexBufferDescriptor;
                 RHI::BufferViewDescriptor indexBufferDescriptor;
@@ -2269,12 +2269,12 @@ namespace AZ
                 subMesh.m_positionFormat = PositionStreamFormat;
                 subMesh.m_positionFormat = PositionStreamFormat;
                 subMesh.m_positionVertexBufferView = streamBufferViews[0];
                 subMesh.m_positionVertexBufferView = streamBufferViews[0];
                 subMesh.m_positionShaderBufferView =
                 subMesh.m_positionShaderBufferView =
-                    const_cast<RHI::MultiDeviceBuffer*>(streamBufferViews[0].GetBuffer())->BuildBufferView(positionBufferDescriptor);
+                    const_cast<RHI::Buffer*>(streamBufferViews[0].GetBuffer())->BuildBufferView(positionBufferDescriptor);
 
 
                 subMesh.m_normalFormat = NormalStreamFormat;
                 subMesh.m_normalFormat = NormalStreamFormat;
                 subMesh.m_normalVertexBufferView = streamBufferViews[1];
                 subMesh.m_normalVertexBufferView = streamBufferViews[1];
                 subMesh.m_normalShaderBufferView =
                 subMesh.m_normalShaderBufferView =
-                    const_cast<RHI::MultiDeviceBuffer*>(streamBufferViews[1].GetBuffer())->BuildBufferView(normalBufferDescriptor);
+                    const_cast<RHI::Buffer*>(streamBufferViews[1].GetBuffer())->BuildBufferView(normalBufferDescriptor);
 
 
                 if (tangentBufferByteCount > 0)
                 if (tangentBufferByteCount > 0)
                 {
                 {
@@ -2282,7 +2282,7 @@ namespace AZ
                     subMesh.m_tangentFormat = TangentStreamFormat;
                     subMesh.m_tangentFormat = TangentStreamFormat;
                     subMesh.m_tangentVertexBufferView = streamBufferViews[2];
                     subMesh.m_tangentVertexBufferView = streamBufferViews[2];
                     subMesh.m_tangentShaderBufferView =
                     subMesh.m_tangentShaderBufferView =
-                        const_cast<RHI::MultiDeviceBuffer*>(streamBufferViews[2].GetBuffer())->BuildBufferView(tangentBufferDescriptor);
+                        const_cast<RHI::Buffer*>(streamBufferViews[2].GetBuffer())->BuildBufferView(tangentBufferDescriptor);
                 }
                 }
 
 
                 if (bitangentBufferByteCount > 0)
                 if (bitangentBufferByteCount > 0)
@@ -2291,7 +2291,7 @@ namespace AZ
                     subMesh.m_bitangentFormat = BitangentStreamFormat;
                     subMesh.m_bitangentFormat = BitangentStreamFormat;
                     subMesh.m_bitangentVertexBufferView = streamBufferViews[3];
                     subMesh.m_bitangentVertexBufferView = streamBufferViews[3];
                     subMesh.m_bitangentShaderBufferView =
                     subMesh.m_bitangentShaderBufferView =
-                        const_cast<RHI::MultiDeviceBuffer*>(streamBufferViews[3].GetBuffer())->BuildBufferView(bitangentBufferDescriptor);
+                        const_cast<RHI::Buffer*>(streamBufferViews[3].GetBuffer())->BuildBufferView(bitangentBufferDescriptor);
                 }
                 }
 
 
                 if (uvBufferByteCount > 0)
                 if (uvBufferByteCount > 0)
@@ -2300,12 +2300,12 @@ namespace AZ
                     subMesh.m_uvFormat = UVStreamFormat;
                     subMesh.m_uvFormat = UVStreamFormat;
                     subMesh.m_uvVertexBufferView = streamBufferViews[4];
                     subMesh.m_uvVertexBufferView = streamBufferViews[4];
                     subMesh.m_uvShaderBufferView =
                     subMesh.m_uvShaderBufferView =
-                        const_cast<RHI::MultiDeviceBuffer*>(streamBufferViews[4].GetBuffer())->BuildBufferView(uvBufferDescriptor);
+                        const_cast<RHI::Buffer*>(streamBufferViews[4].GetBuffer())->BuildBufferView(uvBufferDescriptor);
                 }
                 }
 
 
                 subMesh.m_indexBufferView = mesh.m_indexBufferView;
                 subMesh.m_indexBufferView = mesh.m_indexBufferView;
                 subMesh.m_indexShaderBufferView =
                 subMesh.m_indexShaderBufferView =
-                    const_cast<RHI::MultiDeviceBuffer*>(mesh.m_indexBufferView.GetBuffer())->BuildBufferView(indexBufferDescriptor);
+                    const_cast<RHI::Buffer*>(mesh.m_indexBufferView.GetBuffer())->BuildBufferView(indexBufferDescriptor);
 
 
                 // add material data
                 // add material data
                 if (material)
                 if (material)
@@ -2784,7 +2784,7 @@ namespace AZ
                     for (const RPI::MeshDrawPacket& drawPacket : drawPacketList)
                     for (const RPI::MeshDrawPacket& drawPacket : drawPacketList)
                     {
                     {
                         // If mesh instancing is disabled, get the draw packets directly from this ModelDataInstance
                         // If mesh instancing is disabled, get the draw packets directly from this ModelDataInstance
-                        const RHI::MultiDeviceDrawPacket* rhiDrawPacket = drawPacket.GetRHIDrawPacket();
+                        const RHI::DrawPacket* rhiDrawPacket = drawPacket.GetRHIDrawPacket();
 
 
                         if (rhiDrawPacket)
                         if (rhiDrawPacket)
                         {
                         {
@@ -2801,7 +2801,7 @@ namespace AZ
                     for (const ModelDataInstance::PostCullingInstanceData& postCullingData : postCullingInstanceDataList)
                     for (const ModelDataInstance::PostCullingInstanceData& postCullingData : postCullingInstanceDataList)
                     {
                     {
                         // If mesh instancing is enabled, get the draw packet from the MeshInstanceManager
                         // If mesh instancing is enabled, get the draw packet from the MeshInstanceManager
-                        const RHI::MultiDeviceDrawPacket* rhiDrawPacket = postCullingData.m_instanceGroupHandle->m_drawPacket.GetRHIDrawPacket();
+                        const RHI::DrawPacket* rhiDrawPacket = postCullingData.m_instanceGroupHandle->m_drawPacket.GetRHIDrawPacket();
 
 
                         if (rhiDrawPacket)
                         if (rhiDrawPacket)
                         {
                         {

+ 1 - 1
Gems/Atom/Feature/Common/Code/Source/Mesh/MeshInstanceGroupKey.h

@@ -8,7 +8,7 @@
 
 
 #pragma once
 #pragma once
 
 
-#include<Atom/RHI/SingleDeviceDrawItem.h>
+#include<Atom/RHI/DeviceDrawItem.h>
 #include<AtomCore/Instance/InstanceId.h>
 #include<AtomCore/Instance/InstanceId.h>
 
 
 namespace AZ
 namespace AZ

+ 1 - 1
Gems/Atom/Feature/Common/Code/Source/Mesh/MeshInstanceGroupList.h

@@ -29,7 +29,7 @@ namespace AZ::Render
 
 
         // We modify the original draw packet each frame with a new instance count and a new root constant offset
         // We modify the original draw packet each frame with a new instance count and a new root constant offset
         // The instance count and offset varies per view, so we keep one modifiable copy of the draw packet for each view
         // The instance count and offset varies per view, so we keep one modifiable copy of the draw packet for each view
-        AZStd::vector<RHI::Ptr<RHI::MultiDeviceDrawPacket>> m_perViewDrawPackets;
+        AZStd::vector<RHI::Ptr<RHI::DrawPacket>> m_perViewDrawPackets;
 
 
         // All draw items in a draw packet share the same root constant layout
         // All draw items in a draw packet share the same root constant layout
         uint32_t m_drawRootConstantOffset = 0;
         uint32_t m_drawRootConstantOffset = 0;

+ 2 - 2
Gems/Atom/Feature/Common/Code/Source/MorphTargets/MorphTargetDispatchItem.cpp

@@ -16,7 +16,7 @@
 #include <Atom/RPI.Public/RPIUtils.h>
 #include <Atom/RPI.Public/RPIUtils.h>
 
 
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI/Factory.h>
-#include <Atom/RHI/SingleDeviceBufferView.h>
+#include <Atom/RHI/DeviceBufferView.h>
 
 
 #include <limits>
 #include <limits>
 
 
@@ -169,7 +169,7 @@ namespace AZ
             return m_rootConstantData.GetConstant<float>(m_weightIndex);
             return m_rootConstantData.GetConstant<float>(m_weightIndex);
         }
         }
 
 
-        const RHI::MultiDeviceDispatchItem& MorphTargetDispatchItem::GetRHIDispatchItem() const
+        const RHI::DispatchItem& MorphTargetDispatchItem::GetRHIDispatchItem() const
         {
         {
             return m_dispatchItem;
             return m_dispatchItem;
         }
         }

+ 3 - 3
Gems/Atom/Feature/Common/Code/Source/MorphTargets/MorphTargetDispatchItem.h

@@ -11,7 +11,7 @@
 #include <Atom/Feature/MorphTargets/MorphTargetInputBuffers.h>
 #include <Atom/Feature/MorphTargets/MorphTargetInputBuffers.h>
 
 
 #include <Atom/RPI.Public/Shader/ShaderReloadNotificationBus.h>
 #include <Atom/RPI.Public/Shader/ShaderReloadNotificationBus.h>
-#include <Atom/RHI/MultiDeviceDispatchItem.h>
+#include <Atom/RHI/DispatchItem.h>
 #include <Atom/RHI/ConstantsData.h>
 #include <Atom/RHI/ConstantsData.h>
 #include <AtomCore/Instance/Instance.h>
 #include <AtomCore/Instance/Instance.h>
 
 
@@ -58,7 +58,7 @@ namespace AZ
 
 
             bool Init();
             bool Init();
 
 
-            const AZ::RHI::MultiDeviceDispatchItem& GetRHIDispatchItem() const;
+            const AZ::RHI::DispatchItem& GetRHIDispatchItem() const;
 
 
             void SetWeight(float weight);
             void SetWeight(float weight);
             float GetWeight() const;
             float GetWeight() const;
@@ -71,7 +71,7 @@ namespace AZ
             void OnShaderAssetReinitialized(const Data::Asset<RPI::ShaderAsset>& shaderAsset) override;
             void OnShaderAssetReinitialized(const Data::Asset<RPI::ShaderAsset>& shaderAsset) override;
             void OnShaderVariantReinitialized(const RPI::ShaderVariant& shaderVariant) override;
             void OnShaderVariantReinitialized(const RPI::ShaderVariant& shaderVariant) override;
 
 
-            RHI::MultiDeviceDispatchItem m_dispatchItem;
+            RHI::DispatchItem m_dispatchItem;
 
 
             // The morph target shader used for this instance
             // The morph target shader used for this instance
             Data::Instance<RPI::Shader> m_morphTargetShader;
             Data::Instance<RPI::Shader> m_morphTargetShader;

+ 1 - 1
Gems/Atom/Feature/Common/Code/Source/PostProcess/ExposureControl/ExposureControlSettings.h

@@ -49,7 +49,7 @@ namespace AZ
             void ApplySettingsTo(ExposureControlSettings* target, float alpha) const;
             void ApplySettingsTo(ExposureControlSettings* target, float alpha) const;
 
 
             void UpdateBuffer();
             void UpdateBuffer();
-            const RHI::MultiDeviceBufferView* GetBufferView() const { return m_buffer->GetBufferView(); }
+            const RHI::BufferView* GetBufferView() const { return m_buffer->GetBufferView(); }
             
             
             // Generate all getters and override setters.
             // Generate all getters and override setters.
             // Declare non-override setters, which will be defined in the .cpp
             // Declare non-override setters, which will be defined in the .cpp

+ 3 - 3
Gems/Atom/Feature/Common/Code/Source/PostProcessing/BlendColorGradingLutsPass.h

@@ -10,10 +10,10 @@
 #include <AzCore/Memory/SystemAllocator.h>
 #include <AzCore/Memory/SystemAllocator.h>
 
 
 #include <Atom/RHI/CommandList.h>
 #include <Atom/RHI/CommandList.h>
-#include <Atom/RHI/SingleDeviceDrawItem.h>
+#include <Atom/RHI/DeviceDrawItem.h>
 #include <Atom/RHI/ScopeProducer.h>
 #include <Atom/RHI/ScopeProducer.h>
 
 
-#include <Atom/RHI/MultiDeviceImagePool.h>
+#include <Atom/RHI/ImagePool.h>
 #include <Atom/RPI.Public/Pass/ComputePass.h>
 #include <Atom/RPI.Public/Pass/ComputePass.h>
 #include <Atom/RPI.Public/Pass/FullscreenTrianglePass.h>
 #include <Atom/RPI.Public/Pass/FullscreenTrianglePass.h>
 #include <Atom/RPI.Public/Shader/Shader.h>
 #include <Atom/RPI.Public/Shader/Shader.h>
@@ -123,7 +123,7 @@ namespace AZ
             struct ShaderVariantInfo
             struct ShaderVariantInfo
             {
             {
                 const bool m_isFullyBaked = false;
                 const bool m_isFullyBaked = false;
-                const RHI::MultiDevicePipelineState* m_pipelineState = nullptr;
+                const RHI::PipelineState* m_pipelineState = nullptr;
             };
             };
 
 
             AZStd::vector<ShaderVariantInfo> m_shaderVariant;
             AZStd::vector<ShaderVariantInfo> m_shaderVariant;

+ 3 - 3
Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldCopyFocusDepthToCpuPass.cpp

@@ -26,7 +26,7 @@ namespace AZ
         DepthOfFieldCopyFocusDepthToCpuPass::DepthOfFieldCopyFocusDepthToCpuPass(const RPI::PassDescriptor& descriptor)
         DepthOfFieldCopyFocusDepthToCpuPass::DepthOfFieldCopyFocusDepthToCpuPass(const RPI::PassDescriptor& descriptor)
             : Pass(descriptor)
             : Pass(descriptor)
         {
         {
-            m_fence = aznew RHI::MultiDeviceFence;
+            m_fence = aznew RHI::Fence;
             AZ_Assert(m_fence != nullptr, "DepthOfFieldCopyFocusDepthToCpuPass failed to create a fence");
             AZ_Assert(m_fence != nullptr, "DepthOfFieldCopyFocusDepthToCpuPass failed to create a fence");
             [[maybe_unused]] RHI::ResultCode result = m_fence->Init(RHI::MultiDevice::AllDevices, RHI::FenceState::Reset);
             [[maybe_unused]] RHI::ResultCode result = m_fence->Init(RHI::MultiDevice::AllDevices, RHI::FenceState::Reset);
             AZ_Assert(result == RHI::ResultCode::Success, "DepthOfFieldCopyFocusDepthToCpuPass failed to init fence");
             AZ_Assert(result == RHI::ResultCode::Success, "DepthOfFieldCopyFocusDepthToCpuPass failed to init fence");
@@ -61,9 +61,9 @@ namespace AZ
                 desc.m_bufferData = nullptr;
                 desc.m_bufferData = nullptr;
                 m_readbackBuffer = RPI::BufferSystemInterface::Get()->CreateBufferFromCommonPool(desc);
                 m_readbackBuffer = RPI::BufferSystemInterface::Get()->CreateBufferFromCommonPool(desc);
 
 
-                m_copyDescriptor.m_mdSourceBuffer = m_bufferRef->GetRHIBuffer();
+                m_copyDescriptor.m_sourceBuffer = m_bufferRef->GetRHIBuffer();
                 m_copyDescriptor.m_sourceOffset = 0;
                 m_copyDescriptor.m_sourceOffset = 0;
-                m_copyDescriptor.m_mdDestinationBuffer = m_readbackBuffer->GetRHIBuffer();
+                m_copyDescriptor.m_destinationBuffer = m_readbackBuffer->GetRHIBuffer();
                 m_copyDescriptor.m_destinationOffset = 0;
                 m_copyDescriptor.m_destinationOffset = 0;
                 m_copyDescriptor.m_size = sizeof(float);
                 m_copyDescriptor.m_size = sizeof(float);
 
 

+ 3 - 3
Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldCopyFocusDepthToCpuPass.h

@@ -7,7 +7,7 @@
  */
  */
 #pragma once
 #pragma once
 
 
-#include <Atom/RHI/MultiDeviceCopyItem.h>
+#include <Atom/RHI/CopyItem.h>
 #include <Atom/RHI/ScopeProducer.h>
 #include <Atom/RHI/ScopeProducer.h>
 #include <Atom/RPI.Public/Pass/Pass.h>
 #include <Atom/RPI.Public/Pass/Pass.h>
 #include <Atom/RPI.Public/Buffer/Buffer.h>
 #include <Atom/RPI.Public/Buffer/Buffer.h>
@@ -49,9 +49,9 @@ namespace AZ
 
 
             RPI::Ptr<RPI::Buffer> m_bufferRef;
             RPI::Ptr<RPI::Buffer> m_bufferRef;
             Data::Instance<RPI::Buffer> m_readbackBuffer;
             Data::Instance<RPI::Buffer> m_readbackBuffer;
-            RHI::MultiDeviceCopyBufferDescriptor m_copyDescriptor;
+            RHI::CopyBufferDescriptor m_copyDescriptor;
             bool m_needsInitialize = true;
             bool m_needsInitialize = true;
-            RHI::Ptr<RHI::MultiDeviceFence> m_fence;
+            RHI::Ptr<RHI::Fence> m_fence;
             float m_lastFocusDepth = 0;
             float m_lastFocusDepth = 0;
         };
         };
     }   // namespace RPI
     }   // namespace RPI

+ 1 - 1
Gems/Atom/Feature/Common/Code/Source/PostProcessing/EyeAdaptationPass.cpp

@@ -11,7 +11,7 @@
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI/FrameGraphAttachmentInterface.h>
 #include <Atom/RHI/FrameGraphAttachmentInterface.h>
 #include <Atom/RHI/FrameGraphInterface.h>
 #include <Atom/RHI/FrameGraphInterface.h>
-#include <Atom/RHI/SingleDevicePipelineState.h>
+#include <Atom/RHI/DevicePipelineState.h>
 
 
 #include <Atom/RPI.Public/Base.h>
 #include <Atom/RPI.Public/Base.h>
 #include <Atom/RPI.Public/Pass/PassUtils.h>
 #include <Atom/RPI.Public/Pass/PassUtils.h>

+ 1 - 1
Gems/Atom/Feature/Common/Code/Source/PostProcessing/EyeAdaptationPass.h

@@ -10,7 +10,7 @@
 #include <AzCore/Memory/SystemAllocator.h>
 #include <AzCore/Memory/SystemAllocator.h>
 
 
 #include <Atom/RHI/CommandList.h>
 #include <Atom/RHI/CommandList.h>
-#include <Atom/RHI/SingleDeviceDrawItem.h>
+#include <Atom/RHI/DeviceDrawItem.h>
 #include <Atom/RHI/ScopeProducer.h>
 #include <Atom/RHI/ScopeProducer.h>
 #include <Atom/RHI.Reflect/ShaderResourceGroupLayoutDescriptor.h>
 #include <Atom/RHI.Reflect/ShaderResourceGroupLayoutDescriptor.h>
 #include <Atom/RHI.Reflect/ShaderInputNameIndex.h>
 #include <Atom/RHI.Reflect/ShaderInputNameIndex.h>

+ 1 - 1
Gems/Atom/Feature/Common/Code/Source/PostProcessing/LookModificationCompositePass.cpp

@@ -14,7 +14,7 @@
 #include <Atom/RPI.Public/Shader/ShaderVariant.h>
 #include <Atom/RPI.Public/Shader/ShaderVariant.h>
 
 
 #include <Atom/RHI/FrameScheduler.h>
 #include <Atom/RHI/FrameScheduler.h>
-#include <Atom/RHI/SingleDevicePipelineState.h>
+#include <Atom/RHI/DevicePipelineState.h>
 
 
 #include <AzCore/Console/Console.h>
 #include <AzCore/Console/Console.h>
 
 

+ 1 - 1
Gems/Atom/Feature/Common/Code/Source/PostProcessing/LookModificationCompositePass.h

@@ -13,7 +13,7 @@
 #include <AzFramework/Windowing/WindowBus.h>
 #include <AzFramework/Windowing/WindowBus.h>
 
 
 #include <Atom/RHI/CommandList.h>
 #include <Atom/RHI/CommandList.h>
-#include <Atom/RHI/SingleDeviceDrawItem.h>
+#include <Atom/RHI/DeviceDrawItem.h>
 #include <Atom/RHI/ScopeProducer.h>
 #include <Atom/RHI/ScopeProducer.h>
 
 
 #include <Atom/RPI.Reflect/Shader/ShaderVariantKey.h>
 #include <Atom/RPI.Reflect/Shader/ShaderVariantKey.h>

+ 1 - 1
Gems/Atom/Feature/Common/Code/Source/PostProcessing/LookModificationTransformPass.h

@@ -11,7 +11,7 @@
 #include <AzCore/std/containers/unordered_map.h>
 #include <AzCore/std/containers/unordered_map.h>
 
 
 #include <Atom/RHI/CommandList.h>
 #include <Atom/RHI/CommandList.h>
-#include <Atom/RHI/SingleDeviceDrawItem.h>
+#include <Atom/RHI/DeviceDrawItem.h>
 #include <Atom/RHI/ScopeProducer.h>
 #include <Atom/RHI/ScopeProducer.h>
 
 
 #include <Atom/RPI.Reflect/Shader/ShaderVariantKey.h>
 #include <Atom/RPI.Reflect/Shader/ShaderVariantKey.h>

+ 1 - 1
Gems/Atom/Feature/Common/Code/Source/PostProcessing/LuminanceHistogramGeneratorPass.cpp

@@ -11,7 +11,7 @@
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI/FrameGraphAttachmentInterface.h>
 #include <Atom/RHI/FrameGraphAttachmentInterface.h>
 #include <Atom/RHI/FrameGraphInterface.h>
 #include <Atom/RHI/FrameGraphInterface.h>
-#include <Atom/RHI/SingleDevicePipelineState.h>
+#include <Atom/RHI/DevicePipelineState.h>
 
 
 #include <Atom/RPI.Public/Base.h>
 #include <Atom/RPI.Public/Base.h>
 #include <Atom/RPI.Public/Pass/PassUtils.h>
 #include <Atom/RPI.Public/Pass/PassUtils.h>

+ 1 - 1
Gems/Atom/Feature/Common/Code/Source/PostProcessing/LuminanceHistogramGeneratorPass.h

@@ -10,7 +10,7 @@
 #include <AzCore/Memory/SystemAllocator.h>
 #include <AzCore/Memory/SystemAllocator.h>
 
 
 #include <Atom/RHI/CommandList.h>
 #include <Atom/RHI/CommandList.h>
-#include <Atom/RHI/SingleDeviceDrawItem.h>
+#include <Atom/RHI/DeviceDrawItem.h>
 #include <Atom/RHI/ScopeProducer.h>
 #include <Atom/RHI/ScopeProducer.h>
 #include <Atom/RHI.Reflect/ShaderResourceGroupLayoutDescriptor.h>
 #include <Atom/RHI.Reflect/ShaderResourceGroupLayoutDescriptor.h>
 
 

+ 1 - 1
Gems/Atom/Feature/Common/Code/Source/PostProcessing/PostProcessingShaderOptionBase.cpp

@@ -64,7 +64,7 @@ namespace AZ
             }
             }
         }
         }
 
 
-        const AZ::RHI::MultiDevicePipelineState* PostProcessingShaderOptionBase::GetPipelineStateFromShaderVariant()const
+        const AZ::RHI::PipelineState* PostProcessingShaderOptionBase::GetPipelineStateFromShaderVariant()const
         {
         {
             auto shaderVariant = GetShaderVariant(m_currentShaderVariantKeyValue);
             auto shaderVariant = GetShaderVariant(m_currentShaderVariantKeyValue);
             AZ_Assert(shaderVariant != nullptr, "Couldn't get a shader variation using the shader variant key[0x%llx].", m_currentShaderVariantKeyValue);
             AZ_Assert(shaderVariant != nullptr, "Couldn't get a shader variation using the shader variant key[0x%llx].", m_currentShaderVariantKeyValue);

+ 2 - 2
Gems/Atom/Feature/Common/Code/Source/PostProcessing/PostProcessingShaderOptionBase.h

@@ -41,13 +41,13 @@ namespace AZ
             void CompileShaderVariant(Data::Instance<AZ::RPI::ShaderResourceGroup>& shaderResourceGroup);
             void CompileShaderVariant(Data::Instance<AZ::RPI::ShaderResourceGroup>& shaderResourceGroup);
 
 
             //! Get precomputed pipeline.
             //! Get precomputed pipeline.
-            const AZ::RHI::MultiDevicePipelineState* GetPipelineStateFromShaderVariant() const;
+            const AZ::RHI::PipelineState* GetPipelineStateFromShaderVariant() const;
 
 
         private:
         private:
             struct ShaderVariantInformation
             struct ShaderVariantInformation
             {
             {
                 bool m_isFullyBaked = false;
                 bool m_isFullyBaked = false;
-                const AZ::RHI::MultiDevicePipelineState* m_pipelineState = nullptr;
+                const AZ::RHI::PipelineState* m_pipelineState = nullptr;
             };
             };
             AZStd::unordered_map<AZ::u64, ShaderVariantInformation> m_shaderVariantTable;
             AZStd::unordered_map<AZ::u64, ShaderVariantInformation> m_shaderVariantTable;
             AZ::u64 m_currentShaderVariantKeyValue = 0;
             AZ::u64 m_currentShaderVariantKeyValue = 0;

+ 1 - 1
Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAABasePass.cpp

@@ -19,7 +19,7 @@
 
 
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI/FrameScheduler.h>
 #include <Atom/RHI/FrameScheduler.h>
-#include <Atom/RHI/SingleDevicePipelineState.h>
+#include <Atom/RHI/DevicePipelineState.h>
 
 
 #include <AzCore/Asset/AssetCommon.h>
 #include <AzCore/Asset/AssetCommon.h>
 #include <AzCore/Asset/AssetManagerBus.h>
 #include <AzCore/Asset/AssetManagerBus.h>

+ 1 - 1
Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAABasePass.h

@@ -12,7 +12,7 @@
 #include <AzCore/Memory/SystemAllocator.h>
 #include <AzCore/Memory/SystemAllocator.h>
 
 
 #include <Atom/RHI/CommandList.h>
 #include <Atom/RHI/CommandList.h>
-#include <Atom/RHI/SingleDeviceDrawItem.h>
+#include <Atom/RHI/DeviceDrawItem.h>
 #include <Atom/RHI/ScopeProducer.h>
 #include <Atom/RHI/ScopeProducer.h>
 
 
 #include <Atom/RPI.Reflect/Pass/PassName.h>
 #include <Atom/RPI.Reflect/Pass/PassName.h>

+ 1 - 1
Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAABlendingWeightCalculationPass.cpp

@@ -21,7 +21,7 @@
 
 
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI/FrameScheduler.h>
 #include <Atom/RHI/FrameScheduler.h>
-#include <Atom/RHI/SingleDevicePipelineState.h>
+#include <Atom/RHI/DevicePipelineState.h>
 
 
 #include <AzCore/Asset/AssetCommon.h>
 #include <AzCore/Asset/AssetCommon.h>
 #include <AzCore/Asset/AssetManagerBus.h>
 #include <AzCore/Asset/AssetManagerBus.h>

+ 1 - 1
Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAAEdgeDetectionPass.cpp

@@ -20,7 +20,7 @@
 
 
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI/FrameScheduler.h>
 #include <Atom/RHI/FrameScheduler.h>
-#include <Atom/RHI/SingleDevicePipelineState.h>
+#include <Atom/RHI/DevicePipelineState.h>
 
 
 #include <AzCore/Asset/AssetCommon.h>
 #include <AzCore/Asset/AssetCommon.h>
 #include <AzCore/Asset/AssetManagerBus.h>
 #include <AzCore/Asset/AssetManagerBus.h>

+ 1 - 1
Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAANeighborhoodBlendingPass.cpp

@@ -20,7 +20,7 @@
 
 
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI/FrameScheduler.h>
 #include <Atom/RHI/FrameScheduler.h>
-#include <Atom/RHI/SingleDevicePipelineState.h>
+#include <Atom/RHI/DevicePipelineState.h>
 
 
 #include <AzCore/Asset/AssetCommon.h>
 #include <AzCore/Asset/AssetCommon.h>
 #include <AzCore/Asset/AssetManagerBus.h>
 #include <AzCore/Asset/AssetManagerBus.h>

+ 6 - 6
Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingAccelerationStructurePass.cpp

@@ -127,12 +127,12 @@ namespace AZ
             {
             {
                 if (rayTracingFeatureProcessor->GetRevision() != m_rayTracingRevision)
                 if (rayTracingFeatureProcessor->GetRevision() != m_rayTracingRevision)
                 {
                 {
-                    RHI::MultiDeviceRayTracingBufferPools& rayTracingBufferPools = rayTracingFeatureProcessor->GetBufferPools();
+                    RHI::RayTracingBufferPools& rayTracingBufferPools = rayTracingFeatureProcessor->GetBufferPools();
                     RayTracingFeatureProcessor::SubMeshVector& subMeshes = rayTracingFeatureProcessor->GetSubMeshes();
                     RayTracingFeatureProcessor::SubMeshVector& subMeshes = rayTracingFeatureProcessor->GetSubMeshes();
 
 
                     // create the TLAS descriptor
                     // create the TLAS descriptor
-                    RHI::MultiDeviceRayTracingTlasDescriptor tlasDescriptor;
-                    RHI::MultiDeviceRayTracingTlasDescriptor* tlasDescriptorBuild = tlasDescriptor.Build();
+                    RHI::RayTracingTlasDescriptor tlasDescriptor;
+                    RHI::RayTracingTlasDescriptor* tlasDescriptorBuild = tlasDescriptor.Build();
 
 
                     uint32_t instanceIndex = 0;
                     uint32_t instanceIndex = 0;
                     for (auto& subMesh : subMeshes)
                     for (auto& subMesh : subMeshes)
@@ -173,11 +173,11 @@ namespace AZ
                     }
                     }
 
 
                     // create the TLAS buffers based on the descriptor
                     // create the TLAS buffers based on the descriptor
-                    RHI::Ptr<RHI::MultiDeviceRayTracingTlas>& rayTracingTlas = rayTracingFeatureProcessor->GetTlas();
+                    RHI::Ptr<RHI::RayTracingTlas>& rayTracingTlas = rayTracingFeatureProcessor->GetTlas();
                     rayTracingTlas->CreateBuffers(RHI::RHISystemInterface::Get()->GetRayTracingSupport(), &tlasDescriptor, rayTracingBufferPools);
                     rayTracingTlas->CreateBuffers(RHI::RHISystemInterface::Get()->GetRayTracingSupport(), &tlasDescriptor, rayTracingBufferPools);
 
 
                     // import and attach the TLAS buffer
                     // import and attach the TLAS buffer
-                    const RHI::Ptr<RHI::MultiDeviceBuffer>& rayTracingTlasBuffer = rayTracingTlas->GetTlasBuffer();
+                    const RHI::Ptr<RHI::Buffer>& rayTracingTlasBuffer = rayTracingTlas->GetTlasBuffer();
                     if (rayTracingTlasBuffer && rayTracingFeatureProcessor->HasGeometry())
                     if (rayTracingTlasBuffer && rayTracingFeatureProcessor->HasGeometry())
                     {
                     {
                         AZ::RHI::AttachmentId tlasAttachmentId = rayTracingFeatureProcessor->GetTlasAttachmentId();
                         AZ::RHI::AttachmentId tlasAttachmentId = rayTracingFeatureProcessor->GetTlasAttachmentId();
@@ -252,7 +252,7 @@ namespace AZ
             BeginScopeQuery(context);
             BeginScopeQuery(context);
 
 
             // build newly added or skinned BLAS objects
             // build newly added or skinned BLAS objects
-            AZStd::vector<const AZ::RHI::SingleDeviceRayTracingBlas*> changedBlasList;
+            AZStd::vector<const AZ::RHI::DeviceRayTracingBlas*> changedBlasList;
             RayTracingFeatureProcessor::BlasInstanceMap& blasInstances = rayTracingFeatureProcessor->GetBlasInstances();
             RayTracingFeatureProcessor::BlasInstanceMap& blasInstances = rayTracingFeatureProcessor->GetBlasInstances();
             for (auto& blasInstance : blasInstances)
             for (auto& blasInstance : blasInstances)
             {
             {

+ 7 - 7
Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingFeatureProcessor.cpp

@@ -10,7 +10,7 @@
 #include <RayTracing/RayTracingPass.h>
 #include <RayTracing/RayTracingPass.h>
 #include <Atom/Feature/TransformService/TransformServiceFeatureProcessor.h>
 #include <Atom/Feature/TransformService/TransformServiceFeatureProcessor.h>
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI/Factory.h>
-#include <Atom/RHI/MultiDeviceRayTracingAccelerationStructure.h>
+#include <Atom/RHI/RayTracingAccelerationStructure.h>
 #include <Atom/RHI/RHISystemInterface.h>
 #include <Atom/RHI/RHISystemInterface.h>
 #include <Atom/RPI.Public/Scene.h>
 #include <Atom/RPI.Public/Scene.h>
 #include <Atom/RPI.Public/Pass/PassFilter.h>
 #include <Atom/RPI.Public/Pass/PassFilter.h>
@@ -52,7 +52,7 @@ namespace AZ
             m_transformServiceFeatureProcessor = GetParentScene()->GetFeatureProcessor<TransformServiceFeatureProcessor>();
             m_transformServiceFeatureProcessor = GetParentScene()->GetFeatureProcessor<TransformServiceFeatureProcessor>();
 
 
             // initialize the ray tracing buffer pools
             // initialize the ray tracing buffer pools
-            m_bufferPools = aznew RHI::MultiDeviceRayTracingBufferPools;
+            m_bufferPools = aznew RHI::RayTracingBufferPools;
             m_bufferPools->Init(deviceMask);
             m_bufferPools->Init(deviceMask);
 
 
             auto deviceCount = RHI::RHISystemInterface::Get()->GetDeviceCount();
             auto deviceCount = RHI::RHISystemInterface::Get()->GetDeviceCount();
@@ -72,7 +72,7 @@ namespace AZ
             m_tlasAttachmentId = RHI::AttachmentId(AZStd::string::format("RayTracingTlasAttachmentId_%s", uuidString.c_str()));
             m_tlasAttachmentId = RHI::AttachmentId(AZStd::string::format("RayTracingTlasAttachmentId_%s", uuidString.c_str()));
 
 
             // create the TLAS object
             // create the TLAS object
-            m_tlas = aznew RHI::MultiDeviceRayTracingTlas;
+            m_tlas = aznew RHI::RayTracingTlas;
 
 
             // load the RayTracingSrg asset asset
             // load the RayTracingSrg asset asset
             m_rayTracingSrgAsset = RPI::AssetUtils::LoadCriticalAsset<RPI::ShaderAsset>("shaderlib/atom/features/rayTracing/raytracingsrgs.azshader");
             m_rayTracingSrgAsset = RPI::AssetUtils::LoadCriticalAsset<RPI::ShaderAsset>("shaderlib/atom/features/rayTracing/raytracingsrgs.azshader");
@@ -147,8 +147,8 @@ namespace AZ
                 return;
                 return;
             }
             }
 
 
-            RHI::Ptr<AZ::RHI::MultiDeviceRayTracingBlas> rayTracingBlas = aznew AZ::RHI::MultiDeviceRayTracingBlas;
-            RHI::MultiDeviceRayTracingBlasDescriptor blasDescriptor;
+            RHI::Ptr<AZ::RHI::RayTracingBlas> rayTracingBlas = aznew AZ::RHI::RayTracingBlas;
+            RHI::RayTracingBlasDescriptor blasDescriptor;
             blasDescriptor.Build()
             blasDescriptor.Build()
                 ->AABB(aabb)
                 ->AABB(aabb)
                 ;
                 ;
@@ -344,7 +344,7 @@ namespace AZ
             {
             {
                 SubMesh& subMesh = m_subMeshes[mesh.m_subMeshIndices[subMeshIndex]];
                 SubMesh& subMesh = m_subMeshes[mesh.m_subMeshIndices[subMeshIndex]];
 
 
-                RHI::MultiDeviceRayTracingBlasDescriptor blasDescriptor;
+                RHI::RayTracingBlasDescriptor blasDescriptor;
                 blasDescriptor.Build()
                 blasDescriptor.Build()
                     ->Geometry()
                     ->Geometry()
                         ->VertexFormat(subMesh.m_positionFormat)
                         ->VertexFormat(subMesh.m_positionFormat)
@@ -367,7 +367,7 @@ namespace AZ
                     AZ_Assert(blasInstanceFound == false, "Partial set of RayTracingBlas objects found for mesh");
                     AZ_Assert(blasInstanceFound == false, "Partial set of RayTracingBlas objects found for mesh");
 
 
                     // create the BLAS object and store it in the BLAS list
                     // create the BLAS object and store it in the BLAS list
-                    RHI::Ptr<RHI::MultiDeviceRayTracingBlas> rayTracingBlas = aznew RHI::MultiDeviceRayTracingBlas;
+                    RHI::Ptr<RHI::RayTracingBlas> rayTracingBlas = aznew RHI::RayTracingBlas;
                     itMeshBlasInstance->second.m_subMeshes.push_back({ rayTracingBlas });
                     itMeshBlasInstance->second.m_subMeshes.push_back({ rayTracingBlas });
 
 
                     // create the buffers from the BLAS descriptor
                     // create the buffers from the BLAS descriptor

+ 33 - 33
Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingFeatureProcessor.h

@@ -11,12 +11,12 @@
 #include <RayTracing/RayTracingResourceList.h>
 #include <RayTracing/RayTracingResourceList.h>
 #include <RayTracing/RayTracingIndexList.h>
 #include <RayTracing/RayTracingIndexList.h>
 #include <Atom/Feature/TransformService/TransformServiceFeatureProcessor.h>
 #include <Atom/Feature/TransformService/TransformServiceFeatureProcessor.h>
-#include <Atom/RHI/MultiDeviceIndexBufferView.h>
-#include <Atom/RHI/MultiDeviceStreamBufferView.h>
-#include <Atom/RHI/MultiDeviceRayTracingAccelerationStructure.h>
-#include <Atom/RHI/MultiDeviceRayTracingBufferPools.h>
-#include <Atom/RHI/SingleDeviceBufferView.h>
-#include <Atom/RHI/SingleDeviceImageView.h>
+#include <Atom/RHI/IndexBufferView.h>
+#include <Atom/RHI/StreamBufferView.h>
+#include <Atom/RHI/RayTracingAccelerationStructure.h>
+#include <Atom/RHI/RayTracingBufferPools.h>
+#include <Atom/RHI/DeviceBufferView.h>
+#include <Atom/RHI/DeviceImageView.h>
 #include <Atom/RPI.Public/Buffer/RingBuffer.h>
 #include <Atom/RPI.Public/Buffer/RingBuffer.h>
 #include <Atom/RPI.Public/Shader/Shader.h>
 #include <Atom/RPI.Public/Shader/Shader.h>
 #include <Atom/Utils/StableDynamicArray.h>
 #include <Atom/Utils/StableDynamicArray.h>
@@ -100,11 +100,11 @@ namespace AZ
                 RayTracingSubMeshTextureFlags m_textureFlags = RayTracingSubMeshTextureFlags::None;
                 RayTracingSubMeshTextureFlags m_textureFlags = RayTracingSubMeshTextureFlags::None;
 
 
                 // material textures
                 // material textures
-                RHI::Ptr<const RHI::MultiDeviceImageView> m_baseColorImageView;
-                RHI::Ptr<const RHI::MultiDeviceImageView> m_normalImageView;
-                RHI::Ptr<const RHI::MultiDeviceImageView> m_metallicImageView;
-                RHI::Ptr<const RHI::MultiDeviceImageView> m_roughnessImageView;
-                RHI::Ptr<const RHI::MultiDeviceImageView> m_emissiveImageView;
+                RHI::Ptr<const RHI::ImageView> m_baseColorImageView;
+                RHI::Ptr<const RHI::ImageView> m_normalImageView;
+                RHI::Ptr<const RHI::ImageView> m_metallicImageView;
+                RHI::Ptr<const RHI::ImageView> m_roughnessImageView;
+                RHI::Ptr<const RHI::ImageView> m_emissiveImageView;
             };
             };
 
 
             //! Contains data for a single subMesh
             //! Contains data for a single subMesh
@@ -113,34 +113,34 @@ namespace AZ
                 // vertex streams
                 // vertex streams
                 RHI::Format m_positionFormat = RHI::Format::Unknown;
                 RHI::Format m_positionFormat = RHI::Format::Unknown;
 
 
-                RHI::MultiDeviceStreamBufferView m_positionVertexBufferView;
-                RHI::Ptr<RHI::MultiDeviceBufferView> m_positionShaderBufferView;
+                RHI::StreamBufferView m_positionVertexBufferView;
+                RHI::Ptr<RHI::BufferView> m_positionShaderBufferView;
 
 
                 RHI::Format m_normalFormat = RHI::Format::Unknown;
                 RHI::Format m_normalFormat = RHI::Format::Unknown;
-                RHI::MultiDeviceStreamBufferView m_normalVertexBufferView;
-                RHI::Ptr<RHI::MultiDeviceBufferView> m_normalShaderBufferView;
+                RHI::StreamBufferView m_normalVertexBufferView;
+                RHI::Ptr<RHI::BufferView> m_normalShaderBufferView;
 
 
                 RHI::Format m_tangentFormat = RHI::Format::Unknown;
                 RHI::Format m_tangentFormat = RHI::Format::Unknown;
-                RHI::MultiDeviceStreamBufferView m_tangentVertexBufferView;
-                RHI::Ptr<RHI::MultiDeviceBufferView> m_tangentShaderBufferView;
+                RHI::StreamBufferView m_tangentVertexBufferView;
+                RHI::Ptr<RHI::BufferView> m_tangentShaderBufferView;
 
 
                 RHI::Format m_bitangentFormat = RHI::Format::Unknown;
                 RHI::Format m_bitangentFormat = RHI::Format::Unknown;
-                RHI::MultiDeviceStreamBufferView m_bitangentVertexBufferView;
-                RHI::Ptr<RHI::MultiDeviceBufferView> m_bitangentShaderBufferView;
+                RHI::StreamBufferView m_bitangentVertexBufferView;
+                RHI::Ptr<RHI::BufferView> m_bitangentShaderBufferView;
 
 
                 RHI::Format m_uvFormat = RHI::Format::Unknown;
                 RHI::Format m_uvFormat = RHI::Format::Unknown;
-                RHI::MultiDeviceStreamBufferView m_uvVertexBufferView;
-                RHI::Ptr<RHI::MultiDeviceBufferView> m_uvShaderBufferView;
+                RHI::StreamBufferView m_uvVertexBufferView;
+                RHI::Ptr<RHI::BufferView> m_uvShaderBufferView;
 
 
                 // index buffer
                 // index buffer
-                RHI::MultiDeviceIndexBufferView m_indexBufferView;
-                RHI::Ptr<RHI::MultiDeviceBufferView> m_indexShaderBufferView;
+                RHI::IndexBufferView m_indexBufferView;
+                RHI::Ptr<RHI::BufferView> m_indexShaderBufferView;
 
 
                 // vertex buffer usage flags
                 // vertex buffer usage flags
                 RayTracingSubMeshBufferFlags m_bufferFlags = RayTracingSubMeshBufferFlags::None;
                 RayTracingSubMeshBufferFlags m_bufferFlags = RayTracingSubMeshBufferFlags::None;
 
 
                 // ray tracing Blas
                 // ray tracing Blas
-                RHI::Ptr<RHI::MultiDeviceRayTracingBlas> m_blas;
+                RHI::Ptr<RHI::RayTracingBlas> m_blas;
 
 
                 // submesh material
                 // submesh material
                 SubMeshMaterial m_material;
                 SubMeshMaterial m_material;
@@ -221,7 +221,7 @@ namespace AZ
                 uint32_t m_instanceMask;
                 uint32_t m_instanceMask;
                 Transform m_transform = Transform::CreateIdentity();
                 Transform m_transform = Transform::CreateIdentity();
                 AZ::Vector3 m_nonUniformScale = Vector3::CreateOne();
                 AZ::Vector3 m_nonUniformScale = Vector3::CreateOne();
-                RHI::Ptr<RHI::MultiDeviceRayTracingBlas> m_blas;
+                RHI::Ptr<RHI::RayTracingBlas> m_blas;
                 uint32_t m_localInstanceIndex;
                 uint32_t m_localInstanceIndex;
             };
             };
             using ProceduralGeometryTypeList = StableDynamicArray<ProceduralGeometryType>;
             using ProceduralGeometryTypeList = StableDynamicArray<ProceduralGeometryType>;
@@ -324,8 +324,8 @@ namespace AZ
             Data::Instance<RPI::ShaderResourceGroup> GetRayTracingMaterialSrg() const { return m_rayTracingMaterialSrg; }
             Data::Instance<RPI::ShaderResourceGroup> GetRayTracingMaterialSrg() const { return m_rayTracingMaterialSrg; }
 
 
             //! Retrieves the RayTracingTlas
             //! Retrieves the RayTracingTlas
-            const RHI::Ptr<RHI::MultiDeviceRayTracingTlas>& GetTlas() const { return m_tlas; }
-            RHI::Ptr<RHI::MultiDeviceRayTracingTlas>& GetTlas() { return m_tlas; }
+            const RHI::Ptr<RHI::RayTracingTlas>& GetTlas() const { return m_tlas; }
+            RHI::Ptr<RHI::RayTracingTlas>& GetTlas() { return m_tlas; }
 
 
             //! Retrieves the revision number of the ray tracing data.
             //! Retrieves the revision number of the ray tracing data.
             //! This is used to determine if the RayTracingShaderTable needs to be rebuilt.
             //! This is used to determine if the RayTracingShaderTable needs to be rebuilt.
@@ -341,7 +341,7 @@ namespace AZ
             }
             }
 
 
             //! Retrieves the buffer pools used for ray tracing operations.
             //! Retrieves the buffer pools used for ray tracing operations.
-            RHI::MultiDeviceRayTracingBufferPools& GetBufferPools() { return *m_bufferPools; }
+            RHI::RayTracingBufferPools& GetBufferPools() { return *m_bufferPools; }
 
 
             //! Retrieves the total number of ray tracing meshes.
             //! Retrieves the total number of ray tracing meshes.
             uint32_t GetSubMeshCount() const { return m_subMeshCount; }
             uint32_t GetSubMeshCount() const { return m_subMeshCount; }
@@ -369,7 +369,7 @@ namespace AZ
 
 
             struct SubMeshBlasInstance
             struct SubMeshBlasInstance
             {
             {
-                RHI::Ptr<RHI::MultiDeviceRayTracingBlas> m_blas;
+                RHI::Ptr<RHI::RayTracingBlas> m_blas;
             };
             };
 
 
             struct MeshBlasInstance
             struct MeshBlasInstance
@@ -411,10 +411,10 @@ namespace AZ
             SubMeshVector m_subMeshes;
             SubMeshVector m_subMeshes;
 
 
             // buffer pools used in ray tracing operations
             // buffer pools used in ray tracing operations
-            RHI::Ptr<RHI::MultiDeviceRayTracingBufferPools> m_bufferPools;
+            RHI::Ptr<RHI::RayTracingBufferPools> m_bufferPools;
 
 
             // ray tracing acceleration structure (TLAS)
             // ray tracing acceleration structure (TLAS)
-            RHI::Ptr<RHI::MultiDeviceRayTracingTlas> m_tlas;
+            RHI::Ptr<RHI::RayTracingTlas> m_tlas;
 
 
             // RayTracingScene and RayTracingMaterial asset and Srgs
             // RayTracingScene and RayTracingMaterial asset and Srgs
             Data::Asset<RPI::ShaderAsset> m_rayTracingSrgAsset;
             Data::Asset<RPI::ShaderAsset> m_rayTracingSrgAsset;
@@ -509,8 +509,8 @@ namespace AZ
             // without invalidating the indices held here in the m_meshBufferIndices and m_materialTextureIndices lists.
             // without invalidating the indices held here in the m_meshBufferIndices and m_materialTextureIndices lists.
             
             
             // mesh buffer and material texture resource lists, accessed by the shader through an unbounded array
             // mesh buffer and material texture resource lists, accessed by the shader through an unbounded array
-            RayTracingResourceList<RHI::MultiDeviceBufferView> m_meshBuffers;
-            RayTracingResourceList<const RHI::MultiDeviceImageView> m_materialTextures;
+            RayTracingResourceList<RHI::BufferView> m_meshBuffers;
+            RayTracingResourceList<const RHI::ImageView> m_materialTextures;
 #endif
 #endif
 
 
             // RayTracingIndexList implements an internal freelist chain stored inside the list itself, allowing entries to be
             // RayTracingIndexList implements an internal freelist chain stored inside the list itself, allowing entries to be

+ 11 - 11
Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingPass.cpp

@@ -11,9 +11,9 @@
 #include <Atom/RHI/CommandList.h>
 #include <Atom/RHI/CommandList.h>
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI/FrameScheduler.h>
 #include <Atom/RHI/FrameScheduler.h>
-#include <Atom/RHI/SingleDeviceDispatchRaysItem.h>
+#include <Atom/RHI/DeviceDispatchRaysItem.h>
 #include <Atom/RHI/RHISystemInterface.h>
 #include <Atom/RHI/RHISystemInterface.h>
-#include <Atom/RHI/SingleDevicePipelineState.h>
+#include <Atom/RHI/DevicePipelineState.h>
 #include <Atom/RPI.Reflect/Pass/PassTemplate.h>
 #include <Atom/RPI.Reflect/Pass/PassTemplate.h>
 #include <Atom/RPI.Reflect/Shader/ShaderAsset.h>
 #include <Atom/RPI.Reflect/Shader/ShaderAsset.h>
 #include <Atom/RPI.Public/Base.h>
 #include <Atom/RPI.Public/Base.h>
@@ -146,7 +146,7 @@ namespace AZ
             m_requiresRayTracingSceneSrg = (rayTracingSceneSrgLayout != nullptr);
             m_requiresRayTracingSceneSrg = (rayTracingSceneSrgLayout != nullptr);
 
 
             // build the ray tracing pipeline state descriptor
             // build the ray tracing pipeline state descriptor
-            RHI::MultiDeviceRayTracingPipelineStateDescriptor descriptor;
+            RHI::RayTracingPipelineStateDescriptor descriptor;
             descriptor.Build()
             descriptor.Build()
                 ->PipelineState(m_globalPipelineState.get())
                 ->PipelineState(m_globalPipelineState.get())
                 ->MaxPayloadSize(m_passData->m_maxPayloadSize)
                 ->MaxPayloadSize(m_passData->m_maxPayloadSize)
@@ -194,7 +194,7 @@ namespace AZ
             }
             }
 
 
             // create the ray tracing pipeline state object
             // create the ray tracing pipeline state object
-            m_rayTracingPipelineState = aznew RHI::MultiDeviceRayTracingPipelineState;
+            m_rayTracingPipelineState = aznew RHI::RayTracingPipelineState;
             m_rayTracingPipelineState->Init(RHI::RHISystemInterface::Get()->GetRayTracingSupport(), descriptor);
             m_rayTracingPipelineState->Init(RHI::RHISystemInterface::Get()->GetRayTracingSupport(), descriptor);
 
 
             // make sure the shader table rebuilds if we're hotreloading
             // make sure the shader table rebuilds if we're hotreloading
@@ -261,9 +261,9 @@ namespace AZ
 
 
             if (!m_rayTracingShaderTable)
             if (!m_rayTracingShaderTable)
             {
             {
-                RHI::MultiDeviceRayTracingBufferPools& rayTracingBufferPools = rayTracingFeatureProcessor->GetBufferPools();
+                RHI::RayTracingBufferPools& rayTracingBufferPools = rayTracingFeatureProcessor->GetBufferPools();
 
 
-                m_rayTracingShaderTable = aznew RHI::MultiDeviceRayTracingShaderTable;
+                m_rayTracingShaderTable = aznew RHI::RayTracingShaderTable;
                 m_rayTracingShaderTable->Init(RHI::RHISystemInterface::Get()->GetRayTracingSupport(), rayTracingBufferPools);
                 m_rayTracingShaderTable->Init(RHI::RHISystemInterface::Get()->GetRayTracingSupport(), rayTracingBufferPools);
             }
             }
 
 
@@ -281,7 +281,7 @@ namespace AZ
 
 
             // TLAS
             // TLAS
             {
             {
-                const RHI::Ptr<RHI::MultiDeviceBuffer>& rayTracingTlasBuffer = rayTracingFeatureProcessor->GetTlas()->GetTlasBuffer();
+                const RHI::Ptr<RHI::Buffer>& rayTracingTlasBuffer = rayTracingFeatureProcessor->GetTlas()->GetTlasBuffer();
                 if (rayTracingTlasBuffer)
                 if (rayTracingTlasBuffer)
                 {
                 {
                     AZ::RHI::AttachmentId tlasAttachmentId = rayTracingFeatureProcessor->GetTlasAttachmentId();
                     AZ::RHI::AttachmentId tlasAttachmentId = rayTracingFeatureProcessor->GetTlasAttachmentId();
@@ -340,12 +340,12 @@ namespace AZ
                 // scene changed, need to rebuild the shader table
                 // scene changed, need to rebuild the shader table
                 m_rayTracingRevision = rayTracingRevision;
                 m_rayTracingRevision = rayTracingRevision;
 
 
-                AZStd::shared_ptr<RHI::MultiDeviceRayTracingShaderTableDescriptor> descriptor = AZStd::make_shared<RHI::MultiDeviceRayTracingShaderTableDescriptor>();
+                AZStd::shared_ptr<RHI::RayTracingShaderTableDescriptor> descriptor = AZStd::make_shared<RHI::RayTracingShaderTableDescriptor>();
 
 
                 if (rayTracingFeatureProcessor->HasGeometry())
                 if (rayTracingFeatureProcessor->HasGeometry())
                 {
                 {
                     // build the ray tracing shader table descriptor
                     // build the ray tracing shader table descriptor
-                    RHI::MultiDeviceRayTracingShaderTableDescriptor* descriptorBuild = descriptor->Build(AZ::Name("RayTracingShaderTable"), m_rayTracingPipelineState)
+                    RHI::RayTracingShaderTableDescriptor* descriptorBuild = descriptor->Build(AZ::Name("RayTracingShaderTable"), m_rayTracingPipelineState)
                         ->RayGenerationRecord(AZ::Name(m_passData->m_rayGenerationShaderName.c_str()))
                         ->RayGenerationRecord(AZ::Name(m_passData->m_rayGenerationShaderName.c_str()))
                         ->MissRecord(AZ::Name(m_passData->m_missShaderName.c_str()));
                         ->MissRecord(AZ::Name(m_passData->m_missShaderName.c_str()));
 
 
@@ -379,7 +379,7 @@ namespace AZ
                 return;
                 return;
             }
             }
 
 
-            RHI::SingleDeviceDispatchRaysItem dispatchRaysItem;
+            RHI::DeviceDispatchRaysItem dispatchRaysItem;
 
 
             // calculate thread counts if this is a full screen raytracing pass
             // calculate thread counts if this is a full screen raytracing pass
             if (m_passData->m_makeFullscreenPass)
             if (m_passData->m_makeFullscreenPass)
@@ -413,7 +413,7 @@ namespace AZ
 
 
             // bind RayTracingGlobal, RayTracingScene, and View Srgs
             // bind RayTracingGlobal, RayTracingScene, and View Srgs
             // [GFX TODO][ATOM-15610] Add RenderPass::SetSrgsForRayTracingDispatch
             // [GFX TODO][ATOM-15610] Add RenderPass::SetSrgsForRayTracingDispatch
-            AZStd::vector<RHI::SingleDeviceShaderResourceGroup*> shaderResourceGroups = { m_shaderResourceGroup->GetRHIShaderResourceGroup()->GetDeviceShaderResourceGroup(context.GetDeviceIndex()).get() };
+            AZStd::vector<RHI::DeviceShaderResourceGroup*> shaderResourceGroups = { m_shaderResourceGroup->GetRHIShaderResourceGroup()->GetDeviceShaderResourceGroup(context.GetDeviceIndex()).get() };
 
 
             if (m_requiresRayTracingSceneSrg)
             if (m_requiresRayTracingSceneSrg)
             {
             {

+ 5 - 5
Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingPass.h

@@ -8,8 +8,8 @@
 #pragma once
 #pragma once
 
 
 #include <AzCore/Memory/SystemAllocator.h>
 #include <AzCore/Memory/SystemAllocator.h>
-#include <Atom/RHI/MultiDeviceRayTracingPipelineState.h>
-#include <Atom/RHI/MultiDeviceRayTracingShaderTable.h>
+#include <Atom/RHI/RayTracingPipelineState.h>
+#include <Atom/RHI/RayTracingShaderTable.h>
 #include <Atom/RPI.Public/Pass/RenderPass.h>
 #include <Atom/RPI.Public/Pass/RenderPass.h>
 #include <Atom/RPI.Public/Shader/Shader.h>
 #include <Atom/RPI.Public/Shader/Shader.h>
 #include <Atom/RPI.Public/Shader/ShaderReloadNotificationBus.h>
 #include <Atom/RPI.Public/Shader/ShaderReloadNotificationBus.h>
@@ -74,9 +74,9 @@ namespace AZ
             Data::Instance<RPI::Shader> m_closestHitShader;
             Data::Instance<RPI::Shader> m_closestHitShader;
             Data::Instance<RPI::Shader> m_closestHitProceduralShader;
             Data::Instance<RPI::Shader> m_closestHitProceduralShader;
             Data::Instance<RPI::Shader> m_intersectionShader;
             Data::Instance<RPI::Shader> m_intersectionShader;
-            RHI::Ptr<RHI::MultiDeviceRayTracingPipelineState> m_rayTracingPipelineState;
-            RHI::ConstPtr<RHI::MultiDevicePipelineState> m_globalPipelineState;
-            RHI::Ptr<RHI::MultiDeviceRayTracingShaderTable> m_rayTracingShaderTable;
+            RHI::Ptr<RHI::RayTracingPipelineState> m_rayTracingPipelineState;
+            RHI::ConstPtr<RHI::PipelineState> m_globalPipelineState;
+            RHI::Ptr<RHI::RayTracingShaderTable> m_rayTracingShaderTable;
             bool m_requiresViewSrg = false;
             bool m_requiresViewSrg = false;
             bool m_requiresSceneSrg = false;
             bool m_requiresSceneSrg = false;
             bool m_requiresRayTracingMaterialSrg = false;
             bool m_requiresRayTracingMaterialSrg = false;

+ 3 - 3
Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbe.cpp

@@ -278,7 +278,7 @@ namespace AZ
             m_bakeExposure = bakeExposure;
             m_bakeExposure = bakeExposure;
         }
         }
 
 
-        RHI::ConstPtr<RHI::MultiDeviceDrawPacket> ReflectionProbe::BuildDrawPacket(
+        RHI::ConstPtr<RHI::DrawPacket> ReflectionProbe::BuildDrawPacket(
             const Data::Instance<RPI::ShaderResourceGroup>& srg,
             const Data::Instance<RPI::ShaderResourceGroup>& srg,
             const RPI::Ptr<RPI::PipelineStateForDraw>& pipelineState,
             const RPI::Ptr<RPI::PipelineStateForDraw>& pipelineState,
             const RHI::DrawListTag& drawListTag,
             const RHI::DrawListTag& drawListTag,
@@ -291,7 +291,7 @@ namespace AZ
                 return nullptr;
                 return nullptr;
             }
             }
 
 
-            RHI::MultiDeviceDrawPacketBuilder drawPacketBuilder{RHI::MultiDevice::AllDevices};
+            RHI::DrawPacketBuilder drawPacketBuilder{RHI::MultiDevice::AllDevices};
 
 
             RHI::DrawIndexed drawIndexed;
             RHI::DrawIndexed drawIndexed;
             drawIndexed.m_indexCount = (uint32_t)m_reflectionRenderData->m_boxIndexCount;
             drawIndexed.m_indexCount = (uint32_t)m_reflectionRenderData->m_boxIndexCount;
@@ -303,7 +303,7 @@ namespace AZ
             drawPacketBuilder.SetIndexBufferView(m_reflectionRenderData->m_boxIndexBufferView);
             drawPacketBuilder.SetIndexBufferView(m_reflectionRenderData->m_boxIndexBufferView);
             drawPacketBuilder.AddShaderResourceGroup(srg->GetRHIShaderResourceGroup());
             drawPacketBuilder.AddShaderResourceGroup(srg->GetRHIShaderResourceGroup());
 
 
-            RHI::MultiDeviceDrawPacketBuilder::MultiDeviceDrawRequest drawRequest;
+            RHI::DrawPacketBuilder::DrawRequest drawRequest;
             drawRequest.m_listTag = drawListTag;
             drawRequest.m_listTag = drawListTag;
             drawRequest.m_pipelineState = pipelineState->GetRHIPipelineState();
             drawRequest.m_pipelineState = pipelineState->GetRHIPipelineState();
             drawRequest.m_streamBufferViews = m_reflectionRenderData->m_boxPositionBufferView;
             drawRequest.m_streamBufferViews = m_reflectionRenderData->m_boxPositionBufferView;

+ 7 - 7
Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbe.h

@@ -27,8 +27,8 @@ namespace AZ
         // shared data for rendering reflections, loaded and stored by the ReflectionProbeFeatureProcessor and passed to all probes
         // shared data for rendering reflections, loaded and stored by the ReflectionProbeFeatureProcessor and passed to all probes
         struct ReflectionRenderData
         struct ReflectionRenderData
         {
         {
-            AZStd::array<RHI::MultiDeviceStreamBufferView, 1> m_boxPositionBufferView;
-            RHI::MultiDeviceIndexBufferView m_boxIndexBufferView;
+            AZStd::array<RHI::StreamBufferView, 1> m_boxPositionBufferView;
+            RHI::IndexBufferView m_boxIndexBufferView;
             uint32_t m_boxIndexCount = 0;
             uint32_t m_boxIndexCount = 0;
 
 
             RPI::Ptr<RPI::PipelineStateForDraw> m_stencilPipelineState;
             RPI::Ptr<RPI::PipelineStateForDraw> m_stencilPipelineState;
@@ -120,7 +120,7 @@ namespace AZ
 
 
             AZ_DISABLE_COPY_MOVE(ReflectionProbe);
             AZ_DISABLE_COPY_MOVE(ReflectionProbe);
 
 
-            RHI::ConstPtr<RHI::MultiDeviceDrawPacket> BuildDrawPacket(
+            RHI::ConstPtr<RHI::DrawPacket> BuildDrawPacket(
                 const Data::Instance<RPI::ShaderResourceGroup>& srg,
                 const Data::Instance<RPI::ShaderResourceGroup>& srg,
                 const RPI::Ptr<RPI::PipelineStateForDraw>& pipelineState,
                 const RPI::Ptr<RPI::PipelineStateForDraw>& pipelineState,
                 const RHI::DrawListTag& drawListTag,
                 const RHI::DrawListTag& drawListTag,
@@ -163,10 +163,10 @@ namespace AZ
             Data::Instance<RPI::ShaderResourceGroup> m_blendWeightSrg;
             Data::Instance<RPI::ShaderResourceGroup> m_blendWeightSrg;
             Data::Instance<RPI::ShaderResourceGroup> m_renderOuterSrg;
             Data::Instance<RPI::ShaderResourceGroup> m_renderOuterSrg;
             Data::Instance<RPI::ShaderResourceGroup> m_renderInnerSrg;
             Data::Instance<RPI::ShaderResourceGroup> m_renderInnerSrg;
-            RHI::ConstPtr<RHI::MultiDeviceDrawPacket> m_stencilDrawPacket;
-            RHI::ConstPtr<RHI::MultiDeviceDrawPacket> m_blendWeightDrawPacket;
-            RHI::ConstPtr<RHI::MultiDeviceDrawPacket> m_renderOuterDrawPacket;
-            RHI::ConstPtr<RHI::MultiDeviceDrawPacket> m_renderInnerDrawPacket;
+            RHI::ConstPtr<RHI::DrawPacket> m_stencilDrawPacket;
+            RHI::ConstPtr<RHI::DrawPacket> m_blendWeightDrawPacket;
+            RHI::ConstPtr<RHI::DrawPacket> m_renderOuterDrawPacket;
+            RHI::ConstPtr<RHI::DrawPacket> m_renderInnerDrawPacket;
             float m_renderExposure = 0.0f;
             float m_renderExposure = 0.0f;
             float m_bakeExposure = 0.0f;
             float m_bakeExposure = 0.0f;
             bool m_updateSrg = false;
             bool m_updateSrg = false;

+ 7 - 7
Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbeFeatureProcessor.cpp

@@ -16,7 +16,7 @@
 #include <Atom/Feature/Mesh/MeshFeatureProcessor.h>
 #include <Atom/Feature/Mesh/MeshFeatureProcessor.h>
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI/RHISystemInterface.h>
 #include <Atom/RHI/RHISystemInterface.h>
-#include <Atom/RHI/SingleDevicePipelineState.h>
+#include <Atom/RHI/DevicePipelineState.h>
 #include <Atom/RHI.Reflect/InputStreamLayoutBuilder.h>
 #include <Atom/RHI.Reflect/InputStreamLayoutBuilder.h>
 #include <Atom/Feature/RenderCommon.h>
 #include <Atom/Feature/RenderCommon.h>
 
 
@@ -42,7 +42,7 @@ namespace AZ
             desc.m_heapMemoryLevel = RHI::HeapMemoryLevel::Device;
             desc.m_heapMemoryLevel = RHI::HeapMemoryLevel::Device;
             desc.m_bindFlags = RHI::BufferBindFlags::InputAssembly;
             desc.m_bindFlags = RHI::BufferBindFlags::InputAssembly;
 
 
-            m_bufferPool = aznew RHI::MultiDeviceBufferPool;
+            m_bufferPool = aznew RHI::BufferPool;
             m_bufferPool->SetName(Name("ReflectionProbeBoxBufferPool"));
             m_bufferPool->SetName(Name("ReflectionProbeBoxBufferPool"));
             [[maybe_unused]] RHI::ResultCode resultCode = m_bufferPool->Init(RHI::MultiDevice::AllDevices, desc);
             [[maybe_unused]] RHI::ResultCode resultCode = m_bufferPool->Init(RHI::MultiDevice::AllDevices, desc);
             AZ_Error("ReflectionProbeFeatureProcessor", resultCode == RHI::ResultCode::Success, "Failed to initialize buffer pool");
             AZ_Error("ReflectionProbeFeatureProcessor", resultCode == RHI::ResultCode::Success, "Failed to initialize buffer pool");
@@ -614,8 +614,8 @@ namespace AZ
             m_boxStreamLayout = layoutBuilder.End();
             m_boxStreamLayout = layoutBuilder.End();
 
 
             // create index buffer
             // create index buffer
-            AZ::RHI::MultiDeviceBufferInitRequest request;
-            m_boxIndexBuffer = aznew RHI::MultiDeviceBuffer;
+            AZ::RHI::BufferInitRequest request;
+            m_boxIndexBuffer = aznew RHI::Buffer;
             request.m_buffer = m_boxIndexBuffer.get();
             request.m_buffer = m_boxIndexBuffer.get();
             request.m_descriptor = AZ::RHI::BufferDescriptor{ AZ::RHI::BufferBindFlags::InputAssembly, m_boxIndices.size() * sizeof(uint16_t) };
             request.m_descriptor = AZ::RHI::BufferDescriptor{ AZ::RHI::BufferBindFlags::InputAssembly, m_boxIndices.size() * sizeof(uint16_t) };
             request.m_initialData = m_boxIndices.data();
             request.m_initialData = m_boxIndices.data();
@@ -623,7 +623,7 @@ namespace AZ
             AZ_Error("ReflectionProbeFeatureProcessor", result == RHI::ResultCode::Success, "Failed to initialize box index buffer - error [%d]", result);
             AZ_Error("ReflectionProbeFeatureProcessor", result == RHI::ResultCode::Success, "Failed to initialize box index buffer - error [%d]", result);
 
 
             // create index buffer view
             // create index buffer view
-            AZ::RHI::MultiDeviceIndexBufferView indexBufferView =
+            AZ::RHI::IndexBufferView indexBufferView =
             {
             {
                 *m_boxIndexBuffer,
                 *m_boxIndexBuffer,
                 0,
                 0,
@@ -634,7 +634,7 @@ namespace AZ
             m_reflectionRenderData.m_boxIndexCount = numIndices;
             m_reflectionRenderData.m_boxIndexCount = numIndices;
 
 
             // create position buffer
             // create position buffer
-            m_boxPositionBuffer = aznew RHI::MultiDeviceBuffer;
+            m_boxPositionBuffer = aznew RHI::Buffer;
             request.m_buffer = m_boxPositionBuffer.get();
             request.m_buffer = m_boxPositionBuffer.get();
             request.m_descriptor = AZ::RHI::BufferDescriptor{ AZ::RHI::BufferBindFlags::InputAssembly, m_boxPositions.size() * sizeof(Position) };
             request.m_descriptor = AZ::RHI::BufferDescriptor{ AZ::RHI::BufferBindFlags::InputAssembly, m_boxPositions.size() * sizeof(Position) };
             request.m_initialData = m_boxPositions.data();
             request.m_initialData = m_boxPositions.data();
@@ -642,7 +642,7 @@ namespace AZ
             AZ_Error("ReflectionProbeFeatureProcessor", result == RHI::ResultCode::Success, "Failed to initialize box index buffer - error [%d]", result);
             AZ_Error("ReflectionProbeFeatureProcessor", result == RHI::ResultCode::Success, "Failed to initialize box index buffer - error [%d]", result);
 
 
             // create position buffer view
             // create position buffer view
-            RHI::MultiDeviceStreamBufferView positionBufferView =
+            RHI::StreamBufferView positionBufferView =
             {
             {
                 *m_boxPositionBuffer,
                 *m_boxPositionBuffer,
                 0,
                 0,

+ 3 - 3
Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbeFeatureProcessor.h

@@ -129,14 +129,14 @@ namespace AZ
             };
             };
 
 
             // buffer pool for the vertex and index buffers
             // buffer pool for the vertex and index buffers
-            RHI::Ptr<RHI::MultiDeviceBufferPool> m_bufferPool;
+            RHI::Ptr<RHI::BufferPool> m_bufferPool;
 
 
             // box mesh rendering buffers
             // box mesh rendering buffers
             // note that the position and index views are stored in ReflectionRenderData
             // note that the position and index views are stored in ReflectionRenderData
             AZStd::vector<Position> m_boxPositions;
             AZStd::vector<Position> m_boxPositions;
             AZStd::vector<uint16_t> m_boxIndices;
             AZStd::vector<uint16_t> m_boxIndices;
-            RHI::Ptr<RHI::MultiDeviceBuffer> m_boxPositionBuffer;
-            RHI::Ptr<RHI::MultiDeviceBuffer> m_boxIndexBuffer;
+            RHI::Ptr<RHI::Buffer> m_boxPositionBuffer;
+            RHI::Ptr<RHI::Buffer> m_boxIndexBuffer;
             RHI::InputStreamLayout m_boxStreamLayout;
             RHI::InputStreamLayout m_boxStreamLayout;
 
 
             // contains the rendering data needed by reflection probes
             // contains the rendering data needed by reflection probes

+ 1 - 1
Gems/Atom/Feature/Common/Code/Source/ScreenSpace/DeferredFogPass.cpp

@@ -11,7 +11,7 @@
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI/FrameGraphAttachmentInterface.h>
 #include <Atom/RHI/FrameGraphAttachmentInterface.h>
 #include <Atom/RHI/FrameGraphInterface.h>
 #include <Atom/RHI/FrameGraphInterface.h>
-#include <Atom/RHI/SingleDevicePipelineState.h>
+#include <Atom/RHI/DevicePipelineState.h>
 
 
 #include <Atom/RPI.Public/Base.h>
 #include <Atom/RPI.Public/Base.h>
 #include <Atom/RPI.Public/Pass/PassUtils.h>
 #include <Atom/RPI.Public/Pass/PassUtils.h>

+ 1 - 1
Gems/Atom/Feature/Common/Code/Source/ScreenSpace/DeferredFogPass.h

@@ -10,7 +10,7 @@
 #include <AzCore/Memory/SystemAllocator.h>
 #include <AzCore/Memory/SystemAllocator.h>
 
 
 #include <Atom/RHI/CommandList.h>
 #include <Atom/RHI/CommandList.h>
-#include <Atom/RHI/SingleDeviceDrawItem.h>
+#include <Atom/RHI/DeviceDrawItem.h>
 #include <Atom/RHI/ScopeProducer.h>
 #include <Atom/RHI/ScopeProducer.h>
 #include <Atom/RHI.Reflect/ShaderResourceGroupLayoutDescriptor.h>
 #include <Atom/RHI.Reflect/ShaderResourceGroupLayoutDescriptor.h>
 
 

+ 1 - 1
Gems/Atom/Feature/Common/Code/Source/Shadows/FullscreenShadowPass.cpp

@@ -9,7 +9,7 @@
 #include <Shadows/FullscreenShadowPass.h>
 #include <Shadows/FullscreenShadowPass.h>
 
 
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI/Factory.h>
-#include <Atom/RHI/SingleDevicePipelineState.h>
+#include <Atom/RHI/DevicePipelineState.h>
 #include <Atom/RPI.Public/Pass/PassUtils.h>
 #include <Atom/RPI.Public/Pass/PassUtils.h>
 #include <Atom/RPI.Public/RenderPipeline.h>
 #include <Atom/RPI.Public/RenderPipeline.h>
 #include <Atom/RPI.Public/RPIUtils.h>
 #include <Atom/RPI.Public/RPIUtils.h>

+ 1 - 1
Gems/Atom/Feature/Common/Code/Source/Shadows/FullscreenShadowPass.h

@@ -10,7 +10,7 @@
 #include <AzCore/Memory/SystemAllocator.h>
 #include <AzCore/Memory/SystemAllocator.h>
 
 
 #include <Atom/RHI/CommandList.h>
 #include <Atom/RHI/CommandList.h>
-#include <Atom/RHI/SingleDeviceDrawItem.h>
+#include <Atom/RHI/DeviceDrawItem.h>
 #include <Atom/RHI/ScopeProducer.h>
 #include <Atom/RHI/ScopeProducer.h>
 #include <Atom/RHI.Reflect/ShaderResourceGroupLayoutDescriptor.h>
 #include <Atom/RHI.Reflect/ShaderResourceGroupLayoutDescriptor.h>
 
 

+ 4 - 4
Gems/Atom/Feature/Common/Code/Source/Shadows/ProjectedShadowFeatureProcessor.cpp

@@ -11,7 +11,7 @@
 #include <AzCore/Math/MatrixUtils.h>
 #include <AzCore/Math/MatrixUtils.h>
 #include <AzCore/Name/NameDictionary.h>
 #include <AzCore/Name/NameDictionary.h>
 #include <Math/GaussianMathFilter.h>
 #include <Math/GaussianMathFilter.h>
-#include <Atom/RHI/MultiDeviceDrawPacketBuilder.h>
+#include <Atom/RHI/DrawPacketBuilder.h>
 #include <Atom/RHI/RHISystemInterface.h>
 #include <Atom/RHI/RHISystemInterface.h>
 #include <Atom/RHI.Reflect/InputStreamLayoutBuilder.h>
 #include <Atom/RHI.Reflect/InputStreamLayoutBuilder.h>
 #include <Atom/RPI.Public/RenderPipeline.h>
 #include <Atom/RPI.Public/RenderPipeline.h>
@@ -772,18 +772,18 @@ namespace AZ::Render
         RHI::InputStreamLayoutBuilder layoutBuilder;
         RHI::InputStreamLayoutBuilder layoutBuilder;
         pipelineStateDescriptor.m_inputStreamLayout = layoutBuilder.End();
         pipelineStateDescriptor.m_inputStreamLayout = layoutBuilder.End();
 
 
-        const RHI::MultiDevicePipelineState* pipelineState = m_clearShadowShader->AcquirePipelineState(pipelineStateDescriptor);
+        const RHI::PipelineState* pipelineState = m_clearShadowShader->AcquirePipelineState(pipelineStateDescriptor);
         if (!pipelineState)
         if (!pipelineState)
         {
         {
             AZ_Assert(false, "Shader '%s'. Failed to acquire default pipeline state", shaderAsset->GetName().GetCStr());
             AZ_Assert(false, "Shader '%s'. Failed to acquire default pipeline state", shaderAsset->GetName().GetCStr());
             return;
             return;
         }
         }
 
 
-        RHI::MultiDeviceDrawPacketBuilder drawPacketBuilder{RHI::MultiDevice::AllDevices};
+        RHI::DrawPacketBuilder drawPacketBuilder{RHI::MultiDevice::AllDevices};
         drawPacketBuilder.Begin(nullptr);
         drawPacketBuilder.Begin(nullptr);
         drawPacketBuilder.SetDrawArguments(RHI::DrawLinear(1, 0, 3, 0));
         drawPacketBuilder.SetDrawArguments(RHI::DrawLinear(1, 0, 3, 0));
 
 
-        RHI::MultiDeviceDrawPacketBuilder::MultiDeviceDrawRequest drawRequest;
+        RHI::DrawPacketBuilder::DrawRequest drawRequest;
         drawRequest.m_listTag = m_clearShadowShader->GetDrawListTag();
         drawRequest.m_listTag = m_clearShadowShader->GetDrawListTag();
         drawRequest.m_pipelineState = pipelineState;
         drawRequest.m_pipelineState = pipelineState;
         drawRequest.m_sortKey = AZStd::numeric_limits<RHI::DrawItemSortKey>::min();
         drawRequest.m_sortKey = AZStd::numeric_limits<RHI::DrawItemSortKey>::min();

+ 1 - 1
Gems/Atom/Feature/Common/Code/Source/Shadows/ProjectedShadowFeatureProcessor.h

@@ -149,7 +149,7 @@ namespace AZ::Render
         RPI::RenderPipeline* m_primaryShadowPipeline = nullptr;
         RPI::RenderPipeline* m_primaryShadowPipeline = nullptr;
 
 
         Data::Instance<RPI::Shader> m_clearShadowShader;
         Data::Instance<RPI::Shader> m_clearShadowShader;
-        RHI::ConstPtr<RHI::MultiDeviceDrawPacket> m_clearShadowDrawPacket;
+        RHI::ConstPtr<RHI::DrawPacket> m_clearShadowDrawPacket;
 
 
         RHI::ShaderInputNameIndex m_shadowmapAtlasSizeIndex{ "m_shadowmapAtlasSize" };
         RHI::ShaderInputNameIndex m_shadowmapAtlasSizeIndex{ "m_shadowmapAtlasSize" };
         RHI::ShaderInputNameIndex m_invShadowmapAtlasSizeIndex{ "m_invShadowmapAtlasSize" };
         RHI::ShaderInputNameIndex m_invShadowmapAtlasSizeIndex{ "m_invShadowmapAtlasSize" };

+ 2 - 2
Gems/Atom/Feature/Common/Code/Source/SkinnedMesh/SkinnedMeshDispatchItem.cpp

@@ -17,7 +17,7 @@
 #include <Atom/RPI.Public/RPIUtils.h>
 #include <Atom/RPI.Public/RPIUtils.h>
 
 
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI/Factory.h>
-#include <Atom/RHI/SingleDeviceBufferView.h>
+#include <Atom/RHI/DeviceBufferView.h>
 
 
 #include <limits>
 #include <limits>
 
 
@@ -215,7 +215,7 @@ namespace AZ
             return true;
             return true;
         }
         }
 
 
-        const RHI::MultiDeviceDispatchItem& SkinnedMeshDispatchItem::GetRHIDispatchItem() const
+        const RHI::DispatchItem& SkinnedMeshDispatchItem::GetRHIDispatchItem() const
         {
         {
             return m_dispatchItem;
             return m_dispatchItem;
         }
         }

+ 3 - 3
Gems/Atom/Feature/Common/Code/Source/SkinnedMesh/SkinnedMeshDispatchItem.h

@@ -12,7 +12,7 @@
 #include <Atom/Feature/SkinnedMesh/SkinnedMeshShaderOptions.h>
 #include <Atom/Feature/SkinnedMesh/SkinnedMeshShaderOptions.h>
 #include <SkinnedMesh/SkinnedMeshShaderOptionsCache.h>
 #include <SkinnedMesh/SkinnedMeshShaderOptionsCache.h>
 
 
-#include <Atom/RHI/MultiDeviceDispatchItem.h>
+#include <Atom/RHI/DispatchItem.h>
 #include <Atom/RPI.Reflect/Shader/ShaderOptionGroup.h>
 #include <Atom/RPI.Reflect/Shader/ShaderOptionGroup.h>
 #include <AtomCore/Instance/Instance.h>
 #include <AtomCore/Instance/Instance.h>
 
 
@@ -64,7 +64,7 @@ namespace AZ
 
 
             bool Init();
             bool Init();
 
 
-            const RHI::MultiDeviceDispatchItem& GetRHIDispatchItem() const;
+            const RHI::DispatchItem& GetRHIDispatchItem() const;
 
 
             Data::Instance<RPI::Buffer> GetBoneTransforms() const;
             Data::Instance<RPI::Buffer> GetBoneTransforms() const;
             uint32_t GetVertexCount() const;
             uint32_t GetVertexCount() const;
@@ -75,7 +75,7 @@ namespace AZ
             // SkinnedMeshShaderOptionNotificationBus::Handler
             // SkinnedMeshShaderOptionNotificationBus::Handler
             void OnShaderReinitialized(const CachedSkinnedMeshShaderOptions* cachedShaderOptions) override;
             void OnShaderReinitialized(const CachedSkinnedMeshShaderOptions* cachedShaderOptions) override;
 
 
-            RHI::MultiDeviceDispatchItem m_dispatchItem;
+            RHI::DispatchItem m_dispatchItem;
 
 
             // The skinning shader used for this instance
             // The skinning shader used for this instance
             Data::Instance<RPI::Shader> m_skinningShader;
             Data::Instance<RPI::Shader> m_skinningShader;

+ 2 - 2
Gems/Atom/Feature/Common/Code/Source/SkinnedMesh/SkinnedMeshFeatureProcessor.h

@@ -90,10 +90,10 @@ namespace AZ
             StableDynamicArray<SkinnedMeshRenderProxy> m_renderProxies;
             StableDynamicArray<SkinnedMeshRenderProxy> m_renderProxies;
             AZStd::unique_ptr<SkinnedMeshStatsCollector> m_statsCollector;
             AZStd::unique_ptr<SkinnedMeshStatsCollector> m_statsCollector;
 
 
-            AZStd::unordered_set<const RHI::MultiDeviceDispatchItem*> m_skinningDispatches;
+            AZStd::unordered_set<const RHI::DispatchItem*> m_skinningDispatches;
             bool m_alreadyCreatedSkinningScopeThisFrame = false;
             bool m_alreadyCreatedSkinningScopeThisFrame = false;
 
 
-            AZStd::unordered_set<const RHI::MultiDeviceDispatchItem*> m_morphTargetDispatches;
+            AZStd::unordered_set<const RHI::DispatchItem*> m_morphTargetDispatches;
             bool m_alreadyCreatedMorphTargetScopeThisFrame = false;
             bool m_alreadyCreatedMorphTargetScopeThisFrame = false;
 
 
             AZStd::mutex m_dispatchItemMutex;
             AZStd::mutex m_dispatchItemMutex;

+ 3 - 3
Gems/Atom/Feature/Common/Code/Source/SkinnedMesh/SkinnedMeshInputBuffers.cpp

@@ -58,7 +58,7 @@ namespace AZ
             return asset;
             return asset;
         }
         }
 
 
-        RHI::BufferViewDescriptor SkinnedMeshInputLod::CreateInputViewDescriptor(SkinnedMeshInputVertexStreams inputStream, RHI::Format elementFormat, const RHI::MultiDeviceStreamBufferView &streamBufferView)
+        RHI::BufferViewDescriptor SkinnedMeshInputLod::CreateInputViewDescriptor(SkinnedMeshInputVertexStreams inputStream, RHI::Format elementFormat, const RHI::StreamBufferView &streamBufferView)
         {
         {
             RHI::BufferViewDescriptor descriptor;
             RHI::BufferViewDescriptor descriptor;
             uint32_t elementOffset = streamBufferView.GetByteOffset() / streamBufferView.GetByteStride();
             uint32_t elementOffset = streamBufferView.GetByteOffset() / streamBufferView.GetByteStride();
@@ -107,13 +107,13 @@ namespace AZ
                 const SkinnedMeshVertexStreamInfo* streamInfo = SkinnedMeshVertexStreamPropertyInterface::Get()->GetInputStreamInfo(
                 const SkinnedMeshVertexStreamInfo* streamInfo = SkinnedMeshVertexStreamPropertyInterface::Get()->GetInputStreamInfo(
                     inputLayout.GetStreamChannels()[meshStreamIndex].m_semantic);
                     inputLayout.GetStreamChannels()[meshStreamIndex].m_semantic);
 
 
-                const RHI::MultiDeviceStreamBufferView& streamBufferView = streamBufferViews[meshStreamIndex];
+                const RHI::StreamBufferView& streamBufferView = streamBufferViews[meshStreamIndex];
                 if (streamInfo && streamBufferView.GetByteCount() > 0)
                 if (streamInfo && streamBufferView.GetByteCount() > 0)
                 {
                 {
                     RHI::BufferViewDescriptor descriptor =
                     RHI::BufferViewDescriptor descriptor =
                         CreateInputViewDescriptor(streamInfo->m_enum, streamInfo->m_elementFormat, streamBufferView);
                         CreateInputViewDescriptor(streamInfo->m_enum, streamInfo->m_elementFormat, streamBufferView);
 
 
-                    AZ::RHI::Ptr<AZ::RHI::MultiDeviceBufferView> bufferView = const_cast<RHI::MultiDeviceBuffer*>(streamBufferView.GetBuffer())->BuildBufferView(descriptor);
+                    AZ::RHI::Ptr<AZ::RHI::BufferView> bufferView = const_cast<RHI::Buffer*>(streamBufferView.GetBuffer())->BuildBufferView(descriptor);
                     {
                     {
                         // Initialize the buffer view
                         // Initialize the buffer view
                         AZStd::string bufferViewName = AZStd::string::format(
                         AZStd::string bufferViewName = AZStd::string::format(

+ 1 - 1
Gems/Atom/Feature/Common/Code/Source/Utils/GpuBufferHandler.cpp

@@ -7,7 +7,7 @@
  */
  */
 
 
 #include <Atom/Feature/Utils/GpuBufferHandler.h>
 #include <Atom/Feature/Utils/GpuBufferHandler.h>
-#include <Atom/RHI/MultiDeviceBuffer.h>
+#include <Atom/RHI/Buffer.h>
 #include <Atom/RHI/Factory.h>
 #include <Atom/RHI/Factory.h>
 #include <Atom/RPI.Public/Buffer/BufferSystemInterface.h>
 #include <Atom/RPI.Public/Buffer/BufferSystemInterface.h>
 #include <Atom/Utils/Utils.h>
 #include <Atom/Utils/Utils.h>

+ 14 - 14
Gems/Atom/RHI/Code/Include/Atom/RHI.Reflect/ImageSubresource.h

@@ -89,13 +89,13 @@ namespace AZ::RHI
         ImageAspectFlags m_aspectFlags = ImageAspectFlags::All;
         ImageAspectFlags m_aspectFlags = ImageAspectFlags::All;
     };
     };
 
 
-    struct SingleDeviceImageSubresourceLayout
+    struct DeviceImageSubresourceLayout
     {
     {
-        AZ_TYPE_INFO(SingleDeviceImageSubresourceLayout, "{076A8345-B6E4-4287-A1B3-4079E1BA3CA9}");
+        AZ_TYPE_INFO(DeviceImageSubresourceLayout, "{076A8345-B6E4-4287-A1B3-4079E1BA3CA9}");
         static void Reflect(AZ::ReflectContext* context);
         static void Reflect(AZ::ReflectContext* context);
 
 
-        SingleDeviceImageSubresourceLayout() = default;
-        SingleDeviceImageSubresourceLayout(
+        DeviceImageSubresourceLayout() = default;
+        DeviceImageSubresourceLayout(
             Size size,
             Size size,
             uint32_t rowCount,
             uint32_t rowCount,
             uint32_t bytesPerRow,
             uint32_t bytesPerRow,
@@ -127,37 +127,37 @@ namespace AZ::RHI
         uint32_t m_offset = 0;
         uint32_t m_offset = 0;
     };
     };
 
 
-    struct MultiDeviceImageSubresourceLayout
+    struct ImageSubresourceLayout
     {
     {
-        AZ_TYPE_INFO(MultiDeviceImageSubresourceLayout, "{8AD0DC97-5AAA-470F-8853-C8A55E023CD1}");
+        AZ_TYPE_INFO(ImageSubresourceLayout, "{8AD0DC97-5AAA-470F-8853-C8A55E023CD1}");
 
 
-        MultiDeviceImageSubresourceLayout() = default;
+        ImageSubresourceLayout() = default;
 
 
-        void Init(RHI::MultiDevice::DeviceMask deviceMask, const SingleDeviceImageSubresourceLayout& deviceLayout);
+        void Init(RHI::MultiDevice::DeviceMask deviceMask, const DeviceImageSubresourceLayout& deviceLayout);
 
 
-        SingleDeviceImageSubresourceLayout& GetDeviceImageSubresource(int deviceIndex)
+        DeviceImageSubresourceLayout& GetDeviceImageSubresource(int deviceIndex)
         {
         {
             return m_deviceImageSubresourceLayout[deviceIndex];
             return m_deviceImageSubresourceLayout[deviceIndex];
         }
         }
 
 
-        const SingleDeviceImageSubresourceLayout& GetDeviceImageSubresource(int deviceIndex) const
+        const DeviceImageSubresourceLayout& GetDeviceImageSubresource(int deviceIndex) const
         {
         {
             AZ_Assert(
             AZ_Assert(
                 m_deviceImageSubresourceLayout.find(deviceIndex) != m_deviceImageSubresourceLayout.end(),
                 m_deviceImageSubresourceLayout.find(deviceIndex) != m_deviceImageSubresourceLayout.end(),
-                "No SingleDeviceImageSubresourceLayout found for device index %d\n",
+                "No DeviceImageSubresourceLayout found for device index %d\n",
                 deviceIndex);
                 deviceIndex);
             return m_deviceImageSubresourceLayout.at(deviceIndex);
             return m_deviceImageSubresourceLayout.at(deviceIndex);
         }
         }
 
 
-        AZStd::unordered_map<int, SingleDeviceImageSubresourceLayout> m_deviceImageSubresourceLayout;
+        AZStd::unordered_map<int, DeviceImageSubresourceLayout> m_deviceImageSubresourceLayout;
     };
     };
 
 
     //! This family of helper function provide a standard subresource layout suitable for
     //! This family of helper function provide a standard subresource layout suitable for
     //! the source of a copy from system memory to a destination RHI staging buffer. The results are
     //! the source of a copy from system memory to a destination RHI staging buffer. The results are
     //! platform agnostic. It works by inspecting the image size and format, and then computing the required
     //! platform agnostic. It works by inspecting the image size and format, and then computing the required
     //! size and memory layout requirements to represent the data as linear rows.
     //! size and memory layout requirements to represent the data as linear rows.
-    SingleDeviceImageSubresourceLayout GetImageSubresourceLayout(Size imageSize, Format imageFormat);
-    SingleDeviceImageSubresourceLayout GetImageSubresourceLayout(const ImageDescriptor& imageDescriptor, const ImageSubresource& subresource);
+    DeviceImageSubresourceLayout GetImageSubresourceLayout(Size imageSize, Format imageFormat);
+    DeviceImageSubresourceLayout GetImageSubresourceLayout(const ImageDescriptor& imageDescriptor, const ImageSubresource& subresource);
 
 
     //! Returns the image subresource index given the mip and array slices, and the total mip levels. Subresources
     //! Returns the image subresource index given the mip and array slices, and the total mip levels. Subresources
     //! are organized by arrays of mip chains. The formula is: subresourceIndex = mipSlice + arraySlice * mipLevels.
     //! are organized by arrays of mip chains. The formula is: subresourceIndex = mipSlice + arraySlice * mipLevels.

+ 11 - 11
Gems/Atom/RHI/Code/Include/Atom/RHI/AliasedAttachmentAllocator.h

@@ -18,10 +18,10 @@
 
 
 namespace AZ::RHI
 namespace AZ::RHI
 {
 {
-    class SingleDeviceResource;
+    class DeviceResource;
     class Scope;
     class Scope;
-    class SingleDeviceBuffer;
-    class SingleDeviceImage;
+    class DeviceBuffer;
+    class DeviceImage;
 
 
     namespace Internal
     namespace Internal
     {
     {
@@ -49,8 +49,8 @@ namespace AZ::RHI
             // AliasedHeap
             // AliasedHeap
             AZStd::unique_ptr<AliasingBarrierTracker> CreateBarrierTrackerInternal() override           { return AZStd::make_unique<NoBarrierAliasingBarrierTracker>(); }
             AZStd::unique_ptr<AliasingBarrierTracker> CreateBarrierTrackerInternal() override           { return AZStd::make_unique<NoBarrierAliasingBarrierTracker>(); }
             ResultCode InitInternal([[maybe_unused]] Device& device, [[maybe_unused]] const AliasedHeapDescriptor& descriptor) override   { return ResultCode::Success; }
             ResultCode InitInternal([[maybe_unused]] Device& device, [[maybe_unused]] const AliasedHeapDescriptor& descriptor) override   { return ResultCode::Success; }
-            ResultCode InitImageInternal([[maybe_unused]] const SingleDeviceImageInitRequest& request, [[maybe_unused]] size_t heapOffset) override   { return ResultCode::Success; }
-            ResultCode InitBufferInternal([[maybe_unused]] const SingleDeviceBufferInitRequest& request, [[maybe_unused]] size_t heapOffset) override { return ResultCode::Success; }
+            ResultCode InitImageInternal([[maybe_unused]] const DeviceImageInitRequest& request, [[maybe_unused]] size_t heapOffset) override   { return ResultCode::Success; }
+            ResultCode InitBufferInternal([[maybe_unused]] const DeviceBufferInitRequest& request, [[maybe_unused]] size_t heapOffset) override { return ResultCode::Success; }
             //////////////////////////////////////////////////////////////////////////
             //////////////////////////////////////////////////////////////////////////
         };
         };
     }
     }
@@ -101,7 +101,7 @@ namespace AZ::RHI
         //! Called when a buffer is being activated for the first time. This will acquire
         //! Called when a buffer is being activated for the first time. This will acquire
         //! a buffer from a heap, configured for the provided descriptor. This may trigger a new
         //! a buffer from a heap, configured for the provided descriptor. This may trigger a new
         //! heap to be allocated.
         //! heap to be allocated.
-        SingleDeviceBuffer* ActivateBuffer(
+        DeviceBuffer* ActivateBuffer(
             const TransientBufferDescriptor& descriptor,
             const TransientBufferDescriptor& descriptor,
             Scope& scope);
             Scope& scope);
 
 
@@ -114,7 +114,7 @@ namespace AZ::RHI
         //! Called when an image is being activated for the first time. This will acquire
         //! Called when an image is being activated for the first time. This will acquire
         //! an image from a heap, configured for the provided descriptor. This may trigger a new
         //! an image from a heap, configured for the provided descriptor. This may trigger a new
         //! heap to be allocated.
         //! heap to be allocated.
-        SingleDeviceImage* ActivateImage(
+        DeviceImage* ActivateImage(
             const TransientImageDescriptor& descriptor,
             const TransientImageDescriptor& descriptor,
             Scope& scope);
             Scope& scope);
 
 
@@ -308,9 +308,9 @@ namespace AZ::RHI
     }
     }
 
 
     template<class Heap>
     template<class Heap>
-    SingleDeviceBuffer* AliasedAttachmentAllocator<Heap>::ActivateBuffer(const TransientBufferDescriptor& descriptor, Scope& scope)
+    DeviceBuffer* AliasedAttachmentAllocator<Heap>::ActivateBuffer(const TransientBufferDescriptor& descriptor, Scope& scope)
     {
     {
-        SingleDeviceBuffer* buffer = nullptr;
+        DeviceBuffer* buffer = nullptr;
         AliasedHeap* heap = nullptr;
         AliasedHeap* heap = nullptr;
         ResultCode result = ResultCode::Fail;
         ResultCode result = ResultCode::Fail;
         // We first try to allocate from the current heap pages.
         // We first try to allocate from the current heap pages.
@@ -374,9 +374,9 @@ namespace AZ::RHI
     }
     }
 
 
     template<class Heap>
     template<class Heap>
-    SingleDeviceImage* AliasedAttachmentAllocator<Heap>::ActivateImage(const TransientImageDescriptor& descriptor, Scope& scope)
+    DeviceImage* AliasedAttachmentAllocator<Heap>::ActivateImage(const TransientImageDescriptor& descriptor, Scope& scope)
     {
     {
-        SingleDeviceImage* image = nullptr;
+        DeviceImage* image = nullptr;
         AliasedHeap* heap = nullptr;
         AliasedHeap* heap = nullptr;
         ResultCode result = ResultCode::Fail;
         ResultCode result = ResultCode::Fail;
         // We first try to allocate from the current heap pages.
         // We first try to allocate from the current heap pages.

+ 16 - 16
Gems/Atom/RHI/Code/Include/Atom/RHI/AliasedHeap.h

@@ -13,19 +13,19 @@
 #include <Atom/RHI/FreeListAllocator.h>
 #include <Atom/RHI/FreeListAllocator.h>
 #include <Atom/RHI/Object.h>
 #include <Atom/RHI/Object.h>
 #include <Atom/RHI/ObjectCache.h>
 #include <Atom/RHI/ObjectCache.h>
-#include <Atom/RHI/SingleDeviceBufferPool.h>
-#include <Atom/RHI/SingleDeviceImagePool.h>
-#include <Atom/RHI/SingleDeviceResourcePool.h>
-#include <Atom/RHI/SingleDeviceTransientAttachmentPool.h>
+#include <Atom/RHI/DeviceBufferPool.h>
+#include <Atom/RHI/DeviceImagePool.h>
+#include <Atom/RHI/DeviceResourcePool.h>
+#include <Atom/RHI/DeviceTransientAttachmentPool.h>
 #include <AzCore/Memory/SystemAllocator.h>
 #include <AzCore/Memory/SystemAllocator.h>
 #include <AzCore/std/smart_ptr/unique_ptr.h>
 #include <AzCore/std/smart_ptr/unique_ptr.h>
 
 
 namespace AZ::RHI
 namespace AZ::RHI
 {
 {
-    class SingleDeviceResource;
+    class DeviceResource;
     class Scope;
     class Scope;
-    class SingleDeviceBuffer;
-    class SingleDeviceImage;
+    class DeviceBuffer;
+    class DeviceImage;
 
 
     struct AliasedHeapDescriptor
     struct AliasedHeapDescriptor
         : public ResourcePoolDescriptor
         : public ResourcePoolDescriptor
@@ -45,9 +45,9 @@ namespace AZ::RHI
     //! and they will reuse memory whenever possible, and will also track the necessary barriers that need to be inserted when aliasing happens.
     //! and they will reuse memory whenever possible, and will also track the necessary barriers that need to be inserted when aliasing happens.
     //! Aliased Heaps do not support aliased resources being used at the same time (even if the resources are compatible).
     //! Aliased Heaps do not support aliased resources being used at the same time (even if the resources are compatible).
     class AliasedHeap
     class AliasedHeap
-        : public SingleDeviceResourcePool
+        : public DeviceResourcePool
     {
     {
-        using Base = SingleDeviceResourcePool;
+        using Base = DeviceResourcePool;
     public:
     public:
         AZ_CLASS_ALLOCATOR(AliasedHeap, AZ::SystemAllocator);
         AZ_CLASS_ALLOCATOR(AliasedHeap, AZ::SystemAllocator);
         AZ_RTTI(AliasedHeap, "{9C4BB24D-3B76-4584-BA68-600BC7E2A2AA}");
         AZ_RTTI(AliasedHeap, "{9C4BB24D-3B76-4584-BA68-600BC7E2A2AA}");
@@ -65,7 +65,7 @@ namespace AZ::RHI
         ResultCode ActivateBuffer(
         ResultCode ActivateBuffer(
             const TransientBufferDescriptor& descriptor,
             const TransientBufferDescriptor& descriptor,
             Scope& scope,
             Scope& scope,
-            SingleDeviceBuffer** activatedBuffer);
+            DeviceBuffer** activatedBuffer);
 
 
         //! Ends the use of a previously activated buffer.
         //! Ends the use of a previously activated buffer.
         void DeactivateBuffer(
         void DeactivateBuffer(
@@ -76,7 +76,7 @@ namespace AZ::RHI
         ResultCode ActivateImage(
         ResultCode ActivateImage(
             const TransientImageDescriptor& descriptor,
             const TransientImageDescriptor& descriptor,
             Scope& scope,
             Scope& scope,
-            SingleDeviceImage** activatedImage);
+            DeviceImage** activatedImage);
 
 
         //! Ends the use of a previously activated image.
         //! Ends the use of a previously activated image.
         void DeactivateImage(
         void DeactivateImage(
@@ -107,14 +107,14 @@ namespace AZ::RHI
         virtual ResultCode InitInternal(Device& device, const AliasedHeapDescriptor& descriptor) = 0;
         virtual ResultCode InitInternal(Device& device, const AliasedHeapDescriptor& descriptor) = 0;
         //! Implementation initialization of an Aliased image.
         //! Implementation initialization of an Aliased image.
         //! @param heapOffset Offset in bytes of the heap where the resource should be created.
         //! @param heapOffset Offset in bytes of the heap where the resource should be created.
-        virtual ResultCode InitImageInternal(const SingleDeviceImageInitRequest& request, size_t heapOffset) = 0;
+        virtual ResultCode InitImageInternal(const DeviceImageInitRequest& request, size_t heapOffset) = 0;
         //! Implementation initialization of an Aliased buffer.
         //! Implementation initialization of an Aliased buffer.
         //! @param heapOffset Offset in bytes of the heap where the resource should be created.
         //! @param heapOffset Offset in bytes of the heap where the resource should be created.
-        virtual ResultCode InitBufferInternal(const SingleDeviceBufferInitRequest& request, size_t heapOffset) = 0;
+        virtual ResultCode InitBufferInternal(const DeviceBufferInitRequest& request, size_t heapOffset) = 0;
         //////////////////////////////////////////////////////////////////////////
         //////////////////////////////////////////////////////////////////////////
 
 
         //////////////////////////////////////////////////////////////////////////
         //////////////////////////////////////////////////////////////////////////
-        // SingleDeviceResourcePool
+        // DeviceResourcePool
         void ShutdownInternal() override;
         void ShutdownInternal() override;
         void ComputeFragmentation() const override;
         void ComputeFragmentation() const override;
         //////////////////////////////////////////////////////////////////////////
         //////////////////////////////////////////////////////////////////////////
@@ -129,7 +129,7 @@ namespace AZ::RHI
         FreeListAllocator m_firstFitAllocator;
         FreeListAllocator m_firstFitAllocator;
 
 
         /// Cache of attachments.
         /// Cache of attachments.
-        ObjectCache<SingleDeviceResource> m_cache;
+        ObjectCache<DeviceResource> m_cache;
 
 
         /// The aliasing barrier tracker used to compute aliasing barriers when activations
         /// The aliasing barrier tracker used to compute aliasing barriers when activations
         /// and deactivations occur.
         /// and deactivations occur.
@@ -148,7 +148,7 @@ namespace AZ::RHI
         /// Reverse lookup for getting the attachment index the heap statistics.
         /// Reverse lookup for getting the attachment index the heap statistics.
         struct AttachmentData
         struct AttachmentData
         {
         {
-            SingleDeviceResource* m_resource = nullptr;
+            DeviceResource* m_resource = nullptr;
             uint32_t m_attachmentIndex = 0;
             uint32_t m_attachmentIndex = 0;
             Scope* m_activateScope = nullptr;
             Scope* m_activateScope = nullptr;
         };
         };

+ 2 - 2
Gems/Atom/RHI/Code/Include/Atom/RHI/AliasingBarrierTracker.h

@@ -16,14 +16,14 @@
 namespace AZ::RHI
 namespace AZ::RHI
 {
 {
     class Scope;
     class Scope;
-    class SingleDeviceResource;
+    class DeviceResource;
 
 
     //! Describes the use of an Aliased Resource.
     //! Describes the use of an Aliased Resource.
     struct AliasedResource
     struct AliasedResource
     {
     {
         Scope* m_beginScope = nullptr;  ///< Scope when the resource begins being used.
         Scope* m_beginScope = nullptr;  ///< Scope when the resource begins being used.
         Scope* m_endScope = nullptr;    ///< Scope when the resource ends being used.
         Scope* m_endScope = nullptr;    ///< Scope when the resource ends being used.
-        SingleDeviceResource* m_resource = nullptr; ///< SingleDeviceResource being aliased.
+        DeviceResource* m_resource = nullptr; ///< DeviceResource being aliased.
         uint64_t m_byteOffsetMin = 0;   ///< Begin offset in the memory heap for the aliased resource.
         uint64_t m_byteOffsetMin = 0;   ///< Begin offset in the memory heap for the aliased resource.
         uint64_t m_byteOffsetMax = 0;   ///< End offset in the memory heap for the aliased resource.
         uint64_t m_byteOffsetMax = 0;   ///< End offset in the memory heap for the aliased resource.
         AliasedResourceType m_type = AliasedResourceType::Image; // Type of resource being aliased.
         AliasedResourceType m_type = AliasedResourceType::Image; // Type of resource being aliased.

+ 34 - 34
Gems/Atom/RHI/Code/Include/Atom/RHI/MultiDeviceBuffer.h → Gems/Atom/RHI/Code/Include/Atom/RHI/Buffer.h

@@ -9,48 +9,48 @@
 
 
 #include <Atom/RHI.Reflect/BufferDescriptor.h>
 #include <Atom/RHI.Reflect/BufferDescriptor.h>
 #include <Atom/RHI.Reflect/BufferViewDescriptor.h>
 #include <Atom/RHI.Reflect/BufferViewDescriptor.h>
-#include <Atom/RHI/SingleDeviceBuffer.h>
-#include <Atom/RHI/SingleDeviceBufferView.h>
-#include <Atom/RHI/MultiDeviceResource.h>
+#include <Atom/RHI/DeviceBuffer.h>
+#include <Atom/RHI/DeviceBufferView.h>
+#include <Atom/RHI/Resource.h>
 
 
 namespace AZ::RHI
 namespace AZ::RHI
 {
 {
     class BufferFrameAttachment;
     class BufferFrameAttachment;
     struct BufferViewDescriptor;
     struct BufferViewDescriptor;
-    class MultiDeviceBufferView;
+    class BufferView;
 
 
-    //! A MultiDeviceBuffer holds all Buffers across multiple devices.
+    //! A Buffer holds all Buffers across multiple devices.
     //! The buffer descriptor will be shared across all the buffers.
     //! The buffer descriptor will be shared across all the buffers.
-    //! The user manages the lifecycle of a MultiDeviceBuffer through a MultiDeviceBufferPool
-    class MultiDeviceBuffer : public MultiDeviceResource
+    //! The user manages the lifecycle of a Buffer through a BufferPool
+    class Buffer : public Resource
     {
     {
-        using Base = MultiDeviceResource;
-        friend class MultiDeviceBufferPoolBase;
-        friend class MultiDeviceBufferPool;
-        friend class MultiDeviceRayTracingTlas;
-        friend class MultiDeviceTransientAttachmentPool;
+        using Base = Resource;
+        friend class BufferPoolBase;
+        friend class BufferPool;
+        friend class RayTracingTlas;
+        friend class TransientAttachmentPool;
 
 
     public:
     public:
-        AZ_CLASS_ALLOCATOR(MultiDeviceBuffer, AZ::SystemAllocator, 0);
-        AZ_RTTI(MultiDeviceBuffer, "{8B8A544D-7819-4677-9C47-943B821DE619}", MultiDeviceResource);
+        AZ_CLASS_ALLOCATOR(Buffer, AZ::SystemAllocator, 0);
+        AZ_RTTI(Buffer, "{8B8A544D-7819-4677-9C47-943B821DE619}", Resource);
         AZ_RHI_MULTI_DEVICE_OBJECT_GETTER(Buffer);
         AZ_RHI_MULTI_DEVICE_OBJECT_GETTER(Buffer);
-        MultiDeviceBuffer() = default;
-        virtual ~MultiDeviceBuffer() = default;
+        Buffer() = default;
+        virtual ~Buffer() = default;
 
 
         const BufferDescriptor& GetDescriptor() const;
         const BufferDescriptor& GetDescriptor() const;
 
 
         //! Returns the buffer frame attachment if the buffer is currently attached.
         //! Returns the buffer frame attachment if the buffer is currently attached.
         const BufferFrameAttachment* GetFrameAttachment() const;
         const BufferFrameAttachment* GetFrameAttachment() const;
 
 
-        Ptr<MultiDeviceBufferView> BuildBufferView(const BufferViewDescriptor& bufferViewDescriptor);
+        Ptr<BufferView> BuildBufferView(const BufferViewDescriptor& bufferViewDescriptor);
 
 
-        //! Get the hash associated with the MultiDeviceBuffer
+        //! Get the hash associated with the Buffer
         const HashValue64 GetHash() const;
         const HashValue64 GetHash() const;
 
 
         //! Shuts down the resource by detaching it from its parent pool.
         //! Shuts down the resource by detaching it from its parent pool.
         void Shutdown() override final;
         void Shutdown() override final;
 
 
-        //! Returns true if the SingleDeviceResourceView is in the cache of all single device buffers
+        //! Returns true if the DeviceResourceView is in the cache of all single device buffers
         bool IsInResourceCache(const BufferViewDescriptor& bufferViewDescriptor);
         bool IsInResourceCache(const BufferViewDescriptor& bufferViewDescriptor);
 
 
     protected:
     protected:
@@ -59,30 +59,30 @@ namespace AZ::RHI
     private:
     private:
         void Invalidate();
         void Invalidate();
 
 
-        //! The RHI descriptor for this MultiDeviceBuffer.
+        //! The RHI descriptor for this Buffer.
         BufferDescriptor m_descriptor;
         BufferDescriptor m_descriptor;
     };
     };
 
 
-    //! A MultiDeviceBufferView is a light-weight representation of a view onto a multi-device buffer.
+    //! A BufferView is a light-weight representation of a view onto a multi-device buffer.
     //! It holds a raw pointer to a multi-device buffer as well as a BufferViewDescriptor
     //! It holds a raw pointer to a multi-device buffer as well as a BufferViewDescriptor
     //! Using both, single-device BufferViews can be retrieved
     //! Using both, single-device BufferViews can be retrieved
-    class MultiDeviceBufferView : public MultiDeviceResourceView
+    class BufferView : public ResourceView
     {
     {
     public:
     public:
-        AZ_RTTI(MultiDeviceBufferView, "{AB366B8F-F1B7-45C6-A0D8-475D4834FAD2}", MultiDeviceResourceView);
-        virtual ~MultiDeviceBufferView() = default;
+        AZ_RTTI(BufferView, "{AB366B8F-F1B7-45C6-A0D8-475D4834FAD2}", ResourceView);
+        virtual ~BufferView() = default;
 
 
-        MultiDeviceBufferView(const RHI::MultiDeviceBuffer* buffer, BufferViewDescriptor descriptor)
+        BufferView(const RHI::Buffer* buffer, BufferViewDescriptor descriptor)
             : m_buffer{ buffer }
             : m_buffer{ buffer }
             , m_descriptor{ descriptor }
             , m_descriptor{ descriptor }
         {
         {
         }
         }
 
 
-        //! Given a device index, return the corresponding SingleDeviceBufferView for the selected device
-        const RHI::Ptr<RHI::SingleDeviceBufferView> GetDeviceBufferView(int deviceIndex) const;
+        //! Given a device index, return the corresponding DeviceBufferView for the selected device
+        const RHI::Ptr<RHI::DeviceBufferView> GetDeviceBufferView(int deviceIndex) const;
 
 
         //! Return the contained multi-device buffer
         //! Return the contained multi-device buffer
-        const RHI::MultiDeviceBuffer* GetBuffer() const
+        const RHI::Buffer* GetBuffer() const
         {
         {
             return m_buffer.get();
             return m_buffer.get();
         }
         }
@@ -93,27 +93,27 @@ namespace AZ::RHI
             return m_descriptor;
             return m_descriptor;
         }
         }
 
 
-        const MultiDeviceResource* GetResource() const override
+        const Resource* GetResource() const override
         {
         {
             return m_buffer.get();
             return m_buffer.get();
         }
         }
 
 
-        const SingleDeviceResourceView* GetDeviceResourceView(int deviceIndex) const override
+        const DeviceResourceView* GetDeviceResourceView(int deviceIndex) const override
         {
         {
             return GetDeviceBufferView(deviceIndex).get();
             return GetDeviceBufferView(deviceIndex).get();
         }
         }
 
 
     private:
     private:
-        //! Safe-guard access to SingleDeviceBufferView cache during parallel access
+        //! Safe-guard access to DeviceBufferView cache during parallel access
         mutable AZStd::mutex m_bufferViewMutex;
         mutable AZStd::mutex m_bufferViewMutex;
         //! A raw pointer to a multi-device buffer
         //! A raw pointer to a multi-device buffer
-        ConstPtr<RHI::MultiDeviceBuffer> m_buffer;
+        ConstPtr<RHI::Buffer> m_buffer;
         //! The corresponding BufferViewDescriptor for this view.
         //! The corresponding BufferViewDescriptor for this view.
         BufferViewDescriptor m_descriptor;
         BufferViewDescriptor m_descriptor;
-        //! SingleDeviceBufferView cache
+        //! DeviceBufferView cache
         //! This cache is necessary as the caller receives raw pointers from the ResourceCache, 
         //! This cache is necessary as the caller receives raw pointers from the ResourceCache, 
         //! which now, with multi-device objects in use, need to be held in memory as long as
         //! which now, with multi-device objects in use, need to be held in memory as long as
         //! the multi-device view is held.
         //! the multi-device view is held.
-        mutable AZStd::unordered_map<int, Ptr<RHI::SingleDeviceBufferView>> m_cache;
+        mutable AZStd::unordered_map<int, Ptr<RHI::DeviceBufferView>> m_cache;
     };
     };
 } // namespace AZ::RHI
 } // namespace AZ::RHI

+ 5 - 5
Gems/Atom/RHI/Code/Include/Atom/RHI/BufferFrameAttachment.h

@@ -9,13 +9,13 @@
 
 
 #include <Atom/RHI.Reflect/TransientBufferDescriptor.h>
 #include <Atom/RHI.Reflect/TransientBufferDescriptor.h>
 #include <Atom/RHI/FrameAttachment.h>
 #include <Atom/RHI/FrameAttachment.h>
-#include <Atom/RHI/MultiDeviceBuffer.h>
+#include <Atom/RHI/Buffer.h>
 #include <Atom/RHI/ObjectCache.h>
 #include <Atom/RHI/ObjectCache.h>
 #include <AzCore/Memory/PoolAllocator.h>
 #include <AzCore/Memory/PoolAllocator.h>
 
 
 namespace AZ::RHI
 namespace AZ::RHI
 {
 {
-    class SingleDeviceBufferView;
+    class DeviceBufferView;
     class BufferScopeAttachment;
     class BufferScopeAttachment;
 
 
     //! A specialization of Attachment for a buffer. Provides access to the buffer.
     //! A specialization of Attachment for a buffer. Provides access to the buffer.
@@ -28,7 +28,7 @@ namespace AZ::RHI
         virtual ~BufferFrameAttachment() override = default;
         virtual ~BufferFrameAttachment() override = default;
 
 
         /// Initialization for imported buffers.
         /// Initialization for imported buffers.
-        BufferFrameAttachment(const AttachmentId& attachmentId, Ptr<MultiDeviceBuffer> buffer);
+        BufferFrameAttachment(const AttachmentId& attachmentId, Ptr<Buffer> buffer);
 
 
         /// Initialization for transient buffers.
         /// Initialization for transient buffers.
         BufferFrameAttachment(const TransientBufferDescriptor& descriptor);
         BufferFrameAttachment(const TransientBufferDescriptor& descriptor);
@@ -43,8 +43,8 @@ namespace AZ::RHI
 
 
         /// Returns the buffer resource assigned to this attachment. This is not guaranteed to exist
         /// Returns the buffer resource assigned to this attachment. This is not guaranteed to exist
         /// until after frame graph compilation.
         /// until after frame graph compilation.
-        const MultiDeviceBuffer* GetBuffer() const;
-        MultiDeviceBuffer* GetBuffer();
+        const Buffer* GetBuffer() const;
+        Buffer* GetBuffer();
 
 
         /// Returns the buffer descriptor assigned to this attachment.
         /// Returns the buffer descriptor assigned to this attachment.
         const BufferDescriptor& GetBufferDescriptor() const;
         const BufferDescriptor& GetBufferDescriptor() const;

+ 26 - 26
Gems/Atom/RHI/Code/Include/Atom/RHI/MultiDeviceBufferPool.h → Gems/Atom/RHI/Code/Include/Atom/RHI/BufferPool.h

@@ -8,38 +8,38 @@
 #pragma once
 #pragma once
 
 
 #include <Atom/RHI.Reflect/BufferPoolDescriptor.h>
 #include <Atom/RHI.Reflect/BufferPoolDescriptor.h>
-#include <Atom/RHI/SingleDeviceBufferPool.h>
-#include <Atom/RHI/MultiDeviceBuffer.h>
-#include <Atom/RHI/MultiDeviceBufferPoolBase.h>
+#include <Atom/RHI/DeviceBufferPool.h>
+#include <Atom/RHI/Buffer.h>
+#include <Atom/RHI/BufferPoolBase.h>
 
 
 namespace AZ::RHI
 namespace AZ::RHI
 {
 {
-    class MultiDeviceFence;
+    class Fence;
 
 
-    //! A structure used as an argument to MultiDeviceBufferPool::MapBuffer.
-    struct MultiDeviceBufferMapResponse
+    //! A structure used as an argument to BufferPool::MapBuffer.
+    struct BufferMapResponse
     {
     {
-        //! Will hold the mapped data for each device selected in the MultiDeviceBuffer
+        //! Will hold the mapped data for each device selected in the Buffer
         AZStd::unordered_map<int, void*> m_data;
         AZStd::unordered_map<int, void*> m_data;
     };
     };
 
 
-    using MultiDeviceBufferInitRequest = BufferInitRequestTemplate<MultiDeviceBuffer>;
-    using MultiDeviceBufferMapRequest = BufferMapRequestTemplate<MultiDeviceBuffer>;
-    using MultiDeviceBufferStreamRequest = BufferStreamRequestTemplate<MultiDeviceBuffer, MultiDeviceFence>;
+    using BufferInitRequest = BufferInitRequestTemplate<Buffer>;
+    using BufferMapRequest = BufferMapRequestTemplate<Buffer>;
+    using BufferStreamRequest = BufferStreamRequestTemplate<Buffer, Fence>;
 
 
     //! Buffer pool provides backing storage and context for buffer instances. The BufferPoolDescriptor
     //! Buffer pool provides backing storage and context for buffer instances. The BufferPoolDescriptor
     //! contains properties defining memory characteristics of buffer pools. All buffers created on a pool
     //! contains properties defining memory characteristics of buffer pools. All buffers created on a pool
     //! share the same backing heap and buffer bind flags.
     //! share the same backing heap and buffer bind flags.
-    class MultiDeviceBufferPool : public MultiDeviceBufferPoolBase
+    class BufferPool : public BufferPoolBase
     {
     {
-        friend class MultiDeviceRayTracingBufferPools;
+        friend class RayTracingBufferPools;
 
 
     public:
     public:
-        AZ_CLASS_ALLOCATOR(MultiDeviceBufferPool, AZ::SystemAllocator, 0);
-        AZ_RTTI(MultiDeviceBufferPool, "{547F1577-0AA3-4F0D-9656-8905DE5E9E8A}", MultiDeviceBufferPoolBase)
+        AZ_CLASS_ALLOCATOR(BufferPool, AZ::SystemAllocator, 0);
+        AZ_RTTI(BufferPool, "{547F1577-0AA3-4F0D-9656-8905DE5E9E8A}", BufferPoolBase)
         AZ_RHI_MULTI_DEVICE_OBJECT_GETTER(BufferPool);
         AZ_RHI_MULTI_DEVICE_OBJECT_GETTER(BufferPool);
-        MultiDeviceBufferPool() = default;
-        virtual ~MultiDeviceBufferPool() override = default;
+        BufferPool() = default;
+        virtual ~BufferPool() override = default;
 
 
         //! Initializes the buffer pool with a provided descriptor. The pool must be in an uninitialized
         //! Initializes the buffer pool with a provided descriptor. The pool must be in an uninitialized
         //! state, or this call will fail. To re-use an existing pool, you must first call Shutdown
         //! state, or this call will fail. To re-use an existing pool, you must first call Shutdown
@@ -60,7 +60,7 @@ namespace AZ::RHI
         //!      buffer, it remain in a shutdown state. If the initial data upload fails, the buffer will be
         //!      buffer, it remain in a shutdown state. If the initial data upload fails, the buffer will be
         //!      initialized, but will remain empty and the call will return ResultCode::OutOfMemory. Checking
         //!      initialized, but will remain empty and the call will return ResultCode::OutOfMemory. Checking
         //!      this amounts to seeing if buffer.IsInitialized() is true.
         //!      this amounts to seeing if buffer.IsInitialized() is true.
-        ResultCode InitBuffer(const MultiDeviceBufferInitRequest& request);
+        ResultCode InitBuffer(const BufferInitRequest& request);
 
 
         //! NOTE: Only applicable to 'Host' pools. Device pools will fail with ResultCode::InvalidOperation.
         //! NOTE: Only applicable to 'Host' pools. Device pools will fail with ResultCode::InvalidOperation.
         //!
         //!
@@ -81,7 +81,7 @@ namespace AZ::RHI
         //!      initialized with this pool.
         //!      initialized with this pool.
         //!  @return On success, the buffer is considered to have a new backing allocation. On failure, the existing
         //!  @return On success, the buffer is considered to have a new backing allocation. On failure, the existing
         //!      buffer allocation remains intact.
         //!      buffer allocation remains intact.
-        ResultCode OrphanBuffer(MultiDeviceBuffer& buffer);
+        ResultCode OrphanBuffer(Buffer& buffer);
 
 
         //! Maps a buffer region for CPU access. The type of access (read or write) is dictated by the type of
         //! Maps a buffer region for CPU access. The type of access (read or write) is dictated by the type of
         //! buffer pool. Host pools with host read access may read from the buffer--the contents of which
         //! buffer pool. Host pools with host read access may read from the buffer--the contents of which
@@ -95,16 +95,16 @@ namespace AZ::RHI
         //!  @param response The map response structure holding the mapped data pointer (if successful), or null.
         //!  @param response The map response structure holding the mapped data pointer (if successful), or null.
         //!  @return Returns a result code specifying whether the call succeeded, or a failure code specifying
         //!  @return Returns a result code specifying whether the call succeeded, or a failure code specifying
         //!      why the call failed.
         //!      why the call failed.
-        ResultCode MapBuffer(const MultiDeviceBufferMapRequest& request, MultiDeviceBufferMapResponse& response);
+        ResultCode MapBuffer(const BufferMapRequest& request, BufferMapResponse& response);
 
 
         //! Unmaps a buffer for CPU access. The mapped data pointer is considered invalid after this call and
         //! Unmaps a buffer for CPU access. The mapped data pointer is considered invalid after this call and
         //! should not be accessed. This call unmaps the data region and unblocks the GPU for access.
         //! should not be accessed. This call unmaps the data region and unblocks the GPU for access.
-        void UnmapBuffer(MultiDeviceBuffer& buffer);
+        void UnmapBuffer(Buffer& buffer);
 
 
         //! Asynchronously streams buffer data up to the GPU. The operation is decoupled from the frame scheduler.
         //! Asynchronously streams buffer data up to the GPU. The operation is decoupled from the frame scheduler.
         //! It is not valid to use the buffer while the upload is running. The provided fence is signaled when the
         //! It is not valid to use the buffer while the upload is running. The provided fence is signaled when the
         //! upload completes.
         //! upload completes.
-        ResultCode StreamBuffer(const MultiDeviceBufferStreamRequest& request);
+        ResultCode StreamBuffer(const BufferStreamRequest& request);
 
 
         //! Returns the buffer descriptor used to initialize the buffer pool. Descriptor contents
         //! Returns the buffer descriptor used to initialize the buffer pool. Descriptor contents
         //! are undefined for uninitialized pools.
         //! are undefined for uninitialized pools.
@@ -114,17 +114,17 @@ namespace AZ::RHI
         void Shutdown() override final;
         void Shutdown() override final;
 
 
     private:
     private:
-        using MultiDeviceBufferPoolBase::InitBuffer;
-        using MultiDeviceResourcePool::Init;
+        using BufferPoolBase::InitBuffer;
+        using ResourcePool::Init;
 
 
         //! Validates that the map operation succeeded by printing a warning otherwise. Increments
         //! Validates that the map operation succeeded by printing a warning otherwise. Increments
         //! the map reference counts for the buffer and the pool.
         //! the map reference counts for the buffer and the pool.
-        void ValidateBufferMap(MultiDeviceBuffer& buffer, bool isDataValid);
+        void ValidateBufferMap(Buffer& buffer, bool isDataValid);
 
 
         bool ValidatePoolDescriptor(const BufferPoolDescriptor& descriptor) const;
         bool ValidatePoolDescriptor(const BufferPoolDescriptor& descriptor) const;
-        bool ValidateInitRequest(const MultiDeviceBufferInitRequest& initRequest) const;
+        bool ValidateInitRequest(const BufferInitRequest& initRequest) const;
         bool ValidateIsHostHeap() const;
         bool ValidateIsHostHeap() const;
-        bool ValidateMapRequest(const MultiDeviceBufferMapRequest& request) const;
+        bool ValidateMapRequest(const BufferMapRequest& request) const;
 
 
         BufferPoolDescriptor m_descriptor;
         BufferPoolDescriptor m_descriptor;
     };
     };

+ 32 - 0
Gems/Atom/RHI/Code/Include/Atom/RHI/BufferPoolBase.h

@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) Contributors to the Open 3D Engine Project.
+ * For complete copyright and license terms please see the LICENSE at the root of this distribution.
+ *
+ * SPDX-License-Identifier: Apache-2.0 OR MIT
+ *
+ */
+#pragma once
+
+#include <Atom/RHI/Buffer.h>
+#include <Atom/RHI/ResourcePool.h>
+
+namespace AZ::RHI
+{
+    //! A simple base class for buffer pools. This mainly exists so that various
+    //! buffer pool implementations can have some type safety separate from other
+    //! resource pool types.
+    class BufferPoolBase : public ResourcePool
+    {
+    public:
+        AZ_RTTI(BufferPoolBase, "{08EC3384-CC9F-4F04-B87E-0BB9D23F7CB0}", ResourcePool);
+        virtual ~BufferPoolBase() override = default;
+
+    protected:
+        BufferPoolBase() = default;
+
+        ResultCode InitBuffer(Buffer* buffer, const BufferDescriptor& descriptor, PlatformMethod platformInitResourceMethod);
+
+    private:
+        using ResourcePool::InitResource;
+    };
+} // namespace AZ::RHI

+ 3 - 3
Gems/Atom/RHI/Code/Include/Atom/RHI/BufferScopeAttachment.h

@@ -13,7 +13,7 @@
 
 
 namespace AZ::RHI
 namespace AZ::RHI
 {
 {
-    class MultiDeviceBufferView;
+    class BufferView;
     class BufferFrameAttachment;
     class BufferFrameAttachment;
 
 
     //! A specialization of a scope attachment for buffers. Provides
     //! A specialization of a scope attachment for buffers. Provides
@@ -47,10 +47,10 @@ namespace AZ::RHI
         BufferScopeAttachment* GetNext();
         BufferScopeAttachment* GetNext();
 
 
         /// Returns the buffer view set on the scope attachment.
         /// Returns the buffer view set on the scope attachment.
-        const AZ::RHI::MultiDeviceBufferView* GetBufferView() const;
+        const AZ::RHI::BufferView* GetBufferView() const;
 
 
         /// Assigns a buffer view to the scope attachment.
         /// Assigns a buffer view to the scope attachment.
-        void SetBufferView(ConstPtr<MultiDeviceBufferView> bufferView);
+        void SetBufferView(ConstPtr<BufferView> bufferView);
 
 
     private:
     private:
         BufferScopeAttachmentDescriptor m_descriptor;
         BufferScopeAttachmentDescriptor m_descriptor;

+ 18 - 18
Gems/Atom/RHI/Code/Include/Atom/RHI/CommandList.h

@@ -10,12 +10,12 @@
 #include <Atom/RHI.Reflect/Viewport.h>
 #include <Atom/RHI.Reflect/Viewport.h>
 #include <Atom/RHI.Reflect/Scissor.h>
 #include <Atom/RHI.Reflect/Scissor.h>
 #include <Atom/RHI.Reflect/VariableRateShadingEnums.h>
 #include <Atom/RHI.Reflect/VariableRateShadingEnums.h>
-#include <Atom/RHI/SingleDeviceDrawItem.h>
-#include <Atom/RHI/SingleDeviceDispatchItem.h>
-#include <Atom/RHI/SingleDeviceDispatchRaysItem.h>
-#include <Atom/RHI/SingleDeviceCopyItem.h>
-#include <Atom/RHI/SingleDeviceRayTracingAccelerationStructure.h>
-#include <Atom/RHI/SingleDeviceRayTracingBufferPools.h>
+#include <Atom/RHI/DeviceDrawItem.h>
+#include <Atom/RHI/DeviceDispatchItem.h>
+#include <Atom/RHI/DeviceDispatchRaysItem.h>
+#include <Atom/RHI/DeviceCopyItem.h>
+#include <Atom/RHI/DeviceRayTracingAccelerationStructure.h>
+#include <Atom/RHI/DeviceRayTracingBufferPools.h>
 
 
 namespace AZ::RHI
 namespace AZ::RHI
 {
 {
@@ -53,41 +53,41 @@ namespace AZ::RHI
         //! Assigns a shader resource group for draw on the graphics pipe, at the binding slot
         //! Assigns a shader resource group for draw on the graphics pipe, at the binding slot
         //! determined by the layout used to create the shader resource group.
         //! determined by the layout used to create the shader resource group.
         //! @param shaderResourceGroup The shader resource group to bind.
         //! @param shaderResourceGroup The shader resource group to bind.
-        virtual void SetShaderResourceGroupForDraw(const SingleDeviceShaderResourceGroup& shaderResourceGroup) = 0;
+        virtual void SetShaderResourceGroupForDraw(const DeviceShaderResourceGroup& shaderResourceGroup) = 0;
 
 
         //! Assigns a shader resource group for dispatch on compute pipe, at the binding slot
         //! Assigns a shader resource group for dispatch on compute pipe, at the binding slot
         //! determined by the layout used to create the shader resource group.
         //! determined by the layout used to create the shader resource group.
         //! @param shaderResourceGroup The shader resource group to bind.
         //! @param shaderResourceGroup The shader resource group to bind.
-        virtual void SetShaderResourceGroupForDispatch(const SingleDeviceShaderResourceGroup& shaderResourceGroup) = 0;
+        virtual void SetShaderResourceGroupForDispatch(const DeviceShaderResourceGroup& shaderResourceGroup) = 0;
 
 
         /// Submits a single copy item for processing on the command list.
         /// Submits a single copy item for processing on the command list.
-        virtual void Submit(const SingleDeviceCopyItem& copyItem, uint32_t submitIndex = 0) = 0;
+        virtual void Submit(const DeviceCopyItem& copyItem, uint32_t submitIndex = 0) = 0;
 
 
         /// Submits a single draw item for processing on the command list.
         /// Submits a single draw item for processing on the command list.
-        virtual void Submit(const SingleDeviceDrawItem& drawItem, uint32_t submitIndex = 0) = 0;
+        virtual void Submit(const DeviceDrawItem& drawItem, uint32_t submitIndex = 0) = 0;
 
 
         /// Submits a single dispatch item for processing on the command list.
         /// Submits a single dispatch item for processing on the command list.
-        virtual void Submit(const SingleDeviceDispatchItem& dispatchItem, uint32_t submitIndex = 0) = 0;
+        virtual void Submit(const DeviceDispatchItem& dispatchItem, uint32_t submitIndex = 0) = 0;
 
 
         /// Submits a single dispatch rays item for processing on the command list.
         /// Submits a single dispatch rays item for processing on the command list.
-        virtual void Submit(const SingleDeviceDispatchRaysItem& dispatchRaysItem, uint32_t submitIndex = 0) = 0;
+        virtual void Submit(const DeviceDispatchRaysItem& dispatchRaysItem, uint32_t submitIndex = 0) = 0;
 
 
         /// Starts predication on the command list.
         /// Starts predication on the command list.
-        virtual void BeginPredication(const SingleDeviceBuffer& buffer, uint64_t offset, PredicationOp operation) = 0;
+        virtual void BeginPredication(const DeviceBuffer& buffer, uint64_t offset, PredicationOp operation) = 0;
 
 
         /// End predication on the command list.
         /// End predication on the command list.
         virtual void EndPredication() = 0;
         virtual void EndPredication() = 0;
 
 
-        /// Builds a Bottom Level Acceleration Structure (BLAS) for ray tracing operations, which is made up of SingleDeviceRayTracingGeometry entries
-        virtual void BuildBottomLevelAccelerationStructure(const RHI::SingleDeviceRayTracingBlas& rayTracingBlas) = 0;
+        /// Builds a Bottom Level Acceleration Structure (BLAS) for ray tracing operations, which is made up of DeviceRayTracingGeometry entries
+        virtual void BuildBottomLevelAccelerationStructure(const RHI::DeviceRayTracingBlas& rayTracingBlas) = 0;
 
 
-        /// Updates a Bottom Level Acceleration Structure (BLAS) for ray tracing operations, which is made up of SingleDeviceRayTracingGeometry entries
-        virtual void UpdateBottomLevelAccelerationStructure(const RHI::SingleDeviceRayTracingBlas& rayTracingBlas) = 0;
+        /// Updates a Bottom Level Acceleration Structure (BLAS) for ray tracing operations, which is made up of DeviceRayTracingGeometry entries
+        virtual void UpdateBottomLevelAccelerationStructure(const RHI::DeviceRayTracingBlas& rayTracingBlas) = 0;
 
 
         /// Builds a Top Level Acceleration Structure (TLAS) for ray tracing operations, which is made up of RayTracingInstance entries that
         /// Builds a Top Level Acceleration Structure (TLAS) for ray tracing operations, which is made up of RayTracingInstance entries that
         /// refer to a BLAS entry
         /// refer to a BLAS entry
         virtual void BuildTopLevelAccelerationStructure(
         virtual void BuildTopLevelAccelerationStructure(
-            const RHI::SingleDeviceRayTracingTlas& rayTracingTlas, const AZStd::vector<const RHI::SingleDeviceRayTracingBlas*>& changedBlasList) = 0;
+            const RHI::DeviceRayTracingTlas& rayTracingTlas, const AZStd::vector<const RHI::DeviceRayTracingBlas*>& changedBlasList) = 0;
 
 
         /// Defines the submit range for a CommandList
         /// Defines the submit range for a CommandList
         /// Note: the default is 0 items, which disables validation for items submitted outside of the framegraph
         /// Note: the default is 0 items, which disables validation for items submitted outside of the framegraph

+ 6 - 6
Gems/Atom/RHI/Code/Include/Atom/RHI/CommandListValidator.h

@@ -14,10 +14,10 @@
 namespace AZ::RHI
 namespace AZ::RHI
 {
 {
     class Scope;
     class Scope;
-    class SingleDeviceShaderResourceGroup;
+    class DeviceShaderResourceGroup;
     struct ShaderResourceGroupBindingInfo;
     struct ShaderResourceGroupBindingInfo;
-    class MultiDeviceResource;
-    class SingleDeviceResourceView;
+    class Resource;
+    class DeviceResourceView;
     class ScopeAttachment;
     class ScopeAttachment;
     class FrameAttachment;
     class FrameAttachment;
 
 
@@ -35,7 +35,7 @@ namespace AZ::RHI
 
 
         //! Validates that the shader resource group is usable on the current scope. Emits a warning
         //! Validates that the shader resource group is usable on the current scope. Emits a warning
         //! otherwise and returns false.
         //! otherwise and returns false.
-        bool ValidateShaderResourceGroup(const SingleDeviceShaderResourceGroup& shaderResourceGroup, const ShaderResourceGroupBindingInfo& bindingInfo) const;
+        bool ValidateShaderResourceGroup(const DeviceShaderResourceGroup& shaderResourceGroup, const ShaderResourceGroupBindingInfo& bindingInfo) const;
 
 
         //! Ends validation for the current scope.
         //! Ends validation for the current scope.
         void EndScope();
         void EndScope();
@@ -47,7 +47,7 @@ namespace AZ::RHI
             const char* m_srgName = "";
             const char* m_srgName = "";
             const char* m_shaderInputTypeName = "";
             const char* m_shaderInputTypeName = "";
             ScopeAttachmentAccess m_scopeAttachmentAccess = ScopeAttachmentAccess::Read;
             ScopeAttachmentAccess m_scopeAttachmentAccess = ScopeAttachmentAccess::Read;
-            const SingleDeviceResourceView* m_resourceView = nullptr;
+            const DeviceResourceView* m_resourceView = nullptr;
         };
         };
 
 
         static ScopeAttachmentAccess GetAttachmentAccess(ShaderInputBufferAccess bufferInputAccess);
         static ScopeAttachmentAccess GetAttachmentAccess(ShaderInputBufferAccess bufferInputAccess);
@@ -56,7 +56,7 @@ namespace AZ::RHI
         bool ValidateView(const ValidateViewContext& context, bool ignoreAttachmentValidation) const;
         bool ValidateView(const ValidateViewContext& context, bool ignoreAttachmentValidation) const;
         bool ValidateAttachment(const ValidateViewContext& context, const FrameAttachment* frameAttachment) const;
         bool ValidateAttachment(const ValidateViewContext& context, const FrameAttachment* frameAttachment) const;
             
             
-        AZStd::unordered_map<const MultiDeviceResource*, AZStd::vector<const ScopeAttachment*>> m_attachments;
+        AZStd::unordered_map<const Resource*, AZStd::vector<const ScopeAttachment*>> m_attachments;
         const Scope* m_scope = nullptr;
         const Scope* m_scope = nullptr;
     };
     };
 }
 }

+ 1 - 1
Gems/Atom/RHI/Code/Include/Atom/RHI/CommandQueue.h

@@ -22,7 +22,7 @@ namespace AZ::RHI
     struct ExecuteWorkRequest
     struct ExecuteWorkRequest
     {
     {
         // A set of swap chains to present after executing the command lists.
         // A set of swap chains to present after executing the command lists.
-        AZStd::vector<SingleDeviceSwapChain*> m_swapChainsToPresent;
+        AZStd::vector<DeviceSwapChain*> m_swapChainsToPresent;
     };
     };
         
         
     struct CommandQueueDescriptor
     struct CommandQueueDescriptor

+ 244 - 0
Gems/Atom/RHI/Code/Include/Atom/RHI/CopyItem.h

@@ -0,0 +1,244 @@
+/*
+ * Copyright (c) Contributors to the Open 3D Engine Project.
+ * For complete copyright and license terms please see the LICENSE at the root of this distribution.
+ *
+ * SPDX-License-Identifier: Apache-2.0 OR MIT
+ *
+ */
+#pragma once
+
+#include <Atom/RHI/DeviceCopyItem.h>
+#include <Atom/RHI/Buffer.h>
+#include <Atom/RHI/Image.h>
+#include <Atom/RHI/QueryPool.h>
+
+namespace AZ::RHI
+{
+    //! A structure used to define a CopyItem, copying from a Buffer to a Buffer
+    struct CopyBufferDescriptor
+    {
+        CopyBufferDescriptor() = default;
+
+        //! Returns the device-specific DeviceCopyBufferDescriptor for the given index
+        DeviceCopyBufferDescriptor GetDeviceCopyBufferDescriptor(int deviceIndex) const
+        {
+            AZ_Assert(m_sourceBuffer, "Not initialized with source Buffer\n");
+            AZ_Assert(m_destinationBuffer, "Not initialized with destination Buffer\n");
+
+            return DeviceCopyBufferDescriptor{ m_sourceBuffer ? m_sourceBuffer->GetDeviceBuffer(deviceIndex).get() : nullptr,
+                                         m_sourceOffset,
+                                         m_destinationBuffer ? m_destinationBuffer->GetDeviceBuffer(deviceIndex).get() : nullptr,
+                                         m_destinationOffset,
+                                         m_size };
+        }
+
+        const Buffer* m_sourceBuffer = nullptr;
+        uint32_t m_sourceOffset = 0;
+        const Buffer* m_destinationBuffer = nullptr;
+        uint32_t m_destinationOffset = 0;
+        uint32_t m_size = 0;
+    };
+
+    //! A structure used to define a CopyItem, copying from a Image to a Image
+    struct CopyImageDescriptor
+    {
+        CopyImageDescriptor() = default;
+
+        //! Returns the device-specific DeviceCopyImageDescriptor for the given index
+        DeviceCopyImageDescriptor GetDeviceCopyImageDescriptor(int deviceIndex) const
+        {
+            AZ_Assert(m_sourceImage, "Not initialized with source Image\n");
+            AZ_Assert(m_destinationImage, "Not initialized with destination Image\n");
+
+            return DeviceCopyImageDescriptor{ m_sourceImage ? m_sourceImage->GetDeviceImage(deviceIndex).get() : nullptr,
+                                        m_sourceSubresource,
+                                        m_sourceOrigin,
+                                        m_sourceSize,
+                                        m_destinationImage ? m_destinationImage->GetDeviceImage(deviceIndex).get() : nullptr,
+                                        m_destinationSubresource,
+                                        m_destinationOrigin };
+        }
+
+        const Image* m_sourceImage = nullptr;
+        ImageSubresource m_sourceSubresource;
+        Origin m_sourceOrigin;
+        Size m_sourceSize;
+        const Image* m_destinationImage = nullptr;
+        ImageSubresource m_destinationSubresource;
+        Origin m_destinationOrigin;
+    };
+
+    //! A structure used to define a CopyItem, copying from a Buffer to a Image
+    struct CopyBufferToImageDescriptor
+    {
+        CopyBufferToImageDescriptor() = default;
+
+        //! Returns the device-specific DeviceCopyBufferToImageDescriptor for the given index
+        DeviceCopyBufferToImageDescriptor GetDeviceCopyBufferToImageDescriptor(int deviceIndex) const
+        {
+            AZ_Assert(m_sourceBuffer, "Not initialized with source Buffer\n");
+            AZ_Assert(m_destinationImage, "Not initialized with destination Image\n");
+
+            return DeviceCopyBufferToImageDescriptor{ m_sourceBuffer ? m_sourceBuffer->GetDeviceBuffer(deviceIndex).get() : nullptr,
+                                                m_sourceOffset,
+                                                m_sourceBytesPerRow,
+                                                m_sourceBytesPerImage,
+                                                m_sourceSize,
+                                                m_destinationImage ? m_destinationImage->GetDeviceImage(deviceIndex).get() : nullptr,
+                                                m_destinationSubresource,
+                                                m_destinationOrigin };
+        }
+
+        const Buffer* m_sourceBuffer = nullptr;
+        uint32_t m_sourceOffset = 0;
+        uint32_t m_sourceBytesPerRow = 0;
+        uint32_t m_sourceBytesPerImage = 0;
+        Size m_sourceSize;
+        const Image* m_destinationImage = nullptr;
+        ImageSubresource m_destinationSubresource;
+        Origin m_destinationOrigin;
+    };
+
+    //! A structure used to define a CopyItem, copying from a Image to a Buffer
+    struct CopyImageToBufferDescriptor
+    {
+        CopyImageToBufferDescriptor() = default;
+
+        //! Returns the device-specific DeviceCopyImageToBufferDescriptor for the given index
+        DeviceCopyImageToBufferDescriptor GetDeviceCopyImageToBufferDescriptor(int deviceIndex) const
+        {
+            AZ_Assert(m_sourceImage, "Not initialized with source Image\n");
+            AZ_Assert(m_destinationBuffer, "Not initialized with destination Buffer\n");
+
+            return DeviceCopyImageToBufferDescriptor{ m_sourceImage ? m_sourceImage->GetDeviceImage(deviceIndex).get() : nullptr,
+                                                m_sourceSubresource,
+                                                m_sourceOrigin,
+                                                m_sourceSize,
+                                                m_destinationBuffer ? m_destinationBuffer->GetDeviceBuffer(deviceIndex).get() : nullptr,
+                                                m_destinationOffset,
+                                                m_destinationBytesPerRow,
+                                                m_destinationBytesPerImage,
+                                                m_destinationFormat };
+        }
+
+        const Image* m_sourceImage = nullptr;
+        ImageSubresource m_sourceSubresource;
+        Origin m_sourceOrigin;
+        Size m_sourceSize;
+        const Buffer* m_destinationBuffer = nullptr;
+        uint32_t m_destinationOffset = 0;
+        uint32_t m_destinationBytesPerRow = 0;
+        uint32_t m_destinationBytesPerImage = 0;
+        //! The destination format is usually same as m_sourceImage's format. When source image contains more than one aspect,
+        //! the format should be compatiable with the aspect of the source image's subresource
+        Format m_destinationFormat;
+    };
+
+    //! A structure used to define a CopyItem, copying from a QueryPool to a Buffer
+    struct CopyQueryToBufferDescriptor
+    {
+        CopyQueryToBufferDescriptor() = default;
+
+        //! Returns the device-specific DeviceCopyQueryToBufferDescriptor for the given index
+        DeviceCopyQueryToBufferDescriptor GetDeviceCopyQueryToBufferDescriptor(int deviceIndex) const
+        {
+            AZ_Assert(m_SourceQueryPool, "Not initialized with source QueryPool\n");
+            AZ_Assert(m_destinationBuffer, "Not initialized with destination Buffer\n");
+
+            return DeviceCopyQueryToBufferDescriptor{ m_SourceQueryPool ? m_SourceQueryPool->GetDeviceQueryPool(deviceIndex).get() : nullptr,
+                                                m_firstQuery,
+                                                m_queryCount,
+                                                m_destinationBuffer ? m_destinationBuffer->GetDeviceBuffer(deviceIndex).get() : nullptr,
+                                                m_destinationOffset,
+                                                m_destinationStride };
+        }
+
+        const QueryPool* m_SourceQueryPool = nullptr;
+        QueryHandle m_firstQuery = QueryHandle(0);
+        uint32_t m_queryCount = 0;
+        const Buffer* m_destinationBuffer = nullptr;
+        uint32_t m_destinationOffset = 0;
+        uint32_t m_destinationStride = 0;
+    };
+
+    struct CopyItem
+    {
+        CopyItem()
+            : m_type{ CopyItemType::Buffer }
+            , m_Buffer{}
+        {
+        }
+
+        CopyItem(
+            const CopyBufferDescriptor& descriptor, RHI::MultiDevice::DeviceMask mask = RHI::MultiDevice::AllDevices)
+            : m_type{ CopyItemType::Buffer }
+            , m_Buffer{ descriptor }
+            , m_deviceMask{ mask }
+        {
+        }
+
+        CopyItem(
+            const CopyImageDescriptor& descriptor, RHI::MultiDevice::DeviceMask mask = RHI::MultiDevice::AllDevices)
+            : m_type{ CopyItemType::Image }
+            , m_Image{ descriptor }
+            , m_deviceMask{ mask }
+        {
+        }
+
+        CopyItem(
+            const CopyBufferToImageDescriptor& descriptor, RHI::MultiDevice::DeviceMask mask = RHI::MultiDevice::AllDevices)
+            : m_type{ CopyItemType::BufferToImage }
+            , m_BufferToImage{ descriptor }
+            , m_deviceMask{ mask }
+        {
+        }
+
+        CopyItem(
+            const CopyImageToBufferDescriptor& descriptor, RHI::MultiDevice::DeviceMask mask = RHI::MultiDevice::AllDevices)
+            : m_type{ CopyItemType::ImageToBuffer }
+            , m_ImageToBuffer{ descriptor }
+            , m_deviceMask{ mask }
+        {
+        }
+
+        CopyItem(
+            const CopyQueryToBufferDescriptor& descriptor, RHI::MultiDevice::DeviceMask mask = RHI::MultiDevice::AllDevices)
+            : m_type{ CopyItemType::QueryToBuffer }
+            , m_QueryToBuffer{ descriptor }
+            , m_deviceMask{ mask }
+        {
+        }
+
+        //! Returns the device-specific DeviceCopyItem for the given index
+        DeviceCopyItem GetDeviceCopyItem(int deviceIndex) const
+        {
+            switch (m_type)
+            {
+            case CopyItemType::Buffer:
+                return DeviceCopyItem(m_Buffer.GetDeviceCopyBufferDescriptor(deviceIndex));
+            case CopyItemType::Image:
+                return DeviceCopyItem(m_Image.GetDeviceCopyImageDescriptor(deviceIndex));
+            case CopyItemType::BufferToImage:
+                return DeviceCopyItem(m_BufferToImage.GetDeviceCopyBufferToImageDescriptor(deviceIndex));
+            case CopyItemType::ImageToBuffer:
+                return DeviceCopyItem(m_ImageToBuffer.GetDeviceCopyImageToBufferDescriptor(deviceIndex));
+            case CopyItemType::QueryToBuffer:
+                return DeviceCopyItem(m_QueryToBuffer.GetDeviceCopyQueryToBufferDescriptor(deviceIndex));
+            default:
+                return DeviceCopyItem();
+            }
+        }
+
+        CopyItemType m_type;
+        union
+        {
+            CopyBufferDescriptor m_Buffer;
+            CopyImageDescriptor m_Image;
+            CopyBufferToImageDescriptor m_BufferToImage;
+            CopyImageToBufferDescriptor m_ImageToBuffer;
+            CopyQueryToBufferDescriptor m_QueryToBuffer;
+        };
+        //! A DeviceMask to denote on which devices an operation should take place
+        RHI::MultiDevice::DeviceMask m_deviceMask;
+    };
+} // namespace AZ::RHI

+ 12 - 12
Gems/Atom/RHI/Code/Include/Atom/RHI/SingleDeviceBuffer.h → Gems/Atom/RHI/Code/Include/Atom/RHI/DeviceBuffer.h

@@ -8,8 +8,8 @@
 #pragma once
 #pragma once
 
 
 #include <Atom/RHI.Reflect/BufferDescriptor.h>
 #include <Atom/RHI.Reflect/BufferDescriptor.h>
-#include <Atom/RHI/SingleDeviceResource.h>
-#include <Atom/RHI/SingleDeviceBufferView.h>
+#include <Atom/RHI/DeviceResource.h>
+#include <Atom/RHI/DeviceBufferView.h>
 
 
 namespace AZ::RHI
 namespace AZ::RHI
 {
 {
@@ -18,15 +18,15 @@ namespace AZ::RHI
     struct BufferViewDescriptor;
     struct BufferViewDescriptor;
     
     
     //! A buffer corresponds to a region of linear memory and used for rendering operations. The user
     //! A buffer corresponds to a region of linear memory and used for rendering operations. The user
-    //! manages the lifecycle of a buffer through a SingleDeviceBufferPool.
-    class SingleDeviceBuffer
-        : public SingleDeviceResource
+    //! manages the lifecycle of a buffer through a DeviceBufferPool.
+    class DeviceBuffer
+        : public DeviceResource
     {
     {
-        using Base = SingleDeviceResource;
-        friend class SingleDeviceBufferPoolBase;
+        using Base = DeviceResource;
+        friend class DeviceBufferPoolBase;
     public:
     public:
-        AZ_RTTI(SingleDeviceBuffer, "{3C918323-F39C-4DC6-BEE9-BC220DBA9414}", SingleDeviceResource);
-        virtual ~SingleDeviceBuffer() = default;
+        AZ_RTTI(DeviceBuffer, "{3C918323-F39C-4DC6-BEE9-BC220DBA9414}", DeviceResource);
+        virtual ~DeviceBuffer() = default;
 
 
         const BufferDescriptor& GetDescriptor() const;
         const BufferDescriptor& GetDescriptor() const;
             
             
@@ -37,13 +37,13 @@ namespace AZ::RHI
         /// Returns the buffer frame attachment if the buffer is currently attached.
         /// Returns the buffer frame attachment if the buffer is currently attached.
         const BufferFrameAttachment* GetFrameAttachment() const;
         const BufferFrameAttachment* GetFrameAttachment() const;
 
 
-        Ptr<SingleDeviceBufferView> GetBufferView(const BufferViewDescriptor& bufferViewDescriptor);
+        Ptr<DeviceBufferView> GetBufferView(const BufferViewDescriptor& bufferViewDescriptor);
 
 
-        // Get the hash associated with the SingleDeviceBuffer
+        // Get the hash associated with the DeviceBuffer
         const HashValue64 GetHash() const;
         const HashValue64 GetHash() const;
 
 
     protected:
     protected:
-        SingleDeviceBuffer() = default;
+        DeviceBuffer() = default;
 
 
         void SetDescriptor(const BufferDescriptor& descriptor);
         void SetDescriptor(const BufferDescriptor& descriptor);
 
 

+ 29 - 29
Gems/Atom/RHI/Code/Include/Atom/RHI/SingleDeviceBufferPool.h → Gems/Atom/RHI/Code/Include/Atom/RHI/DeviceBufferPool.h

@@ -8,13 +8,13 @@
 #pragma once
 #pragma once
 
 
 #include <Atom/RHI.Reflect/BufferPoolDescriptor.h>
 #include <Atom/RHI.Reflect/BufferPoolDescriptor.h>
-#include <Atom/RHI/SingleDeviceBufferPoolBase.h>
+#include <Atom/RHI/DeviceBufferPoolBase.h>
 
 
 namespace AZ::RHI
 namespace AZ::RHI
 {
 {
-    class SingleDeviceFence;
+    class DeviceFence;
 
 
-    //! A structure used as an argument to SingleDeviceBufferPool::InitBuffer.
+    //! A structure used as an argument to DeviceBufferPool::InitBuffer.
     template <typename BufferClass>
     template <typename BufferClass>
     struct BufferInitRequestTemplate
     struct BufferInitRequestTemplate
     {
     {
@@ -39,7 +39,7 @@ namespace AZ::RHI
         const void* m_initialData = nullptr;
         const void* m_initialData = nullptr;
     };
     };
 
 
-    //! A structure used as an argument to SingleDeviceBufferPool::MapBuffer.
+    //! A structure used as an argument to DeviceBufferPool::MapBuffer.
     template <typename BufferClass>
     template <typename BufferClass>
     struct BufferMapRequestTemplate
     struct BufferMapRequestTemplate
     {
     {
@@ -61,13 +61,13 @@ namespace AZ::RHI
         size_t m_byteCount = 0;
         size_t m_byteCount = 0;
     };
     };
 
 
-    //! A structure used as an argument to SingleDeviceBufferPool::MapBuffer.
-    struct SingleDeviceBufferMapResponse
+    //! A structure used as an argument to DeviceBufferPool::MapBuffer.
+    struct DeviceBufferMapResponse
     {
     {
         void* m_data = nullptr;
         void* m_data = nullptr;
     };
     };
 
 
-    //! A structure used as an argument to SingleDeviceBufferPool::StreamBuffer.
+    //! A structure used as an argument to DeviceBufferPool::StreamBuffer.
     template <typename BufferClass, typename FenceClass>
     template <typename BufferClass, typename FenceClass>
     struct BufferStreamRequestTemplate
     struct BufferStreamRequestTemplate
     {
     {
@@ -89,19 +89,19 @@ namespace AZ::RHI
         const void* m_sourceData = nullptr;
         const void* m_sourceData = nullptr;
     };
     };
 
 
-    using SingleDeviceBufferInitRequest = BufferInitRequestTemplate<SingleDeviceBuffer>;
-    using SingleDeviceBufferMapRequest = BufferMapRequestTemplate<SingleDeviceBuffer>;
-    using SingleDeviceBufferStreamRequest = BufferStreamRequestTemplate<SingleDeviceBuffer, SingleDeviceFence>;
+    using DeviceBufferInitRequest = BufferInitRequestTemplate<DeviceBuffer>;
+    using DeviceBufferMapRequest = BufferMapRequestTemplate<DeviceBuffer>;
+    using DeviceBufferStreamRequest = BufferStreamRequestTemplate<DeviceBuffer, DeviceFence>;
 
 
     //! Buffer pool provides backing storage and context for buffer instances. The BufferPoolDescriptor
     //! Buffer pool provides backing storage and context for buffer instances. The BufferPoolDescriptor
     //! contains properties defining memory characteristics of buffer pools. All buffers created on a pool
     //! contains properties defining memory characteristics of buffer pools. All buffers created on a pool
     //! share the same backing heap and buffer bind flags.
     //! share the same backing heap and buffer bind flags.
-    class SingleDeviceBufferPool
-        : public SingleDeviceBufferPoolBase
+    class DeviceBufferPool
+        : public DeviceBufferPoolBase
     {
     {
     public:
     public:
-        AZ_RTTI(SingleDeviceBufferPool, "{6C7A657E-3940-465D-BC15-569741D9BBDF}", SingleDeviceBufferPoolBase)
-        virtual ~SingleDeviceBufferPool() override = default;
+        AZ_RTTI(DeviceBufferPool, "{6C7A657E-3940-465D-BC15-569741D9BBDF}", DeviceBufferPoolBase)
+        virtual ~DeviceBufferPool() override = default;
 
 
         //! Initializes the buffer pool with a provided descriptor. The pool must be in an uninitialized
         //! Initializes the buffer pool with a provided descriptor. The pool must be in an uninitialized
         //! state, or this call will fail. To re-use an existing pool, you must first call Shutdown
         //! state, or this call will fail. To re-use an existing pool, you must first call Shutdown
@@ -123,7 +123,7 @@ namespace AZ::RHI
         //!      buffer, it remain in a shutdown state. If the initial data upload fails, the buffer will be
         //!      buffer, it remain in a shutdown state. If the initial data upload fails, the buffer will be
         //!      initialized, but will remain empty and the call will return ResultCode::OutOfMemory. Checking
         //!      initialized, but will remain empty and the call will return ResultCode::OutOfMemory. Checking
         //!      this amounts to seeing if buffer.IsInitialized() is true.
         //!      this amounts to seeing if buffer.IsInitialized() is true.
-        ResultCode InitBuffer(const SingleDeviceBufferInitRequest& request);
+        ResultCode InitBuffer(const DeviceBufferInitRequest& request);
 
 
         //! NOTE: Only applicable to 'Host' pools. Device pools will fail with ResultCode::InvalidOperation.
         //! NOTE: Only applicable to 'Host' pools. Device pools will fail with ResultCode::InvalidOperation.
         //!
         //!
@@ -144,7 +144,7 @@ namespace AZ::RHI
         //!      initialized with this pool.
         //!      initialized with this pool.
         //!  @return On success, the buffer is considered to have a new backing allocation. On failure, the existing
         //!  @return On success, the buffer is considered to have a new backing allocation. On failure, the existing
         //!      buffer allocation remains intact.
         //!      buffer allocation remains intact.
-        ResultCode OrphanBuffer(SingleDeviceBuffer& buffer);
+        ResultCode OrphanBuffer(DeviceBuffer& buffer);
 
 
         //! Maps a buffer region for CPU access. The type of access (read or write) is dictated by the type of
         //! Maps a buffer region for CPU access. The type of access (read or write) is dictated by the type of
         //! buffer pool. Host pools with host read access may read from the buffer--the contents of which
         //! buffer pool. Host pools with host read access may read from the buffer--the contents of which
@@ -158,23 +158,23 @@ namespace AZ::RHI
         //!  @param response The map response structure holding the mapped data pointer (if successful), or null.
         //!  @param response The map response structure holding the mapped data pointer (if successful), or null.
         //!  @return Returns a result code specifying whether the call succeeded, or a failure code specifying
         //!  @return Returns a result code specifying whether the call succeeded, or a failure code specifying
         //!      why the call failed.
         //!      why the call failed.
-        ResultCode MapBuffer(const SingleDeviceBufferMapRequest& request, SingleDeviceBufferMapResponse& response);
+        ResultCode MapBuffer(const DeviceBufferMapRequest& request, DeviceBufferMapResponse& response);
 
 
         //! Unmaps a buffer for CPU access. The mapped data pointer is considered invalid after this call and
         //! Unmaps a buffer for CPU access. The mapped data pointer is considered invalid after this call and
         //! should not be accessed. This call unmaps the data region and unblocks the GPU for access.
         //! should not be accessed. This call unmaps the data region and unblocks the GPU for access.
-        void UnmapBuffer(SingleDeviceBuffer& buffer);
+        void UnmapBuffer(DeviceBuffer& buffer);
 
 
         //! Asynchronously streams buffer data up to the GPU. The operation is decoupled from the frame scheduler.
         //! Asynchronously streams buffer data up to the GPU. The operation is decoupled from the frame scheduler.
         //! It is not valid to use the buffer while the upload is running. The provided fence is signaled when the
         //! It is not valid to use the buffer while the upload is running. The provided fence is signaled when the
         //! upload completes.
         //! upload completes.
-        ResultCode StreamBuffer(const SingleDeviceBufferStreamRequest& request);
+        ResultCode StreamBuffer(const DeviceBufferStreamRequest& request);
 
 
         //! Returns the buffer descriptor used to initialize the buffer pool. Descriptor contents
         //! Returns the buffer descriptor used to initialize the buffer pool. Descriptor contents
         //! are undefined for uninitialized pools.
         //! are undefined for uninitialized pools.
         const BufferPoolDescriptor& GetDescriptor() const override final;
         const BufferPoolDescriptor& GetDescriptor() const override final;
 
 
     protected:
     protected:
-        SingleDeviceBufferPool() = default;
+        DeviceBufferPool() = default;
 
 
         ///////////////////////////////////////////////////////////////////
         ///////////////////////////////////////////////////////////////////
         // FrameEventBus::Handler
         // FrameEventBus::Handler
@@ -184,13 +184,13 @@ namespace AZ::RHI
         bool ValidateNotProcessingFrame() const;
         bool ValidateNotProcessingFrame() const;
 
 
     private:
     private:
-        using SingleDeviceResourcePool::Init;
-        using SingleDeviceBufferPoolBase::InitBuffer;
+        using DeviceResourcePool::Init;
+        using DeviceBufferPoolBase::InitBuffer;
 
 
         bool ValidatePoolDescriptor(const BufferPoolDescriptor& descriptor) const;
         bool ValidatePoolDescriptor(const BufferPoolDescriptor& descriptor) const;
-        bool ValidateInitRequest(const SingleDeviceBufferInitRequest& initRequest) const;
+        bool ValidateInitRequest(const DeviceBufferInitRequest& initRequest) const;
         bool ValidateIsHostHeap() const;
         bool ValidateIsHostHeap() const;
-        bool ValidateMapRequest(const SingleDeviceBufferMapRequest& request) const;
+        bool ValidateMapRequest(const DeviceBufferMapRequest& request) const;
 
 
         //////////////////////////////////////////////////////////////////////////
         //////////////////////////////////////////////////////////////////////////
         // Platform API
         // Platform API
@@ -199,19 +199,19 @@ namespace AZ::RHI
         virtual ResultCode InitInternal(Device& device, const RHI::BufferPoolDescriptor& descriptor) = 0;
         virtual ResultCode InitInternal(Device& device, const RHI::BufferPoolDescriptor& descriptor) = 0;
 
 
         /// Called when a buffer is being initialized onto the pool.
         /// Called when a buffer is being initialized onto the pool.
-        virtual ResultCode InitBufferInternal(SingleDeviceBuffer& buffer, const BufferDescriptor& descriptor) = 0;
+        virtual ResultCode InitBufferInternal(DeviceBuffer& buffer, const BufferDescriptor& descriptor) = 0;
 
 
         /// Called when the buffer is being orphaned.
         /// Called when the buffer is being orphaned.
-        virtual ResultCode OrphanBufferInternal(SingleDeviceBuffer& buffer) = 0;
+        virtual ResultCode OrphanBufferInternal(DeviceBuffer& buffer) = 0;
 
 
         /// Called when a buffer is being mapped.
         /// Called when a buffer is being mapped.
-        virtual ResultCode MapBufferInternal(const SingleDeviceBufferMapRequest& request, SingleDeviceBufferMapResponse& response) = 0;
+        virtual ResultCode MapBufferInternal(const DeviceBufferMapRequest& request, DeviceBufferMapResponse& response) = 0;
 
 
         /// Called when a buffer is being unmapped.
         /// Called when a buffer is being unmapped.
-        virtual void UnmapBufferInternal(SingleDeviceBuffer& buffer) = 0;
+        virtual void UnmapBufferInternal(DeviceBuffer& buffer) = 0;
 
 
         /// Called when a buffer is being streamed asynchronously.
         /// Called when a buffer is being streamed asynchronously.
-        virtual ResultCode StreamBufferInternal(const SingleDeviceBufferStreamRequest& request);
+        virtual ResultCode StreamBufferInternal(const DeviceBufferStreamRequest& request);
 
 
         //Called in order to do a simple mem copy allowing Null rhi to opt out
         //Called in order to do a simple mem copy allowing Null rhi to opt out
         virtual void BufferCopy(void* destination, const void* source, size_t num);
         virtual void BufferCopy(void* destination, const void* source, size_t num);

+ 11 - 11
Gems/Atom/RHI/Code/Include/Atom/RHI/SingleDeviceBufferPoolBase.h → Gems/Atom/RHI/Code/Include/Atom/RHI/DeviceBufferPoolBase.h

@@ -7,41 +7,41 @@
  */
  */
 #pragma once
 #pragma once
 
 
-#include <Atom/RHI/SingleDeviceResourcePool.h>
-#include <Atom/RHI/SingleDeviceBuffer.h>
+#include <Atom/RHI/DeviceResourcePool.h>
+#include <Atom/RHI/DeviceBuffer.h>
 
 
 namespace AZ::RHI
 namespace AZ::RHI
 {
 {
     //! A simple base class for buffer pools. This mainly exists so that various
     //! A simple base class for buffer pools. This mainly exists so that various
     //! buffer pool implementations can have some type safety separate from other
     //! buffer pool implementations can have some type safety separate from other
     //! resource pool types.
     //! resource pool types.
-    class SingleDeviceBufferPoolBase
-        : public SingleDeviceResourcePool
+    class DeviceBufferPoolBase
+        : public DeviceResourcePool
     {
     {
     public:
     public:
-        AZ_RTTI(SingleDeviceBufferPoolBase, "{28D265BB-3B90-4676-BBA9-3F933F14CB01}", SingleDeviceResourcePool);
-        virtual ~SingleDeviceBufferPoolBase() override = default;
+        AZ_RTTI(DeviceBufferPoolBase, "{28D265BB-3B90-4676-BBA9-3F933F14CB01}", DeviceResourcePool);
+        virtual ~DeviceBufferPoolBase() override = default;
 
 
     protected:
     protected:
-        SingleDeviceBufferPoolBase() = default;
+        DeviceBufferPoolBase() = default;
 
 
         ResultCode InitBuffer(
         ResultCode InitBuffer(
-            SingleDeviceBuffer* buffer,
+            DeviceBuffer* buffer,
             const BufferDescriptor& descriptor,
             const BufferDescriptor& descriptor,
             PlatformMethod platformInitResourceMethod);
             PlatformMethod platformInitResourceMethod);
 
 
         /// Validates that the map operation succeeded by printing a warning otherwise. Increments
         /// Validates that the map operation succeeded by printing a warning otherwise. Increments
         /// the map reference counts for the buffer and the pool.
         /// the map reference counts for the buffer and the pool.
-        void ValidateBufferMap(SingleDeviceBuffer& buffer, bool isDataValid);
+        void ValidateBufferMap(DeviceBuffer& buffer, bool isDataValid);
 
 
         /// Validates that the buffer map reference count isn't negative. Decrements the global
         /// Validates that the buffer map reference count isn't negative. Decrements the global
         /// reference count.
         /// reference count.
-        bool ValidateBufferUnmap(SingleDeviceBuffer& buffer);
+        bool ValidateBufferUnmap(DeviceBuffer& buffer);
 
 
         uint32_t GetMapRefCount() const;
         uint32_t GetMapRefCount() const;
 
 
     private:
     private:
-        using SingleDeviceResourcePool::InitResource;
+        using DeviceResourcePool::InitResource;
 
 
         /// Returns whether there are any mapped buffers.
         /// Returns whether there are any mapped buffers.
         bool ValidateNoMappedBuffers() const;
         bool ValidateNoMappedBuffers() const;

+ 10 - 10
Gems/Atom/RHI/Code/Include/Atom/RHI/SingleDeviceBufferView.h → Gems/Atom/RHI/Code/Include/Atom/RHI/DeviceBufferView.h

@@ -8,31 +8,31 @@
 #pragma once
 #pragma once
 
 
 #include <Atom/RHI.Reflect/BufferViewDescriptor.h>
 #include <Atom/RHI.Reflect/BufferViewDescriptor.h>
-#include <Atom/RHI/SingleDeviceResourceView.h>
+#include <Atom/RHI/DeviceResourceView.h>
 
 
 namespace AZ::RHI
 namespace AZ::RHI
 {
 {
-    class SingleDeviceBuffer;
+    class DeviceBuffer;
 
 
-    //! SingleDeviceBufferView is contains a platform-specific descriptor mapping to a linear sub-region of a specific buffer resource.
+    //! DeviceBufferView is contains a platform-specific descriptor mapping to a linear sub-region of a specific buffer resource.
     //! It associates 1-to-1 with a BufferViewDescriptor.
     //! It associates 1-to-1 with a BufferViewDescriptor.
-    class SingleDeviceBufferView
-        : public SingleDeviceResourceView
+    class DeviceBufferView
+        : public DeviceResourceView
     {
     {
     public:
     public:
-        AZ_RTTI(SingleDeviceBufferView, "{3012F770-1DD7-4CEC-A5D0-E2FC807548C1}", SingleDeviceResourceView);
-        virtual ~SingleDeviceBufferView() = default;
+        AZ_RTTI(DeviceBufferView, "{3012F770-1DD7-4CEC-A5D0-E2FC807548C1}", DeviceResourceView);
+        virtual ~DeviceBufferView() = default;
 
 
         static constexpr uint32_t InvalidBindlessIndex = 0xFFFFFFFF;
         static constexpr uint32_t InvalidBindlessIndex = 0xFFFFFFFF;
 
 
         //! Initializes the buffer view with the provided buffer and view descriptor.
         //! Initializes the buffer view with the provided buffer and view descriptor.
-        ResultCode Init(const SingleDeviceBuffer& buffer, const BufferViewDescriptor& viewDescriptor);
+        ResultCode Init(const DeviceBuffer& buffer, const BufferViewDescriptor& viewDescriptor);
 
 
         //! Returns the view descriptor used at initialization time.
         //! Returns the view descriptor used at initialization time.
         const BufferViewDescriptor& GetDescriptor() const;
         const BufferViewDescriptor& GetDescriptor() const;
 
 
         //! Returns the buffer associated with this view.
         //! Returns the buffer associated with this view.
-        const SingleDeviceBuffer& GetBuffer() const;
+        const DeviceBuffer& GetBuffer() const;
 
 
         //! Returns whether the view maps to the full buffer.
         //! Returns whether the view maps to the full buffer.
         bool IsFullView() const override final;
         bool IsFullView() const override final;
@@ -58,7 +58,7 @@ namespace AZ::RHI
         HashValue64 m_hash = HashValue64{ 0 };
         HashValue64 m_hash = HashValue64{ 0 };
 
 
     private:
     private:
-        bool ValidateForInit(const SingleDeviceBuffer& buffer, const BufferViewDescriptor& viewDescriptor) const;
+        bool ValidateForInit(const DeviceBuffer& buffer, const BufferViewDescriptor& viewDescriptor) const;
 
 
         /// The RHI descriptor for this view.
         /// The RHI descriptor for this view.
         BufferViewDescriptor m_descriptor;
         BufferViewDescriptor m_descriptor;

+ 35 - 35
Gems/Atom/RHI/Code/Include/Atom/RHI/SingleDeviceCopyItem.h → Gems/Atom/RHI/Code/Include/Atom/RHI/DeviceCopyItem.h

@@ -7,59 +7,59 @@
  */
  */
 #pragma once
 #pragma once
 
 
-#include <Atom/RHI/SingleDeviceImage.h>
-#include <Atom/RHI/SingleDeviceBuffer.h>
-#include <Atom/RHI/SingleDeviceQueryPool.h>
+#include <Atom/RHI/DeviceImage.h>
+#include <Atom/RHI/DeviceBuffer.h>
+#include <Atom/RHI/DeviceQueryPool.h>
 
 
 namespace AZ::RHI
 namespace AZ::RHI
 {
 {
-    struct SingleDeviceCopyBufferDescriptor
+    struct DeviceCopyBufferDescriptor
     {
     {
-        SingleDeviceCopyBufferDescriptor() = default;
+        DeviceCopyBufferDescriptor() = default;
 
 
-        const SingleDeviceBuffer* m_sourceBuffer = nullptr;
+        const DeviceBuffer* m_sourceBuffer = nullptr;
         uint32_t m_sourceOffset = 0;
         uint32_t m_sourceOffset = 0;
-        const SingleDeviceBuffer* m_destinationBuffer = nullptr;
+        const DeviceBuffer* m_destinationBuffer = nullptr;
         uint32_t m_destinationOffset = 0;
         uint32_t m_destinationOffset = 0;
         uint32_t m_size = 0;
         uint32_t m_size = 0;
     };
     };
 
 
-    struct SingleDeviceCopyImageDescriptor
+    struct DeviceCopyImageDescriptor
     {
     {
-        SingleDeviceCopyImageDescriptor() = default;
+        DeviceCopyImageDescriptor() = default;
 
 
-        const SingleDeviceImage* m_sourceImage = nullptr;
+        const DeviceImage* m_sourceImage = nullptr;
         ImageSubresource m_sourceSubresource;
         ImageSubresource m_sourceSubresource;
         Origin m_sourceOrigin;
         Origin m_sourceOrigin;
         Size m_sourceSize;
         Size m_sourceSize;
-        const SingleDeviceImage* m_destinationImage = nullptr;
+        const DeviceImage* m_destinationImage = nullptr;
         ImageSubresource m_destinationSubresource;
         ImageSubresource m_destinationSubresource;
         Origin m_destinationOrigin;
         Origin m_destinationOrigin;
     };
     };
 
 
-    struct SingleDeviceCopyBufferToImageDescriptor
+    struct DeviceCopyBufferToImageDescriptor
     {
     {
-        SingleDeviceCopyBufferToImageDescriptor() = default;
+        DeviceCopyBufferToImageDescriptor() = default;
 
 
-        const SingleDeviceBuffer* m_sourceBuffer = nullptr;
+        const DeviceBuffer* m_sourceBuffer = nullptr;
         uint32_t m_sourceOffset = 0;
         uint32_t m_sourceOffset = 0;
         uint32_t m_sourceBytesPerRow = 0;
         uint32_t m_sourceBytesPerRow = 0;
         uint32_t m_sourceBytesPerImage = 0;
         uint32_t m_sourceBytesPerImage = 0;
         Size m_sourceSize;
         Size m_sourceSize;
-        const SingleDeviceImage* m_destinationImage = nullptr;
+        const DeviceImage* m_destinationImage = nullptr;
         ImageSubresource m_destinationSubresource;
         ImageSubresource m_destinationSubresource;
         Origin m_destinationOrigin;
         Origin m_destinationOrigin;
     };
     };
 
 
-    struct SingleDeviceCopyImageToBufferDescriptor
+    struct DeviceCopyImageToBufferDescriptor
     {
     {
-        SingleDeviceCopyImageToBufferDescriptor() = default;
+        DeviceCopyImageToBufferDescriptor() = default;
 
 
-        const SingleDeviceImage* m_sourceImage = nullptr;
+        const DeviceImage* m_sourceImage = nullptr;
         ImageSubresource m_sourceSubresource;
         ImageSubresource m_sourceSubresource;
         Origin m_sourceOrigin;
         Origin m_sourceOrigin;
         Size m_sourceSize;
         Size m_sourceSize;
-        const  SingleDeviceBuffer* m_destinationBuffer = nullptr;
+        const  DeviceBuffer* m_destinationBuffer = nullptr;
         uint32_t m_destinationOffset = 0;
         uint32_t m_destinationOffset = 0;
         uint32_t m_destinationBytesPerRow = 0;
         uint32_t m_destinationBytesPerRow = 0;
         uint32_t m_destinationBytesPerImage = 0;
         uint32_t m_destinationBytesPerImage = 0;
@@ -68,14 +68,14 @@ namespace AZ::RHI
         Format m_destinationFormat; 
         Format m_destinationFormat; 
     };
     };
 
 
-    struct SingleDeviceCopyQueryToBufferDescriptor
+    struct DeviceCopyQueryToBufferDescriptor
     {
     {
-        SingleDeviceCopyQueryToBufferDescriptor() = default;
+        DeviceCopyQueryToBufferDescriptor() = default;
 
 
-        const SingleDeviceQueryPool* m_sourceQueryPool = nullptr;
+        const DeviceQueryPool* m_sourceQueryPool = nullptr;
         QueryHandle m_firstQuery = QueryHandle(0);
         QueryHandle m_firstQuery = QueryHandle(0);
         uint32_t m_queryCount = 0;
         uint32_t m_queryCount = 0;
-        const  SingleDeviceBuffer* m_destinationBuffer = nullptr;
+        const  DeviceBuffer* m_destinationBuffer = nullptr;
         uint32_t m_destinationOffset = 0;
         uint32_t m_destinationOffset = 0;
         uint32_t m_destinationStride = 0;
         uint32_t m_destinationStride = 0;
     };
     };
@@ -90,34 +90,34 @@ namespace AZ::RHI
         Invalid
         Invalid
     };
     };
 
 
-    struct SingleDeviceCopyItem
+    struct DeviceCopyItem
     {
     {
-        SingleDeviceCopyItem()
+        DeviceCopyItem()
             : m_type{CopyItemType::Buffer}
             : m_type{CopyItemType::Buffer}
             , m_buffer{}
             , m_buffer{}
         {}
         {}
 
 
-        SingleDeviceCopyItem(const SingleDeviceCopyBufferDescriptor& descriptor)
+        DeviceCopyItem(const DeviceCopyBufferDescriptor& descriptor)
             : m_type{CopyItemType::Buffer}
             : m_type{CopyItemType::Buffer}
             , m_buffer{descriptor}
             , m_buffer{descriptor}
         {}
         {}
 
 
-        SingleDeviceCopyItem(const SingleDeviceCopyImageDescriptor& descriptor)
+        DeviceCopyItem(const DeviceCopyImageDescriptor& descriptor)
             : m_type{CopyItemType::Image}
             : m_type{CopyItemType::Image}
             , m_image{descriptor}
             , m_image{descriptor}
         {}
         {}
 
 
-        SingleDeviceCopyItem(const SingleDeviceCopyBufferToImageDescriptor& descriptor)
+        DeviceCopyItem(const DeviceCopyBufferToImageDescriptor& descriptor)
             : m_type{CopyItemType::BufferToImage}
             : m_type{CopyItemType::BufferToImage}
             , m_bufferToImage{descriptor}
             , m_bufferToImage{descriptor}
         {}
         {}
 
 
-        SingleDeviceCopyItem(const SingleDeviceCopyImageToBufferDescriptor& descriptor)
+        DeviceCopyItem(const DeviceCopyImageToBufferDescriptor& descriptor)
             : m_type{CopyItemType::ImageToBuffer}
             : m_type{CopyItemType::ImageToBuffer}
             , m_imageToBuffer{descriptor}
             , m_imageToBuffer{descriptor}
         {}
         {}
 
 
-        SingleDeviceCopyItem(const SingleDeviceCopyQueryToBufferDescriptor& descriptor)
+        DeviceCopyItem(const DeviceCopyQueryToBufferDescriptor& descriptor)
             : m_type{CopyItemType::QueryToBuffer}
             : m_type{CopyItemType::QueryToBuffer}
             , m_queryToBuffer{descriptor}
             , m_queryToBuffer{descriptor}
         {}
         {}
@@ -125,11 +125,11 @@ namespace AZ::RHI
         CopyItemType m_type;
         CopyItemType m_type;
         union
         union
         {
         {
-            SingleDeviceCopyBufferDescriptor m_buffer;
-            SingleDeviceCopyImageDescriptor m_image;
-            SingleDeviceCopyBufferToImageDescriptor m_bufferToImage;
-            SingleDeviceCopyImageToBufferDescriptor m_imageToBuffer;
-            SingleDeviceCopyQueryToBufferDescriptor m_queryToBuffer;
+            DeviceCopyBufferDescriptor m_buffer;
+            DeviceCopyImageDescriptor m_image;
+            DeviceCopyBufferToImageDescriptor m_bufferToImage;
+            DeviceCopyImageToBufferDescriptor m_imageToBuffer;
+            DeviceCopyQueryToBufferDescriptor m_queryToBuffer;
         };
         };
     };
     };
 }
 }

+ 15 - 15
Gems/Atom/RHI/Code/Include/Atom/RHI/SingleDeviceDispatchItem.h → Gems/Atom/RHI/Code/Include/Atom/RHI/DeviceDispatchItem.h

@@ -8,14 +8,14 @@
 #pragma once
 #pragma once
 
 
 #include <Atom/RHI.Reflect/Limits.h>
 #include <Atom/RHI.Reflect/Limits.h>
-#include <Atom/RHI/SingleDeviceIndirectArguments.h>
+#include <Atom/RHI/DeviceIndirectArguments.h>
 #include <AzCore/std/containers/array.h>
 #include <AzCore/std/containers/array.h>
 #include <AzCore/Casting/numeric_cast.h>
 #include <AzCore/Casting/numeric_cast.h>
 
 
 namespace AZ::RHI
 namespace AZ::RHI
 {
 {
-    class SingleDevicePipelineState;
-    class SingleDeviceShaderResourceGroup;
+    class DevicePipelineState;
+    class DeviceShaderResourceGroup;
 
 
     //! Arguments used when submitting a (direct) dispatch call into a CommandList.
     //! Arguments used when submitting a (direct) dispatch call into a CommandList.
     struct DispatchDirect
     struct DispatchDirect
@@ -65,7 +65,7 @@ namespace AZ::RHI
 
 
     //! Arguments used when submitting an indirect dispatch call into a CommandList.
     //! Arguments used when submitting an indirect dispatch call into a CommandList.
     //! The indirect dispatch arguments are the same ones as the indirect draw ones.
     //! The indirect dispatch arguments are the same ones as the indirect draw ones.
-    using DispatchIndirect = SingleDeviceIndirectArguments;
+    using DispatchIndirect = DeviceIndirectArguments;
 
 
     enum class DispatchType : uint8_t
     enum class DispatchType : uint8_t
     {
     {
@@ -75,18 +75,18 @@ namespace AZ::RHI
 
 
     //! Encapsulates the arguments that are specific to a type of dispatch.
     //! Encapsulates the arguments that are specific to a type of dispatch.
     //! It uses a union to be able to store all possible arguments.
     //! It uses a union to be able to store all possible arguments.
-    struct SingleDeviceDispatchArguments
+    struct DeviceDispatchArguments
     {
     {
-        AZ_TYPE_INFO(SingleDeviceDispatchArguments, "0A354A63-D2C5-4C59-B3E0-0800FA7FBA63");
+        AZ_TYPE_INFO(DeviceDispatchArguments, "0A354A63-D2C5-4C59-B3E0-0800FA7FBA63");
 
 
-        SingleDeviceDispatchArguments() : SingleDeviceDispatchArguments(DispatchDirect{}) {}
+        DeviceDispatchArguments() : DeviceDispatchArguments(DispatchDirect{}) {}
 
 
-        SingleDeviceDispatchArguments(const DispatchDirect& direct)
+        DeviceDispatchArguments(const DispatchDirect& direct)
             : m_type{ DispatchType::Direct }
             : m_type{ DispatchType::Direct }
             , m_direct{ direct }
             , m_direct{ direct }
         {}
         {}
 
 
-        SingleDeviceDispatchArguments(const DispatchIndirect& indirect)
+        DeviceDispatchArguments(const DispatchIndirect& indirect)
             : m_type{ DispatchType::Indirect }
             : m_type{ DispatchType::Indirect }
             , m_indirect{ indirect }
             , m_indirect{ indirect }
         {}
         {}
@@ -104,25 +104,25 @@ namespace AZ::RHI
     //! Encapsulates all the necessary information for doing a dispatch call.
     //! Encapsulates all the necessary information for doing a dispatch call.
     //! This includes all common arguments for the different dispatch type, plus
     //! This includes all common arguments for the different dispatch type, plus
     //! arguments that are specific to a type.
     //! arguments that are specific to a type.
-    struct SingleDeviceDispatchItem
+    struct DeviceDispatchItem
     {
     {
-        SingleDeviceDispatchItem() = default;
+        DeviceDispatchItem() = default;
 
 
         /// Arguments specific to a dispatch type.
         /// Arguments specific to a dispatch type.
-        SingleDeviceDispatchArguments m_arguments;
+        DeviceDispatchArguments m_arguments;
 
 
         /// The number of shader resource groups and inline constants in each array.
         /// The number of shader resource groups and inline constants in each array.
         uint8_t m_shaderResourceGroupCount = 0;
         uint8_t m_shaderResourceGroupCount = 0;
         uint8_t m_rootConstantSize = 0;
         uint8_t m_rootConstantSize = 0;
 
 
         /// The pipeline state to bind.
         /// The pipeline state to bind.
-        const SingleDevicePipelineState* m_pipelineState = nullptr;
+        const DevicePipelineState* m_pipelineState = nullptr;
 
 
         /// Array of shader resource groups to bind (count must match m_shaderResourceGroupCount).
         /// Array of shader resource groups to bind (count must match m_shaderResourceGroupCount).
-        AZStd::array<const SingleDeviceShaderResourceGroup*, Limits::Pipeline::ShaderResourceGroupCountMax> m_shaderResourceGroups = {};
+        AZStd::array<const DeviceShaderResourceGroup*, Limits::Pipeline::ShaderResourceGroupCountMax> m_shaderResourceGroups = {};
 
 
         /// Unique SRG, not shared within the draw packet. This is usually a per-draw SRG, populated with the shader variant fallback key
         /// Unique SRG, not shared within the draw packet. This is usually a per-draw SRG, populated with the shader variant fallback key
-        const SingleDeviceShaderResourceGroup* m_uniqueShaderResourceGroup = nullptr;
+        const DeviceShaderResourceGroup* m_uniqueShaderResourceGroup = nullptr;
 
 
         /// Inline constants data.
         /// Inline constants data.
         const uint8_t* m_rootConstants = nullptr;
         const uint8_t* m_rootConstants = nullptr;

+ 37 - 0
Gems/Atom/RHI/Code/Include/Atom/RHI/DeviceDispatchRaysIndirectBuffer.h

@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) Contributors to the Open 3D Engine Project.
+ * For complete copyright and license terms please see the LICENSE at the root of this distribution.
+ *
+ * SPDX-License-Identifier: Apache-2.0 OR MIT
+ *
+ */
+#pragma once
+
+#include <Atom/RHI/DeviceRayTracingShaderTable.h>
+
+namespace AZ
+{
+    namespace RHI
+    {
+        class DeviceBufferPool;
+
+        //! This class needs to be passed to the command list when submitting an indirect raytracing command
+        //! The class is only relavant for DX12, other RHIs have dummy implementations
+        //! For more information, see the DX12 implementation of this class
+        class DeviceDispatchRaysIndirectBuffer : public Object
+        {
+        public:
+            AZ_RTTI(AZ::RHI::DeviceDispatchRaysIndirectBuffer, "{CA9BC0E5-E43E-455B-9AFA-9C12B6107FD9}", Object)
+            DeviceDispatchRaysIndirectBuffer() = default;
+            virtual ~DeviceDispatchRaysIndirectBuffer() = default;
+            DeviceDispatchRaysIndirectBuffer(const DeviceDispatchRaysIndirectBuffer&) = delete;
+            DeviceDispatchRaysIndirectBuffer(DeviceDispatchRaysIndirectBuffer&&) = delete;
+            DeviceDispatchRaysIndirectBuffer& operator=(const DeviceDispatchRaysIndirectBuffer&) = delete;
+            DeviceDispatchRaysIndirectBuffer& operator=(const DeviceDispatchRaysIndirectBuffer&&) = delete;
+
+            virtual void Init(RHI::DeviceBufferPool* bufferPool) = 0;
+            // This needs to be called every time the shader table changes
+            virtual void Build(DeviceRayTracingShaderTable* shaderTable) = 0;
+        };
+    } // namespace RHI
+} // namespace AZ

+ 30 - 30
Gems/Atom/RHI/Code/Include/Atom/RHI/SingleDeviceDispatchRaysItem.h → Gems/Atom/RHI/Code/Include/Atom/RHI/DeviceDispatchRaysItem.h

@@ -8,20 +8,20 @@
 #pragma once
 #pragma once
 
 
 #include <Atom/RHI.Reflect/Limits.h>
 #include <Atom/RHI.Reflect/Limits.h>
-#include <Atom/RHI/SingleDeviceIndirectArguments.h>
-#include <Atom/RHI/SingleDeviceRayTracingAccelerationStructure.h>
+#include <Atom/RHI/DeviceIndirectArguments.h>
+#include <Atom/RHI/DeviceRayTracingAccelerationStructure.h>
 #include <AzCore/std/containers/array.h>
 #include <AzCore/std/containers/array.h>
 
 
 
 
 namespace AZ::RHI
 namespace AZ::RHI
 {
 {
-    class SingleDevicePipelineState;
-    class SingleDeviceRayTracingPipelineState;
-    class SingleDeviceRayTracingShaderTable;
-    class SingleDeviceShaderResourceGroup;
-    class SingleDeviceImageView;
-    class SingleDeviceBufferView;
-    class DispatchRaysIndirectBuffer;
+    class DevicePipelineState;
+    class DeviceRayTracingPipelineState;
+    class DeviceRayTracingShaderTable;
+    class DeviceShaderResourceGroup;
+    class DeviceImageView;
+    class DeviceBufferView;
+    class DeviceDispatchRaysIndirectBuffer;
 
 
     //! Arguments used when submitting a (direct) dispatch rays call into a CommandList.
     //! Arguments used when submitting a (direct) dispatch rays call into a CommandList.
     struct DispatchRaysDirect
     struct DispatchRaysDirect
@@ -41,32 +41,32 @@ namespace AZ::RHI
     };
     };
 
 
     //! Arguments used when submitting an indirect dispatch rays call into a CommandList.
     //! Arguments used when submitting an indirect dispatch rays call into a CommandList.
-    struct DispatchRaysIndirect : public SingleDeviceIndirectArguments
+    struct DispatchRaysIndirect : public DeviceIndirectArguments
     {
     {
         DispatchRaysIndirect() = default;
         DispatchRaysIndirect() = default;
 
 
         DispatchRaysIndirect(
         DispatchRaysIndirect(
             uint32_t maxSequenceCount,
             uint32_t maxSequenceCount,
-            const SingleDeviceIndirectBufferView& indirectBuffer,
+            const DeviceIndirectBufferView& indirectBuffer,
             uint64_t indirectBufferByteOffset,
             uint64_t indirectBufferByteOffset,
-            DispatchRaysIndirectBuffer* dispatchRaysIndirectBuffer)
+            DeviceDispatchRaysIndirectBuffer* dispatchRaysIndirectBuffer)
             : DispatchRaysIndirect(maxSequenceCount, indirectBuffer, indirectBufferByteOffset, dispatchRaysIndirectBuffer, nullptr, 0)
             : DispatchRaysIndirect(maxSequenceCount, indirectBuffer, indirectBufferByteOffset, dispatchRaysIndirectBuffer, nullptr, 0)
         {
         {
         }
         }
 
 
         DispatchRaysIndirect(
         DispatchRaysIndirect(
             uint32_t maxSequenceCount,
             uint32_t maxSequenceCount,
-            const SingleDeviceIndirectBufferView& indirectBuffer,
+            const DeviceIndirectBufferView& indirectBuffer,
             uint64_t indirectBufferByteOffset,
             uint64_t indirectBufferByteOffset,
-            DispatchRaysIndirectBuffer* dispatchRaysIndirectBuffer,
-            const SingleDeviceBuffer* countBuffer,
+            DeviceDispatchRaysIndirectBuffer* dispatchRaysIndirectBuffer,
+            const DeviceBuffer* countBuffer,
             uint64_t countBufferByteOffset)
             uint64_t countBufferByteOffset)
-            : SingleDeviceIndirectArguments(maxSequenceCount, indirectBuffer, indirectBufferByteOffset, countBuffer, countBufferByteOffset)
+            : DeviceIndirectArguments(maxSequenceCount, indirectBuffer, indirectBufferByteOffset, countBuffer, countBufferByteOffset)
             , m_dispatchRaysIndirectBuffer(dispatchRaysIndirectBuffer)
             , m_dispatchRaysIndirectBuffer(dispatchRaysIndirectBuffer)
         {
         {
         }
         }
 
 
-        DispatchRaysIndirectBuffer* m_dispatchRaysIndirectBuffer = nullptr;
+        DeviceDispatchRaysIndirectBuffer* m_dispatchRaysIndirectBuffer = nullptr;
     };
     };
 
 
     enum class DispatchRaysType : uint8_t
     enum class DispatchRaysType : uint8_t
@@ -77,22 +77,22 @@ namespace AZ::RHI
 
 
     //! Encapsulates the arguments that are specific to a type of dispatch.
     //! Encapsulates the arguments that are specific to a type of dispatch.
     //! It uses a union to be able to store all possible arguments.
     //! It uses a union to be able to store all possible arguments.
-    struct SingleDeviceDispatchRaysArguments
+    struct DeviceDispatchRaysArguments
     {
     {
-        AZ_TYPE_INFO(SingleDeviceDispatchRaysArguments, "F8BE4C19-F35D-4545-B17F-3C2B4D7EF4FF");
+        AZ_TYPE_INFO(DeviceDispatchRaysArguments, "F8BE4C19-F35D-4545-B17F-3C2B4D7EF4FF");
 
 
-        SingleDeviceDispatchRaysArguments()
-            : SingleDeviceDispatchRaysArguments(DispatchRaysDirect{})
+        DeviceDispatchRaysArguments()
+            : DeviceDispatchRaysArguments(DispatchRaysDirect{})
         {
         {
         }
         }
 
 
-        SingleDeviceDispatchRaysArguments(const DispatchRaysDirect& direct)
+        DeviceDispatchRaysArguments(const DispatchRaysDirect& direct)
             : m_type{ DispatchRaysType::Direct }
             : m_type{ DispatchRaysType::Direct }
             , m_direct{ direct }
             , m_direct{ direct }
         {
         {
         }
         }
 
 
-        SingleDeviceDispatchRaysArguments(const DispatchRaysIndirect& indirect)
+        DeviceDispatchRaysArguments(const DispatchRaysIndirect& indirect)
             : m_type{ DispatchRaysType::Indirect }
             : m_type{ DispatchRaysType::Indirect }
             , m_indirect{ indirect }
             , m_indirect{ indirect }
         {
         {
@@ -108,24 +108,24 @@ namespace AZ::RHI
     };
     };
 
 
     //! Encapsulates all the necessary information for doing a ray tracing dispatch call.
     //! Encapsulates all the necessary information for doing a ray tracing dispatch call.
-    struct SingleDeviceDispatchRaysItem
+    struct DeviceDispatchRaysItem
     {
     {
-        SingleDeviceDispatchRaysItem() = default;
+        DeviceDispatchRaysItem() = default;
 
 
         /// Arguments specific to a dispatch type.
         /// Arguments specific to a dispatch type.
-        SingleDeviceDispatchRaysArguments m_arguments;
+        DeviceDispatchRaysArguments m_arguments;
 
 
         /// Ray tracing pipeline state
         /// Ray tracing pipeline state
-        const SingleDeviceRayTracingPipelineState* m_rayTracingPipelineState = nullptr;
+        const DeviceRayTracingPipelineState* m_rayTracingPipelineState = nullptr;
 
 
         /// Ray tracing shader table
         /// Ray tracing shader table
-        const SingleDeviceRayTracingShaderTable* m_rayTracingShaderTable = nullptr;
+        const DeviceRayTracingShaderTable* m_rayTracingShaderTable = nullptr;
 
 
         /// Shader Resource Groups
         /// Shader Resource Groups
         uint32_t m_shaderResourceGroupCount = 0;
         uint32_t m_shaderResourceGroupCount = 0;
-        const SingleDeviceShaderResourceGroup* const* m_shaderResourceGroups = nullptr;
+        const DeviceShaderResourceGroup* const* m_shaderResourceGroups = nullptr;
 
 
         /// Global shader pipeline state
         /// Global shader pipeline state
-        const SingleDevicePipelineState* m_globalPipelineState = nullptr;
+        const DevicePipelineState* m_globalPipelineState = nullptr;
     };
     };
 } // namespace AZ::RHI
 } // namespace AZ::RHI

+ 35 - 35
Gems/Atom/RHI/Code/Include/Atom/RHI/SingleDeviceDrawItem.h → Gems/Atom/RHI/Code/Include/Atom/RHI/DeviceDrawItem.h

@@ -8,16 +8,16 @@
 #pragma once
 #pragma once
 
 
 #include <Atom/RHI.Reflect/Limits.h>
 #include <Atom/RHI.Reflect/Limits.h>
-#include <Atom/RHI/SingleDeviceStreamBufferView.h>
-#include <Atom/RHI/SingleDeviceIndexBufferView.h>
-#include <Atom/RHI/SingleDeviceIndirectBufferView.h>
-#include <Atom/RHI/SingleDeviceIndirectArguments.h>
+#include <Atom/RHI/DeviceStreamBufferView.h>
+#include <Atom/RHI/DeviceIndexBufferView.h>
+#include <Atom/RHI/DeviceIndirectBufferView.h>
+#include <Atom/RHI/DeviceIndirectArguments.h>
 #include <AzCore/std/containers/array.h>
 #include <AzCore/std/containers/array.h>
 
 
 namespace AZ::RHI
 namespace AZ::RHI
 {
 {
-    class SingleDevicePipelineState;
-    class SingleDeviceShaderResourceGroup;
+    class DevicePipelineState;
+    class DeviceShaderResourceGroup;
     struct Scissor;
     struct Scissor;
     struct Viewport;
     struct Viewport;
     struct DefaultNamespaceType;
     struct DefaultNamespaceType;
@@ -70,7 +70,7 @@ namespace AZ::RHI
         uint32_t m_indexOffset = 0;
         uint32_t m_indexOffset = 0;
     };
     };
 
 
-    using DrawIndirect = SingleDeviceIndirectArguments;
+    using DrawIndirect = DeviceIndirectArguments;
 
 
     enum class DrawType : uint8_t
     enum class DrawType : uint8_t
     {
     {
@@ -79,24 +79,24 @@ namespace AZ::RHI
         Indirect
         Indirect
     };
     };
 
 
-    struct SingleDeviceDrawArguments
+    struct DeviceDrawArguments
     {
     {
-        AZ_TYPE_INFO(SingleDeviceDrawArguments, "B8127BDE-513E-4D5C-98C2-027BA1DE9E6E");
+        AZ_TYPE_INFO(DeviceDrawArguments, "B8127BDE-513E-4D5C-98C2-027BA1DE9E6E");
 
 
-        SingleDeviceDrawArguments() : SingleDeviceDrawArguments(DrawIndexed{}) {}
+        DeviceDrawArguments() : DeviceDrawArguments(DrawIndexed{}) {}
 
 
-        SingleDeviceDrawArguments(const DrawIndexed& indexed)
+        DeviceDrawArguments(const DrawIndexed& indexed)
             : m_type{DrawType::Indexed}
             : m_type{DrawType::Indexed}
             , m_indexed{indexed}
             , m_indexed{indexed}
         {}
         {}
 
 
-        SingleDeviceDrawArguments(const DrawLinear& linear)
+        DeviceDrawArguments(const DrawLinear& linear)
             : m_type{DrawType::Linear}
             : m_type{DrawType::Linear}
             , m_linear{linear}
             , m_linear{linear}
         {}
         {}
 
 
 
 
-        SingleDeviceDrawArguments(const DrawIndirect& indirect)
+        DeviceDrawArguments(const DrawIndirect& indirect)
             : m_type{ DrawType::Indirect }
             : m_type{ DrawType::Indirect }
             , m_indirect{ indirect }
             , m_indirect{ indirect }
         {}
         {}
@@ -110,16 +110,16 @@ namespace AZ::RHI
         };
         };
     };
     };
 
 
-    // A SingleDeviceDrawItem corresponds to one draw of one mesh in one pass. Multiple draw items are bundled
-    // in a SingleDeviceDrawPacket, which corresponds to multiple draws of one mesh in multiple passes.
+    // A DeviceDrawItem corresponds to one draw of one mesh in one pass. Multiple draw items are bundled
+    // in a DeviceDrawPacket, which corresponds to multiple draws of one mesh in multiple passes.
     // NOTE: Do not rely solely on default member initialization here, as DrawItems are bulk allocated for
     // NOTE: Do not rely solely on default member initialization here, as DrawItems are bulk allocated for
-    // DrawPackets and their memory aliased in SingleDeviceDrawPacketBuilder. Any default values should also be specified
-    // in the SingleDeviceDrawPacketBuilder::End() function (see SingleDeviceDrawPacketBuilder.cpp)
-    struct SingleDeviceDrawItem
+    // DrawPackets and their memory aliased in DeviceDrawPacketBuilder. Any default values should also be specified
+    // in the DeviceDrawPacketBuilder::End() function (see DeviceDrawPacketBuilder.cpp)
+    struct DeviceDrawItem
     {
     {
-        SingleDeviceDrawItem() = default;
+        DeviceDrawItem() = default;
 
 
-        SingleDeviceDrawArguments m_arguments;
+        DeviceDrawArguments m_arguments;
 
 
         uint8_t m_stencilRef = 0;
         uint8_t m_stencilRef = 0;
         uint8_t m_streamBufferViewCount = 0;
         uint8_t m_streamBufferViewCount = 0;
@@ -134,50 +134,50 @@ namespace AZ::RHI
             {
             {
                 // NOTE: If you add or update any of these flags, please update the default value of m_allFlags
                 // NOTE: If you add or update any of these flags, please update the default value of m_allFlags
                 // so that your added flags are initialized properly. Also update the default value specified in
                 // so that your added flags are initialized properly. Also update the default value specified in
-                // the SingleDeviceDrawPacketBuilder::End() function (see SingleDeviceDrawPacketBuilder.cpp). See comment above.
+                // the DeviceDrawPacketBuilder::End() function (see DeviceDrawPacketBuilder.cpp). See comment above.
 
 
                 bool m_enabled : 1;     // Whether the Draw Item should render
                 bool m_enabled : 1;     // Whether the Draw Item should render
             };
             };
-            uint8_t m_allFlags = 1;     //< Update default value if you add flags. Also update in SingleDeviceDrawPacketBuilder::End()
+            uint8_t m_allFlags = 1;     //< Update default value if you add flags. Also update in DeviceDrawPacketBuilder::End()
         };
         };
 
 
-        const SingleDevicePipelineState* m_pipelineState = nullptr;
+        const DevicePipelineState* m_pipelineState = nullptr;
 
 
         /// The index buffer used when drawing with an indexed draw call.
         /// The index buffer used when drawing with an indexed draw call.
-        const SingleDeviceIndexBufferView* m_indexBufferView = nullptr;
+        const DeviceIndexBufferView* m_indexBufferView = nullptr;
 
 
         /// Array of stream buffers to bind (count must match m_streamBufferViewCount).
         /// Array of stream buffers to bind (count must match m_streamBufferViewCount).
-        const SingleDeviceStreamBufferView* m_streamBufferViews = nullptr;
+        const DeviceStreamBufferView* m_streamBufferViews = nullptr;
 
 
         /// Array of shader resource groups to bind (count must match m_shaderResourceGroupCount).
         /// Array of shader resource groups to bind (count must match m_shaderResourceGroupCount).
-        const SingleDeviceShaderResourceGroup* const* m_shaderResourceGroups = nullptr;
+        const DeviceShaderResourceGroup* const* m_shaderResourceGroups = nullptr;
 
 
         /// Unique SRG, not shared within the draw packet. This is usually a per-draw SRG, populated with the shader variant fallback key
         /// Unique SRG, not shared within the draw packet. This is usually a per-draw SRG, populated with the shader variant fallback key
-        const SingleDeviceShaderResourceGroup* m_uniqueShaderResourceGroup = nullptr;
+        const DeviceShaderResourceGroup* m_uniqueShaderResourceGroup = nullptr;
 
 
         /// Array of root constants to bind (count must match m_rootConstantSize).
         /// Array of root constants to bind (count must match m_rootConstantSize).
         const uint8_t* m_rootConstants = nullptr;
         const uint8_t* m_rootConstants = nullptr;
 
 
         /// List of scissors to be applied to this draw item only. Scissor will be restore to the previous state
         /// List of scissors to be applied to this draw item only. Scissor will be restore to the previous state
-        /// after the SingleDeviceDrawItem has been processed.
+        /// after the DeviceDrawItem has been processed.
         const Scissor* m_scissors = nullptr;
         const Scissor* m_scissors = nullptr;
 
 
         /// List of viewports to be applied to this draw item only. Viewports will be restore to the previous state
         /// List of viewports to be applied to this draw item only. Viewports will be restore to the previous state
-        /// after the SingleDeviceDrawItem has been processed.
+        /// after the DeviceDrawItem has been processed.
         const Viewport* m_viewports = nullptr;
         const Viewport* m_viewports = nullptr;
     };
     };
 
 
     using DrawItemSortKey = AZ::s64;
     using DrawItemSortKey = AZ::s64;
 
 
-    // A filter associate to a SingleDeviceDrawItem which can be used to filter the SingleDeviceDrawItem when submitting to command list
+    // A filter associate to a DeviceDrawItem which can be used to filter the DeviceDrawItem when submitting to command list
     using DrawFilterTag = Handle<uint8_t, DefaultNamespaceType>;
     using DrawFilterTag = Handle<uint8_t, DefaultNamespaceType>;
     using DrawFilterMask = uint32_t; // AZStd::bitset's impelmentation is too expensive.
     using DrawFilterMask = uint32_t; // AZStd::bitset's impelmentation is too expensive.
     constexpr uint32_t DrawFilterMaskDefaultValue = uint32_t(-1);  // Default all bit to 1.
     constexpr uint32_t DrawFilterMaskDefaultValue = uint32_t(-1);  // Default all bit to 1.
     static_assert(sizeof(DrawFilterMask) * 8 >= Limits::Pipeline::DrawFilterTagCountMax, "DrawFilterMask doesn't have enough bits for maximum tag count");
     static_assert(sizeof(DrawFilterMask) * 8 >= Limits::Pipeline::DrawFilterTagCountMax, "DrawFilterMask doesn't have enough bits for maximum tag count");
 
 
-    struct SingleDeviceDrawItemProperties
+    struct DeviceDrawItemProperties
     {
     {
-        bool operator==(const SingleDeviceDrawItemProperties& rhs) const
+        bool operator==(const DeviceDrawItemProperties& rhs) const
         {
         {
             return m_item == rhs.m_item &&
             return m_item == rhs.m_item &&
                 m_sortKey == rhs.m_sortKey &&
                 m_sortKey == rhs.m_sortKey &&
@@ -186,18 +186,18 @@ namespace AZ::RHI
                 ;
                 ;
         }
         }
 
 
-        bool operator!=(const SingleDeviceDrawItemProperties& rhs) const
+        bool operator!=(const DeviceDrawItemProperties& rhs) const
         {
         {
             return !(*this == rhs);
             return !(*this == rhs);
         }
         }
 
 
-        bool operator<(const SingleDeviceDrawItemProperties& rhs) const
+        bool operator<(const DeviceDrawItemProperties& rhs) const
         {
         {
             return m_sortKey < rhs.m_sortKey;
             return m_sortKey < rhs.m_sortKey;
         }
         }
 
 
         //! A pointer to the draw item
         //! A pointer to the draw item
-        const SingleDeviceDrawItem* m_item = nullptr;
+        const DeviceDrawItem* m_item = nullptr;
         //! A sorting key of this draw item which is used for sorting draw items in DrawList
         //! A sorting key of this draw item which is used for sorting draw items in DrawList
         //! Check RHI::SortDrawList() function for detail
         //! Check RHI::SortDrawList() function for detail
         DrawItemSortKey m_sortKey = 0;
         DrawItemSortKey m_sortKey = 0;

+ 19 - 19
Gems/Atom/RHI/Code/Include/Atom/RHI/SingleDeviceDrawPacket.h → Gems/Atom/RHI/Code/Include/Atom/RHI/DeviceDrawPacket.h

@@ -26,7 +26,7 @@ namespace AZ
 namespace AZ::RHI
 namespace AZ::RHI
 {
 {
     //!
     //!
-    //! SingleDeviceDrawPacket is a packed data structure (one contiguous allocation) containing a collection of
+    //! DeviceDrawPacket is a packed data structure (one contiguous allocation) containing a collection of
     //! DrawItems and their associated array data. Each draw item in the packet is associated
     //! DrawItems and their associated array data. Each draw item in the packet is associated
     //! with a DrawListTag. All draw items in the packet share the same set of shader resource
     //! with a DrawListTag. All draw items in the packet share the same set of shader resource
     //! groups, index buffer, one DrawFilterMask, and draw arguments.
     //! groups, index buffer, one DrawFilterMask, and draw arguments.
@@ -39,21 +39,21 @@ namespace AZ::RHI
     //!     should represent only the local data necessary to describe the 'object', not the full context including
     //!     should represent only the local data necessary to describe the 'object', not the full context including
     //!     scene / view / pass specific state. They serve as a 'template'.
     //!     scene / view / pass specific state. They serve as a 'template'.
     //! 
     //! 
-    //!   - The packet is self-contained and does not reference external memory. Use SingleDeviceDrawPacketBuilder to construct
+    //!   - The packet is self-contained and does not reference external memory. Use DeviceDrawPacketBuilder to construct
     //!     an instance and either store in an RHI::Ptr or call 'delete' to release.
     //!     an instance and either store in an RHI::Ptr or call 'delete' to release.
     //! 
     //! 
-    class SingleDeviceDrawPacket final : public AZStd::intrusive_base
+    class DeviceDrawPacket final : public AZStd::intrusive_base
     {
     {
-        friend class SingleDeviceDrawPacketBuilder;
+        friend class DeviceDrawPacketBuilder;
         friend class UnitTest::DrawPacketTest;
         friend class UnitTest::DrawPacketTest;
         friend class UnitTest::MultiDeviceDrawPacketTest;
         friend class UnitTest::MultiDeviceDrawPacketTest;
 
 
     public:
     public:
-        using DrawItemVisitor = AZStd::function<void(DrawListTag, SingleDeviceDrawItemProperties)>;
+        using DrawItemVisitor = AZStd::function<void(DrawListTag, DeviceDrawItemProperties)>;
 
 
         //! Draw packets cannot be move constructed or copied, as they contain an additional memory payload.
         //! Draw packets cannot be move constructed or copied, as they contain an additional memory payload.
-        //! Use SingleDeviceDrawPacketBuilder::Clone to copy a draw packet.
-        AZ_DISABLE_COPY_MOVE(SingleDeviceDrawPacket);
+        //! Use DeviceDrawPacketBuilder::Clone to copy a draw packet.
+        AZ_DISABLE_COPY_MOVE(DeviceDrawPacket);
 
 
         //! Returns the mask representing all the draw lists affected by the packet.
         //! Returns the mask representing all the draw lists affected by the packet.
         DrawListMask GetDrawListMask() const;
         DrawListMask GetDrawListMask() const;
@@ -64,14 +64,14 @@ namespace AZ::RHI
         //! Returns the index associated with the given DrawListTag
         //! Returns the index associated with the given DrawListTag
         s32 GetDrawListIndex(DrawListTag drawListTag) const;
         s32 GetDrawListIndex(DrawListTag drawListTag) const;
 
 
-        //! Returns the SingleDeviceDrawItem at the given index
-        SingleDeviceDrawItem* GetDrawItem(size_t index);
+        //! Returns the DeviceDrawItem at the given index
+        DeviceDrawItem* GetDrawItem(size_t index);
 
 
-        //! Returns the SingleDeviceDrawItem associated with the given DrawListTag
-        SingleDeviceDrawItem* GetDrawItem(DrawListTag drawListTag);
+        //! Returns the DeviceDrawItem associated with the given DrawListTag
+        DeviceDrawItem* GetDrawItem(DrawListTag drawListTag);
 
 
         //! Returns the draw item and its properties associated with the provided index.
         //! Returns the draw item and its properties associated with the provided index.
-        SingleDeviceDrawItemProperties GetDrawItemProperties(size_t index) const;
+        DeviceDrawItemProperties GetDrawItemProperties(size_t index) const;
 
 
         //! Returns the draw list tag associated with the provided index, used to filter the draw item into an appropriate pass.
         //! Returns the draw list tag associated with the provided index, used to filter the draw item into an appropriate pass.
         DrawListTag GetDrawListTag(size_t index) const;
         DrawListTag GetDrawListTag(size_t index) const;
@@ -89,8 +89,8 @@ namespace AZ::RHI
         void SetInstanceCount(uint32_t instanceCount);
         void SetInstanceCount(uint32_t instanceCount);
 
 
     private:
     private:
-        /// Use SingleDeviceDrawPacketBuilder to construct an instance.
-        SingleDeviceDrawPacket() = default;
+        /// Use DeviceDrawPacketBuilder to construct an instance.
+        DeviceDrawPacket() = default;
 
 
         // The allocator used to release the memory when Release() is called.
         // The allocator used to release the memory when Release() is called.
         IAllocator* m_allocator = nullptr;
         IAllocator* m_allocator = nullptr;
@@ -99,7 +99,7 @@ namespace AZ::RHI
         DrawListMask m_drawListMask = 0;
         DrawListMask m_drawListMask = 0;
 
 
         // The index buffer view used when the draw call is indexed.
         // The index buffer view used when the draw call is indexed.
-        SingleDeviceIndexBufferView m_indexBufferView;
+        DeviceIndexBufferView m_indexBufferView;
 
 
         uint8_t m_drawItemCount = 0;
         uint8_t m_drawItemCount = 0;
         uint8_t m_streamBufferViewCount = 0;
         uint8_t m_streamBufferViewCount = 0;
@@ -110,7 +110,7 @@ namespace AZ::RHI
         uint8_t m_viewportsCount = 0;
         uint8_t m_viewportsCount = 0;
 
 
         // List of draw items.
         // List of draw items.
-        SingleDeviceDrawItem* m_drawItems = nullptr;
+        DeviceDrawItem* m_drawItems = nullptr;
 
 
         // List of draw item sort keys associated with the draw item index.
         // List of draw item sort keys associated with the draw item index.
         const DrawItemSortKey* m_drawItemSortKeys = nullptr;
         const DrawItemSortKey* m_drawItemSortKeys = nullptr;
@@ -122,16 +122,16 @@ namespace AZ::RHI
         const DrawFilterMask* m_drawFilterMasks = nullptr;
         const DrawFilterMask* m_drawFilterMasks = nullptr;
 
 
         // List of shader resource groups shared by all draw items.
         // List of shader resource groups shared by all draw items.
-        const SingleDeviceShaderResourceGroup* const* m_shaderResourceGroups = nullptr;
+        const DeviceShaderResourceGroup* const* m_shaderResourceGroups = nullptr;
 
 
         // List of shader resource groups that aren't shared, but unique for each draw item.
         // List of shader resource groups that aren't shared, but unique for each draw item.
-        const SingleDeviceShaderResourceGroup* const* m_uniqueShaderResourceGroups = nullptr;
+        const DeviceShaderResourceGroup* const* m_uniqueShaderResourceGroups = nullptr;
 
 
         // List of inline constants shared by all draw items.
         // List of inline constants shared by all draw items.
         const uint8_t* m_rootConstants = nullptr;
         const uint8_t* m_rootConstants = nullptr;
 
 
         // The list of stream buffer views. Each draw item has a view into the array.
         // The list of stream buffer views. Each draw item has a view into the array.
-        const SingleDeviceStreamBufferView* m_streamBufferViews = nullptr;
+        const DeviceStreamBufferView* m_streamBufferViews = nullptr;
 
 
         // Optional list of scissors to be used by all draw items.
         // Optional list of scissors to be used by all draw items.
         const Scissor* m_scissors = nullptr;
         const Scissor* m_scissors = nullptr;

+ 19 - 19
Gems/Atom/RHI/Code/Include/Atom/RHI/SingleDeviceDrawPacketBuilder.h → Gems/Atom/RHI/Code/Include/Atom/RHI/DeviceDrawPacketBuilder.h

@@ -8,7 +8,7 @@
 
 
 #pragma once
 #pragma once
 
 
-#include <Atom/RHI/SingleDeviceDrawPacket.h>
+#include <Atom/RHI/DeviceDrawPacket.h>
 #include <Atom/RHI.Reflect/Scissor.h>
 #include <Atom/RHI.Reflect/Scissor.h>
 #include <Atom/RHI.Reflect/Viewport.h>
 #include <Atom/RHI.Reflect/Viewport.h>
 
 
@@ -19,12 +19,12 @@ namespace AZ
 
 
 namespace AZ::RHI
 namespace AZ::RHI
 {
 {
-    class SingleDeviceDrawPacketBuilder
+    class DeviceDrawPacketBuilder
     {
     {
     public:
     public:
-        struct SingleDeviceDrawRequest
+        struct DeviceDrawRequest
         {
         {
-            SingleDeviceDrawRequest() = default;
+            DeviceDrawRequest() = default;
 
 
             //! The filter tag used to direct the draw item.
             //! The filter tag used to direct the draw item.
             DrawListTag m_listTag;
             DrawListTag m_listTag;
@@ -33,13 +33,13 @@ namespace AZ::RHI
             uint8_t m_stencilRef = 0;
             uint8_t m_stencilRef = 0;
 
 
             //! The array of stream buffers to bind for this draw item.
             //! The array of stream buffers to bind for this draw item.
-            AZStd::span<const SingleDeviceStreamBufferView> m_streamBufferViews;
+            AZStd::span<const DeviceStreamBufferView> m_streamBufferViews;
 
 
             //! Shader resource group unique for this draw request
             //! Shader resource group unique for this draw request
-            const SingleDeviceShaderResourceGroup* m_uniqueShaderResourceGroup = nullptr;
+            const DeviceShaderResourceGroup* m_uniqueShaderResourceGroup = nullptr;
 
 
             //! The pipeline state assigned to this draw item.
             //! The pipeline state assigned to this draw item.
-            const SingleDevicePipelineState* m_pipelineState = nullptr;
+            const DevicePipelineState* m_pipelineState = nullptr;
 
 
             //! The sort key assigned to this draw item.
             //! The sort key assigned to this draw item.
             DrawItemSortKey m_sortKey = 0;
             DrawItemSortKey m_sortKey = 0;
@@ -55,9 +55,9 @@ namespace AZ::RHI
 
 
         void Begin(IAllocator* allocator);
         void Begin(IAllocator* allocator);
 
 
-        void SetDrawArguments(const SingleDeviceDrawArguments& drawArguments);
+        void SetDrawArguments(const DeviceDrawArguments& drawArguments);
 
 
-        void SetIndexBufferView(const SingleDeviceIndexBufferView& indexBufferView);
+        void SetIndexBufferView(const DeviceIndexBufferView& indexBufferView);
 
 
         void SetRootConstants(AZStd::span<const uint8_t> rootConstants);
         void SetRootConstants(AZStd::span<const uint8_t> rootConstants);
 
 
@@ -69,28 +69,28 @@ namespace AZ::RHI
 
 
         void SetViewport(const Viewport& viewport);
         void SetViewport(const Viewport& viewport);
 
 
-        void AddShaderResourceGroup(const SingleDeviceShaderResourceGroup* shaderResourceGroup);
+        void AddShaderResourceGroup(const DeviceShaderResourceGroup* shaderResourceGroup);
 
 
-        void AddDrawItem(const SingleDeviceDrawRequest& request);
+        void AddDrawItem(const DeviceDrawRequest& request);
 
 
-        SingleDeviceDrawPacket* End();
+        DeviceDrawPacket* End();
 
 
-        //! Make a copy of an existing SingleDeviceDrawPacket.
+        //! Make a copy of an existing DeviceDrawPacket.
         //! Note: the copy will reference the same DrawSrg as the original, so it is not possible to vary the DrawSrg values between the
         //! Note: the copy will reference the same DrawSrg as the original, so it is not possible to vary the DrawSrg values between the
-        //! original draw packet and the cloned one. Only settings that can be modified via the SingleDeviceDrawPacket interface can be changed
+        //! original draw packet and the cloned one. Only settings that can be modified via the DeviceDrawPacket interface can be changed
         //! after cloning, such as SetRootConstant and SetInstanceCount
         //! after cloning, such as SetRootConstant and SetInstanceCount
-        SingleDeviceDrawPacket* Clone(const SingleDeviceDrawPacket* original);
+        DeviceDrawPacket* Clone(const DeviceDrawPacket* original);
 
 
     private:
     private:
         void ClearData();
         void ClearData();
 
 
         IAllocator* m_allocator = nullptr;
         IAllocator* m_allocator = nullptr;
-        SingleDeviceDrawArguments m_drawArguments;
+        DeviceDrawArguments m_drawArguments;
         DrawListMask m_drawListMask = 0;
         DrawListMask m_drawListMask = 0;
         size_t m_streamBufferViewCount = 0;
         size_t m_streamBufferViewCount = 0;
-        SingleDeviceIndexBufferView m_indexBufferView;
-        AZStd::fixed_vector<SingleDeviceDrawRequest, DrawItemCountMax> m_drawRequests;
-        AZStd::fixed_vector<const SingleDeviceShaderResourceGroup*, Limits::Pipeline::ShaderResourceGroupCountMax> m_shaderResourceGroups;
+        DeviceIndexBufferView m_indexBufferView;
+        AZStd::fixed_vector<DeviceDrawRequest, DrawItemCountMax> m_drawRequests;
+        AZStd::fixed_vector<const DeviceShaderResourceGroup*, Limits::Pipeline::ShaderResourceGroupCountMax> m_shaderResourceGroups;
         AZStd::span<const uint8_t> m_rootConstants;
         AZStd::span<const uint8_t> m_rootConstants;
         AZStd::fixed_vector<Scissor, Limits::Pipeline::AttachmentColorCountMax> m_scissors;
         AZStd::fixed_vector<Scissor, Limits::Pipeline::AttachmentColorCountMax> m_scissors;
         AZStd::fixed_vector<Viewport, Limits::Pipeline::AttachmentColorCountMax> m_viewports;
         AZStd::fixed_vector<Viewport, Limits::Pipeline::AttachmentColorCountMax> m_viewports;

+ 3 - 3
Gems/Atom/RHI/Code/Include/Atom/RHI/SingleDeviceFence.h → Gems/Atom/RHI/Code/Include/Atom/RHI/DeviceFence.h

@@ -17,12 +17,12 @@ namespace AZ::RHI
         Signaled
         Signaled
     };
     };
 
 
-    class SingleDeviceFence
+    class DeviceFence
         : public DeviceObject
         : public DeviceObject
     {
     {
     public:
     public:
-        AZ_RTTI(SingleDeviceFence, "{D66C8B8F-226A-4018-89C1-F190A730CBC3}", Object);
-        virtual ~SingleDeviceFence() = 0;
+        AZ_RTTI(DeviceFence, "{D66C8B8F-226A-4018-89C1-F190A730CBC3}", Object);
+        virtual ~DeviceFence() = 0;
 
 
         /// Initializes the fence using the provided device and initial state.
         /// Initializes the fence using the provided device and initial state.
         ResultCode Init(Device& device, FenceState initialState);
         ResultCode Init(Device& device, FenceState initialState);

+ 16 - 16
Gems/Atom/RHI/Code/Include/Atom/RHI/SingleDeviceImage.h → Gems/Atom/RHI/Code/Include/Atom/RHI/DeviceImage.h

@@ -8,16 +8,16 @@
 #pragma once
 #pragma once
 
 
 #include <Atom/RHI.Reflect/ImageSubresource.h>
 #include <Atom/RHI.Reflect/ImageSubresource.h>
-#include <Atom/RHI/SingleDeviceResource.h>
+#include <Atom/RHI/DeviceResource.h>
 
 
 namespace AZ::RHI
 namespace AZ::RHI
 {
 {
     class ImageFrameAttachment;
     class ImageFrameAttachment;
-    class SingleDeviceShaderResourceGroup;
-    class SingleDeviceImageView;
+    class DeviceShaderResourceGroup;
+    class DeviceImageView;
     struct ImageViewDescriptor;
     struct ImageViewDescriptor;
         
         
-    //! SingleDeviceImage represents a collection of SingleDeviceImage Subresources, where each subresource comprises a one to three
+    //! DeviceImage represents a collection of DeviceImage Subresources, where each subresource comprises a one to three
     //! dimensional grid of pixels. Images are divided into an array of mip-map chains. A mip map chain is
     //! dimensional grid of pixels. Images are divided into an array of mip-map chains. A mip map chain is
     //! a list of subresources, progressively halved on each axis, down to a 1x1 pixel base image. If an array is used,
     //! a list of subresources, progressively halved on each axis, down to a 1x1 pixel base image. If an array is used,
     //! each array 'slice' is its own mip chain. All mip chains in an array share the same size.
     //! each array 'slice' is its own mip chain. All mip chains in an array share the same size.
@@ -25,17 +25,17 @@ namespace AZ::RHI
     //! Subresources are organized by a linear indexing scheme: mipSliceOffset + arraySliceOffset * arraySize. The total
     //! Subresources are organized by a linear indexing scheme: mipSliceOffset + arraySliceOffset * arraySize. The total
     //! number of subresources is equal to mipLevels * arraySize. All subresources share the same pixel format.
     //! number of subresources is equal to mipLevels * arraySize. All subresources share the same pixel format.
     //!
     //!
-    //! @see SingleDeviceImageView on how to interpret contents of an image.
-    class SingleDeviceImage
-        : public SingleDeviceResource
+    //! @see DeviceImageView on how to interpret contents of an image.
+    class DeviceImage
+        : public DeviceResource
     {
     {
-        friend class SingleDeviceImagePoolBase;
-        friend class SingleDeviceStreamingImagePool;
+        friend class DeviceImagePoolBase;
+        friend class DeviceStreamingImagePool;
             
             
-        using Base = SingleDeviceResource;
+        using Base = DeviceResource;
     public:
     public:
-        AZ_RTTI(SingleDeviceImage, "{39FFE66C-805A-41AD-9092-91327D51F64B}", SingleDeviceResource);
-        virtual ~SingleDeviceImage() = default;
+        AZ_RTTI(DeviceImage, "{39FFE66C-805A-41AD-9092-91327D51F64B}", DeviceResource);
+        virtual ~DeviceImage() = default;
             
             
         //! Returns the image descriptor used to initialize the image. If the image is uninitialized, the contents
         //! Returns the image descriptor used to initialize the image. If the image is uninitialized, the contents
         //! are considered undefined.
         //! are considered undefined.
@@ -55,7 +55,7 @@ namespace AZ::RHI
         //!      [Optional] If specified, will be filled with the total size necessary to contain all subresources.
         //!      [Optional] If specified, will be filled with the total size necessary to contain all subresources.
         void GetSubresourceLayouts(
         void GetSubresourceLayouts(
             const ImageSubresourceRange& subresourceRange,
             const ImageSubresourceRange& subresourceRange,
-            SingleDeviceImageSubresourceLayout* subresourceLayouts,
+            DeviceImageSubresourceLayout* subresourceLayouts,
             size_t* totalSizeInBytes) const;
             size_t* totalSizeInBytes) const;
             
             
         //! This implementation estimates memory usage using the descriptor. Platforms may
         //! This implementation estimates memory usage using the descriptor. Platforms may
@@ -76,7 +76,7 @@ namespace AZ::RHI
         //! images.
         //! images.
         const ImageFrameAttachment* GetFrameAttachment() const;
         const ImageFrameAttachment* GetFrameAttachment() const;
             
             
-        Ptr<SingleDeviceImageView> GetImageView(const ImageViewDescriptor& imageViewDescriptor);
+        Ptr<DeviceImageView> GetImageView(const ImageViewDescriptor& imageViewDescriptor);
 
 
         //! Returns the aspects that are included in the image.
         //! Returns the aspects that are included in the image.
         ImageAspectFlags GetAspectFlags() const;
         ImageAspectFlags GetAspectFlags() const;
@@ -88,7 +88,7 @@ namespace AZ::RHI
         bool IsStreamable() const;
         bool IsStreamable() const;
 
 
     protected:
     protected:
-        SingleDeviceImage() = default;
+        DeviceImage() = default;
 
 
         virtual void SetDescriptor(const ImageDescriptor& descriptor);
         virtual void SetDescriptor(const ImageDescriptor& descriptor);
 
 
@@ -100,7 +100,7 @@ namespace AZ::RHI
         /// Called by GetSubresourceLayouts. The subresource range is clamped and validated beforehand.
         /// Called by GetSubresourceLayouts. The subresource range is clamped and validated beforehand.
         virtual void GetSubresourceLayoutsInternal(
         virtual void GetSubresourceLayoutsInternal(
             const ImageSubresourceRange& subresourceRange,
             const ImageSubresourceRange& subresourceRange,
-            SingleDeviceImageSubresourceLayout* subresourceLayouts,
+            DeviceImageSubresourceLayout* subresourceLayouts,
             size_t* totalSizeInBytes) const = 0;
             size_t* totalSizeInBytes) const = 0;
 
 
         //! Returns whether the image has sub-resources which can be evicted from or streamed into the device memory
         //! Returns whether the image has sub-resources which can be evicted from or streamed into the device memory

+ 19 - 19
Gems/Atom/RHI/Code/Include/Atom/RHI/SingleDeviceImagePool.h → Gems/Atom/RHI/Code/Include/Atom/RHI/DeviceImagePool.h

@@ -9,12 +9,12 @@
 
 
 #include <Atom/RHI.Reflect/ImagePoolDescriptor.h>
 #include <Atom/RHI.Reflect/ImagePoolDescriptor.h>
 #include <Atom/RHI.Reflect/ClearValue.h>
 #include <Atom/RHI.Reflect/ClearValue.h>
-#include <Atom/RHI/SingleDeviceImage.h>
-#include <Atom/RHI/SingleDeviceImagePoolBase.h>
+#include <Atom/RHI/DeviceImage.h>
+#include <Atom/RHI/DeviceImagePoolBase.h>
 
 
 namespace AZ::RHI
 namespace AZ::RHI
 {
 {
-    //! @brief The data structure used to initialize an RHI::SingleDeviceImage on an RHI::SingleDeviceImagePool.
+    //! @brief The data structure used to initialize an RHI::DeviceImage on an RHI::DeviceImagePool.
     template <typename ImageClass>
     template <typename ImageClass>
     struct ImageInitRequestTemplate
     struct ImageInitRequestTemplate
     {
     {
@@ -41,7 +41,7 @@ namespace AZ::RHI
         const ClearValue* m_optimizedClearValue = nullptr;
         const ClearValue* m_optimizedClearValue = nullptr;
     };
     };
 
 
-    //!@brief The data structure used to update contents of an RHI::SingleDeviceImage on an RHI::SingleDeviceImagePool.
+    //!@brief The data structure used to update contents of an RHI::DeviceImage on an RHI::DeviceImagePool.
     template <typename ImageClass, typename ImageSubresourceLayoutClass>
     template <typename ImageClass, typename ImageSubresourceLayoutClass>
     struct ImageUpdateRequestTemplate
     struct ImageUpdateRequestTemplate
     {
     {
@@ -63,28 +63,28 @@ namespace AZ::RHI
         ImageSubresourceLayoutClass m_sourceSubresourceLayout;
         ImageSubresourceLayoutClass m_sourceSubresourceLayout;
     };
     };
 
 
-    using SingleDeviceImageInitRequest = ImageInitRequestTemplate<SingleDeviceImage>;
-    using SingleDeviceImageUpdateRequest = ImageUpdateRequestTemplate<SingleDeviceImage, SingleDeviceImageSubresourceLayout>;
+    using DeviceImageInitRequest = ImageInitRequestTemplate<DeviceImage>;
+    using DeviceImageUpdateRequest = ImageUpdateRequestTemplate<DeviceImage, DeviceImageSubresourceLayout>;
 
 
-    //! SingleDeviceImagePool is a pool of images that will be bound as attachments to the frame scheduler.
+    //! DeviceImagePool is a pool of images that will be bound as attachments to the frame scheduler.
     //! As a result, they are intended to be produced and consumed by the GPU. Persistent Color / Depth Stencil / Image
     //! As a result, they are intended to be produced and consumed by the GPU. Persistent Color / Depth Stencil / Image
     //! attachments should be created from this pool. This pool is not designed for intra-frame aliasing.
     //! attachments should be created from this pool. This pool is not designed for intra-frame aliasing.
     //! If transient images are required, they can be created from the frame scheduler itself.
     //! If transient images are required, they can be created from the frame scheduler itself.
-    class SingleDeviceImagePool
-        : public SingleDeviceImagePoolBase
+    class DeviceImagePool
+        : public DeviceImagePoolBase
     {
     {
     public:
     public:
-        AZ_RTTI(SingleDeviceImagePool, "{A5563DF9-191E-4DF7-86BA-CFF39BE07BDD}", SingleDeviceImagePoolBase);
-        virtual ~SingleDeviceImagePool() = default;
+        AZ_RTTI(DeviceImagePool, "{A5563DF9-191E-4DF7-86BA-CFF39BE07BDD}", DeviceImagePoolBase);
+        virtual ~DeviceImagePool() = default;
 
 
         /// Initializes the pool. The pool must be initialized before images can be registered with it.
         /// Initializes the pool. The pool must be initialized before images can be registered with it.
         ResultCode Init(Device& device, const ImagePoolDescriptor& descriptor);
         ResultCode Init(Device& device, const ImagePoolDescriptor& descriptor);
 
 
         /// Initializes an image onto the pool. The pool provides backing GPU resources to the image.
         /// Initializes an image onto the pool. The pool provides backing GPU resources to the image.
-        ResultCode InitImage(const SingleDeviceImageInitRequest& request);
+        ResultCode InitImage(const DeviceImageInitRequest& request);
 
 
         /// Updates image content from the CPU.
         /// Updates image content from the CPU.
-        ResultCode UpdateImageContents(const SingleDeviceImageUpdateRequest& request);
+        ResultCode UpdateImageContents(const DeviceImageUpdateRequest& request);
 
 
         /// Returns the descriptor used to initialize the pool.
         /// Returns the descriptor used to initialize the pool.
         const ImagePoolDescriptor& GetDescriptor() const override final;
         const ImagePoolDescriptor& GetDescriptor() const override final;
@@ -93,13 +93,13 @@ namespace AZ::RHI
         void ComputeFragmentation() const override;
         void ComputeFragmentation() const override;
 
 
     protected:
     protected:
-        SingleDeviceImagePool() = default;
+        DeviceImagePool() = default;
 
 
     private:
     private:
-        using SingleDeviceResourcePool::Init;
-        using SingleDeviceImagePoolBase::InitImage;
+        using DeviceResourcePool::Init;
+        using DeviceImagePoolBase::InitImage;
 
 
-        bool ValidateUpdateRequest(const SingleDeviceImageUpdateRequest& updateRequest) const;
+        bool ValidateUpdateRequest(const DeviceImageUpdateRequest& updateRequest) const;
 
 
         //////////////////////////////////////////////////////////////////////////
         //////////////////////////////////////////////////////////////////////////
         // Platform API
         // Platform API
@@ -108,10 +108,10 @@ namespace AZ::RHI
         virtual ResultCode InitInternal(Device& device, const ImagePoolDescriptor& descriptor) = 0;
         virtual ResultCode InitInternal(Device& device, const ImagePoolDescriptor& descriptor) = 0;
 
 
         /// Called when an image contents are being updated.
         /// Called when an image contents are being updated.
-        virtual ResultCode UpdateImageContentsInternal(const SingleDeviceImageUpdateRequest& request) = 0;
+        virtual ResultCode UpdateImageContentsInternal(const DeviceImageUpdateRequest& request) = 0;
 
 
         /// Called when an image is being initialized on the pool.
         /// Called when an image is being initialized on the pool.
-        virtual ResultCode InitImageInternal(const SingleDeviceImageInitRequest& request) = 0;
+        virtual ResultCode InitImageInternal(const DeviceImageInitRequest& request) = 0;
 
 
         //////////////////////////////////////////////////////////////////////////
         //////////////////////////////////////////////////////////////////////////
 
 

Vissa filer visades inte eftersom för många filer har ändrats