Page 1 of 1

DXGI Includes

Posted: Wed Oct 01, 2025 9:40 pm
by Justin
I needed this API so using a conversion tool and some ai help i translated it:
https://learn.microsoft.com/en-us/windo ... phics-dxgi

dxgicommon.pbi

Code: Select all

;dxgicommon.pbi

;- DXGI_RATIONAL
Structure DXGI_RATIONAL Align #PB_Structure_AlignC
	Numerator.l
	Denominator.l
EndStructure

;- DXGI_SAMPLE_DESC
Structure DXGI_SAMPLE_DESC Align #PB_Structure_AlignC
	Count.l
	Quality.l
EndStructure

;- Enum DXGI_COLOR_SPACE_TYPE
#DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709 = 0
#DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_P709 = 1
#DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P709 = 2
#DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P2020 = 3
#DXGI_COLOR_SPACE_RESERVED = 4
#DXGI_COLOR_SPACE_YCBCR_FULL_G22_NONE_P709_X601 = 5
#DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P601 = 6
#DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P601 = 7
#DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P709 = 8
#DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P709 = 9
#DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P2020 = 10
#DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P2020 = 11
#DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_P2020 = 12
#DXGI_COLOR_SPACE_YCBCR_STUDIO_G2084_LEFT_P2020 = 13
#DXGI_COLOR_SPACE_RGB_STUDIO_G2084_NONE_P2020 = 14
#DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_TOPLEFT_P2020 = 15
#DXGI_COLOR_SPACE_YCBCR_STUDIO_G2084_TOPLEFT_P2020 = 16
#DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P2020 = 17
#DXGI_COLOR_SPACE_YCBCR_STUDIO_GHLG_TOPLEFT_P2020 = 18
#DXGI_COLOR_SPACE_YCBCR_FULL_GHLG_TOPLEFT_P2020 = 19
#DXGI_COLOR_SPACE_RGB_STUDIO_G24_NONE_P709 = 20
#DXGI_COLOR_SPACE_RGB_STUDIO_G24_NONE_P2020 = 21
#DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_LEFT_P709 = 22
#DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_LEFT_P2020 = 23
#DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_TOPLEFT_P2020 = 24
#DXGI_COLOR_SPACE_CUSTOM = -1
dxgitype.pbi

Code: Select all

;dxgitype.pbi

XIncludeFile "dxgicommon.pbi"

;- Enum DXGI_CPU_ACCESS
#DXGI_CPU_ACCESS_NONE                    = 0 
#DXGI_CPU_ACCESS_DYNAMIC                 = 1 
#DXGI_CPU_ACCESS_READ_WRITE              = 2 
#DXGI_CPU_ACCESS_SCRATCH                 = 3 
#DXGI_CPU_ACCESS_FIELD                   = 15

;. DXGI_RGB
Structure DXGI_RGB Align #PB_Structure_AlignC
	Red.f
	Green.f
	Blue.f
EndStructure

;- DXGI_GAMMA_CONTROL
Structure DXGI_GAMMA_CONTROL Align #PB_Structure_AlignC
	Scale.DXGI_RGB
	Offset.DXGI_RGB
	GammaCurve.DXGI_RGB[1025]
EndStructure

;- DXGI_GAMMA_CONTROL_CAPABILITIES
Structure DXGI_GAMMA_CONTROL_CAPABILITIES Align #PB_Structure_AlignC
	ScaleAndOffsetSupported.l
	MaxConvertedValue.f
	MinConvertedValue.f
	NumGammaControlPoints.l
	ControlPointPositions.f[1025]
EndStructure

;- Enum DXGI_MODE_SCANLINE_ORDER
#DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED        = 0
#DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE        = 1
#DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST  = 2
#DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST  = 3

;- Enum DXGI_MODE_SCALING
#DXGI_MODE_SCALING_UNSPECIFIED   = 0
#DXGI_MODE_SCALING_CENTERED      = 1
#DXGI_MODE_SCALING_STRETCHED     = 2

;- Enum DXGI_MODE_ROTATION
#DXGI_MODE_ROTATION_UNSPECIFIED  = 0
#DXGI_MODE_ROTATION_IDENTITY     = 1
#DXGI_MODE_ROTATION_ROTATE90     = 2
#DXGI_MODE_ROTATION_ROTATE180    = 3
#DXGI_MODE_ROTATION_ROTATE270    = 4

;- DXGI_MODE_DESC
Structure DXGI_MODE_DESC Align #PB_Structure_AlignC
	Width.l
	Height.l
	RefreshRate.DXGI_RATIONAL
	Format.l
	ScanlineOrdering.l
	Scaling.l
EndStructure

;- DXGI_JPEG_DC_HUFFMAN_TABLE
Structure DXGI_JPEG_DC_HUFFMAN_TABLE Align #PB_Structure_AlignC
	CodeCounts.b[12]
	CodeValues.b[12]
EndStructure

;- DXGI_JPEG_AC_HUFFMAN_TABLE
Structure DXGI_JPEG_AC_HUFFMAN_TABLE Align #PB_Structure_AlignC
	CodeCounts.b[16]
	CodeValues.b[162]
EndStructure

;- DXGI_JPEG_QUANTIZATION_TABLE
Structure DXGI_JPEG_QUANTIZATION_TABLE Align #PB_Structure_AlignC
	Elements.b[64]
EndStructure
dxgidebug.pbi

Code: Select all

;Generated by PB Type Library Importer Version: 1.0
;dxgidebug.tlb
;dxgidebug.pbi

;- Enum DXGI_DEBUG_RLO_FLAGS
#DXGI_DEBUG_RLO_SUMMARY = 1
#DXGI_DEBUG_RLO_DETAIL = 2
#DXGI_DEBUG_RLO_IGNORE_INTERNAL = 4
#DXGI_DEBUG_RLO_ALL = 7

