2
0

BsVulkanHardwareBufferManager.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #pragma once
  4. #include "BsVulkanPrerequisites.h"
  5. #include "BsHardwareBufferManager.h"
  6. namespace bs
  7. {
  8. /** @addtogroup Vulkan
  9. * @{
  10. */
  11. /** Handles creation of Vulkan hardware buffers. */
  12. class VulkanHardwareBufferCoreManager : public HardwareBufferCoreManager
  13. {
  14. public:
  15. VulkanHardwareBufferCoreManager();
  16. ~VulkanHardwareBufferCoreManager();
  17. /** Returns a buffer view that can be used for buffer read operations when no other buffer is bound. */
  18. VkBufferView getDummyReadBufferView(UINT32 deviceIdx) const;
  19. /** Returns a buffer view that can be used for buffer storage operations when no other buffer is bound. */
  20. VkBufferView getDummyStorageBufferView(UINT32 deviceIdx) const;
  21. /** Returns a buffer that can be used for uniform storage when no other buffer is bound. */
  22. VkBuffer getDummyUniformBuffer(UINT32 deviceIdx) const;
  23. protected:
  24. /** @copydoc HardwareBufferCoreManager::createVertexBufferInternal */
  25. SPtr<VertexBufferCore> createVertexBufferInternal(const VERTEX_BUFFER_DESC& desc,
  26. GpuDeviceFlags deviceMask = GDF_DEFAULT) override;
  27. /** @copydoc HardwareBufferCoreManager::createIndexBufferInternal */
  28. SPtr<IndexBufferCore> createIndexBufferInternal(const INDEX_BUFFER_DESC& desc,
  29. GpuDeviceFlags deviceMask = GDF_DEFAULT) override;
  30. /** @copydoc HardwareBufferCoreManager::createGpuParamBlockBufferInternal */
  31. SPtr<GpuParamBlockBufferCore> createGpuParamBlockBufferInternal(UINT32 size,
  32. GpuParamBlockUsage usage = GPBU_DYNAMIC, GpuDeviceFlags deviceMask = GDF_DEFAULT) override;
  33. /** @copydoc HardwareBufferCoreManager::createGpuBufferInternal */
  34. SPtr<GpuBufferCore> createGpuBufferInternal(const GPU_BUFFER_DESC& desc,
  35. GpuDeviceFlags deviceMask = GDF_DEFAULT) override;
  36. /** @copydoc HardwareBufferCoreManager::createGpuParamsInternal */
  37. SPtr<GpuParamsCore> createGpuParamsInternal(const SPtr<GpuPipelineParamInfoCore>& paramInfo,
  38. GpuDeviceFlags deviceMask = GDF_DEFAULT) override;
  39. VulkanHardwareBuffer* mDummyReadBuffer;
  40. VulkanHardwareBuffer* mDummyStorageBuffer;
  41. VulkanHardwareBuffer* mDummyUniformBuffer;
  42. };
  43. /** @} */
  44. }