BufferDescriptor.cpp 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #include <Atom/RHI.Reflect/BufferDescriptor.h>
  9. #include <AzCore/Serialization/SerializeContext.h>
  10. namespace AZ::RHI
  11. {
  12. BufferBindFlags GetBufferBindFlags(ScopeAttachmentUsage usage, ScopeAttachmentAccess access)
  13. {
  14. switch (usage)
  15. {
  16. case ScopeAttachmentUsage::RenderTarget:
  17. break;
  18. case ScopeAttachmentUsage::DepthStencil:
  19. break;
  20. case ScopeAttachmentUsage::Shader:
  21. switch (access)
  22. {
  23. case ScopeAttachmentAccess::ReadWrite:
  24. return BufferBindFlags::ShaderReadWrite;
  25. case ScopeAttachmentAccess::Read:
  26. return BufferBindFlags::ShaderRead;
  27. case ScopeAttachmentAccess::Write:
  28. return BufferBindFlags::ShaderWrite;
  29. }
  30. break;
  31. case ScopeAttachmentUsage::Copy:
  32. switch (access)
  33. {
  34. case ScopeAttachmentAccess::Read:
  35. return BufferBindFlags::CopyRead;
  36. case ScopeAttachmentAccess::Write:
  37. return BufferBindFlags::CopyWrite;
  38. }
  39. break;
  40. case ScopeAttachmentUsage::Resolve:
  41. break;
  42. case ScopeAttachmentUsage::Predication:
  43. return BufferBindFlags::Predication;
  44. case ScopeAttachmentUsage::Indirect:
  45. return BufferBindFlags::Indirect;
  46. case ScopeAttachmentUsage::SubpassInput:
  47. break;
  48. case ScopeAttachmentUsage::InputAssembly:
  49. return BufferBindFlags::InputAssembly;
  50. case ScopeAttachmentUsage::ShadingRate:
  51. break;
  52. case ScopeAttachmentUsage::Uninitialized:
  53. break;
  54. default:
  55. break;
  56. }
  57. return BufferBindFlags::None;
  58. }
  59. BufferDescriptor::BufferDescriptor(BufferBindFlags bindFlags, size_t byteCount)
  60. : m_bindFlags{bindFlags}
  61. , m_byteCount{byteCount}
  62. {}
  63. AZ::HashValue64 BufferDescriptor::GetHash(AZ::HashValue64 seed /* = 0 */) const
  64. {
  65. return TypeHash64(*this, seed);
  66. }
  67. void BufferDescriptor::Reflect(AZ::ReflectContext* context)
  68. {
  69. if (auto* serializeContext = azrtti_cast<AZ::SerializeContext*>(context))
  70. {
  71. serializeContext->Class<BufferDescriptor>()
  72. ->Version(0)
  73. ->Field("m_bindFlags", &BufferDescriptor::m_bindFlags)
  74. ->Field("m_byteCount", &BufferDescriptor::m_byteCount)
  75. ->Field("m_alignment", &BufferDescriptor::m_alignment)
  76. ;
  77. }
  78. }
  79. }