package vendor:directx/dxgi

⌘K
Ctrl+K
or
/

    Index

    Types (184)
    Constants (74)
    Procedure Groups (0)

    This section is empty.

    Types

    ADAPTER_DESC ¶

    ADAPTER_DESC :: struct {
    	Description:           [128]u16 "fmt:\"s,0\"",
    	VendorId:              u32,
    	DeviceId:              u32,
    	SubSysId:              u32,
    	Revision:              u32,
    	DedicatedVideoMemory:  uint,
    	DedicatedSystemMemory: uint,
    	SharedSystemMemory:    uint,
    	AdapterLuid:           sys_windows.LUID,
    }

    ADAPTER_DESC1 ¶

    ADAPTER_DESC1 :: struct {
    	Description:           [128]u16 "fmt:\"s,0\"",
    	VendorId:              u32,
    	DeviceId:              u32,
    	SubSysId:              u32,
    	Revision:              u32,
    	DedicatedVideoMemory:  uint,
    	DedicatedSystemMemory: uint,
    	SharedSystemMemory:    uint,
    	AdapterLuid:           sys_windows.LUID,
    	Flags:                 ADAPTER_FLAG,
    }

    ADAPTER_DESC2 ¶

    ADAPTER_DESC2 :: struct {
    	Description:                   [128]u16 "fmt:\"s,0\"",
    	VendorId:                      u32,
    	DeviceId:                      u32,
    	SubSysId:                      u32,
    	Revision:                      u32,
    	DedicatedVideoMemory:          uint,
    	DedicatedSystemMemory:         uint,
    	SharedSystemMemory:            uint,
    	AdapterLuid:                   sys_windows.LUID,
    	Flags:                         ADAPTER_FLAG,
    	GraphicsPreemptionGranularity: GRAPHICS_PREEMPTION_GRANULARITY,
    	ComputePreemptionGranularity:  COMPUTE_PREEMPTION_GRANULARITY,
    }

    ADAPTER_FLAG ¶

    ADAPTER_FLAG :: enum u32 {
    	// TODO: convert to bit_set
    	NONE        = 0, 
    	REMOTE      = 1, 
    	SOFTWARE    = 2, 
    	FORCE_DWORD = 4294967295, 
    }

    ALPHA_MODE ¶

    ALPHA_MODE :: enum i32 {
    	UNSPECIFIED   = 0, 
    	PREMULTIPLIED = 1, 
    	STRAIGHT      = 2, 
    	IGNORE        = 3, 
    	FORCE_DWORD   = -1, 
    }

    BOOL ¶

    BOOL :: sys_windows.BOOL

    COLOR_SPACE_TYPE ¶

    COLOR_SPACE_TYPE :: enum i32 {
    	RGB_FULL_G22_NONE_P709           = 0, 
    	RGB_FULL_G10_NONE_P709           = 1, 
    	RGB_STUDIO_G22_NONE_P709         = 2, 
    	RGB_STUDIO_G22_NONE_P2020        = 3, 
    	RESERVED                         = 4, 
    	YCBCR_FULL_G22_NONE_P709_X601    = 5, 
    	YCBCR_STUDIO_G22_LEFT_P601       = 6, 
    	YCBCR_FULL_G22_LEFT_P601         = 7, 
    	YCBCR_STUDIO_G22_LEFT_P709       = 8, 
    	YCBCR_FULL_G22_LEFT_P709         = 9, 
    	YCBCR_STUDIO_G22_LEFT_P2020      = 10, 
    	YCBCR_FULL_G22_LEFT_P2020        = 11, 
    	RGB_FULL_G2084_NONE_P2020        = 12, 
    	YCBCR_STUDIO_G2084_LEFT_P2020    = 13, 
    	RGB_STUDIO_G2084_NONE_P2020      = 14, 
    	YCBCR_STUDIO_G22_TOPLEFT_P2020   = 15, 
    	YCBCR_STUDIO_G2084_TOPLEFT_P2020 = 16, 
    	RGB_FULL_G22_NONE_P2020          = 17, 
    	YCBCR_STUDIO_GHLG_TOPLEFT_P2020  = 18, 
    	YCBCR_FULL_GHLG_TOPLEFT_P2020    = 19, 
    	RGB_STUDIO_G24_NONE_P709         = 20, 
    	RGB_STUDIO_G24_NONE_P2020        = 21, 
    	YCBCR_STUDIO_G24_LEFT_P709       = 22, 
    	YCBCR_STUDIO_G24_LEFT_P2020      = 23, 
    	YCBCR_STUDIO_G24_TOPLEFT_P2020   = 24, 
    	CUSTOM                           = -1, 
    }

    COMPUTE_PREEMPTION_GRANULARITY ¶

    COMPUTE_PREEMPTION_GRANULARITY :: enum i32 {
    	DMA_BUFFER_BOUNDARY   = 0, 
    	DISPATCH_BOUNDARY     = 1, 
    	THREAD_GROUP_BOUNDARY = 2, 
    	THREAD_BOUNDARY       = 3, 
    	INSTRUCTION_BOUNDARY  = 4, 
    }

    CPU_ACCESS ¶

    CPU_ACCESS :: enum u32 {
    	NONE       = 0, 
    	DYNAMIC    = 1, 
    	READ_WRITE = 2, 
    	SCRATCH    = 3, 
    	FIELD      = 15, 
    }

    CREATE_FACTORY ¶

    CREATE_FACTORY :: distinct bit_set[CREATE_FACTORY_FLAG; u32]
    Related Procedures With Parameters

    CREATE_FACTORY_FLAG ¶

    CREATE_FACTORY_FLAG :: enum u32 {
    	DEBUG = 0, 
    }

    D3DCOLORVALUE ¶

    D3DCOLORVALUE :: struct {
    	r: f32,
    	g: f32,
    	b: f32,
    	a: f32,
    }

    DEBUG_ID ¶

    DEBUG_ID :: sys_windows.GUID

    DEBUG_RLO_FLAGS ¶

    DEBUG_RLO_FLAGS :: enum u32 {
    	// TODO: convert to bit_set
    	SUMMARY         = 1, 
    	DETAIL          = 2, 
    	IGNORE_INTERNAL = 4, 
    	ALL             = 7, 
    }

    DECODE_SWAP_CHAIN_DESC ¶

    DECODE_SWAP_CHAIN_DESC :: struct {
    	Flags: SWAP_CHAIN,
    }

    DISPLAY_COLOR_SPACE ¶

    DISPLAY_COLOR_SPACE :: struct {
    	PrimaryCoordinates: [8][2]f32,
    	WhitePoints:        [16][2]f32,
    }

    ENUM_MODE ¶

    ENUM_MODE :: enum u32 {
    	INTERLACED      = 0, 
    	SCALING         = 1, 
    	STEREO          = 2, 
    	DISABLED_STEREO = 3, 
    }

    ENUM_MODES ¶

    ENUM_MODES :: distinct bit_set[ENUM_MODE; u32]

    FORMAT ¶

    FORMAT :: enum i32 {
    	UNKNOWN                                 = 0, 
    	R32G32B32A32_TYPELESS                   = 1, 
    	R32G32B32A32_FLOAT                      = 2, 
    	R32G32B32A32_UINT                       = 3, 
    	R32G32B32A32_SINT                       = 4, 
    	R32G32B32_TYPELESS                      = 5, 
    	R32G32B32_FLOAT                         = 6, 
    	R32G32B32_UINT                          = 7, 
    	R32G32B32_SINT                          = 8, 
    	R16G16B16A16_TYPELESS                   = 9, 
    	R16G16B16A16_FLOAT                      = 10, 
    	R16G16B16A16_UNORM                      = 11, 
    	R16G16B16A16_UINT                       = 12, 
    	R16G16B16A16_SNORM                      = 13, 
    	R16G16B16A16_SINT                       = 14, 
    	R32G32_TYPELESS                         = 15, 
    	R32G32_FLOAT                            = 16, 
    	R32G32_UINT                             = 17, 
    	R32G32_SINT                             = 18, 
    	R32G8X24_TYPELESS                       = 19, 
    	D32_FLOAT_S8X24_UINT                    = 20, 
    	R32_FLOAT_X8X24_TYPELESS                = 21, 
    	X32_TYPELESS_G8X24_UINT                 = 22, 
    	R10G10B10A2_TYPELESS                    = 23, 
    	R10G10B10A2_UNORM                       = 24, 
    	R10G10B10A2_UINT                        = 25, 
    	R11G11B10_FLOAT                         = 26, 
    	R8G8B8A8_TYPELESS                       = 27, 
    	R8G8B8A8_UNORM                          = 28, 
    	R8G8B8A8_UNORM_SRGB                     = 29, 
    	R8G8B8A8_UINT                           = 30, 
    	R8G8B8A8_SNORM                          = 31, 
    	R8G8B8A8_SINT                           = 32, 
    	R16G16_TYPELESS                         = 33, 
    	R16G16_FLOAT                            = 34, 
    	R16G16_UNORM                            = 35, 
    	R16G16_UINT                             = 36, 
    	R16G16_SNORM                            = 37, 
    	R16G16_SINT                             = 38, 
    	R32_TYPELESS                            = 39, 
    	D32_FLOAT                               = 40, 
    	R32_FLOAT                               = 41, 
    	R32_UINT                                = 42, 
    	R32_SINT                                = 43, 
    	R24G8_TYPELESS                          = 44, 
    	D24_UNORM_S8_UINT                       = 45, 
    	R24_UNORM_X8_TYPELESS                   = 46, 
    	X24_TYPELESS_G8_UINT                    = 47, 
    	R8G8_TYPELESS                           = 48, 
    	R8G8_UNORM                              = 49, 
    	R8G8_UINT                               = 50, 
    	R8G8_SNORM                              = 51, 
    	R8G8_SINT                               = 52, 
    	R16_TYPELESS                            = 53, 
    	R16_FLOAT                               = 54, 
    	D16_UNORM                               = 55, 
    	R16_UNORM                               = 56, 
    	R16_UINT                                = 57, 
    	R16_SNORM                               = 58, 
    	R16_SINT                                = 59, 
    	R8_TYPELESS                             = 60, 
    	R8_UNORM                                = 61, 
    	R8_UINT                                 = 62, 
    	R8_SNORM                                = 63, 
    	R8_SINT                                 = 64, 
    	A8_UNORM                                = 65, 
    	R1_UNORM                                = 66, 
    	R9G9B9E5_SHAREDEXP                      = 67, 
    	R8G8_B8G8_UNORM                         = 68, 
    	G8R8_G8B8_UNORM                         = 69, 
    	BC1_TYPELESS                            = 70, 
    	BC1_UNORM                               = 71, 
    	BC1_UNORM_SRGB                          = 72, 
    	BC2_TYPELESS                            = 73, 
    	BC2_UNORM                               = 74, 
    	BC2_UNORM_SRGB                          = 75, 
    	BC3_TYPELESS                            = 76, 
    	BC3_UNORM                               = 77, 
    	BC3_UNORM_SRGB                          = 78, 
    	BC4_TYPELESS                            = 79, 
    	BC4_UNORM                               = 80, 
    	BC4_SNORM                               = 81, 
    	BC5_TYPELESS                            = 82, 
    	BC5_UNORM                               = 83, 
    	BC5_SNORM                               = 84, 
    	B5G6R5_UNORM                            = 85, 
    	B5G5R5A1_UNORM                          = 86, 
    	B8G8R8A8_UNORM                          = 87, 
    	B8G8R8X8_UNORM                          = 88, 
    	R10G10B10_XR_BIAS_A2_UNORM              = 89, 
    	B8G8R8A8_TYPELESS                       = 90, 
    	B8G8R8A8_UNORM_SRGB                     = 91, 
    	B8G8R8X8_TYPELESS                       = 92, 
    	B8G8R8X8_UNORM_SRGB                     = 93, 
    	BC6H_TYPELESS                           = 94, 
    	BC6H_UF16                               = 95, 
    	BC6H_SF16                               = 96, 
    	BC7_TYPELESS                            = 97, 
    	BC7_UNORM                               = 98, 
    	BC7_UNORM_SRGB                          = 99, 
    	AYUV                                    = 100, 
    	Y410                                    = 101, 
    	Y416                                    = 102, 
    	NV12                                    = 103, 
    	P010                                    = 104, 
    	P016                                    = 105, 
    	_420_OPAQUE                             = 106, 
    	YUY2                                    = 107, 
    	Y210                                    = 108, 
    	Y216                                    = 109, 
    	NV11                                    = 110, 
    	AI44                                    = 111, 
    	IA44                                    = 112, 
    	P8                                      = 113, 
    	A8P8                                    = 114, 
    	B4G4R4A4_UNORM                          = 115, 
    	P208                                    = 130, 
    	V208                                    = 131, 
    	V408                                    = 132, 
    	SAMPLER_FEEDBACK_MIN_MIP_OPAQUE         = 189, 
    	SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE = 190, 
    	FORCE_UINT                              = -1, 
    }

    FRAME_PRESENTATION_MODE ¶

    FRAME_PRESENTATION_MODE :: enum i32 {
    	COMPOSED            = 0, 
    	OVERLAY             = 1, 
    	NONE                = 2, 
    	COMPOSITION_FAILURE = 3, 
    }

    FRAME_STATISTICS ¶

    FRAME_STATISTICS :: struct {
    	PresentCount:        u32,
    	PresentRefreshCount: u32,
    	SyncRefreshCount:    u32,
    	SyncQPCTime:         sys_windows.LARGE_INTEGER,
    	SyncGPUTime:         sys_windows.LARGE_INTEGER,
    }

    FRAME_STATISTICS_MEDIA ¶

    FRAME_STATISTICS_MEDIA :: struct {
    	PresentCount:            u32,
    	PresentRefreshCount:     u32,
    	SyncRefreshCount:        u32,
    	SyncQPCTime:             sys_windows.LARGE_INTEGER,
    	SyncGPUTime:             sys_windows.LARGE_INTEGER,
    	CompositionMode:         FRAME_PRESENTATION_MODE,
    	ApprovedPresentDuration: u32,
    }

    GAMMA_CONTROL ¶

    GAMMA_CONTROL :: struct {
    	Scale:      RGB,
    	Offset:     RGB,
    	GammaCurve: [1025]RGB,
    }

    GAMMA_CONTROL_CAPABILITIES ¶

    GAMMA_CONTROL_CAPABILITIES :: struct {
    	ScaleAndOffsetSupported: sys_windows.BOOL,
    	MaxConvertedValue:       f32,
    	MinConvertedValue:       f32,
    	NumGammaControlPoints:   u32,
    	ControlPointPositions:   [1025]f32,
    }

    GRAPHICS_PREEMPTION_GRANULARITY ¶

    GRAPHICS_PREEMPTION_GRANULARITY :: enum i32 {
    	DMA_BUFFER_BOUNDARY  = 0, 
    	PRIMITIVE_BOUNDARY   = 1, 
    	TRIANGLE_BOUNDARY    = 2, 
    	PIXEL_BOUNDARY       = 3, 
    	INSTRUCTION_BOUNDARY = 4, 
    }

    GUID ¶

    GUID :: sys_windows.GUID

    HANDLE ¶

    HANDLE :: sys_windows.HANDLE

    HDC ¶

    HDC :: sys_windows.HANDLE

    HMODULE ¶

    HMODULE :: sys_windows.HMODULE

    HMONITOR ¶

    HMONITOR :: sys_windows.HMONITOR

    HWND ¶

    HWND :: sys_windows.HWND

    IAdapter ¶

    IAdapter :: struct #raw_union {
    	idxgiobject:         IObject,
    	using idxgiadapter_vtable: ^IAdapter_VTable,
    }

    IAdapter1 ¶

    IAdapter1 :: struct #raw_union {
    	idxgiadapter:         IAdapter,
    	using idxgiadapter1_vtable: ^IAdapter1_VTable,
    }

    IAdapter1_VTable ¶

    IAdapter1_VTable :: struct {
    	using idxgiadapter_vtable: IAdapter_VTable,
    	GetDesc1:            proc "stdcall" (this: ^IAdapter1, pDesc: ^ADAPTER_DESC1) -> sys_windows.HRESULT,
    }

    IAdapter2 ¶

    IAdapter2 :: struct #raw_union {
    	idxgiadapter1:        IAdapter1,
    	using idxgiadapter2_vtable: ^IAdapter2_VTable,
    }

    IAdapter2_VTable ¶

    IAdapter2_VTable :: struct {
    	using idxgiadapter1_vtable: IAdapter1_VTable,
    	GetDesc2:             proc "stdcall" (this: ^IAdapter2, pDesc: ^ADAPTER_DESC2) -> sys_windows.HRESULT,
    }

    IAdapter3 ¶

    IAdapter3 :: struct #raw_union {
    	idxgiadapter2:        IAdapter2,
    	using idxgiadapter3_vtable: ^IAdapter3_VTable,
    }

    IAdapter3_VTable ¶

    IAdapter3_VTable :: struct {
    	using idxgiadapter2_vtable:                           IAdapter2_VTable,
    	RegisterHardwareContentProtectionTeardownStatusEvent: proc "stdcall" (this: ^IAdapter3, hEvent: sys_windows.HANDLE, pdwCookie: ^u32) -> sys_windows.HRESULT,
    	UnregisterHardwareContentProtectionTeardownStatus:    proc "stdcall" (this: ^IAdapter3, dwCookie: u32),
    	QueryVideoMemoryInfo:                                 proc "stdcall" (this: ^IAdapter3, NodeIndex: u32, MemorySegmentGroup: MEMORY_SEGMENT_GROUP, pVideoMemoryInfo: ^QUERY_VIDEO_MEMORY_INFO) -> sys_windows.HRESULT,
    	SetVideoMemoryReservation:                            proc "stdcall" (this: ^IAdapter3, NodeIndex: u32, MemorySegmentGroup: MEMORY_SEGMENT_GROUP, Reservation: u64) -> sys_windows.HRESULT,
    	RegisterVideoMemoryBudgetChangeNotificationEvent:     proc "stdcall" (this: ^IAdapter3, hEvent: sys_windows.HANDLE, pdwCookie: ^u32) -> sys_windows.HRESULT,
    	UnregisterVideoMemoryBudgetChangeNotification:        proc "stdcall" (this: ^IAdapter3, dwCookie: u32),
    }

    IAdapter_VTable ¶

    IAdapter_VTable :: struct {
    	using idxgiobject_vtable: IObject_VTable,
    	EnumOutputs:           proc "stdcall" (this: ^IAdapter, Output: u32, ppOutput: ^^IOutput) -> sys_windows.HRESULT,
    	GetDesc:               proc "stdcall" (this: ^IAdapter, pDesc: ^ADAPTER_DESC) -> sys_windows.HRESULT,
    	CheckInterfaceSupport: proc "stdcall" (this: ^IAdapter, InterfaceName: ^sys_windows.GUID, pUMDVersion: ^sys_windows.LARGE_INTEGER) -> sys_windows.HRESULT,
    }

    IDebug ¶

    IDebug :: struct #raw_union {
    	iunknown:          IUnknown,
    	using idxgidebug_vtable: ^IDebug_VTable,
    }

    IDebug1 ¶

    IDebug1 :: struct #raw_union {
    	idxgidebug:         IDebug,
    	using idxgidebug1_vtable: ^IDebug1_VTable,
    }

    IDebug1_VTable ¶

    IDebug1_VTable :: struct {
    	using idxgidebug_vtable:        IDebug_VTable,
    	EnableLeakTrackingForThread:    proc "stdcall" (this: ^IDebug1),
    	DisableLeakTrackingForThread:   proc "stdcall" (this: ^IDebug1),
    	IsLeakTrackingEnabledForThread: proc "stdcall" (this: ^IDebug1) -> sys_windows.BOOL,
    }

    IDebug_VTable ¶

    IDebug_VTable :: struct {
    	using iunknown_vtable: IUnknown_VTable,
    	ReportLiveObjects: proc "stdcall" (this: ^IDebug, apiid: sys_windows.GUID, flags: DEBUG_RLO_FLAGS),
    }

    IDecodeSwapChain ¶

    IDecodeSwapChain :: struct #raw_union {
    	iunknown:                    IUnknown,
    	using idxgidecodeswapchain_vtable: ^IDecodeSwapChain_VTable,
    }

    IDecodeSwapChain_VTable ¶

    IDecodeSwapChain_VTable :: struct {
    	using iunknown_vtable: IUnknown_VTable,
    	PresentBuffer:   proc "stdcall" (this: ^IDecodeSwapChain, BufferToPresent: u32, SyncInterval: u32, Flags: PRESENT) -> sys_windows.HRESULT,
    	SetSourceRect:   proc "stdcall" (this: ^IDecodeSwapChain, pRect: ^sys_windows.RECT) -> sys_windows.HRESULT,
    	SetTargetRect:   proc "stdcall" (this: ^IDecodeSwapChain, pRect: ^sys_windows.RECT) -> sys_windows.HRESULT,
    	SetDestSize:     proc "stdcall" (this: ^IDecodeSwapChain, Width: u32, Height: u32) -> sys_windows.HRESULT,
    	GetSourceRect:   proc "stdcall" (this: ^IDecodeSwapChain, pRect: ^sys_windows.RECT) -> sys_windows.HRESULT,
    	GetTargetRect:   proc "stdcall" (this: ^IDecodeSwapChain, pRect: ^sys_windows.RECT) -> sys_windows.HRESULT,
    	GetDestSize:     proc "stdcall" (this: ^IDecodeSwapChain, pWidth: ^u32, pHeight: ^u32) -> sys_windows.HRESULT,
    	SetColorSpace:   proc "stdcall" (this: ^IDecodeSwapChain, ColorSpace: MULTIPLANE_OVERLAY_YCbCr) -> sys_windows.HRESULT,
    	GetColorSpace:   proc "stdcall" (this: ^IDecodeSwapChain) -> MULTIPLANE_OVERLAY_YCbCr,
    }

    IDevice ¶

    IDevice :: struct #raw_union {
    	idxgiobject:        IObject,
    	using idxgidevice_vtable: ^IDevice_VTable,
    }

    IDevice1 ¶

    IDevice1 :: struct #raw_union {
    	idxgidevice:         IDevice,
    	using idxgidevice1_vtable: ^IDevice1_VTable,
    }

    IDevice1_VTable ¶

    IDevice1_VTable :: struct {
    	using idxgidevice_vtable: IDevice_VTable,
    	SetMaximumFrameLatency: proc "stdcall" (this: ^IDevice1, MaxLatency: u32) -> sys_windows.HRESULT,
    	GetMaximumFrameLatency: proc "stdcall" (this: ^IDevice1, pMaxLatency: ^u32) -> sys_windows.HRESULT,
    }

    IDevice2 ¶

    IDevice2 :: struct #raw_union {
    	idxgidevice1:        IDevice1,
    	using idxgidevice2_vtable: ^IDevice2_VTable,
    }

    IDevice2_VTable ¶

    IDevice2_VTable :: struct {
    	using idxgidevice1_vtable: IDevice1_VTable,
    	OfferResources:      proc "stdcall" (this: ^IDevice2, NumResources: u32, ppResources: ^^IResource, Priority: OFFER_RESOURCE_PRIORITY) -> sys_windows.HRESULT,
    	ReclaimResources:    proc "stdcall" (this: ^IDevice2, NumResources: u32, ppResources: ^^IResource, pDiscarded: ^sys_windows.BOOL) -> sys_windows.HRESULT,
    	EnqueueSetEvent:     proc "stdcall" (this: ^IDevice2, hEvent: sys_windows.HANDLE) -> sys_windows.HRESULT,
    }

    IDevice3 ¶

    IDevice3 :: struct #raw_union {
    	idxgidevice2:        IDevice2,
    	using idxgidevice3_vtable: ^IDevice3_VTable,
    }

    IDevice3_VTable ¶

    IDevice3_VTable :: struct {
    	using idxgidevice2_vtable: IDevice2_VTable,
    	Trim:                proc "stdcall" (this: ^IDevice3),
    }

    IDeviceSubObject ¶

    IDeviceSubObject :: struct #raw_union {
    	idxgiobject:                 IObject,
    	using idxgidevicesubobject_vtable: ^IDeviceSubObject_VTable,
    }

    IDeviceSubObject_VTable ¶

    IDeviceSubObject_VTable :: struct {
    	using idxgiobject_vtable: IObject_VTable,
    	GetDevice:          proc "stdcall" (this: ^IDeviceSubObject, riid: ^sys_windows.GUID, ppDevice: ^rawptr) -> sys_windows.HRESULT,
    }

    IDevice_VTable ¶

    IDevice_VTable :: struct {
    	using idxgiobject_vtable: IObject_VTable,
    	GetAdapter:             proc "stdcall" (this: ^IDevice, pAdapter: ^^IAdapter) -> sys_windows.HRESULT,
    	CreateSurface:          proc "stdcall" (this: ^IDevice, pDesc: ^SURFACE_DESC, NumSurfaces: u32, Usage: USAGE, pSharedResource: ^SHARED_RESOURCE, ppSurface: ^^ISurface) -> sys_windows.HRESULT,
    	QueryResourceResidency: proc "stdcall" (this: ^IDevice, ppResources: ^^IUnknown, pResidencyStatus: ^RESIDENCY, NumResources: u32) -> sys_windows.HRESULT,
    	SetGPUThreadPriority:   proc "stdcall" (this: ^IDevice, Priority: i32) -> sys_windows.HRESULT,
    	GetGPUThreadPriority:   proc "stdcall" (this: ^IDevice, pPriority: ^i32) -> sys_windows.HRESULT,
    }

    IDisplayControl ¶

    IDisplayControl :: struct #raw_union {
    	iunknown:                   IUnknown,
    	using idxgidisplaycontrol_vtable: ^IDisplayControl_VTable,
    }

    IDisplayControl_VTable ¶

    IDisplayControl_VTable :: struct {
    	using iunknown_vtable: IUnknown_VTable,
    	IsStereoEnabled:  proc "stdcall" (this: ^IDisplayControl) -> sys_windows.BOOL,
    	SetStereoEnabled: proc "stdcall" (this: ^IDisplayControl, enabled: sys_windows.BOOL),
    }

    IFactory ¶

    IFactory :: struct #raw_union {
    	idxgiobject:         IObject,
    	using idxgifactory_vtable: ^IFactory_VTable,
    }

    IFactory1 ¶

    IFactory1 :: struct #raw_union {
    	idxgifactory:         IFactory,
    	using idxgifactory1_vtable: ^IFactory1_VTable,
    }

    IFactory1_VTable ¶

    IFactory1_VTable :: struct {
    	using idxgifactory_vtable: IFactory_VTable,
    	EnumAdapters1:       proc "stdcall" (this: ^IFactory1, Adapter: u32, ppAdapter: ^^IAdapter1) -> sys_windows.HRESULT,
    	IsCurrent:           proc "stdcall" (this: ^IFactory1) -> sys_windows.BOOL,
    }

    IFactory2 ¶

    IFactory2 :: struct #raw_union {
    	idxgifactory1:        IFactory1,
    	using idxgifactory2_vtable: ^IFactory2_VTable,
    }

    IFactory2_VTable ¶

    IFactory2_VTable :: struct {
    	using idxgifactory1_vtable:    IFactory1_VTable,
    	IsWindowedStereoEnabled:       proc "stdcall" (this: ^IFactory2) -> sys_windows.BOOL,
    	CreateSwapChainForHwnd:        proc "stdcall" (this: ^IFactory2, pDevice: ^IUnknown, hWnd: sys_windows.HWND, pDesc: ^SWAP_CHAIN_DESC1, pFullscreenDesc: ^SWAP_CHAIN_FULLSCREEN_DESC, pRestrictToOutput: ^IOutput, ppSwapChain: ^^ISwapChain1) -> sys_windows.HRESULT,
    	CreateSwapChainForCoreWindow:  proc "stdcall" (this: ^IFactory2, pDevice: ^IUnknown, pWindow: ^IUnknown, pDesc: ^SWAP_CHAIN_DESC1, pRestrictToOutput: ^IOutput, ppSwapChain: ^^ISwapChain1) -> sys_windows.HRESULT,
    	GetSharedResourceAdapterLuid:  proc "stdcall" (this: ^IFactory2, hResource: sys_windows.HANDLE, pLuid: ^sys_windows.LUID) -> sys_windows.HRESULT,
    	RegisterStereoStatusWindow:    proc "stdcall" (this: ^IFactory2, WindowHandle: sys_windows.HWND, wMsg: u32, pdwCookie: ^u32) -> sys_windows.HRESULT,
    	RegisterStereoStatusEvent:     proc "stdcall" (this: ^IFactory2, hEvent: sys_windows.HANDLE, pdwCookie: ^u32) -> sys_windows.HRESULT,
    	UnregisterStereoStatus:        proc "stdcall" (this: ^IFactory2, dwCookie: u32),
    	RegisterOcclusionStatusWindow: proc "stdcall" (this: ^IFactory2, WindowHandle: sys_windows.HWND, wMsg: u32, pdwCookie: ^u32) -> sys_windows.HRESULT,
    	RegisterOcclusionStatusEvent:  proc "stdcall" (this: ^IFactory2, hEvent: sys_windows.HANDLE, pdwCookie: ^u32) -> sys_windows.HRESULT,
    	UnregisterOcclusionStatus:     proc "stdcall" (this: ^IFactory2, dwCookie: u32),
    	CreateSwapChainForComposition: proc "stdcall" (this: ^IFactory2, pDevice: ^IUnknown, pDesc: ^SWAP_CHAIN_DESC1, pRestrictToOutput: ^IOutput, ppSwapChain: ^^ISwapChain1) -> sys_windows.HRESULT,
    }

    IFactory3 ¶

    IFactory3 :: struct #raw_union {
    	idxgifactory2:        IFactory2,
    	using idxgifactory3_vtable: ^IFactory3_VTable,
    }

    IFactory3_VTable ¶

    IFactory3_VTable :: struct {
    	using idxgifactory2_vtable: IFactory2_VTable,
    	GetCreationFlags:     proc "stdcall" (this: ^IFactory3) -> CREATE_FACTORY,
    }

    IFactory4 ¶

    IFactory4 :: struct #raw_union {
    	idxgifactory3:        IFactory3,
    	using idxgifactory4_vtable: ^IFactory4_VTable,
    }

    IFactory4_VTable ¶

    IFactory4_VTable :: struct {
    	using idxgifactory3_vtable: IFactory3_VTable,
    	EnumAdapterByLuid:    proc "stdcall" (this: ^IFactory4, AdapterLuid: sys_windows.LUID, riid: ^sys_windows.GUID, ppvAdapter: ^rawptr) -> sys_windows.HRESULT,
    	EnumWarpAdapter:      proc "stdcall" (this: ^IFactory4, riid: ^sys_windows.GUID, ppvAdapter: ^rawptr) -> sys_windows.HRESULT,
    }

    IFactoryMedia ¶

    IFactoryMedia :: struct #raw_union {
    	iunknown:                 IUnknown,
    	using idxgifactorymedia_vtable: ^IFactoryMedia_VTable,
    }

    IFactoryMedia_VTable ¶

    IFactoryMedia_VTable :: struct {
    	using iunknown_vtable:                            IUnknown_VTable,
    	CreateSwapChainForCompositionSurfaceHandle:       proc "stdcall" (this: ^IFactoryMedia, pDevice: ^IUnknown, hSurface: sys_windows.HANDLE, pDesc: ^SWAP_CHAIN_DESC1, pRestrictToOutput: ^IOutput, ppSwapChain: ^^ISwapChain1) -> sys_windows.HRESULT,
    	CreateDecodeSwapChainForCompositionSurfaceHandle: proc "stdcall" (this: ^IFactoryMedia, pDevice: ^IUnknown, hSurface: sys_windows.HANDLE, pDesc: ^DECODE_SWAP_CHAIN_DESC, pYuvDecodeBuffers: ^IResource, pRestrictToOutput: ^IOutput, ppSwapChain: ^^IDecodeSwapChain) -> sys_windows.HRESULT,
    }

    IFactory_VTable ¶

    IFactory_VTable :: struct {
    	using idxgiobject_vtable: IObject_VTable,
    	EnumAdapters:          proc "stdcall" (this: ^IFactory, Adapter: u32, ppAdapter: ^^IAdapter) -> sys_windows.HRESULT,
    	MakeWindowAssociation: proc "stdcall" (this: ^IFactory, WindowHandle: sys_windows.HWND, Flags: MWA) -> sys_windows.HRESULT,
    	GetWindowAssociation:  proc "stdcall" (this: ^IFactory, pWindowHandle: ^sys_windows.HWND) -> sys_windows.HRESULT,
    	CreateSwapChain:       proc "stdcall" (this: ^IFactory, pDevice: ^IUnknown, pDesc: ^SWAP_CHAIN_DESC, ppSwapChain: ^^ISwapChain) -> sys_windows.HRESULT,
    	CreateSoftwareAdapter: proc "stdcall" (this: ^IFactory, Module: sys_windows.HMODULE, ppAdapter: ^^IAdapter) -> sys_windows.HRESULT,
    }

    IID ¶

    IID :: sys_windows.GUID

    IInfoQueue ¶

    IInfoQueue :: struct #raw_union {
    	iunknown:              IUnknown,
    	using idxgiinfoqueue_vtable: ^IInfoQueue_VTable,
    }

    IInfoQueue_VTable ¶

    IInfoQueue_VTable :: struct {
    	using iunknown_vtable:                         IUnknown_VTable,
    	SetMessageCountLimit:                          proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID, MessageCountLimit: u64) -> sys_windows.HRESULT,
    	ClearStoredMessages:                           proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID),
    	GetMessage:                                    proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID, MessageIndex: u64, pMessage: ^INFO_QUEUE_MESSAGE, pMessageByteLength: ^uint) -> sys_windows.HRESULT,
    	GetNumStoredMessagesAllowedByRetrievalFilters: proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID) -> u64,
    	GetNumStoredMessages:                          proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID) -> u64,
    	GetNumMessagesDiscardedByMessageCountLimit:    proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID) -> u64,
    	GetMessageCountLimit:                          proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID) -> u64,
    	GetNumMessagesAllowedByStorageFilter:          proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID) -> u64,
    	GetNumMessagesDeniedByStorageFilter:           proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID) -> u64,
    	AddStorageFilterEntries:                       proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID, pFilter: INFO_QUEUE_FILTER) -> sys_windows.HRESULT,
    	GetStorageFilter:                              proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID, pFilter: ^INFO_QUEUE_FILTER, pFilterByteLength: ^uint) -> sys_windows.HRESULT,
    	ClearStorageFilter:                            proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID),
    	PushEmptyStorageFilter:                        proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID) -> sys_windows.HRESULT,
    	PushDenyAllStorageFilter:                      proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID) -> sys_windows.HRESULT,
    	PushCopyOfStorageFilter:                       proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID) -> sys_windows.HRESULT,
    	PushStorageFilter:                             proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID, pFilter: ^INFO_QUEUE_FILTER) -> sys_windows.HRESULT,
    	PopStorageFilter:                              proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID),
    	GetStorageFilterStackSize:                     proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID) -> u32,
    	AddRetrievalFilterEntries:                     proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID, pFilter: ^INFO_QUEUE_FILTER) -> sys_windows.HRESULT,
    	GetRetrievalFilter:                            proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID, pFilter: ^INFO_QUEUE_FILTER, pFilterByteLength: ^uint) -> sys_windows.HRESULT,
    	ClearRetrievalFilter:                          proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID),
    	PushEmptyRetrievalFilter:                      proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID) -> sys_windows.HRESULT,
    	PushDenyAllRetrievalFilter:                    proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID) -> sys_windows.HRESULT,
    	PushCopyOfRetrievalFilter:                     proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID) -> sys_windows.HRESULT,
    	PushRetrievalFilter:                           proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID, pFilter: ^INFO_QUEUE_FILTER) -> sys_windows.HRESULT,
    	PopRetrievalFilter:                            proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID),
    	GetRetrievalFilterStackSize:                   proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID) -> u32,
    	AddMessage:                                    proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID, Category: INFO_QUEUE_MESSAGE_CATEGORY, Severity: INFO_QUEUE_MESSAGE_SEVERITY, ID: i32, pDescription: cstring) -> sys_windows.HRESULT,
    	AddApplicationMessage:                         proc "stdcall" (this: ^IInfoQueue, Severity: INFO_QUEUE_MESSAGE_SEVERITY, pDescription: cstring) -> sys_windows.HRESULT,
    	SetBreakOnCategory:                            proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID, Category: INFO_QUEUE_MESSAGE_CATEGORY, bEnable: sys_windows.BOOL) -> sys_windows.HRESULT,
    	SetBreakOnSeverity:                            proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID, Severity: INFO_QUEUE_MESSAGE_SEVERITY, bEnable: sys_windows.BOOL) -> sys_windows.HRESULT,
    	SetBreakOnID:                                  proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID, ID: i32, bEnable: sys_windows.BOOL) -> sys_windows.HRESULT,
    	GetBreakOnCategory:                            proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID, Category: INFO_QUEUE_MESSAGE_CATEGORY) -> sys_windows.BOOL,
    	GetBreakOnSeverity:                            proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID, Severity: INFO_QUEUE_MESSAGE_SEVERITY) -> sys_windows.BOOL,
    	GetBreakOnID:                                  proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID, ID: i32) -> sys_windows.BOOL,
    	SetMuteDebugOutput:                            proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID, bMute: sys_windows.BOOL),
    	GetMuteDebugOutput:                            proc "stdcall" (this: ^IInfoQueue, Producer: sys_windows.GUID) -> sys_windows.BOOL,
    }

    IKeyedMutex ¶

    IKeyedMutex :: struct #raw_union {
    	idxgidevicesubobject:   IDeviceSubObject,
    	using idxgikeyedmutex_vtable: ^IKeyedMutex_VTable,
    }

    IKeyedMutex_VTable ¶

    IKeyedMutex_VTable :: struct {
    	using idxgidevicesubobject_vtable: IDeviceSubObject_VTable,
    	AcquireSync:                 proc "stdcall" (this: ^IKeyedMutex, Key: u64, dwMilliseconds: u32) -> sys_windows.HRESULT,
    	ReleaseSync:                 proc "stdcall" (this: ^IKeyedMutex, Key: u64) -> sys_windows.HRESULT,
    }

    INFO_QUEUE_FILTER ¶

    INFO_QUEUE_FILTER :: struct {
    	AllowList: INFO_QUEUE_FILTER_DESC,
    	DenyList:  INFO_QUEUE_FILTER_DESC,
    }

    INFO_QUEUE_FILTER_DESC ¶

    INFO_QUEUE_FILTER_DESC :: struct {
    	NumCategories: u32,
    	pCategoryList: [^]INFO_QUEUE_MESSAGE_CATEGORY,
    	NumSeverities: u32,
    	pSeverityList: [^]INFO_QUEUE_MESSAGE_SEVERITY,
    	NumIDs:        u32,
    	pIDList:       [^]i32,
    }

    INFO_QUEUE_MESSAGE ¶

    INFO_QUEUE_MESSAGE :: struct {
    	Producer:              sys_windows.GUID,
    	Category:              INFO_QUEUE_MESSAGE_CATEGORY,
    	Severity:              INFO_QUEUE_MESSAGE_SEVERITY,
    	ID:                    i32,
    	pDescription:          [^]u8,
    	DescriptionByteLength: uint,
    }

    INFO_QUEUE_MESSAGE_CATEGORY ¶

    INFO_QUEUE_MESSAGE_CATEGORY :: enum u32 {
    	UNKNOWN               = 0, 
    	MISCELLANEOUS         = 1, 
    	INITIALIZATION        = 2, 
    	CLEANUP               = 3, 
    	COMPILATION           = 4, 
    	STATE_CREATION        = 5, 
    	STATE_SETTING         = 6, 
    	STATE_GETTING         = 7, 
    	RESOURCE_MANIPULATION = 8, 
    	EXECUTION             = 9, 
    	SHADER                = 10, 
    }

    INFO_QUEUE_MESSAGE_ID ¶

    INFO_QUEUE_MESSAGE_ID :: i32

    INFO_QUEUE_MESSAGE_SEVERITY ¶

    INFO_QUEUE_MESSAGE_SEVERITY :: enum u32 {
    	CORRUPTION = 0, 
    	ERROR      = 1, 
    	WARNING    = 2, 
    	INFO       = 3, 
    	MESSAGE    = 4, 
    }

    IObject ¶

    IObject :: struct #raw_union {
    	iunknown: IUnknown,
    	using vtable: ^IObject_VTable,
    }

    IObject_VTable ¶

    IObject_VTable :: struct {
    	using iunknown_vtable:   IUnknown_VTable,
    	SetPrivateData:          proc "stdcall" (this: ^IObject, Name: ^sys_windows.GUID, DataSize: u32, pData: rawptr) -> sys_windows.HRESULT,
    	SetPrivateDataInterface: proc "stdcall" (this: ^IObject, Name: ^sys_windows.GUID, pUnknown: ^IUnknown) -> sys_windows.HRESULT,
    	GetPrivateData:          proc "stdcall" (this: ^IObject, Name: ^sys_windows.GUID, pDataSize: ^u32, pData: rawptr) -> sys_windows.HRESULT,
    	GetParent:               proc "stdcall" (this: ^IObject, riid: ^sys_windows.GUID, ppParent: ^rawptr) -> sys_windows.HRESULT,
    }

    IOutput ¶

    IOutput :: struct #raw_union {
    	idxgiobject:        IObject,
    	using idxgioutput_vtable: ^IOutput_VTable,
    }

    IOutput1 ¶

    IOutput1 :: struct #raw_union {
    	idxgioutput:         IOutput,
    	using idxgioutput1_vtable: ^IOutput1_VTable,
    }

    IOutput1_VTable ¶

    IOutput1_VTable :: struct {
    	using idxgioutput_vtable: IOutput_VTable,
    	GetDisplayModeList1:      proc "stdcall" (this: ^IOutput1, EnumFormat: FORMAT, Flags: ENUM_MODES, pNumModes: ^u32, pDesc: ^MODE_DESC1) -> sys_windows.HRESULT,
    	FindClosestMatchingMode1: proc "stdcall" (this: ^IOutput1, pModeToMatch: ^MODE_DESC1, pClosestMatch: ^MODE_DESC1, pConcernedDevice: ^IUnknown) -> sys_windows.HRESULT,
    	GetDisplaySurfaceData1:   proc "stdcall" (this: ^IOutput1, pDestination: ^IResource) -> sys_windows.HRESULT,
    	DuplicateOutput:          proc "stdcall" (this: ^IOutput1, pDevice: ^IUnknown, ppOutputDuplication: ^^IOutputDuplication) -> sys_windows.HRESULT,
    }

    IOutput2 ¶

    IOutput2 :: struct #raw_union {
    	idxgioutput1:        IOutput1,
    	using idxgioutput2_vtable: ^IOutput2_VTable,
    }

    IOutput2_VTable ¶

    IOutput2_VTable :: struct {
    	using idxgioutput1_vtable: IOutput1_VTable,
    	SupportsOverlays:    proc "stdcall" (this: ^IOutput2) -> sys_windows.BOOL,
    }

    IOutput3 ¶

    IOutput3 :: struct #raw_union {
    	idxgioutput2:        IOutput2,
    	using idxgioutput3_vtable: ^IOutput3_VTable,
    }

    IOutput3_VTable ¶

    IOutput3_VTable :: struct {
    	using idxgioutput2_vtable: IOutput2_VTable,
    	CheckOverlaySupport: proc "stdcall" (this: ^IOutput3, EnumFormat: FORMAT, pConcernedDevice: ^IUnknown, pFlags: ^OVERLAY_SUPPORT) -> sys_windows.HRESULT,
    }

    IOutput4 ¶

    IOutput4 :: struct #raw_union {
    	idxgioutput3:        IOutput3,
    	using idxgioutput4_vtable: ^IOutput4_VTable,
    }

    IOutput4_VTable ¶

    IOutput4_VTable :: struct {
    	using idxgioutput3_vtable:     IOutput3_VTable,
    	CheckOverlayColorSpaceSupport: proc "stdcall" (this: ^IOutput4, Format: FORMAT, ColorSpace: COLOR_SPACE_TYPE, pConcernedDevice: ^IUnknown, pFlags: ^OVERLAY_COLOR_SPACE_SUPPORT) -> sys_windows.HRESULT,
    }

    IOutputDuplication ¶

    IOutputDuplication :: struct #raw_union {
    	idxgiobject:                   IObject,
    	using idxgioutputduplication_vtable: ^IOutputDuplication_VTable,
    }

    IOutputDuplication_VTable ¶

    IOutputDuplication_VTable :: struct {
    	using idxgiobject_vtable: IObject_VTable,
    	GetDesc:              proc "stdcall" (this: ^IOutputDuplication, pDesc: ^OUTDUPL_DESC),
    	AcquireNextFrame:     proc "stdcall" (this: ^IOutputDuplication, TimeoutInMilliseconds: u32, pFrameInfo: ^OUTDUPL_FRAME_INFO, ppDesktopResource: ^^IResource) -> sys_windows.HRESULT,
    	GetFrameDirtyRects:   proc "stdcall" (this: ^IOutputDuplication, DirtyRectsBufferSize: u32, pDirtyRectsBuffer: ^sys_windows.RECT, pDirtyRectsBufferSizeRequired: ^u32) -> sys_windows.HRESULT,
    	GetFrameMoveRects:    proc "stdcall" (this: ^IOutputDuplication, MoveRectsBufferSize: u32, pMoveRectBuffer: ^OUTDUPL_MOVE_RECT, pMoveRectsBufferSizeRequired: ^u32) -> sys_windows.HRESULT,
    	GetFramePointerShape: proc "stdcall" (this: ^IOutputDuplication, PointerShapeBufferSize: u32, pPointerShapeBuffer: rawptr, pPointerShapeBufferSizeRequired: ^u32, pPointerShapeInfo: ^OUTDUPL_POINTER_SHAPE_INFO) -> sys_windows.HRESULT,
    	MapDesktopSurface:    proc "stdcall" (this: ^IOutputDuplication, pLockedRect: ^MAPPED_RECT) -> sys_windows.HRESULT,
    	UnMapDesktopSurface:  proc "stdcall" (this: ^IOutputDuplication) -> sys_windows.HRESULT,
    	ReleaseFrame:         proc "stdcall" (this: ^IOutputDuplication) -> sys_windows.HRESULT,
    }

    IOutput_VTable ¶

    IOutput_VTable :: struct {
    	using idxgiobject_vtable:    IObject_VTable,
    	GetDesc:                     proc "stdcall" (this: ^IOutput, pDesc: ^OUTPUT_DESC) -> sys_windows.HRESULT,
    	GetDisplayModeList:          proc "stdcall" (this: ^IOutput, EnumFormat: FORMAT, Flags: ENUM_MODES, pNumModes: ^u32, pDesc: ^MODE_DESC) -> sys_windows.HRESULT,
    	FindClosestMatchingMode:     proc "stdcall" (this: ^IOutput, pModeToMatch: ^MODE_DESC, pClosestMatch: ^MODE_DESC, pConcernedDevice: ^IUnknown) -> sys_windows.HRESULT,
    	WaitForVBlank:               proc "stdcall" (this: ^IOutput) -> sys_windows.HRESULT,
    	TakeOwnership:               proc "stdcall" (this: ^IOutput, pDevice: ^IUnknown, Exclusive: sys_windows.BOOL) -> sys_windows.HRESULT,
    	ReleaseOwnership:            proc "stdcall" (this: ^IOutput),
    	GetGammaControlCapabilities: proc "stdcall" (this: ^IOutput, pGammaCaps: ^GAMMA_CONTROL_CAPABILITIES) -> sys_windows.HRESULT,
    	SetGammaControl:             proc "stdcall" (this: ^IOutput, pArray: ^GAMMA_CONTROL) -> sys_windows.HRESULT,
    	GetGammaControl:             proc "stdcall" (this: ^IOutput, pArray: ^GAMMA_CONTROL) -> sys_windows.HRESULT,
    	SetDisplaySurface:           proc "stdcall" (this: ^IOutput, pScanoutSurface: ^ISurface) -> sys_windows.HRESULT,
    	GetDisplaySurfaceData:       proc "stdcall" (this: ^IOutput, pDestination: ^ISurface) -> sys_windows.HRESULT,
    	GetFrameStatistics:          proc "stdcall" (this: ^IOutput, pStats: ^FRAME_STATISTICS) -> sys_windows.HRESULT,
    }

    IResource ¶

    IResource :: struct #raw_union {
    	idxgidevicesubobject: IDeviceSubObject,
    	using idxgiresource_vtable: ^IResource_VTable,
    }

    IResource1 ¶

    IResource1 :: struct #raw_union {
    	idxgiresource:         IResource,
    	using idxgiresource1_vtable: ^IResource1_VTable,
    }

    IResource1_VTable ¶

    IResource1_VTable :: struct {
    	using idxgiresource_vtable: IResource_VTable,
    	CreateSubresourceSurface: proc "stdcall" (this: ^IResource1, index: u32, ppSurface: ^^ISurface2) -> sys_windows.HRESULT,
    	CreateSharedHandle:       proc "stdcall" (this: ^IResource1, pAttributes: ^sys_windows.SECURITY_ATTRIBUTES, dwAccess: SHARED_RESOURCE_RW, lpName: ^i16, pHandle: ^sys_windows.HANDLE) -> sys_windows.HRESULT,
    }

    IResource_VTable ¶

    IResource_VTable :: struct {
    	using idxgidevicesubobject_vtable: IDeviceSubObject_VTable,
    	GetSharedHandle:             proc "stdcall" (this: ^IResource, pSharedHandle: ^sys_windows.HANDLE) -> sys_windows.HRESULT,
    	GetUsage:                    proc "stdcall" (this: ^IResource, pUsage: ^USAGE) -> sys_windows.HRESULT,
    	SetEvictionPriority:         proc "stdcall" (this: ^IResource, EvictionPriority: RESOURCE_PRIORITY) -> sys_windows.HRESULT,
    	GetEvictionPriority:         proc "stdcall" (this: ^IResource, pEvictionPriority: ^RESOURCE_PRIORITY) -> sys_windows.HRESULT,
    }

    ISurface ¶

    ISurface :: struct #raw_union {
    	idxgidevicesubobject: IDeviceSubObject,
    	using idxgisurface_vtable: ^ISurface_VTable,
    }

    ISurface1 ¶

    ISurface1 :: struct #raw_union {
    	idxgisurface:         ISurface,
    	using idxgisurface1_vtable: ^ISurface1_VTable,
    }

    ISurface1_VTable ¶

    ISurface1_VTable :: struct {
    	using idxgisurface_vtable: ISurface_VTable,
    	GetDC:               proc "stdcall" (this: ^ISurface1, Discard: sys_windows.BOOL, phdc: ^sys_windows.HANDLE) -> sys_windows.HRESULT,
    	ReleaseDC:           proc "stdcall" (this: ^ISurface1, pDirtyRect: ^sys_windows.RECT) -> sys_windows.HRESULT,
    }

    ISurface2 ¶

    ISurface2 :: struct #raw_union {
    	idxgisurface1:        ISurface1,
    	using idxgisurface2_vtable: ^ISurface2_VTable,
    }

    ISurface2_VTable ¶

    ISurface2_VTable :: struct {
    	using idxgisurface1_vtable: ISurface1_VTable,
    	GetResource:          proc "stdcall" (this: ^ISurface2, riid: ^sys_windows.GUID, ppParentResource: ^rawptr, pSubresourceIndex: ^u32) -> sys_windows.HRESULT,
    }

    ISurface_VTable ¶

    ISurface_VTable :: struct {
    	using idxgidevicesubobject_vtable: IDeviceSubObject_VTable,
    	GetDesc:                     proc "stdcall" (this: ^ISurface, pDesc: ^SURFACE_DESC) -> sys_windows.HRESULT,
    	Map:                         proc "stdcall" (this: ^ISurface, pLockedRect: ^MAPPED_RECT, MapFlags: MAP) -> sys_windows.HRESULT,
    	Unmap:                       proc "stdcall" (this: ^ISurface) -> sys_windows.HRESULT,
    }

    ISwapChain ¶

    ISwapChain :: struct #raw_union {
    	idxgidevicesubobject:  IDeviceSubObject,
    	using idxgiswapchain_vtable: ^ISwapChain_VTable,
    }

    ISwapChain1 ¶

    ISwapChain1 :: struct #raw_union {
    	idxgiswapchain:         ISwapChain,
    	using idxgiswapchain1_vtable: ^ISwapChain1_VTable,
    }

    ISwapChain1_VTable ¶

    ISwapChain1_VTable :: struct {
    	using idxgiswapchain_vtable: ISwapChain_VTable,
    	GetDesc1:                 proc "stdcall" (this: ^ISwapChain1, pDesc: ^SWAP_CHAIN_DESC1) -> sys_windows.HRESULT,
    	GetFullscreenDesc:        proc "stdcall" (this: ^ISwapChain1, pDesc: ^SWAP_CHAIN_FULLSCREEN_DESC) -> sys_windows.HRESULT,
    	GetHwnd:                  proc "stdcall" (this: ^ISwapChain1, pHwnd: ^sys_windows.HWND) -> sys_windows.HRESULT,
    	GetCoreWindow:            proc "stdcall" (this: ^ISwapChain1, refiid: ^sys_windows.GUID, ppUnk: ^rawptr) -> sys_windows.HRESULT,
    	Present1:                 proc "stdcall" (this: ^ISwapChain1, SyncInterval: u32, PresentFlags: PRESENT, pPresentParameters: ^PRESENT_PARAMETERS) -> sys_windows.HRESULT,
    	IsTemporaryMonoSupported: proc "stdcall" (this: ^ISwapChain1) -> sys_windows.BOOL,
    	GetRestrictToOutput:      proc "stdcall" (this: ^ISwapChain1, ppRestrictToOutput: ^^IOutput) -> sys_windows.HRESULT,
    	SetBackgroundColor:       proc "stdcall" (this: ^ISwapChain1, pColor: ^D3DCOLORVALUE) -> sys_windows.HRESULT,
    	GetBackgroundColor:       proc "stdcall" (this: ^ISwapChain1, pColor: ^D3DCOLORVALUE) -> sys_windows.HRESULT,
    	SetRotation:              proc "stdcall" (this: ^ISwapChain1, Rotation: MODE_ROTATION) -> sys_windows.HRESULT,
    	GetRotation:              proc "stdcall" (this: ^ISwapChain1, pRotation: ^MODE_ROTATION) -> sys_windows.HRESULT,
    }

    ISwapChain2 ¶

    ISwapChain2 :: struct #raw_union {
    	idxgiswapchain1:        ISwapChain1,
    	using idxgiswapchain2_vtable: ^ISwapChain2_VTable,
    }

    ISwapChain2_VTable ¶

    ISwapChain2_VTable :: struct {
    	using idxgiswapchain1_vtable:  ISwapChain1_VTable,
    	SetSourceSize:                 proc "stdcall" (this: ^ISwapChain2, Width: u32, Height: u32) -> sys_windows.HRESULT,
    	GetSourceSize:                 proc "stdcall" (this: ^ISwapChain2, pWidth: ^u32, pHeight: ^u32) -> sys_windows.HRESULT,
    	SetMaximumFrameLatency:        proc "stdcall" (this: ^ISwapChain2, MaxLatency: u32) -> sys_windows.HRESULT,
    	GetMaximumFrameLatency:        proc "stdcall" (this: ^ISwapChain2, pMaxLatency: ^u32) -> sys_windows.HRESULT,
    	GetFrameLatencyWaitableObject: proc "stdcall" (this: ^ISwapChain2) -> sys_windows.HANDLE,
    	SetMatrixTransform:            proc "stdcall" (this: ^ISwapChain2, pMatrix: ^MATRIX_3X2_F) -> sys_windows.HRESULT,
    	GetMatrixTransform:            proc "stdcall" (this: ^ISwapChain2, pMatrix: ^MATRIX_3X2_F) -> sys_windows.HRESULT,
    }

    ISwapChain3 ¶

    ISwapChain3 :: struct #raw_union {
    	idxgiswapchain2:        ISwapChain2,
    	using idxgiswapchain3_vtable: ^ISwapChain3_VTable,
    }

    ISwapChain3_VTable ¶

    ISwapChain3_VTable :: struct {
    	using idxgiswapchain2_vtable: ISwapChain2_VTable,
    	GetCurrentBackBufferIndex: proc "stdcall" (this: ^ISwapChain3) -> u32,
    	CheckColorSpaceSupport:    proc "stdcall" (this: ^ISwapChain3, ColorSpace: COLOR_SPACE_TYPE, pColorSpaceSupport: ^SWAP_CHAIN_COLOR_SPACE_SUPPORT) -> sys_windows.HRESULT,
    	SetColorSpace1:            proc "stdcall" (this: ^ISwapChain3, ColorSpace: COLOR_SPACE_TYPE) -> sys_windows.HRESULT,
    	ResizeBuffers1:            proc "stdcall" (this: ^ISwapChain3, BufferCount: u32, Width: u32, Height: u32, Format: FORMAT, SwapChainFlags: SWAP_CHAIN, pCreationNodeMask: ^u32, ppPresentQueue: ^^IUnknown) -> sys_windows.HRESULT,
    }

    ISwapChainMedia ¶

    ISwapChainMedia :: struct #raw_union {
    	iunknown:                   IUnknown,
    	using idxgiswapchainmedia_vtable: ^ISwapChainMedia_VTable,
    }

    ISwapChainMedia_VTable ¶

    ISwapChainMedia_VTable :: struct {
    	using iunknown_vtable:       IUnknown_VTable,
    	GetFrameStatisticsMedia:     proc "stdcall" (this: ^ISwapChainMedia, pStats: ^FRAME_STATISTICS_MEDIA) -> sys_windows.HRESULT,
    	SetPresentDuration:          proc "stdcall" (this: ^ISwapChainMedia, Duration: u32) -> sys_windows.HRESULT,
    	CheckPresentDurationSupport: proc "stdcall" (this: ^ISwapChainMedia, DesiredPresentDuration: u32, pClosestSmallerPresentDuration: ^u32, pClosestLargerPresentDuration: ^u32) -> sys_windows.HRESULT,
    }

    ISwapChain_VTable ¶

    ISwapChain_VTable :: struct {
    	using idxgidevicesubobject_vtable: IDeviceSubObject_VTable,
    	Present:                     proc "stdcall" (this: ^ISwapChain, SyncInterval: u32, Flags: PRESENT) -> sys_windows.HRESULT,
    	GetBuffer:                   proc "stdcall" (this: ^ISwapChain, Buffer: u32, riid: ^sys_windows.GUID, ppSurface: ^rawptr) -> sys_windows.HRESULT,
    	SetFullscreenState:          proc "stdcall" (this: ^ISwapChain, Fullscreen: sys_windows.BOOL, pTarget: ^IOutput) -> sys_windows.HRESULT,
    	GetFullscreenState:          proc "stdcall" (this: ^ISwapChain, pFullscreen: ^sys_windows.BOOL, ppTarget: ^^IOutput) -> sys_windows.HRESULT,
    	GetDesc:                     proc "stdcall" (this: ^ISwapChain, pDesc: ^SWAP_CHAIN_DESC) -> sys_windows.HRESULT,
    	ResizeBuffers:               proc "stdcall" (this: ^ISwapChain, BufferCount: u32, Width: u32, Height: u32, NewFormat: FORMAT, SwapChainFlags: SWAP_CHAIN) -> sys_windows.HRESULT,
    	ResizeTarget:                proc "stdcall" (this: ^ISwapChain, pNewTargetParameters: ^MODE_DESC) -> sys_windows.HRESULT,
    	GetContainingOutput:         proc "stdcall" (this: ^ISwapChain, ppOutput: ^^IOutput) -> sys_windows.HRESULT,
    	GetFrameStatistics:          proc "stdcall" (this: ^ISwapChain, pStats: ^FRAME_STATISTICS) -> sys_windows.HRESULT,
    	GetLastPresentCount:         proc "stdcall" (this: ^ISwapChain, pLastPresentCount: ^u32) -> sys_windows.HRESULT,
    }

    IUnknown ¶

    IUnknown :: struct {
    	using _iunknown_vtable: ^IUnknown_VTable,
    }

    IUnknown_VTable ¶

    IUnknown_VTable :: struct {
    	QueryInterface: proc "stdcall" (this: ^IUnknown, riid: ^sys_windows.GUID, ppvObject: ^rawptr) -> sys_windows.HRESULT,
    	AddRef:         proc "stdcall" (this: ^IUnknown) -> u32,
    	Release:        proc "stdcall" (this: ^IUnknown) -> u32,
    }

    JPEG_AC_HUFFMAN_TABLE ¶

    JPEG_AC_HUFFMAN_TABLE :: struct {
    	CodeCounts: [16]u8,
    	CodeValues: [162]u8,
    }

    JPEG_DC_HUFFMAN_TABLE ¶

    JPEG_DC_HUFFMAN_TABLE :: struct {
    	CodeCounts: [12]u8,
    	CodeValues: [12]u8,
    }

    JPEG_QUANTIZATION_TABLE ¶

    JPEG_QUANTIZATION_TABLE :: struct {
    	Elements: [64]u8,
    }

    LARGE_INTEGER ¶

    LARGE_INTEGER :: sys_windows.LARGE_INTEGER

    LUID ¶

    LUID :: sys_windows.LUID

    MAP ¶

    MAP :: distinct bit_set[MAP_FLAG; u32]

    MAPPED_RECT ¶

    MAPPED_RECT :: struct {
    	Pitch: i32,
    	pBits: [^]u8,
    }

    MAP_FLAG ¶

    MAP_FLAG :: enum u32 {
    	READ    = 0, 
    	WRITE   = 1, 
    	DISCARD = 2, 
    }

    MATRIX_3X2_F ¶

    MATRIX_3X2_F :: struct {
    	_11: f32,
    	_12: f32,
    	_21: f32,
    	_22: f32,
    	_31: f32,
    	_32: f32,
    }

    MEMORY_SEGMENT_GROUP ¶

    MEMORY_SEGMENT_GROUP :: enum i32 {
    	LOCAL     = 0, 
    	NON_LOCAL = 1, 
    }

    MODE_DESC ¶

    MODE_DESC :: struct {
    	Width:            u32,
    	Height:           u32,
    	RefreshRate:      RATIONAL,
    	Format:           FORMAT,
    	ScanlineOrdering: MODE_SCANLINE_ORDER,
    	Scaling:          MODE_SCALING,
    }

    MODE_DESC1 ¶

    MODE_DESC1 :: struct {
    	Width:            u32,
    	Height:           u32,
    	RefreshRate:      RATIONAL,
    	Format:           FORMAT,
    	ScanlineOrdering: MODE_SCANLINE_ORDER,
    	Scaling:          MODE_SCALING,
    	Stereo:           sys_windows.BOOL,
    }

    MODE_ROTATION ¶

    MODE_ROTATION :: enum i32 {
    	UNSPECIFIED = 0, 
    	IDENTITY    = 1, 
    	ROTATE90    = 2, 
    	ROTATE180   = 3, 
    	ROTATE270   = 4, 
    }

    MODE_SCALING ¶

    MODE_SCALING :: enum i32 {
    	UNSPECIFIED = 0, 
    	CENTERED    = 1, 
    	STRETCHED   = 2, 
    }

    MODE_SCANLINE_ORDER ¶

    MODE_SCANLINE_ORDER :: enum i32 {
    	UNSPECIFIED       = 0, 
    	PROGRESSIVE       = 1, 
    	UPPER_FIELD_FIRST = 2, 
    	LOWER_FIELD_FIRST = 3, 
    }

    MULTIPLANE_OVERLAY_YCbCr ¶

    MULTIPLANE_OVERLAY_YCbCr :: distinct bit_set[MULTIPLANE_OVERLAY_YCbCr_FLAGS; u32]

    MULTIPLANE_OVERLAY_YCbCr_FLAGS ¶

    MULTIPLANE_OVERLAY_YCbCr_FLAGS :: enum u32 {
    	NOMINAL_RANGE = 0, 
    	BT709, 
    	xvYCC, 
    }

    MWA ¶

    MWA :: distinct bit_set[MWA_FLAG; u32]
    Related Constants

    MWA_FLAG ¶

    MWA_FLAG :: enum u32 {
    	NO_WINDOW_CHANGES = 0, 
    	NO_ALT_ENTER      = 1, 
    	NO_PRINT_SCREEN   = 2, 
    }

    OFFER_RESOURCE_PRIORITY ¶

    OFFER_RESOURCE_PRIORITY :: enum i32 {
    	LOW    = 1, 
    	NORMAL = 2, 
    	HIGH   = 3, 
    }

    OUTDUPL_DESC ¶

    OUTDUPL_DESC :: struct {
    	ModeDesc:                   MODE_DESC,
    	Rotation:                   MODE_ROTATION,
    	DesktopImageInSystemMemory: sys_windows.BOOL,
    }

    OUTDUPL_FRAME_INFO ¶

    OUTDUPL_FRAME_INFO :: struct {
    	LastPresentTime:           sys_windows.LARGE_INTEGER,
    	LastMouseUpdateTime:       sys_windows.LARGE_INTEGER,
    	AccumulatedFrames:         u32,
    	RectsCoalesced:            sys_windows.BOOL,
    	ProtectedContentMaskedOut: sys_windows.BOOL,
    	PointerPosition:           OUTDUPL_POINTER_POSITION,
    	TotalMetadataBufferSize:   u32,
    	PointerShapeBufferSize:    u32,
    }

    OUTDUPL_MOVE_RECT ¶

    OUTDUPL_MOVE_RECT :: struct {
    	SourcePoint:     sys_windows.POINT,
    	DestinationRect: sys_windows.RECT,
    }

    OUTDUPL_POINTER_POSITION ¶

    OUTDUPL_POINTER_POSITION :: struct {
    	Position: sys_windows.POINT,
    	Visible:  sys_windows.BOOL,
    }

    OUTDUPL_POINTER_SHAPE_INFO ¶

    OUTDUPL_POINTER_SHAPE_INFO :: struct {
    	Type:    OUTDUPL_POINTER_SHAPE_TYPE,
    	Width:   u32,
    	Height:  u32,
    	Pitch:   u32,
    	HotSpot: sys_windows.POINT,
    }

    OUTDUPL_POINTER_SHAPE_TYPE ¶

    OUTDUPL_POINTER_SHAPE_TYPE :: enum i32 {
    	MONOCHROME   = 1, 
    	COLOR        = 2, 
    	MASKED_COLOR = 4, 
    }

    OUTPUT_DESC ¶

    OUTPUT_DESC :: struct {
    	DeviceName:         [32]u16 "fmt:\"s,0\"",
    	DesktopCoordinates: sys_windows.RECT,
    	AttachedToDesktop:  sys_windows.BOOL,
    	Rotation:           MODE_ROTATION,
    	Monitor:            sys_windows.HMONITOR,
    }

    OVERLAY_COLOR_SPACE_SUPPORT ¶

    OVERLAY_COLOR_SPACE_SUPPORT :: distinct bit_set[OVERLAY_COLOR_SPACE_SUPPORT_FLAG; u32]

    OVERLAY_COLOR_SPACE_SUPPORT_FLAG ¶

    OVERLAY_COLOR_SPACE_SUPPORT_FLAG :: enum u32 {
    	PRESENT = 0, 
    }

    OVERLAY_SUPPORT ¶

    OVERLAY_SUPPORT :: distinct bit_set[OVERLAY_SUPPORT_FLAG; u32]

    OVERLAY_SUPPORT_FLAG ¶

    OVERLAY_SUPPORT_FLAG :: enum u32 {
    	DIRECT  = 0, 
    	SCALING = 1, 
    }

    POINT ¶

    POINT :: sys_windows.POINT

    PRESENT ¶

    PRESENT :: distinct bit_set[PRESENT_FLAG; u32]

    PRESENT_FLAG ¶

    PRESENT_FLAG :: enum u32 {
    	TEST                  = 0, 
    	DO_NOT_SEQUENCE       = 1, 
    	RESTART               = 2, 
    	DO_NOT_WAIT           = 3, 
    	STEREO_PREFER_RIGHT   = 4, 
    	STEREO_TEMPORARY_MONO = 5, 
    	RESTRICT_TO_OUTPUT    = 6, 
    	USE_DURATION          = 8, 
    	ALLOW_TEARING         = 9, 
    }

    PRESENT_PARAMETERS ¶

    PRESENT_PARAMETERS :: struct {
    	DirtyRectsCount: u32,
    	pDirtyRects:     [^]sys_windows.RECT,
    	pScrollRect:     ^sys_windows.RECT,
    	pScrollOffset:   ^sys_windows.POINT,
    }

    QUERY_VIDEO_MEMORY_INFO ¶

    QUERY_VIDEO_MEMORY_INFO :: struct {
    	Budget:                  u64,
    	CurrentUsage:            u64,
    	AvailableForReservation: u64,
    	CurrentReservation:      u64,
    }

    RATIONAL ¶

    RATIONAL :: struct {
    	Numerator:   u32,
    	Denominator: u32,
    }

    RECT ¶

    RECT :: sys_windows.RECT

    RESIDENCY ¶

    RESIDENCY :: enum i32 {
    	FULLY_RESIDENT            = 1, 
    	RESIDENT_IN_SHARED_MEMORY = 2, 
    	EVICTED_TO_DISK           = 3, 
    }

    RESOURCE_PRIORITY ¶

    RESOURCE_PRIORITY :: enum u32 {
    	MINIMUM = 671088640, 
    	LOW     = 1342177280, 
    	NORMAL  = 2013265920, 
    	HIGH    = 2684354560, 
    	MAXIMUM = 3355443200, 
    }

    RGB ¶

    RGB :: struct {
    	Red:   f32,
    	Green: f32,
    	Blue:  f32,
    }

    SAMPLE_DESC ¶

    SAMPLE_DESC :: struct {
    	Count:   u32,
    	Quality: u32,
    }

    SCALING ¶

    SCALING :: enum i32 {
    	STRETCH              = 0, 
    	NONE                 = 1, 
    	ASPECT_RATIO_STRETCH = 2, 
    }

    SHARED_RESOURCE ¶

    SHARED_RESOURCE :: struct {
    	Handle: sys_windows.HANDLE,
    }

    SHARED_RESOURCE_RW ¶

    SHARED_RESOURCE_RW :: distinct bit_set[SHARED_RESOURCE_RW_FLAG; u32]

    SHARED_RESOURCE_RW_FLAG ¶

    SHARED_RESOURCE_RW_FLAG :: enum u32 {
    	READ  = 31, 
    	WRITE = 0, 
    }

    SIZE ¶

    SIZE :: sys_windows.SIZE

    SURFACE_DESC ¶

    SURFACE_DESC :: struct {
    	Width:      u32,
    	Height:     u32,
    	Format:     FORMAT,
    	SampleDesc: SAMPLE_DESC,
    }

    SWAP_CHAIN ¶

    SWAP_CHAIN :: distinct bit_set[SWAP_CHAIN_FLAG; u32]

    SWAP_CHAIN_COLOR_SPACE_SUPPORT ¶

    SWAP_CHAIN_COLOR_SPACE_SUPPORT :: distinct bit_set[SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG; u32]

    SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG ¶

    SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG :: enum u32 {
    	PRESENT         = 0, 
    	OVERLAY_PRESENT = 1, 
    }

    SWAP_CHAIN_DESC ¶

    SWAP_CHAIN_DESC :: struct {
    	BufferDesc:   MODE_DESC,
    	SampleDesc:   SAMPLE_DESC,
    	BufferUsage:  USAGE,
    	BufferCount:  u32,
    	OutputWindow: sys_windows.HWND,
    	Windowed:     sys_windows.BOOL,
    	SwapEffect:   SWAP_EFFECT,
    	Flags:        SWAP_CHAIN,
    }

    SWAP_CHAIN_DESC1 ¶

    SWAP_CHAIN_DESC1 :: struct {
    	Width:       u32,
    	Height:      u32,
    	Format:      FORMAT,
    	Stereo:      sys_windows.BOOL,
    	SampleDesc:  SAMPLE_DESC,
    	BufferUsage: USAGE,
    	BufferCount: u32,
    	Scaling:     SCALING,
    	SwapEffect:  SWAP_EFFECT,
    	AlphaMode:   ALPHA_MODE,
    	Flags:       SWAP_CHAIN,
    }

    SWAP_CHAIN_FLAG ¶

    SWAP_CHAIN_FLAG :: enum u32 {
    	NONPREROTATED                          = 0, 
    	ALLOW_MODE_SWITCH, 
    	GDI_COMPATIBLE, 
    	RESTRICTED_CONTENT, 
    	RESTRICT_SHARED_RESOURCE_DRIVER, 
    	DISPLAY_ONLY, 
    	FRAME_LATENCY_WAITABLE_OBJECT, 
    	FOREGROUND_LAYER, 
    	FULLSCREEN_VIDEO, 
    	YUV_VIDEO, 
    	HW_PROTECTED, 
    	ALLOW_TEARING, 
    	RESTRICTED_TO_ALL_HOLOGRAPHIC_DISPLAYS, 
    }

    SWAP_CHAIN_FULLSCREEN_DESC ¶

    SWAP_CHAIN_FULLSCREEN_DESC :: struct {
    	RefreshRate:      RATIONAL,
    	ScanlineOrdering: MODE_SCANLINE_ORDER,
    	Scaling:          MODE_SCALING,
    	Windowed:         sys_windows.BOOL,
    }

    SWAP_EFFECT ¶

    SWAP_EFFECT :: enum i32 {
    	DISCARD         = 0, 
    	SEQUENTIAL      = 1, 
    	FLIP_SEQUENTIAL = 3, 
    	FLIP_DISCARD    = 4, 
    }

    UINT64 ¶

    UINT64 :: u64

    ULONG ¶

    ULONG :: u32

    USAGE ¶

    USAGE :: distinct bit_set[USAGE_FLAG; u32]

    USAGE_FLAG ¶

    USAGE_FLAG :: enum u32 {
    	SHADER_INPUT         = 4, 
    	RENDER_TARGET_OUTPUT = 5, 
    	BACK_BUFFER          = 6, 
    	SHARED               = 7, 
    	READ_ONLY            = 8, 
    	DISCARD_ON_PRESENT   = 9, 
    	UNORDERED_ACCESS     = 10, 
    }

    UUID ¶

    UUID :: sys_windows.GUID

    Constants

    CENTER_MULTISAMPLE_QUALITY_PATTERN ¶

    CENTER_MULTISAMPLE_QUALITY_PATTERN :: 0xfffffffe

    CREATE_FACTORY_DEBUG ¶

    CREATE_FACTORY_DEBUG :: 0x1

    ERROR_ACCESS_DENIED ¶

    ERROR_ACCESS_DENIED :: HRESULT(-2005270485)
     

    0x887A002B

    ERROR_ACCESS_LOST ¶

    ERROR_ACCESS_LOST :: HRESULT(-2005270490)
     

    0x887A0026

    ERROR_ALREADY_EXISTS ¶

    ERROR_ALREADY_EXISTS :: HRESULT(-2005270474)
     

    0x887A0036

    ERROR_CANNOT_PROTECT_CONTENT ¶

    ERROR_CANNOT_PROTECT_CONTENT :: HRESULT(-2005270486)
     

    0x887A002A

    ERROR_DEVICE_HUNG ¶

    ERROR_DEVICE_HUNG :: HRESULT(-2005270522)
     

    0x887A0006

    ERROR_DEVICE_REMOVED ¶

    ERROR_DEVICE_REMOVED :: HRESULT(-2005270523)
     

    0x887A0005

    ERROR_DEVICE_RESET ¶

    ERROR_DEVICE_RESET :: HRESULT(-2005270521)
     

    0x887A0007

    ERROR_DRIVER_INTERNAL_ERROR ¶

    ERROR_DRIVER_INTERNAL_ERROR :: HRESULT(-2005270496)
     

    0x887A0020

    ERROR_FRAME_STATISTICS_DISJOINT ¶

    ERROR_FRAME_STATISTICS_DISJOINT :: HRESULT(-2005270517)
     

    0x887A000B

    ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE ¶

    ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE :: HRESULT(-2005270516)
     

    0x887A000C

    ERROR_INVALID_CALL ¶

    ERROR_INVALID_CALL :: HRESULT(-2005270527)
     

    0x887A0001

    ERROR_MORE_DATA ¶

    ERROR_MORE_DATA :: HRESULT(-2005270525)
     

    0x887A0003

    ERROR_NAME_ALREADY_EXISTS ¶

    ERROR_NAME_ALREADY_EXISTS :: HRESULT(-2005270484)
     

    0x887A002C

    ERROR_NONEXCLUSIVE ¶

    ERROR_NONEXCLUSIVE :: HRESULT(-2005270495)
     

    0x887A0021

    ERROR_NOT_CURRENTLY_AVAILABLE ¶

    ERROR_NOT_CURRENTLY_AVAILABLE :: HRESULT(-2005270494)
     

    0x887A0022

    ERROR_NOT_FOUND ¶

    ERROR_NOT_FOUND :: HRESULT(-2005270526)
     

    0x887A0002

    ERROR_REMOTE_CLIENT_DISCONNECTED ¶

    ERROR_REMOTE_CLIENT_DISCONNECTED :: HRESULT(-2005270493)
     

    0x887A0023

    ERROR_REMOTE_OUTOFMEMORY ¶

    ERROR_REMOTE_OUTOFMEMORY :: HRESULT(-2005270492)
     

    0x887A0024

    ERROR_RESTRICT_TO_OUTPUT_STALE ¶

    ERROR_RESTRICT_TO_OUTPUT_STALE :: HRESULT(-2005270487)
     

    0x887A0029

    ERROR_SDK_COMPONENT_MISSING ¶

    ERROR_SDK_COMPONENT_MISSING :: HRESULT(-2005270483)
     

    0x887A002D

    ERROR_SESSION_DISCONNECTED ¶

    ERROR_SESSION_DISCONNECTED :: HRESULT(-2005270488)
     

    0x887A0028

    ERROR_UNSUPPORTED ¶

    ERROR_UNSUPPORTED :: HRESULT(-2005270524)
     

    0x887A0004

    ERROR_WAIT_TIMEOUT ¶

    ERROR_WAIT_TIMEOUT :: HRESULT(-2005270489)
     

    0x887A0027

    ERROR_WAS_STILL_DRAWING ¶

    ERROR_WAS_STILL_DRAWING :: HRESULT(-2005270518)
     

    0x887A000A

    FORMAT_DEFINED ¶

    FORMAT_DEFINED :: 1

    IAdapter1_UUID_STRING ¶

    IAdapter1_UUID_STRING :: "29038F61-3839-4626-91FD-086879011A05"

    IAdapter2_UUID_STRING ¶

    IAdapter2_UUID_STRING :: "0AA1AE0A-FA0E-4B84-8644-E05FF8E5ACB5"

    IAdapter3_UUID_STRING ¶

    IAdapter3_UUID_STRING :: "645967A4-1392-4310-A798-8053CE3E93FD"

    IAdapter_UUID_STRING ¶

    IAdapter_UUID_STRING :: "2411E7E1-12AC-4CCF-BD14-9798E8534DC0"

    IDebug1_UUID_STRING ¶

    IDebug1_UUID_STRING :: "c5a05f0c-16f2-4adf-9f4d-a8c4d58ac550"

    IDebug_UUID_STRING ¶

    IDebug_UUID_STRING :: "119E7452-DE9E-40fe-8806-88F90C12B441"

    IDecodeSwapChain_UUID_STRING ¶

    IDecodeSwapChain_UUID_STRING :: "2633066B-4514-4C7A-8FD8-12EA98059D18"

    IDevice1_UUID_STRING ¶

    IDevice1_UUID_STRING :: "77DB970F-6276-48BA-BA28-070143B4392C"

    IDevice2_UUID_STRING ¶

    IDevice2_UUID_STRING :: "05008617-FBFD-4051-A790-144884B4F6A9"

    IDevice3_UUID_STRING ¶

    IDevice3_UUID_STRING :: "6007896C-3244-4AFD-BF18-A6D3BEDA5023"

    IDeviceSubObject_UUID_STRING ¶

    IDeviceSubObject_UUID_STRING :: "3D3E0379-F9DE-4D58-BB6C-18D62992F1A6"

    IDevice_UUID_STRING ¶

    IDevice_UUID_STRING :: "54EC77FA-1377-44E6-8C32-88FD5F44C84C"

    IDisplayControl_UUID_STRING ¶

    IDisplayControl_UUID_STRING :: "EA9DBF1A-C88E-4486-854A-98AA0138F30C"

    IFactory1_UUID_STRING ¶

    IFactory1_UUID_STRING :: "770AAE78-F26F-4DBA-A829-253C83D1B387"

    IFactory2_UUID_STRING ¶

    IFactory2_UUID_STRING :: "50C83A1C-E072-4C48-87B0-3630FA36A6D0"

    IFactory3_UUID_STRING ¶

    IFactory3_UUID_STRING :: "25483823-CD46-4C7D-86CA-47AA95B837BD"

    IFactory4_UUID_STRING ¶

    IFactory4_UUID_STRING :: "1BC6EA02-EF36-464F-BF0C-21CA39E5168A"

    IFactoryMedia_UUID_STRING ¶

    IFactoryMedia_UUID_STRING :: "41E7D1F2-A591-4F7B-A2E5-FA9C843E1C12"

    IFactory_UUID_STRING ¶

    IFactory_UUID_STRING :: "7B7166EC-21C7-44AE-B21A-C9AE321AE369"

    IInfoQueue_UUID_STRING ¶

    IInfoQueue_UUID_STRING :: "D67441C7-672A-476f-9E82-CD55B44949CE"

    IKeyedMutex_UUID_STRING ¶

    IKeyedMutex_UUID_STRING :: "9D8E1289-D7B3-465F-8126-250E349AF85D"

    INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT ¶

    INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT :: 1024

    IObject_UUID_STRING ¶

    IObject_UUID_STRING :: "AEC22FB8-76F3-4639-9BE0-28EB43A67A2E"

    IOutput1_UUID_STRING ¶

    IOutput1_UUID_STRING :: "00CDDEA8-939B-4B83-A340-A685226666CC"

    IOutput2_UUID_STRING ¶

    IOutput2_UUID_STRING :: "595E39D1-2724-4663-99B1-DA969DE28364"

    IOutput3_UUID_STRING ¶

    IOutput3_UUID_STRING :: "8A6BB301-7E7E-41F4-A8E0-5B32F7F99B18"

    IOutput4_UUID_STRING ¶

    IOutput4_UUID_STRING :: "DC7DCA35-2196-414D-9F53-617884032A60"

    IOutputDuplication_UUID_STRING ¶

    IOutputDuplication_UUID_STRING :: "191CFAC3-A341-470D-B26E-A864F428319C"

    IOutput_UUID_STRING ¶

    IOutput_UUID_STRING :: "AE02EEDB-C735-4690-8D52-5A8DC20213AA"

    IResource1_UUID_STRING ¶

    IResource1_UUID_STRING :: "30961379-4609-4A41-998E-54FE567EE0C1"

    IResource_UUID_STRING ¶

    IResource_UUID_STRING :: "035F3AB4-482E-4E50-B41F-8A7F8BD8960B"

    ISurface1_UUID_STRING ¶

    ISurface1_UUID_STRING :: "4AE63092-6327-4C1B-80AE-BFE12EA32B86"

    ISurface2_UUID_STRING ¶

    ISurface2_UUID_STRING :: "ABA496DD-B617-4CB8-A866-BC44D7EB1FA2"

    ISurface_UUID_STRING ¶

    ISurface_UUID_STRING :: "CAFCB56C-6AC3-4889-BF47-9E23BBD260EC"

    ISwapChain1_UUID_STRING ¶

    ISwapChain1_UUID_STRING :: "790A45F7-0D42-4876-983A-0A55CFE6F4AA"

    ISwapChain2_UUID_STRING ¶

    ISwapChain2_UUID_STRING :: "A8BE2AC4-199F-4946-B331-79599FB98DE7"

    ISwapChain3_UUID_STRING ¶

    ISwapChain3_UUID_STRING :: "94D99BDB-F1F8-4AB0-B236-7DA0170EDAB1"

    ISwapChainMedia_UUID_STRING ¶

    ISwapChainMedia_UUID_STRING :: "DD95B90B-F05F-4F6A-BD65-25BFB264BD84"

    ISwapChain_UUID_STRING ¶

    ISwapChain_UUID_STRING :: "310D36A0-D2E7-4C0A-AA04-6A9D23B8886A"

    MAX_SWAP_CHAIN_BUFFERS ¶

    MAX_SWAP_CHAIN_BUFFERS :: 16

    MWA_VALID ¶

    MWA_VALID :: MWA{.NO_WINDOW_CHANGES, .NO_ALT_ENTER, .NO_PRINT_SCREEN}

    SHARED_RESOURCE_READ ¶

    SHARED_RESOURCE_READ :: 0x80000000

    SHARED_RESOURCE_WRITE ¶

    SHARED_RESOURCE_WRITE :: 1

    STANDARD_MULTISAMPLE_QUALITY_PATTERN ¶

    STANDARD_MULTISAMPLE_QUALITY_PATTERN :: 0xffffffff

    STATUS_MODE_CHANGED ¶

    STATUS_MODE_CHANGED :: HRESULT(142213127)
     

    0x087A0007

    STATUS_MODE_CHANGE_IN_PROGRESS ¶

    STATUS_MODE_CHANGE_IN_PROGRESS :: HRESULT(142213128)
     

    0x087A0008

    STATUS_OCCLUDED ¶

    STATUS_OCCLUDED :: HRESULT(142213121)
     

    0x087A0001

    Variables

    DEBUG_ALL ¶

    DEBUG_ALL: sys_windows.GUID = …

    DEBUG_APP ¶

    DEBUG_APP: sys_windows.GUID = …

    DEBUG_DX ¶

    DEBUG_DX: sys_windows.GUID = …

    DEBUG_DXGI ¶

    DEBUG_DXGI: sys_windows.GUID = …

    IAdapter1_UUID ¶

    IAdapter1_UUID: ^sys_windows.GUID = …

    IAdapter2_UUID ¶

    IAdapter2_UUID: ^sys_windows.GUID = …

    IAdapter3_UUID ¶

    IAdapter3_UUID: ^sys_windows.GUID = …

    IAdapter_UUID ¶

    IAdapter_UUID: ^sys_windows.GUID = …

    IDebug1_UUID ¶

    IDebug1_UUID: ^sys_windows.GUID = …

    IDebug_UUID ¶

    IDebug_UUID: ^sys_windows.GUID = …

    IDecodeSwapChain_UUID ¶

    IDecodeSwapChain_UUID: ^sys_windows.GUID = …

    IDevice1_UUID ¶

    IDevice1_UUID: ^sys_windows.GUID = …

    IDevice2_UUID ¶

    IDevice2_UUID: ^sys_windows.GUID = …

    IDevice3_UUID ¶

    IDevice3_UUID: ^sys_windows.GUID = …

    IDeviceSubObject_UUID ¶

    IDeviceSubObject_UUID: ^sys_windows.GUID = …

    IDevice_UUID ¶

    IDevice_UUID: ^sys_windows.GUID = …

    IDisplayControl_UUID ¶

    IDisplayControl_UUID: ^sys_windows.GUID = …

    IFactory1_UUID ¶

    IFactory1_UUID: ^sys_windows.GUID = …

    IFactory2_UUID ¶

    IFactory2_UUID: ^sys_windows.GUID = …

    IFactory3_UUID ¶

    IFactory3_UUID: ^sys_windows.GUID = …

    IFactory4_UUID ¶

    IFactory4_UUID: ^sys_windows.GUID = …

    IFactoryMedia_UUID ¶

    IFactoryMedia_UUID: ^sys_windows.GUID = …

    IFactory_UUID ¶

    IFactory_UUID: ^sys_windows.GUID = …

    IInfoQueue_UUID ¶

    IInfoQueue_UUID: ^sys_windows.GUID = …

    IKeyedMutex_UUID ¶

    IKeyedMutex_UUID: ^sys_windows.GUID = …

    IObject_UUID ¶

    IObject_UUID: ^sys_windows.GUID = …

    IOutput1_UUID ¶

    IOutput1_UUID: ^sys_windows.GUID = …

    IOutput2_UUID ¶

    IOutput2_UUID: ^sys_windows.GUID = …

    IOutput3_UUID ¶

    IOutput3_UUID: ^sys_windows.GUID = …

    IOutput4_UUID ¶

    IOutput4_UUID: ^sys_windows.GUID = …

    IOutputDuplication_UUID ¶

    IOutputDuplication_UUID: ^sys_windows.GUID = …

    IOutput_UUID ¶

    IOutput_UUID: ^sys_windows.GUID = …

    IResource1_UUID ¶

    IResource1_UUID: ^sys_windows.GUID = …

    IResource_UUID ¶

    IResource_UUID: ^sys_windows.GUID = …

    ISurface1_UUID ¶

    ISurface1_UUID: ^sys_windows.GUID = …

    ISurface2_UUID ¶

    ISurface2_UUID: ^sys_windows.GUID = …

    ISurface_UUID ¶

    ISurface_UUID: ^sys_windows.GUID = …

    ISwapChain1_UUID ¶

    ISwapChain1_UUID: ^sys_windows.GUID = …

    ISwapChain2_UUID ¶

    ISwapChain2_UUID: ^sys_windows.GUID = …

    ISwapChain3_UUID ¶

    ISwapChain3_UUID: ^sys_windows.GUID = …

    ISwapChainMedia_UUID ¶

    ISwapChainMedia_UUID: ^sys_windows.GUID = …

    ISwapChain_UUID ¶

    ISwapChain_UUID: ^sys_windows.GUID = …

    Procedures

    CreateDXGIFactory ¶

    CreateDXGIFactory :: proc "stdcall" (riid: ^sys_windows.GUID, ppFactory: ^rawptr) -> sys_windows.HRESULT ---

    CreateDXGIFactory1 ¶

    CreateDXGIFactory1 :: proc "stdcall" (riid: ^sys_windows.GUID, ppFactory: ^rawptr) -> sys_windows.HRESULT ---

    CreateDXGIFactory2 ¶

    CreateDXGIFactory2 :: proc "stdcall" (Flags: CREATE_FACTORY, riid: ^sys_windows.GUID, ppFactory: ^rawptr) -> sys_windows.HRESULT ---

    DXGIGetDebugInterface1 ¶

    DXGIGetDebugInterface1 :: proc "stdcall" (Flags: u32, riid: ^sys_windows.GUID, pDebug: ^rawptr) -> sys_windows.HRESULT ---

    Procedure Groups

    This section is empty.

    Source Files

    Generation Information

    Generated with odin version dev-2024-04 (vendor "odin") Windows_amd64 @ 2024-04-23 21:09:31.197170800 +0000 UTC