BsVulkanQueryManager.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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 "BsVulkanResource.h"
  6. #include "BsQueryManager.h"
  7. namespace BansheeEngine
  8. {
  9. /** @addtogroup Vulkan
  10. * @{
  11. */
  12. /** Handles creation of Vulkan queries. */
  13. class VulkanQueryManager : public QueryManager
  14. {
  15. public:
  16. VulkanQueryManager(VulkanRenderAPI& rapi);
  17. ~VulkanQueryManager();
  18. /** @copydoc QueryManager::createEventQuery */
  19. SPtr<EventQuery> createEventQuery(UINT32 deviceIdx = 0) const override;
  20. /** @copydoc QueryManager::createTimerQuery */
  21. SPtr<TimerQuery> createTimerQuery(UINT32 deviceIdx = 0) const override;
  22. /** @copydoc QueryManager::createOcclusionQuery */
  23. SPtr<OcclusionQuery> createOcclusionQuery(bool binary, UINT32 deviceIdx = 0) const override;
  24. private:
  25. VulkanRenderAPI& mRenderAPI;
  26. };
  27. /** Wrapper around a single query in a Vulkan query pool object. */
  28. class VulkanQuery : public VulkanResource
  29. {
  30. public:
  31. VulkanQuery(VulkanResourceManager* owner);
  32. ~VulkanQuery();
  33. private:
  34. VkEvent mEvent;
  35. };
  36. /** @} */
  37. }