BsVulkanHardwareBufferManager.h 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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 "Managers/BsHardwareBufferManager.h"
  6. namespace bs { namespace ct
  7. {
  8. /** @addtogroup Vulkan
  9. * @{
  10. */
  11. /** Handles creation of Vulkan hardware buffers. */
  12. class VulkanHardwareBufferManager : public HardwareBufferManager
  13. {
  14. public:
  15. VulkanHardwareBufferManager();
  16. ~VulkanHardwareBufferManager();
  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. /** Returns a buffer that can be used for structured storage when no other buffer is bound. */
  24. VkBuffer getDummyStructuredBuffer(UINT32 deviceIdx) const;
  25. protected:
  26. /** @copydoc HardwareBufferManager::createVertexBufferInternal */
  27. SPtr<VertexBuffer> createVertexBufferInternal(const VERTEX_BUFFER_DESC& desc,
  28. GpuDeviceFlags deviceMask = GDF_DEFAULT) override;
  29. /** @copydoc HardwareBufferManager::createIndexBufferInternal */
  30. SPtr<IndexBuffer> createIndexBufferInternal(const INDEX_BUFFER_DESC& desc,
  31. GpuDeviceFlags deviceMask = GDF_DEFAULT) override;
  32. /** @copydoc HardwareBufferManager::createGpuParamBlockBufferInternal */
  33. SPtr<GpuParamBlockBuffer> createGpuParamBlockBufferInternal(UINT32 size,
  34. GpuParamBlockUsage usage = GPBU_DYNAMIC, GpuDeviceFlags deviceMask = GDF_DEFAULT) override;
  35. /** @copydoc HardwareBufferManager::createGpuBufferInternal */
  36. SPtr<GpuBuffer> createGpuBufferInternal(const GPU_BUFFER_DESC& desc,
  37. GpuDeviceFlags deviceMask = GDF_DEFAULT) override;
  38. /** @copydoc HardwareBufferManager::createGpuParamsInternal */
  39. SPtr<GpuParams> createGpuParamsInternal(const SPtr<GpuPipelineParamInfo>& paramInfo,
  40. GpuDeviceFlags deviceMask = GDF_DEFAULT) override;
  41. VulkanHardwareBuffer* mDummyReadBuffer;
  42. VulkanHardwareBuffer* mDummyStorageBuffer;
  43. VulkanHardwareBuffer* mDummyUniformBuffer;
  44. VulkanHardwareBuffer* mDummyStructuredBuffer;
  45. };
  46. /** @} */
  47. }}