CommonLibVR
DXGI_4.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "REX/W32/DXGI_3.h"
4 
5 namespace REX::W32
6 {
7  struct IDXGIAdapter3;
8  struct IDXGIFactory4;
9  struct IDXGIOutput4;
10  struct IDXGISwapChain3;
11 }
12 
13 namespace REX::W32
14 {
16  {
19  };
20 
22  {
24  };
25 
27  {
30  };
31 }
32 
33 namespace REX::W32
34 {
36  {
37  std::uint64_t budget;
38  std::uint64_t currentUsage;
39  std::uint64_t availableForReservation;
40  std::uint64_t currentReservation;
41  };
42 }
43 
44 namespace REX::W32
45 {
46  struct __declspec(novtable, uuid("645967A4-1392-4310-A798-8053CE3E93FD"))
47  IDXGIAdapter3 : public IDXGIAdapter2
48  {
49  virtual HRESULT RegisterHardwareContentProtectionTeardownStatusEvent(HANDLE a_event, std::uint32_t* a_cookie) = 0;
50  virtual void UnregisterHardwareContentProtectionTeardownStatus(std::uint32_t a_cookie) = 0;
51  virtual HRESULT QueryVideoMemoryInfo(std::uint32_t a_nodeIndex, DXGI_MEMORY_SEGMENT_GROUP a_memorySegmentGroup, DXGI_QUERY_VIDEO_MEMORY_INFO* a_videoMemoryInfo) = 0;
52  virtual HRESULT SetVideoMemoryReservation(std::uint32_t a_nodeIndex, DXGI_MEMORY_SEGMENT_GROUP a_memorySegmentGroup, std::uint64_t a_reservation) = 0;
53  virtual HRESULT RegisterVideoMemoryBudgetChangeNotificationEvent(HANDLE a_event, std::uint32_t* a_cookie) = 0;
54  virtual void UnregisterVideoMemoryBudgetChangeNotification(std::uint32_t a_cookie) = 0;
55  };
56 
57  struct __declspec(novtable, uuid("1BC6EA02-EF36-464F-BF0C-21CA39E5168A"))
58  IDXGIFactory4 : public IDXGIFactory3
59  {
60  virtual HRESULT EnumAdapterByLuid(LUID a_luid, const IID& a_iid, void** a_adapter) = 0;
61  virtual HRESULT EnumWarpAdapter(const IID& a_iid, void** a_adapter) = 0;
62  };
63 
64  struct __declspec(novtable, uuid("DC7DCA35-2196-414D-9F53-617884032A60"))
65  IDXGIOutput4 : public IDXGIOutput3
66  {
67  virtual HRESULT CheckOverlayColorSpaceSupport(DXGI_FORMAT a_format, DXGI_COLOR_SPACE_TYPE a_colorSpace, IUnknown* a_concernedDevice, std::uint32_t* a_flags) = 0;
68  };
69 
70  struct __declspec(novtable, uuid("94D99BDB-F1F8-4AB0-B236-7DA0170EDAB1"))
71  IDXGISwapChain3 : public IDXGISwapChain2
72  {
73  virtual std::uint32_t GetCurrentBackBufferIndex(void) = 0;
74  virtual HRESULT CheckColorSpaceSupport(DXGI_COLOR_SPACE_TYPE a_colorSpace, std::uint32_t* a_colorSpaceSupport) = 0;
75  virtual HRESULT SetColorSpace1(DXGI_COLOR_SPACE_TYPE a_colorSpace) = 0;
76  virtual HRESULT ResizeBuffers1(std::uint32_t a_bufferCount, std::uint32_t a_width, std::uint32_t a_height, DXGI_FORMAT a_format, std::uint32_t a_swapChainFlags, const std::uint32_t* a_creationNodeMask, IUnknown* const* a_presentQueue) = 0;
77  };
78 }
79 
80 namespace REX::W32
81 {
82  inline constexpr IID IID_IDXGIAdapter3{ 0x645967A4, 0x1392, 0x4310, { 0xA7, 0x98, 0x80, 0x53, 0xCE, 0x3E, 0x93, 0xFD } };
83  inline constexpr IID IID_IDXGIFactory4{ 0x1BC6EA02, 0xEF36, 0x464F, { 0xBF, 0x0C, 0x21, 0xCA, 0x39, 0xE5, 0x16, 0x8A } };
84  inline constexpr IID IID_IDXGIOutput4{ 0xDC7DCA35, 0x2196, 0x414D, { 0x9F, 0x53, 0x61, 0x78, 0x84, 0x03, 0x2A, 0x60 } };
85  inline constexpr IID IID_IDXGISwapChain3{ 0x94D99BDB, 0xF1F8, 0x4AB0, { 0xB2, 0x36, 0x7D, 0xA0, 0x17, 0x0E, 0xDA, 0xB1 } };
86 }
Definition: BSDirectInputManager.h:8
DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG
Definition: DXGI_4.h:27
@ DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG_PRESENT
Definition: DXGI_4.h:28
@ DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG_OVERLAY_PRESENT
Definition: DXGI_4.h:29
void * HANDLE
Definition: BASE.h:14
constexpr IID IID_IDXGISwapChain3
Definition: DXGI_4.h:85
constexpr IID IID_IDXGIFactory4
Definition: DXGI_4.h:83
struct __declspec(novtable, uuid("00000000-0000-0000-c000-000000000046")) IUnknown
Definition: COM.h:7
DXGI_OVERLAY_COLOR_SPACE_SUPPORT_FLAG
Definition: DXGI_4.h:22
@ DXGI_OVERLAY_COLOR_SPACE_SUPPORT_FLAG_PRESENT
Definition: DXGI_4.h:23
DXGI_MEMORY_SEGMENT_GROUP
Definition: DXGI_4.h:16
@ DXGI_MEMORY_SEGMENT_GROUP_LOCAL
Definition: DXGI_4.h:17
@ DXGI_MEMORY_SEGMENT_GROUP_NON_LOCAL
Definition: DXGI_4.h:18
constexpr IID IID_IDXGIOutput4
Definition: DXGI_4.h:84
DXGI_FORMAT
Definition: DXGI.h:63
std::int32_t HRESULT
Definition: BASE.h:28
GUID IID
Definition: BASE.h:87
DXGI_COLOR_SPACE_TYPE
Definition: DXGI.h:33
constexpr IID IID_IDXGIAdapter3
Definition: DXGI_4.h:82
std::uint64_t availableForReservation
Definition: DXGI_4.h:39
std::uint64_t currentUsage
Definition: DXGI_4.h:38
std::uint64_t currentReservation
Definition: DXGI_4.h:40
std::uint64_t budget
Definition: DXGI_4.h:37
Definition: BASE.h:62