;- Enum DXGI_INFO_QUEUE_MESSAGE_CATEGORY
#DXGI_INFO_QUEUE_MESSAGE_CATEGORY_UNKNOWN = 0
#DXGI_INFO_QUEUE_MESSAGE_CATEGORY_MISCELLANEOUS = 1
#DXGI_INFO_QUEUE_MESSAGE_CATEGORY_INITIALIZATION = 2
#DXGI_INFO_QUEUE_MESSAGE_CATEGORY_CLEANUP = 3
#DXGI_INFO_QUEUE_MESSAGE_CATEGORY_COMPILATION = 4
#DXGI_INFO_QUEUE_MESSAGE_CATEGORY_STATE_CREATION = 5
#DXGI_INFO_QUEUE_MESSAGE_CATEGORY_STATE_SETTING = 6
#DXGI_INFO_QUEUE_MESSAGE_CATEGORY_STATE_GETTING = 7
#DXGI_INFO_QUEUE_MESSAGE_CATEGORY_RESOURCE_MANIPULATION = 8
#DXGI_INFO_QUEUE_MESSAGE_CATEGORY_EXECUTION = 9
#DXGI_INFO_QUEUE_MESSAGE_CATEGORY_SHADER = 10

;- Enum DXGI_INFO_QUEUE_MESSAGE_SEVERITY
#DXGI_INFO_QUEUE_MESSAGE_SEVERITY_CORRUPTION = 0
#DXGI_INFO_QUEUE_MESSAGE_SEVERITY_ERROR = 1
#DXGI_INFO_QUEUE_MESSAGE_SEVERITY_WARNING = 2
#DXGI_INFO_QUEUE_MESSAGE_SEVERITY_INFO = 3
#DXGI_INFO_QUEUE_MESSAGE_SEVERITY_MESSAGE = 4

;- DXGI_INFO_QUEUE_MESSAGE
Structure DXGI_INFO_QUEUE_MESSAGE Align #PB_Structure_AlignC
	Producer.GUID
	Category.l
	Severity.l
	ID.l
	pDescription.i
	DescriptionByteLength.i
EndStructure

;- DXGI_INFO_QUEUE_FILTER_DESC
Structure DXGI_INFO_QUEUE_FILTER_DESC Align #PB_Structure_AlignC
	NumCategories.l
	pCategoryList.i
	NumSeverities.l
	pSeverityList.i
	NumIDs.l
	pIDList.i
EndStructure

;- DXGI_INFO_QUEUE_FILTER
Structure DXGI_INFO_QUEUE_FILTER Align #PB_Structure_AlignC
	AllowList.DXGI_INFO_QUEUE_FILTER_DESC
	DenyList.DXGI_INFO_QUEUE_FILTER_DESC
EndStructure

