dxgi1_6.idl 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. /*
  2. * Copyright 2017 Ihsan Akmal
  3. *
  4. * This library is free software; you can redistribute it and/or
  5. * modify it under the terms of the GNU Lesser General Public
  6. * License as published by the Free Software Foundation; either
  7. * version 2.1 of the License, or (at your option) any later version.
  8. *
  9. * This library is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  12. * Lesser General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU Lesser General Public
  15. * License along with this library; if not, write to the Free Software
  16. * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  17. */
  18. import "dxgi1_5.idl";
  19. typedef enum DXGI_ADAPTER_FLAG3
  20. {
  21. DXGI_ADAPTER_FLAG3_NONE = 0x0,
  22. DXGI_ADAPTER_FLAG3_REMOTE = 0x1,
  23. DXGI_ADAPTER_FLAG3_SOFTWARE = 0x2,
  24. DXGI_ADAPTER_FLAG3_ACG_COMPATIBLE = 0x4,
  25. DXGI_ADAPTER_FLAG3_SUPPORT_MONITORED_FENCES = 0x8,
  26. DXGI_ADAPTER_FLAG3_SUPPORT_NON_MONITORED_FENCES = 0x10,
  27. DXGI_ADAPTER_FLAG3_KEYED_MUTEX_CONFORMANCE = 0x20,
  28. DXGI_ADAPTER_FLAG3_FORCE_DWORD = 0xffffffff,
  29. } DXGI_ADAPTER_FLAG3;
  30. typedef enum DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAGS
  31. {
  32. DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_FULLSCREEN = 0x1,
  33. DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_WINDOWED = 0x2,
  34. DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_CURSOR_STRETCHED = 0x4,
  35. } DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAGS;
  36. typedef enum DXGI_GPU_PREFERENCE
  37. {
  38. DXGI_GPU_PREFERENCE_UNSPECIFIED = 0x0,
  39. DXGI_GPU_PREFERENCE_MINIMUM_POWER = 0x1,
  40. DXGI_GPU_PREFERENCE_HIGH_PERFORMANCE = 0x2,
  41. } DXGI_GPU_PREFERENCE;
  42. typedef struct DXGI_ADAPTER_DESC3
  43. {
  44. WCHAR Description[128];
  45. UINT VendorId;
  46. UINT DeviceId;
  47. UINT SubSysId;
  48. UINT Revision;
  49. SIZE_T DedicatedVideoMemory;
  50. SIZE_T DedicatedSystemMemory;
  51. SIZE_T SharedSystemMemory;
  52. LUID AdapterLuid;
  53. DXGI_ADAPTER_FLAG3 Flags;
  54. DXGI_GRAPHICS_PREEMPTION_GRANULARITY GraphicsPreemptionGranularity;
  55. DXGI_COMPUTE_PREEMPTION_GRANULARITY ComputePreemptionGranularity;
  56. } DXGI_ADAPTER_DESC3;
  57. typedef struct DXGI_OUTPUT_DESC1
  58. {
  59. WCHAR DeviceName[32];
  60. RECT DesktopCoordinates;
  61. BOOL AttachedToDesktop;
  62. DXGI_MODE_ROTATION Rotation;
  63. HMONITOR Monitor;
  64. UINT BitsPerColor;
  65. DXGI_COLOR_SPACE_TYPE ColorSpace;
  66. FLOAT RedPrimary[2];
  67. FLOAT GreenPrimary[2];
  68. FLOAT BluePrimary[2];
  69. FLOAT WhitePoint[2];
  70. FLOAT MinLuminance;
  71. FLOAT MaxLuminance;
  72. FLOAT MaxFullFrameLuminance;
  73. } DXGI_OUTPUT_DESC1;
  74. [
  75. object,
  76. uuid(3c8d99d1-4fbf-4181-a82c-af66bf7bd24e),
  77. local,
  78. pointer_default(unique)
  79. ]
  80. interface IDXGIAdapter4 : IDXGIAdapter3
  81. {
  82. HRESULT GetDesc3(
  83. [out] DXGI_ADAPTER_DESC3 *desc
  84. );
  85. }
  86. [
  87. object,
  88. uuid(068346e8-aaec-4b84-add7-137f513f77a1),
  89. local,
  90. pointer_default(unique)
  91. ]
  92. interface IDXGIOutput6 : IDXGIOutput5
  93. {
  94. HRESULT GetDesc1(
  95. [out] DXGI_OUTPUT_DESC1 *desc
  96. );
  97. HRESULT CheckHardwareCompositionSupport(
  98. [out] UINT *flags
  99. );
  100. }
  101. [
  102. object,
  103. uuid(c1b6694f-ff09-44a9-b03c-77900a0a1d17),
  104. local,
  105. pointer_default(unique)
  106. ]
  107. interface IDXGIFactory6 : IDXGIFactory5
  108. {
  109. HRESULT EnumAdapterByGpuPreference(
  110. [in] UINT adapter_idx,
  111. [in] DXGI_GPU_PREFERENCE gpu_preference,
  112. [in] REFIID iid,
  113. [out] void **adapter
  114. );
  115. }
  116. [
  117. object,
  118. uuid(a4966eed-76db-44da-84c1-ee9a7afb20a8),
  119. local,
  120. pointer_default(unique)
  121. ]
  122. interface IDXGIFactory7 : IDXGIFactory6
  123. {
  124. HRESULT RegisterAdaptersChangedEvent(
  125. [in] HANDLE event,
  126. [out] DWORD *cookie
  127. );
  128. HRESULT UnregisterAdaptersChangedEvent(
  129. [in] DWORD cookie
  130. );
  131. }