D3DPerfQuery.h 944 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. // Copyright 2012 Dolphin Emulator Project
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #pragma once
  4. #include <array>
  5. #include "VideoBackends/D3D/D3DBase.h"
  6. #include "VideoCommon/PerfQueryBase.h"
  7. namespace DX11
  8. {
  9. class PerfQuery : public PerfQueryBase
  10. {
  11. public:
  12. PerfQuery();
  13. ~PerfQuery();
  14. void EnableQuery(PerfQueryGroup group) override;
  15. void DisableQuery(PerfQueryGroup group) override;
  16. void ResetQuery() override;
  17. u32 GetQueryResult(PerfQueryType type) override;
  18. void FlushResults() override;
  19. bool IsFlushed() const override;
  20. private:
  21. struct ActiveQuery
  22. {
  23. ComPtr<ID3D11Query> query;
  24. PerfQueryGroup query_group{};
  25. };
  26. void WeakFlush();
  27. // Only use when non-empty
  28. void FlushOne();
  29. // when testing in SMS: 64 was too small, 128 was ok
  30. static const int PERF_QUERY_BUFFER_SIZE = 512;
  31. std::array<ActiveQuery, PERF_QUERY_BUFFER_SIZE> m_query_buffer;
  32. int m_query_read_pos;
  33. };
  34. } // namespace DX11