;- IDXGIInfoQueue
Interface IDXGIInfoQueue Extends IUnknown
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		SetMessageCountLimit.l(Producer.i, MessageCountLimit.q)
	CompilerElse
		SetMessageCountLimit.l(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b, MessageCountLimit.q)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		ClearStoredMessages.l(Producer.i)
	CompilerElse
		ClearStoredMessages.l(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		GetMessage.l(Producer.i, MessageIndex.q, pMessage.i, pMessageByteLength.i)
	CompilerElse
		GetMessage.l(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b, MessageIndex.q, pMessage.i, pMessageByteLength.i)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		GetNumStoredMessagesAllowedByRetrievalFilters.q(Producer.i)
	CompilerElse
		GetNumStoredMessagesAllowedByRetrievalFilters.q(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		GetNumStoredMessages.q(Producer.i)
	CompilerElse
		GetNumStoredMessages.q(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		GetNumMessagesDiscardedByMessageCountLimit.q(Producer.i)
	CompilerElse
		GetNumMessagesDiscardedByMessageCountLimit.q(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		GetMessageCountLimit.q(Producer.i)
	CompilerElse
		GetMessageCountLimit.q(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		GetNumMessagesAllowedByStorageFilter.q(Producer.i)
	CompilerElse
		GetNumMessagesAllowedByStorageFilter.q(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		GetNumMessagesDeniedByStorageFilter.q(Producer.i)
	CompilerElse
		GetNumMessagesDeniedByStorageFilter.q(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		AddStorageFilterEntries.l(Producer.i, pFilter.i)
	CompilerElse
		AddStorageFilterEntries.l(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b, pFilter.i)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		GetStorageFilter.l(Producer.i, pFilter.i, pFilterByteLength.i)
	CompilerElse
		GetStorageFilter.l(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b, pFilter.i, pFilterByteLength.i)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		ClearStorageFilter.l(Producer.i)
	CompilerElse
		ClearStorageFilter.l(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		PushEmptyStorageFilter.l(Producer.i)
	CompilerElse
		PushEmptyStorageFilter.l(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		PushDenyAllStorageFilter.l(Producer.i)
	CompilerElse
		PushDenyAllStorageFilter.l(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		PushCopyOfStorageFilter.l(Producer.i)
	CompilerElse
		PushCopyOfStorageFilter.l(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		PushStorageFilter.l(Producer.i, pFilter.i)
	CompilerElse
		PushStorageFilter.l(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b, pFilter.i)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		PopStorageFilter.l(Producer.i)
	CompilerElse
		PopStorageFilter.l(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		GetStorageFilterStackSize.l(Producer.i)
	CompilerElse
		GetStorageFilterStackSize.l(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		AddRetrievalFilterEntries.l(Producer.i, pFilter.i)
	CompilerElse
		AddRetrievalFilterEntries.l(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b, pFilter.i)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		GetRetrievalFilter.l(Producer.i, pFilter.i, pFilterByteLength.i)
	CompilerElse
		GetRetrievalFilter.l(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b, pFilter.i, pFilterByteLength.i)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		ClearRetrievalFilter.l(Producer.i)
	CompilerElse
		ClearRetrievalFilter.l(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		PushEmptyRetrievalFilter.l(Producer.i)
	CompilerElse
		PushEmptyRetrievalFilter.l(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		PushDenyAllRetrievalFilter.l(Producer.i)
	CompilerElse
		PushDenyAllRetrievalFilter.l(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		PushCopyOfRetrievalFilter.l(Producer.i)
	CompilerElse
		PushCopyOfRetrievalFilter.l(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		PushRetrievalFilter.l(Producer.i, pFilter.i)
	CompilerElse
		PushRetrievalFilter.l(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b, pFilter.i)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		PopRetrievalFilter.l(Producer.i)
	CompilerElse
		PopRetrievalFilter.l(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		GetRetrievalFilterStackSize.l(Producer.i)
	CompilerElse
		GetRetrievalFilterStackSize.l(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		AddMessage.l(Producer.i, Category.l, Severity.l, ID.l, pDescription.p-ascii)
	CompilerElse
		AddMessage.l(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b, Category.l, Severity.l, ID.l, pDescription.p-ascii)
	CompilerEndIf
	AddApplicationMessage.l(Severity.l, pDescription.p-ascii)
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		SetBreakOnCategory.l(Producer.i, Category.l, bEnable.l)
	CompilerElse
		SetBreakOnCategory.l(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b, Category.l, bEnable.l)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		SetBreakOnSeverity.l(Producer.i, Severity.l, bEnable.l)
	CompilerElse
		SetBreakOnSeverity.l(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b, Severity.l, bEnable.l)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		SetBreakOnID.l(Producer.i, ID.l, bEnable.l)
	CompilerElse
		SetBreakOnID.l(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b, ID.l, bEnable.l)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		GetBreakOnCategory.l(Producer.i, Category.l)
	CompilerElse
		GetBreakOnCategory.l(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b, Category.l)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		GetBreakOnSeverity.l(Producer.i, Severity.l)
	CompilerElse
		GetBreakOnSeverity.l(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b, Severity.l)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		GetBreakOnID.l(Producer.i, ID.l)
	CompilerElse
		GetBreakOnID.l(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b, ID.l)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		SetMuteDebugOutput.l(Producer.i, bMute.l)
	CompilerElse
		SetMuteDebugOutput.l(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b, bMute.l)
	CompilerEndIf
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		GetMuteDebugOutput.l(Producer.i)
	CompilerElse
		GetMuteDebugOutput.l(Producer_GUID_Data1.l, Producer_GUID_Data2.u, Producer_GUID_Data3.u, Data5.b, Data6.b, Data7.b, Data8.b, Data9.b, Data10.b, Data11.b, Data12.b)
	CompilerEndIf
EndInterface 

;- IDXGIDebug
Interface IDXGIDebug Extends IUnknown
	CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
		ReportLiveObjects.l(apiid.i, flags.l)
	CompilerElse
		ReportLiveObjects.l(apiid_GUID_Data1.l, apiid_GUID_Data2.u, apiid_GUID_Data3.u, apiid_GUID_Data4.carray, flags.l)
	CompilerEndIf
EndInterface 

;- IDXGIDebug1
Interface IDXGIDebug1 Extends IDXGIDebug
	EnableLeakTrackingForThread.l()
	DisableLeakTrackingForThread.l()
	IsLeakTrackingEnabledForThread.l()
EndInterface 

;-
;- IIDs
Import "dxguid.lib"
	IID_IDXGIInfoQueue
	IID_IDXGIDebug
	IID_IDXGIDebug1
EndImport
dxgi1_6.pbi

Code: Select all

;Generated by PB Type Library Importer Version: 1.0
;dxgi1_6.tlb
;dxgi1_6.pbi

XIncludeFile "dxgicommon.pbi"
XIncludeFile "dxgitype.pbi"
XIncludeFile "dxgiformat.pbi"

;- IDXGIObject
Interface IDXGIObject Extends IUnknown
	SetPrivateData.l(Name.i, DataSize.l, pData.i)
	SetPrivateDataInterface.l(Name.i, pUnknown.i)
	GetPrivateData.l(Name.i, pDataSize.i, pData.i)
	GetParent.l(riid.i, ppParent.i)
EndInterface 

;- IDXGIAdapter
Interface IDXGIAdapter Extends IDXGIObject
	EnumOutputs.l(Output.l, ppOutput.i)
	GetDesc.l(pDesc.i)
	CheckInterfaceSupport.l(InterfaceName.i, pUMDVersion.i)
EndInterface 

;- IDXGIOutput
Interface IDXGIOutput Extends IDXGIObject
	GetDesc.l(pDesc.i)
	GetDisplayModeList.l(EnumFormat.l, Flags.l, pNumModes.i, pDesc.i)
	FindClosestMatchingMode.l(pModeToMatch.i, pClosestMatch.i, pConcernedDevice.i)
	WaitForVBlank.l()
	TakeOwnership.l(pDevice.i, Exclusive.l)
	ReleaseOwnership.l()
	GetGammaControlCapabilities.l(pGammaCaps.i)
	SetGammaControl.l(pArray.i)
	GetGammaControl.l(pArray.i)
	SetDisplaySurface.l(pScanoutSurface.i)
	GetDisplaySurfaceData.l(pDestination.i)
	GetFrameStatistics.l(pStats.i)
EndInterface 

;- DXGI_OUTPUT_DESC
Structure DXGI_OUTPUT_DESC Align #PB_Structure_AlignC
	DeviceName.u[32]
	DesktopCoordinates.RECT
	AttachedToDesktop.l
	Rotation.l
	Monitor.i
EndStructure

;- IDXGIDeviceSubObject
Interface IDXGIDeviceSubObject Extends IDXGIObject
	GetDevice.l(riid.i, ppDevice.i)
EndInterface 

;- IDXGISurface
Interface IDXGISurface Extends IDXGIDeviceSubObject
	GetDesc.l(pDesc.i)
	Map.l(pLockedRect.i, MapFlags.l)
	Unmap.l()
EndInterface 

;- DXGI_SURFACE_DESC
Structure DXGI_SURFACE_DESC Align #PB_Structure_AlignC
	Width.l
	Height.l
	Format.l
	SampleDesc.DXGI_SAMPLE_DESC
EndStructure

;- DXGI_MAPPED_RECT
Structure DXGI_MAPPED_RECT Align #PB_Structure_AlignC
	Pitch.l
	pBits.i
EndStructure

;- DXGI_FRAME_STATISTICS
Structure DXGI_FRAME_STATISTICS Align #PB_Structure_AlignC
	PresentCount.l
	PresentRefreshCount.l
	SyncRefreshCount.l
	SyncQPCTime.LARGE_INTEGER
	SyncGPUTime.LARGE_INTEGER
EndStructure

;- DXGI_ADAPTER_DESC
Structure DXGI_ADAPTER_DESC Align #PB_Structure_AlignC
	Description.u[128]
	VendorId.l
	DeviceId.l
	SubSysId.l
	Revision.l
	DedicatedVideoMemory.i
	DedicatedSystemMemory.i
	SharedSystemMemory.i
	AdapterLuid.LUID
EndStructure

;- IDXGIAdapter1
Interface IDXGIAdapter1 Extends IDXGIAdapter
	GetDesc1.l(pDesc.i)
EndInterface 

;- DXGI_ADAPTER_DESC1
Structure DXGI_ADAPTER_DESC1 Align #PB_Structure_AlignC
	Description.u[128]
	VendorId.l
	DeviceId.l
	SubSysId.l
	Revision.l
	DedicatedVideoMemory.i
	DedicatedSystemMemory.i
	SharedSystemMemory.i
	AdapterLuid.LUID
	Flags.l
EndStructure

;- IDXGIDevice
Interface IDXGIDevice Extends IDXGIObject
	GetAdapter.l(pAdapter.i)
	CreateSurface.l(pDesc.i, NumSurfaces.l, Usage.l, pSharedResource.i, ppSurface.i)
	QueryResourceResidency.l(ppResources.i, pResidencyStatus.i, NumResources.l)
	SetGPUThreadPriority.l(Priority.l)
	GetGPUThreadPriority.l(pPriority.i)
EndInterface 

;- DXGI_SHARED_RESOURCE
Structure DXGI_SHARED_RESOURCE Align #PB_Structure_AlignC
	Handle.i
EndStructure

;- Enum DXGI_RESIDENCY
#DXGI_RESIDENCY_FULLY_RESIDENT = 1
#DXGI_RESIDENCY_RESIDENT_IN_SHARED_MEMORY = 2
#DXGI_RESIDENCY_EVICTED_TO_DISK = 3

;- IDXGIDevice1
Interface IDXGIDevice1 Extends IDXGIDevice
	SetMaximumFrameLatency.l(MaxLatency.l)
	GetMaximumFrameLatency.l(pMaxLatency.i)
EndInterface 

;- IDXGIFactory
Interface IDXGIFactory Extends IDXGIObject
	EnumAdapters.l(Adapter.l, ppAdapter.i)
	MakeWindowAssociation.l(WindowHandle.i, Flags.l)
	GetWindowAssociation.l(pWindowHandle.i)
	CreateSwapChain.l(pDevice.i, pDesc.i, ppSwapChain.i)
	CreateSoftwareAdapter.l(Module.i, ppAdapter.i)
EndInterface 

;- DXGI_SWAP_CHAIN_DESC
Structure DXGI_SWAP_CHAIN_DESC Align #PB_Structure_AlignC
	BufferDesc.DXGI_MODE_DESC
	SampleDesc.DXGI_SAMPLE_DESC
	BufferUsage.l
	BufferCount.l
	OutputWindow.i
	Windowed.l
	SwapEffect.l
	Flags.l
EndStructure

;- Enum DXGI_SWAP_EFFECT
#DXGI_SWAP_EFFECT_DISCARD = 0
#DXGI_SWAP_EFFECT_SEQUENTIAL = 1
#DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL = 3
#DXGI_SWAP_EFFECT_FLIP_DISCARD = 4

;- IDXGISwapChain
Interface IDXGISwapChain Extends IDXGIDeviceSubObject
	Present.l(SyncInterval.l, Flags.l)
	GetBuffer.l(Buffer.l, riid.i, ppSurface.i)
	SetFullscreenState.l(Fullscreen.l, pTarget.i)
	GetFullscreenState.l(pFullscreen.i, ppTarget.i)
	GetDesc.l(pDesc.i)
	ResizeBuffers.l(BufferCount.l, Width.l, Height.l, NewFormat.l, SwapChainFlags.l)
	ResizeTarget.l(pNewTargetParameters.i)
	GetContainingOutput.l(ppOutput.i)
	GetFrameStatistics.l(pStats.i)
	GetLastPresentCount.l(pLastPresentCount.i)
EndInterface 

;- IDXGIFactory1
Interface IDXGIFactory1 Extends IDXGIFactory
	EnumAdapters1.l(Adapter.l, ppAdapter.i)
	IsCurrent.l()
EndInterface 

;- IDXGIKeyedMutex
Interface IDXGIKeyedMutex Extends IDXGIDeviceSubObject
	AcquireSync.l(Key.q, dwMilliseconds.l)
	ReleaseSync.l(Key.q)
EndInterface 

;- IDXGIResource
Interface IDXGIResource Extends IDXGIDeviceSubObject
	GetSharedHandle.l(pSharedHandle.i)
	GetUsage.l(pUsage.i)
	SetEvictionPriority.l(EvictionPriority.l)
	GetEvictionPriority.l(pEvictionPriority.i)
EndInterface 

;- IDXGISurface1
Interface IDXGISurface1 Extends IDXGISurface
	GetDC.l(Discard.l, phdc.i)
	ReleaseDC.l(pDirtyRect.i)
EndInterface 

;- Enum DXGI_ADAPTER_FLAG
#DXGI_ADAPTER_FLAG_NONE = 0
#DXGI_ADAPTER_FLAG_REMOTE = 1
#DXGI_ADAPTER_FLAG_SOFTWARE = 2
#DXGI_ADAPTER_FLAG_FORCE_DWORD = -1

;- Enum DXGI_SWAP_CHAIN_FLAG
#DXGI_SWAP_CHAIN_FLAG_NONPREROTATED = 1
#DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH = 2
#DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE = 4
#DXGI_SWAP_CHAIN_FLAG_RESTRICTED_CONTENT = 8
#DXGI_SWAP_CHAIN_FLAG_RESTRICT_SHARED_RESOURCE_DRIVER = 16
#DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY = 32
#DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT = 64
#DXGI_SWAP_CHAIN_FLAG_FOREGROUND_LAYER = 128
#DXGI_SWAP_CHAIN_FLAG_FULLSCREEN_VIDEO = 256
#DXGI_SWAP_CHAIN_FLAG_YUV_VIDEO = 512
#DXGI_SWAP_CHAIN_FLAG_HW_PROTECTED = 1024
#DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING = 2048
#DXGI_SWAP_CHAIN_FLAG_RESTRICTED_TO_ALL_HOLOGRAPHIC_DISPLAYS = 4096

;- DXGI_DISPLAY_COLOR_SPACE
Structure DXGI_DISPLAY_COLOR_SPACE Align #PB_Structure_AlignC
	PrimaryCoordinates.f[16]
	WhitePoints.f[32]
EndStructure

;- IDXGIAdapter2
Interface IDXGIAdapter2 Extends IDXGIAdapter1
	GetDesc2.l(pDesc.i)
EndInterface 

;- DXGI_ADAPTER_DESC2
Structure DXGI_ADAPTER_DESC2 Align #PB_Structure_AlignC
	Description.u[128]
	VendorId.l
	DeviceId.l
	SubSysId.l
	Revision.l
	DedicatedVideoMemory.i
	DedicatedSystemMemory.i
	SharedSystemMemory.i
	AdapterLuid.LUID
	Flags.l
	GraphicsPreemptionGranularity.l
	ComputePreemptionGranularity.l
EndStructure

;- Enum DXGI_GRAPHICS_PREEMPTION_GRANULARITY
#DXGI_GRAPHICS_PREEMPTION_DMA_BUFFER_BOUNDARY = 0
#DXGI_GRAPHICS_PREEMPTION_PRIMITIVE_BOUNDARY = 1
#DXGI_GRAPHICS_PREEMPTION_TRIANGLE_BOUNDARY = 2
#DXGI_GRAPHICS_PREEMPTION_PIXEL_BOUNDARY = 3
#DXGI_GRAPHICS_PREEMPTION_INSTRUCTION_BOUNDARY = 4

;- Enum DXGI_COMPUTE_PREEMPTION_GRANULARITY
#DXGI_COMPUTE_PREEMPTION_DMA_BUFFER_BOUNDARY = 0
#DXGI_COMPUTE_PREEMPTION_DISPATCH_BOUNDARY = 1
#DXGI_COMPUTE_PREEMPTION_THREAD_GROUP_BOUNDARY = 2
#DXGI_COMPUTE_PREEMPTION_THREAD_BOUNDARY = 3
#DXGI_COMPUTE_PREEMPTION_INSTRUCTION_BOUNDARY = 4

;- IDXGIDevice2
Interface IDXGIDevice2 Extends IDXGIDevice1
	OfferResources.l(NumResources.l, ppResources.i, Priority.l)
	ReclaimResources.l(NumResources.l, ppResources.i, pDiscarded.i)
	EnqueueSetEvent.l(hEvent.i)
EndInterface 

;- Enum _DXGI_OFFER_RESOURCE_PRIORITY
#DXGI_OFFER_RESOURCE_PRIORITY_LOW = 1
#DXGI_OFFER_RESOURCE_PRIORITY_NORMAL = 2
#DXGI_OFFER_RESOURCE_PRIORITY_HIGH = 3

;- IDXGIDisplayControl
Interface IDXGIDisplayControl Extends IUnknown
	IsStereoEnabled.l()
	SetStereoEnabled.l(enabled.l)
EndInterface 

;- IDXGIFactory2
Interface IDXGIFactory2 Extends IDXGIFactory1
	IsWindowedStereoEnabled.l()
	CreateSwapChainForHwnd.l(pDevice.i, hWnd.i, pDesc.i, pFullscreenDesc.i, pRestrictToOutput.i, ppSwapChain.i)
	CreateSwapChainForCoreWindow.l(pDevice.i, pWindow.i, pDesc.i, pRestrictToOutput.i, ppSwapChain.i)
	GetSharedResourceAdapterLuid.l(hResource.i, pLuid.i)
	RegisterStereoStatusWindow.l(WindowHandle.i, wMsg.l, pdwCookie.i)
	RegisterStereoStatusEvent.l(hEvent.i, pdwCookie.i)
	UnregisterStereoStatus.l(dwCookie.l)
	RegisterOcclusionStatusWindow.l(WindowHandle.i, wMsg.l, pdwCookie.i)
	RegisterOcclusionStatusEvent.l(hEvent.i, pdwCookie.i)
	UnregisterOcclusionStatus.l(dwCookie.l)
	CreateSwapChainForComposition.l(pDevice.i, pDesc.i, pRestrictToOutput.i, ppSwapChain.i)
EndInterface 

;- DXGI_SWAP_CHAIN_DESC1
Structure DXGI_SWAP_CHAIN_DESC1 Align #PB_Structure_AlignC
	Width.l
	Height.l
	Format.l
	Stereo.l
	SampleDesc.DXGI_SAMPLE_DESC
	BufferUsage.l
	BufferCount.l
	Scaling.l
	SwapEffect.l
	AlphaMode.l
	Flags.l
EndStructure

;- Enum DXGI_SCALING
#DXGI_SCALING_STRETCH = 0
#DXGI_SCALING_NONE = 1
#DXGI_SCALING_ASPECT_RATIO_STRETCH = 2

;- Enum DXGI_ALPHA_MODE
#DXGI_ALPHA_MODE_UNSPECIFIED = 0
#DXGI_ALPHA_MODE_PREMULTIPLIED = 1
#DXGI_ALPHA_MODE_STRAIGHT = 2
#DXGI_ALPHA_MODE_IGNORE = 3
#DXGI_ALPHA_MODE_FORCE_DWORD = -1

;- DXGI_SWAP_CHAIN_FULLSCREEN_DESC
Structure DXGI_SWAP_CHAIN_FULLSCREEN_DESC Align #PB_Structure_AlignC
	RefreshRate.DXGI_RATIONAL
	ScanlineOrdering.l
	Scaling.l
	Windowed.l
EndStructure

;- IDXGISwapChain1
Interface IDXGISwapChain1 Extends IDXGISwapChain
	GetDesc1.l(pDesc.i)
	GetFullscreenDesc.l(pDesc.i)
	GetHwnd.l(pHwnd.i)
	GetCoreWindow.l(refiid.i, ppUnk.i)
	Present1.l(SyncInterval.l, PresentFlags.l, pPresentParameters.i)
	IsTemporaryMonoSupported.l()
	GetRestrictToOutput.l(ppRestrictToOutput.i)
	SetBackgroundColor.l(pColor.i)
	GetBackgroundColor.l(pColor.i)
	SetRotation.l(Rotation.l)
	GetRotation.l(pRotation.i)
EndInterface 

;- DXGI_PRESENT_PARAMETERS
Structure DXGI_PRESENT_PARAMETERS Align #PB_Structure_AlignC
	DirtyRectsCount.l
	pDirtyRects.i
	pScrollRect.i
	pScrollOffset.i
EndStructure

;- IDXGIOutput1
Interface IDXGIOutput1 Extends IDXGIOutput
	GetDisplayModeList1.l(EnumFormat.l, Flags.l, pNumModes.i, pDesc.i)
	FindClosestMatchingMode1.l(pModeToMatch.i, pClosestMatch.i, pConcernedDevice.i)
	GetDisplaySurfaceData1.l(pDestination.i)
	DuplicateOutput.l(pDevice.i, ppOutputDuplication.i)
EndInterface 

;- DXGI_MODE_DESC1
Structure DXGI_MODE_DESC1 Align #PB_Structure_AlignC
	Width.l
	Height.l
	RefreshRate.DXGI_RATIONAL
	Format.l
	ScanlineOrdering.l
	Scaling.l
	Stereo.l
EndStructure

;- IDXGIOutputDuplication
Interface IDXGIOutputDuplication Extends IDXGIObject
	GetDesc.l(pDesc.i)
	AcquireNextFrame.l(TimeoutInMilliseconds.l, pFrameInfo.i, ppDesktopResource.i)
	GetFrameDirtyRects.l(DirtyRectsBufferSize.l, pDirtyRectsBuffer.i, pDirtyRectsBufferSizeRequired.i)
	GetFrameMoveRects.l(MoveRectsBufferSize.l, pMoveRectBuffer.i, pMoveRectsBufferSizeRequired.i)
	GetFramePointerShape.l(PointerShapeBufferSize.l, pPointerShapeBuffer.i, pPointerShapeBufferSizeRequired.i, pPointerShapeInfo.i)
	MapDesktopSurface.l(pLockedRect.i)
	UnMapDesktopSurface.l()
	ReleaseFrame.l()
EndInterface 

;- DXGI_OUTDUPL_DESC
Structure DXGI_OUTDUPL_DESC Align #PB_Structure_AlignC
	ModeDesc.DXGI_MODE_DESC
	Rotation.l
	DesktopImageInSystemMemory.l
EndStructure

;- DXGI_OUTDUPL_POINTER_POSITION
Structure DXGI_OUTDUPL_POINTER_POSITION Align #PB_Structure_AlignC
	Position.POINT
	Visible.l
EndStructure

;- DXGI_OUTDUPL_FRAME_INFO
Structure DXGI_OUTDUPL_FRAME_INFO Align #PB_Structure_AlignC
	LastPresentTime.LARGE_INTEGER
	LastMouseUpdateTime.LARGE_INTEGER
	AccumulatedFrames.l
	RectsCoalesced.l
	ProtectedContentMaskedOut.l
	PointerPosition.DXGI_OUTDUPL_POINTER_POSITION
	TotalMetadataBufferSize.l
	PointerShapeBufferSize.l
EndStructure

;- DXGI_OUTDUPL_MOVE_RECT
Structure DXGI_OUTDUPL_MOVE_RECT Align #PB_Structure_AlignC
	SourcePoint.POINT
	DestinationRect.RECT
EndStructure

;- DXGI_OUTDUPL_POINTER_SHAPE_INFO
Structure DXGI_OUTDUPL_POINTER_SHAPE_INFO Align #PB_Structure_AlignC
	Type.l
	Width.l
	Height.l
	Pitch.l
	HotSpot.POINT
EndStructure

;- IDXGIResource1
Interface IDXGIResource1 Extends IDXGIResource
	CreateSubresourceSurface.l(index.l, ppSurface.i)
	CreateSharedHandle.l(pAttributes.i, dwAccess.l, lpName.s, pHandle.i)
EndInterface 

;- IDXGISurface2
Interface IDXGISurface2 Extends IDXGISurface1
	GetResource.l(riid.i, ppParentResource.i, pSubresourceIndex.i)
EndInterface 

;- Enum DXGI_OUTDUPL_POINTER_SHAPE_TYPE
#DXGI_OUTDUPL_POINTER_SHAPE_TYPE_MONOCHROME = 1
#DXGI_OUTDUPL_POINTER_SHAPE_TYPE_COLOR = 2
#DXGI_OUTDUPL_POINTER_SHAPE_TYPE_MASKED_COLOR = 4

;- IDXGIDecodeSwapChain
Interface IDXGIDecodeSwapChain Extends IUnknown
	PresentBuffer.l(BufferToPresent.l, SyncInterval.l, Flags.l)
	SetSourceRect.l(pRect.i)
	SetTargetRect.l(pRect.i)
	SetDestSize.l(Width.l, Height.l)
	GetSourceRect.l(pRect.i)
	GetTargetRect.l(pRect.i)
	GetDestSize.l(pWidth.i, pHeight.i)
	SetColorSpace.l(ColorSpace.l)
	GetColorSpace.l()
EndInterface 

;- Enum DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS
#DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_NOMINAL_RANGE = 1
#DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_BT709 = 2
#DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_xvYCC = 4

;- IDXGIDevice3
Interface IDXGIDevice3 Extends IDXGIDevice2
	Trim.l()
EndInterface 

;- IDXGIFactory3
Interface IDXGIFactory3 Extends IDXGIFactory2
	GetCreationFlags.l()
EndInterface 

;- IDXGIFactoryMedia
Interface IDXGIFactoryMedia Extends IUnknown
	CreateSwapChainForCompositionSurfaceHandle.l(pDevice.i, hSurface.i, pDesc.i, pRestrictToOutput.i, ppSwapChain.i)
	CreateDecodeSwapChainForCompositionSurfaceHandle.l(pDevice.i, hSurface.i, pDesc.i, pYuvDecodeBuffers.i, pRestrictToOutput.i, ppSwapChain.i)
EndInterface 

;- DXGI_DECODE_SWAP_CHAIN_DESC
Structure DXGI_DECODE_SWAP_CHAIN_DESC Align #PB_Structure_AlignC
	Flags.l
EndStructure

;- IDXGIOutput2
Interface IDXGIOutput2 Extends IDXGIOutput1
	SupportsOverlays.l()
EndInterface 

;- IDXGIOutput3
Interface IDXGIOutput3 Extends IDXGIOutput2
	CheckOverlaySupport.l(EnumFormat.l, pConcernedDevice.i, pFlags.i)
EndInterface 

;- IDXGISwapChain2
Interface IDXGISwapChain2 Extends IDXGISwapChain1
	SetSourceSize.l(Width.l, Height.l)
	GetSourceSize.l(pWidth.i, pHeight.i)
	SetMaximumFrameLatency.l(MaxLatency.l)
	GetMaximumFrameLatency.l(pMaxLatency.i)
	GetFrameLatencyWaitableObject.i()
	SetMatrixTransform.l(pMatrix.i)
	GetMatrixTransform.l(pMatrix.i)
EndInterface 

;- DXGI_MATRIX_3X2_F
Structure DXGI_MATRIX_3X2_F Align #PB_Structure_AlignC
	_11.f
	_12.f
	_21.f
	_22.f
	_31.f
	_32.f
EndStructure

;- IDXGISwapChainMedia
Interface IDXGISwapChainMedia Extends IUnknown
	GetFrameStatisticsMedia.l(pStats.i)
	SetPresentDuration.l(Duration.l)
	CheckPresentDurationSupport.l(DesiredPresentDuration.l, pClosestSmallerPresentDuration.i, pClosestLargerPresentDuration.i)
EndInterface 

;- DXGI_FRAME_STATISTICS_MEDIA
Structure DXGI_FRAME_STATISTICS_MEDIA Align #PB_Structure_AlignC
	PresentCount.l
	PresentRefreshCount.l
	SyncRefreshCount.l
	SyncQPCTime.LARGE_INTEGER
	SyncGPUTime.LARGE_INTEGER
	CompositionMode.l
	ApprovedPresentDuration.l
EndStructure

;- Enum DXGI_FRAME_PRESENTATION_MODE
#DXGI_FRAME_PRESENTATION_MODE_COMPOSED = 0
#DXGI_FRAME_PRESENTATION_MODE_OVERLAY = 1
#DXGI_FRAME_PRESENTATION_MODE_NONE = 2
#DXGI_FRAME_PRESENTATION_MODE_COMPOSITION_FAILURE = 3

;- Enum DXGI_OVERLAY_SUPPORT_FLAG
#DXGI_OVERLAY_SUPPORT_FLAG_DIRECT = 1
#DXGI_OVERLAY_SUPPORT_FLAG_SCALING = 2

;- IDXGIAdapter3
Interface IDXGIAdapter3 Extends IDXGIAdapter2
	RegisterHardwareContentProtectionTeardownStatusEvent.l(hEvent.i, pdwCookie.i)
	UnregisterHardwareContentProtectionTeardownStatus.l(dwCookie.l)
	QueryVideoMemoryInfo.l(NodeIndex.l, MemorySegmentGroup.l, pVideoMemoryInfo.i)
	SetVideoMemoryReservation.l(NodeIndex.l, MemorySegmentGroup.l, Reservation.q)
	RegisterVideoMemoryBudgetChangeNotificationEvent.l(hEvent.i, pdwCookie.i)
	UnregisterVideoMemoryBudgetChangeNotification.l(dwCookie.l)
EndInterface 

;- Enum DXGI_MEMORY_SEGMENT_GROUP
#DXGI_MEMORY_SEGMENT_GROUP_LOCAL = 0
#DXGI_MEMORY_SEGMENT_GROUP_NON_LOCAL = 1

;- DXGI_QUERY_VIDEO_MEMORY_INFO
Structure DXGI_QUERY_VIDEO_MEMORY_INFO Align #PB_Structure_AlignC
	Budget.q
	CurrentUsage.q
	AvailableForReservation.q
	CurrentReservation.q
EndStructure

;- IDXGIFactory4
Interface IDXGIFactory4 Extends IDXGIFactory3
	EnumAdapterByLuid.l(AdapterLuid.q, riid.i, ppvAdapter.i)
	EnumWarpAdapter.l(riid.i, ppvAdapter.i)
EndInterface 

;- IDXGIOutput4
Interface IDXGIOutput4 Extends IDXGIOutput3
	CheckOverlayColorSpaceSupport.l(Format.l, ColorSpace.l, pConcernedDevice.i, pFlags.i)
EndInterface 

;- IDXGISwapChain3
Interface IDXGISwapChain3 Extends IDXGISwapChain2
	GetCurrentBackBufferIndex.l()
	CheckColorSpaceSupport.l(ColorSpace.l, pColorSpaceSupport.i)
	SetColorSpace1.l(ColorSpace.l)
	ResizeBuffers1.l(BufferCount.l, Width.l, Height.l, Format.l, SwapChainFlags.l, pCreationNodeMask.i, ppPresentQueue.i)
EndInterface 

;- Enum DXGI_OVERLAY_COLOR_SPACE_SUPPORT_FLAG
#DXGI_OVERLAY_COLOR_SPACE_SUPPORT_FLAG_PRESENT = 1

;- Enum DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG
#DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG_PRESENT = 1
#DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG_OVERLAY_PRESENT = 2

;- IDXGIDevice4
Interface IDXGIDevice4 Extends IDXGIDevice3
	OfferResources1.l(NumResources.l, ppResources.i, Priority.l, Flags.l)
	ReclaimResources1.l(NumResources.l, ppResources.i, pResults.i)
EndInterface 

;- Enum _DXGI_RECLAIM_RESOURCE_RESULTS
#DXGI_RECLAIM_RESOURCE_RESULT_OK = 0
#DXGI_RECLAIM_RESOURCE_RESULT_DISCARDED = 1
#DXGI_RECLAIM_RESOURCE_RESULT_NOT_COMMITTED = 2

;- IDXGIFactory5
Interface IDXGIFactory5 Extends IDXGIFactory4
	CheckFeatureSupport.l(Feature.l, pFeatureSupportData.i, FeatureSupportDataSize.l)
EndInterface 

;- Enum DXGI_FEATURE
#DXGI_FEATURE_PRESENT_ALLOW_TEARING = 0

;- IDXGIOutput5
Interface IDXGIOutput5 Extends IDXGIOutput4
	DuplicateOutput1.l(pDevice.i, Flags.l, SupportedFormatsCount.l, pSupportedFormats.i, ppOutputDuplication.i)
EndInterface 

;- IDXGISwapChain4
Interface IDXGISwapChain4 Extends IDXGISwapChain3
	SetHDRMetaData.l(Type.l, Size.l, pMetaData.i)
EndInterface 

;- Enum DXGI_HDR_METADATA_TYPE
#DXGI_HDR_METADATA_TYPE_NONE = 0
#DXGI_HDR_METADATA_TYPE_HDR10 = 1
#DXGI_HDR_METADATA_TYPE_HDR10PLUS = 2

;- DXGI_HDR_METADATA_HDR10
Structure DXGI_HDR_METADATA_HDR10 Align #PB_Structure_AlignC
	RedPrimary.u[2]
	GreenPrimary.u[2]
	BluePrimary.u[2]
	WhitePoint.u[2]
	MaxMasteringLuminance.l
	MinMasteringLuminance.l
	MaxContentLightLevel.u
	MaxFrameAverageLightLevel.u
EndStructure

;- Enum DXGI_ADAPTER_FLAG3
#DXGI_ADAPTER_FLAG3_NONE = 0
#DXGI_ADAPTER_FLAG3_REMOTE = 1
#DXGI_ADAPTER_FLAG3_SOFTWARE = 2
#DXGI_ADAPTER_FLAG3_ACG_COMPATIBLE = 4
#DXGI_ADAPTER_FLAG3_SUPPORT_MONITORED_FENCES = 8
#DXGI_ADAPTER_FLAG3_SUPPORT_NON_MONITORED_FENCES = 16
#DXGI_ADAPTER_FLAG3_KEYED_MUTEX_CONFORMANCE = 32
#DXGI_ADAPTER_FLAG3_FORCE_DWORD = -1

;- DXGI_ADAPTER_DESC3
Structure DXGI_ADAPTER_DESC3 Align #PB_Structure_AlignC
	Description.u[128]
	VendorId.l
	DeviceId.l
	SubSysId.l
	Revision.l
	DedicatedVideoMemory.i
	DedicatedSystemMemory.i
	SharedSystemMemory.i
	AdapterLuid.LUID
	Flags.l
	GraphicsPreemptionGranularity.l
	ComputePreemptionGranularity.l
EndStructure

;- IDXGIAdapter4
Interface IDXGIAdapter4 Extends IDXGIAdapter3
	GetDesc3.l(pDesc.i)
EndInterface 

;- DXGI_OUTPUT_DESC1
Structure DXGI_OUTPUT_DESC1 Align #PB_Structure_AlignC
	DeviceName.u[32]
	DesktopCoordinates.RECT
	AttachedToDesktop.l
	Rotation.l
	Monitor.i
	BitsPerColor.l
	ColorSpace.l
	RedPrimary.u[2]
	GreenPrimary.u[2]
	BluePrimary.u[2]
	WhitePoint.u[2]
	MinLuminance.f
	MaxLuminance.f
	MaxFullFrameLuminance.f
EndStructure

;- Enum DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAGS
#DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_FULLSCREEN = 1
#DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_WINDOWED = 2
#DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_CURSOR_STRETCHED = 4

;- IDXGIOutput6
Interface IDXGIOutput6 Extends IDXGIOutput5
	GetDesc1.l(pDesc.i)
	CheckHardwareCompositionSupport.l(pFlags.i)
EndInterface 

;- Enum DXGI_GPU_PREFERENCE
#DXGI_GPU_PREFERENCE_UNSPECIFIED = 0
#DXGI_GPU_PREFERENCE_MINIMUM_POWER = 1
#DXGI_GPU_PREFERENCE_HIGH_PERFORMANCE = 2

;- IDXGIFactory6
Interface IDXGIFactory6 Extends IDXGIFactory5
	EnumAdapterByGpuPreference.l(Adapter.l, GpuPreference.l, riid.i, ppvAdapter.i)
EndInterface 

;- IDXGIFactory7
Interface IDXGIFactory7 Extends IDXGIFactory6
	RegisterAdaptersChangedEvent.l(hEvent.i, pdwCookie.i)
	UnregisterAdaptersChangedEvent.l(dwCookie.l)
EndInterface 

;-
;- FUNCTIONS
Import "DXGI.lib"
	CreateDXGIFactory.l(*riid.IID, ppFactory.i)
	CreateDXGIFactory1.l(*riid.IID, ppFactory.i)
	CreateDXGIFactory2.l(Flags.l, *riid.IID, ppFactory.i)
	DXGIGetDebugInterface1.l(Flags.l, *riid.IID, pDebug.i)
	DXGIDeclareAdapterRemovalSupport.l()
	DXGIDisableVBlankVirtualization.l()
EndImport

;-
;- IIDs
Import "dxguid.lib"
	IID_IDXGIObject
	IID_IDXGIAdapter
	IID_IDXGIOutput
	IID_IDXGISurface
	IID_IDXGIDeviceSubObject
	IID_IDXGIAdapter1
	IID_IDXGIDevice
	IID_IDXGIDevice1
	IID_IDXGIFactory
	IID_IDXGISwapChain
	IID_IDXGIFactory1
	IID_IDXGIKeyedMutex
	IID_IDXGIResource
	IID_IDXGISurface1
	IID_IDXGIAdapter2
	IID_IDXGIDevice2
	IID_IDXGIDisplayControl
	IID_IDXGIFactory2
	IID_IDXGISwapChain1
	IID_IDXGIOutput1
	IID_IDXGIOutputDuplication
	IID_IDXGIResource1
	IID_IDXGISurface2
	IID_IDXGIDecodeSwapChain
	IID_IDXGIDevice3
	IID_IDXGIFactory3
	IID_IDXGIFactoryMedia
	IID_IDXGIOutput2
	IID_IDXGIOutput3
	IID_IDXGISwapChain2
	IID_IDXGISwapChainMedia
	IID_IDXGIAdapter3
	IID_IDXGIFactory4
	IID_IDXGIOutput4
	IID_IDXGISwapChain3
	IID_IDXGIDevice4
	IID_IDXGIFactory5
	IID_IDXGIOutput5
	IID_IDXGISwapChain4
; 	IID_IDXGIAdapter4
; 	IID_IDXGIOutput6
; 	IID_IDXGIFactory6
; 	IID_IDXGIFactory7
EndImport