2
0

ConstantBuffer.cpp 976 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. // SPDX-FileCopyrightText: 2021 Jorrit Rouwe
  2. // SPDX-License-Identifier: MIT
  3. #include <TestFramework.h>
  4. #include <Renderer/ConstantBuffer.h>
  5. #include <Renderer/Renderer.h>
  6. #include <Renderer/FatalErrorIfFailed.h>
  7. ConstantBuffer::ConstantBuffer(Renderer *inRenderer, uint64 inBufferSize) :
  8. mRenderer(inRenderer)
  9. {
  10. mBuffer = mRenderer->CreateD3DResourceOnUploadHeap(inBufferSize);
  11. mBufferSize = inBufferSize;
  12. }
  13. ConstantBuffer::~ConstantBuffer()
  14. {
  15. if (mBuffer != nullptr)
  16. mRenderer->RecycleD3DResourceOnUploadHeap(mBuffer.Get(), mBufferSize);
  17. }
  18. void *ConstantBuffer::MapInternal()
  19. {
  20. void *mapped_resource;
  21. D3D12_RANGE range = { 0, 0 }; // We're not going to read
  22. FatalErrorIfFailed(mBuffer->Map(0, &range, &mapped_resource));
  23. return mapped_resource;
  24. }
  25. void ConstantBuffer::Unmap()
  26. {
  27. mBuffer->Unmap(0, nullptr);
  28. }
  29. void ConstantBuffer::Bind(int inSlot)
  30. {
  31. mRenderer->GetCommandList()->SetGraphicsRootConstantBufferView(inSlot, mBuffer->GetGPUVirtualAddress());
  32. }