D3DPipelineQuery.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // Copyright (C) 2009-present, Panagiotis Christopoulos Charitos and contributors.
  2. // All rights reserved.
  3. // Code licensed under the BSD License.
  4. // http://www.anki3d.org/LICENSE
  5. #include <AnKi/Gr/D3D/D3DPipelineQuery.h>
  6. namespace anki {
  7. PipelineQuery* PipelineQuery::newInstance(const PipelineQueryInitInfo& inf)
  8. {
  9. PipelineQueryImpl* impl = anki::newInstance<PipelineQueryImpl>(GrMemoryPool::getSingleton(), inf.getName());
  10. const Error err = impl->init(inf.m_type);
  11. if(err)
  12. {
  13. deleteInstance(GrMemoryPool::getSingleton(), impl);
  14. impl = nullptr;
  15. }
  16. return impl;
  17. }
  18. PipelineQueryResult PipelineQuery::getResult(U64& value) const
  19. {
  20. ANKI_D3D_SELF_CONST(PipelineQueryImpl);
  21. const Bool resultAvailable = PrimitivesPassedClippingFactory::getSingleton().getResult(self.m_handle, value);
  22. return (resultAvailable) ? PipelineQueryResult::kAvailable : PipelineQueryResult::kNotAvailable;
  23. }
  24. PipelineQueryImpl::~PipelineQueryImpl()
  25. {
  26. PrimitivesPassedClippingFactory::getSingleton().deleteQuery(m_handle);
  27. }
  28. Error PipelineQueryImpl::init([[maybe_unused]] PipelineQueryType type)
  29. {
  30. ANKI_ASSERT(type == PipelineQueryType::kPrimitivesPassedClipping);
  31. ANKI_CHECK(PrimitivesPassedClippingFactory::getSingleton().newQuery(m_handle));
  32. return Error::kNone;
  33. }
  34. } // end namespace anki