gl_detection.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // This file is part of Desktop App Toolkit,
  2. // a set of libraries for developing nice desktop applications.
  3. //
  4. // For license and copyright information please follow this link:
  5. // https://github.com/desktop-app/legal/blob/master/LEGAL
  6. //
  7. #pragma once
  8. #include "base/flags.h"
  9. // ANGLE is used only on Windows with Qt < 6.
  10. #if defined Q_OS_WIN && QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
  11. #define DESKTOP_APP_USE_ANGLE
  12. #endif // Q_OS_WIN && Qt < 6
  13. class QOpenGLContext;
  14. namespace Ui::GL {
  15. enum class Backend {
  16. Raster,
  17. OpenGL,
  18. };
  19. struct Capabilities {
  20. bool supported = false;
  21. bool transparency = false;
  22. };
  23. [[nodiscard]] Capabilities CheckCapabilities(QWidget *widget = nullptr);
  24. [[nodiscard]] Backend ChooseBackendDefault(Capabilities capabilities);
  25. void ForceDisable(bool disable);
  26. void DetectLastCheckCrash();
  27. [[nodiscard]] bool LastCrashCheckFailed();
  28. void CrashCheckFinish();
  29. #ifdef DESKTOP_APP_USE_ANGLE
  30. enum class ANGLE {
  31. Auto,
  32. D3D9,
  33. D3D11,
  34. D3D11on12,
  35. //OpenGL,
  36. };
  37. void ConfigureANGLE(); // Requires Ui::Integration being set.
  38. void ChangeANGLE(ANGLE backend);
  39. [[nodiscard]] ANGLE CurrentANGLE();
  40. #endif // DESKTOP_APP_USE_ANGLE
  41. } // namespace Ui::GL