#![allow(
non_snake_case,
clippy::too_many_arguments,
clippy::missing_safety_doc,
dead_code
)]
use core::ffi::c_void;
pub unsafe trait DxgiDeviceMethods: Sized {
fn inner(&self) -> *mut c_void;
unsafe fn QueryInterface(
&self,
iid: *const windows::core::GUID,
out: *mut *mut c_void,
) -> windows::core::HRESULT;
unsafe fn AddRef(&self) -> u32;
unsafe fn Release(&self) -> u32;
unsafe fn SetPrivateData(
&self,
a0: *const windows::core::GUID,
a1: u32,
a2: *const core::ffi::c_void,
) -> windows::core::HRESULT {
unsafe { real::SetPrivateData(self.inner(), a0, a1, a2) }
}
unsafe fn SetPrivateDataInterface(
&self,
a0: *const windows::core::GUID,
a1: *mut core::ffi::c_void,
) -> windows::core::HRESULT {
unsafe { real::SetPrivateDataInterface(self.inner(), a0, a1) }
}
unsafe fn GetPrivateData(
&self,
a0: *const windows::core::GUID,
a1: *mut u32,
a2: *mut core::ffi::c_void,
) -> windows::core::HRESULT {
unsafe { real::GetPrivateData(self.inner(), a0, a1, a2) }
}
unsafe fn GetParent(
&self,
a0: *const windows::core::GUID,
a1: *mut *mut core::ffi::c_void,
) -> windows::core::HRESULT {
unsafe { real::GetParent(self.inner(), a0, a1) }
}
unsafe fn GetAdapter(&self, a0: *mut *mut core::ffi::c_void) -> windows::core::HRESULT {
unsafe { real::GetAdapter(self.inner(), a0) }
}
unsafe fn CreateSurface(
&self,
a0: *const windows::Win32::Graphics::Dxgi::DXGI_SURFACE_DESC,
a1: u32,
a2: windows::Win32::Graphics::Dxgi::DXGI_USAGE,
a3: *const windows::Win32::Graphics::Dxgi::DXGI_SHARED_RESOURCE,
a4: *mut *mut core::ffi::c_void,
) -> windows::core::HRESULT {
unsafe { real::CreateSurface(self.inner(), a0, a1, a2, a3, a4) }
}
unsafe fn QueryResourceResidency(
&self,
a0: *const *mut core::ffi::c_void,
a1: *mut windows::Win32::Graphics::Dxgi::DXGI_RESIDENCY,
a2: u32,
) -> windows::core::HRESULT {
unsafe { real::QueryResourceResidency(self.inner(), a0, a1, a2) }
}
unsafe fn SetGPUThreadPriority(&self, a0: i32) -> windows::core::HRESULT {
unsafe { real::SetGPUThreadPriority(self.inner(), a0) }
}
unsafe fn GetGPUThreadPriority(&self, a0: *mut i32) -> windows::core::HRESULT {
unsafe { real::GetGPUThreadPriority(self.inner(), a0) }
}
unsafe fn SetMaximumFrameLatency(&self, a0: u32) -> windows::core::HRESULT {
unsafe { real::SetMaximumFrameLatency(self.inner(), a0) }
}
unsafe fn GetMaximumFrameLatency(&self, a0: *mut u32) -> windows::core::HRESULT {
unsafe { real::GetMaximumFrameLatency(self.inner(), a0) }
}
unsafe fn OfferResources(
&self,
a0: u32,
a1: *const *mut core::ffi::c_void,
a2: windows::Win32::Graphics::Dxgi::DXGI_OFFER_RESOURCE_PRIORITY,
) -> windows::core::HRESULT {
unsafe { real::OfferResources(self.inner(), a0, a1, a2) }
}
unsafe fn ReclaimResources(
&self,
a0: u32,
a1: *const *mut core::ffi::c_void,
a2: *mut windows::core::BOOL,
) -> windows::core::HRESULT {
unsafe { real::ReclaimResources(self.inner(), a0, a1, a2) }
}
unsafe fn EnqueueSetEvent(&self, a0: windows::Win32::Foundation::HANDLE) -> windows::core::HRESULT {
unsafe { real::EnqueueSetEvent(self.inner(), a0) }
}
unsafe fn Trim(&self) {
unsafe { real::Trim(self.inner()) }
}
unsafe fn OfferResources1(
&self,
a0: u32,
a1: *const *mut core::ffi::c_void,
a2: windows::Win32::Graphics::Dxgi::DXGI_OFFER_RESOURCE_PRIORITY,
a3: u32,
) -> windows::core::HRESULT {
unsafe { real::OfferResources1(self.inner(), a0, a1, a2, a3) }
}
unsafe fn ReclaimResources1(
&self,
a0: u32,
a1: *const *mut core::ffi::c_void,
a2: *mut windows::Win32::Graphics::Dxgi::DXGI_RECLAIM_RESOURCE_RESULTS,
) -> windows::core::HRESULT {
unsafe { real::ReclaimResources1(self.inner(), a0, a1, a2) }
}
}
pub mod real {
use core::ffi::c_void;
pub unsafe fn SetPrivateData(
inner: *mut c_void,
a0: *const windows::core::GUID,
a1: u32,
a2: *const core::ffi::c_void,
) -> windows::core::HRESULT {
unsafe {
((*(*(inner as *const *const windows::Win32::Graphics::Dxgi::IDXGIDevice4_Vtbl)))
.base__
.base__
.base__
.base__
.base__
.SetPrivateData)(inner, a0, a1, a2)
}
}
pub unsafe fn SetPrivateDataInterface(
inner: *mut c_void,
a0: *const windows::core::GUID,
a1: *mut core::ffi::c_void,
) -> windows::core::HRESULT {
unsafe {
((*(*(inner as *const *const windows::Win32::Graphics::Dxgi::IDXGIDevice4_Vtbl)))
.base__
.base__
.base__
.base__
.base__
.SetPrivateDataInterface)(inner, a0, a1)
}
}
pub unsafe fn GetPrivateData(
inner: *mut c_void,
a0: *const windows::core::GUID,
a1: *mut u32,
a2: *mut core::ffi::c_void,
) -> windows::core::HRESULT {
unsafe {
((*(*(inner as *const *const windows::Win32::Graphics::Dxgi::IDXGIDevice4_Vtbl)))
.base__
.base__
.base__
.base__
.base__
.GetPrivateData)(inner, a0, a1, a2)
}
}
pub unsafe fn GetParent(
inner: *mut c_void,
a0: *const windows::core::GUID,
a1: *mut *mut core::ffi::c_void,
) -> windows::core::HRESULT {
unsafe {
((*(*(inner as *const *const windows::Win32::Graphics::Dxgi::IDXGIDevice4_Vtbl)))
.base__
.base__
.base__
.base__
.base__
.GetParent)(inner, a0, a1)
}
}
pub unsafe fn GetAdapter(inner: *mut c_void, a0: *mut *mut core::ffi::c_void) -> windows::core::HRESULT {
unsafe {
((*(*(inner as *const *const windows::Win32::Graphics::Dxgi::IDXGIDevice4_Vtbl)))
.base__
.base__
.base__
.base__
.GetAdapter)(inner, a0)
}
}
pub unsafe fn CreateSurface(
inner: *mut c_void,
a0: *const windows::Win32::Graphics::Dxgi::DXGI_SURFACE_DESC,
a1: u32,
a2: windows::Win32::Graphics::Dxgi::DXGI_USAGE,
a3: *const windows::Win32::Graphics::Dxgi::DXGI_SHARED_RESOURCE,
a4: *mut *mut core::ffi::c_void,
) -> windows::core::HRESULT {
unsafe {
((*(*(inner as *const *const windows::Win32::Graphics::Dxgi::IDXGIDevice4_Vtbl)))
.base__
.base__
.base__
.base__
.CreateSurface)(inner, a0, a1, a2, a3, a4)
}
}
pub unsafe fn QueryResourceResidency(
inner: *mut c_void,
a0: *const *mut core::ffi::c_void,
a1: *mut windows::Win32::Graphics::Dxgi::DXGI_RESIDENCY,
a2: u32,
) -> windows::core::HRESULT {
unsafe {
((*(*(inner as *const *const windows::Win32::Graphics::Dxgi::IDXGIDevice4_Vtbl)))
.base__
.base__
.base__
.base__
.QueryResourceResidency)(inner, a0, a1, a2)
}
}
pub unsafe fn SetGPUThreadPriority(inner: *mut c_void, a0: i32) -> windows::core::HRESULT {
unsafe {
((*(*(inner as *const *const windows::Win32::Graphics::Dxgi::IDXGIDevice4_Vtbl)))
.base__
.base__
.base__
.base__
.SetGPUThreadPriority)(inner, a0)
}
}
pub unsafe fn GetGPUThreadPriority(inner: *mut c_void, a0: *mut i32) -> windows::core::HRESULT {
unsafe {
((*(*(inner as *const *const windows::Win32::Graphics::Dxgi::IDXGIDevice4_Vtbl)))
.base__
.base__
.base__
.base__
.GetGPUThreadPriority)(inner, a0)
}
}
pub unsafe fn SetMaximumFrameLatency(inner: *mut c_void, a0: u32) -> windows::core::HRESULT {
unsafe {
((*(*(inner as *const *const windows::Win32::Graphics::Dxgi::IDXGIDevice4_Vtbl)))
.base__
.base__
.base__
.SetMaximumFrameLatency)(inner, a0)
}
}
pub unsafe fn GetMaximumFrameLatency(inner: *mut c_void, a0: *mut u32) -> windows::core::HRESULT {
unsafe {
((*(*(inner as *const *const windows::Win32::Graphics::Dxgi::IDXGIDevice4_Vtbl)))
.base__
.base__
.base__
.GetMaximumFrameLatency)(inner, a0)
}
}
pub unsafe fn OfferResources(
inner: *mut c_void,
a0: u32,
a1: *const *mut core::ffi::c_void,
a2: windows::Win32::Graphics::Dxgi::DXGI_OFFER_RESOURCE_PRIORITY,
) -> windows::core::HRESULT {
unsafe {
((*(*(inner as *const *const windows::Win32::Graphics::Dxgi::IDXGIDevice4_Vtbl)))
.base__
.base__
.OfferResources)(inner, a0, a1, a2)
}
}
pub unsafe fn ReclaimResources(
inner: *mut c_void,
a0: u32,
a1: *const *mut core::ffi::c_void,
a2: *mut windows::core::BOOL,
) -> windows::core::HRESULT {
unsafe {
((*(*(inner as *const *const windows::Win32::Graphics::Dxgi::IDXGIDevice4_Vtbl)))
.base__
.base__
.ReclaimResources)(inner, a0, a1, a2)
}
}
pub unsafe fn EnqueueSetEvent(
inner: *mut c_void,
a0: windows::Win32::Foundation::HANDLE,
) -> windows::core::HRESULT {
unsafe {
((*(*(inner as *const *const windows::Win32::Graphics::Dxgi::IDXGIDevice4_Vtbl)))
.base__
.base__
.EnqueueSetEvent)(inner, a0)
}
}
pub unsafe fn Trim(inner: *mut c_void) {
unsafe {
((*(*(inner as *const *const windows::Win32::Graphics::Dxgi::IDXGIDevice4_Vtbl)))
.base__
.Trim)(inner)
}
}
pub unsafe fn OfferResources1(
inner: *mut c_void,
a0: u32,
a1: *const *mut core::ffi::c_void,
a2: windows::Win32::Graphics::Dxgi::DXGI_OFFER_RESOURCE_PRIORITY,
a3: u32,
) -> windows::core::HRESULT {
unsafe {
((*(*(inner as *const *const windows::Win32::Graphics::Dxgi::IDXGIDevice4_Vtbl))).OfferResources1)(
inner, a0, a1, a2, a3,
)
}
}
pub unsafe fn ReclaimResources1(
inner: *mut c_void,
a0: u32,
a1: *const *mut core::ffi::c_void,
a2: *mut windows::Win32::Graphics::Dxgi::DXGI_RECLAIM_RESOURCE_RESULTS,
) -> windows::core::HRESULT {
unsafe {
((*(*(inner as *const *const windows::Win32::Graphics::Dxgi::IDXGIDevice4_Vtbl)))
.ReclaimResources1)(inner, a0, a1, a2)
}
}
}
unsafe extern "system" fn QueryInterface<T: DxgiDeviceMethods>(
this: *mut c_void,
iid: *const windows::core::GUID,
out: *mut *mut c_void,
) -> windows::core::HRESULT {
unsafe { (*(this as *const T)).QueryInterface(iid, out) }
}
unsafe extern "system" fn AddRef<T: DxgiDeviceMethods>(this: *mut c_void) -> u32 {
unsafe { (*(this as *const T)).AddRef() }
}
unsafe extern "system" fn Release<T: DxgiDeviceMethods>(this: *mut c_void) -> u32 {
unsafe { (*(this as *const T)).Release() }
}
unsafe extern "system" fn SetPrivateData<T: DxgiDeviceMethods>(
this: *mut c_void,
a0: *const windows::core::GUID,
a1: u32,
a2: *const core::ffi::c_void,
) -> windows::core::HRESULT {
unsafe { (*(this as *const T)).SetPrivateData(a0, a1, a2) }
}
unsafe extern "system" fn SetPrivateDataInterface<T: DxgiDeviceMethods>(
this: *mut c_void,
a0: *const windows::core::GUID,
a1: *mut core::ffi::c_void,
) -> windows::core::HRESULT {
unsafe { (*(this as *const T)).SetPrivateDataInterface(a0, a1) }
}
unsafe extern "system" fn GetPrivateData<T: DxgiDeviceMethods>(
this: *mut c_void,
a0: *const windows::core::GUID,
a1: *mut u32,
a2: *mut core::ffi::c_void,
) -> windows::core::HRESULT {
unsafe { (*(this as *const T)).GetPrivateData(a0, a1, a2) }
}
unsafe extern "system" fn GetParent<T: DxgiDeviceMethods>(
this: *mut c_void,
a0: *const windows::core::GUID,
a1: *mut *mut core::ffi::c_void,
) -> windows::core::HRESULT {
unsafe { (*(this as *const T)).GetParent(a0, a1) }
}
unsafe extern "system" fn GetAdapter<T: DxgiDeviceMethods>(
this: *mut c_void,
a0: *mut *mut core::ffi::c_void,
) -> windows::core::HRESULT {
unsafe { (*(this as *const T)).GetAdapter(a0) }
}
unsafe extern "system" fn CreateSurface<T: DxgiDeviceMethods>(
this: *mut c_void,
a0: *const windows::Win32::Graphics::Dxgi::DXGI_SURFACE_DESC,
a1: u32,
a2: windows::Win32::Graphics::Dxgi::DXGI_USAGE,
a3: *const windows::Win32::Graphics::Dxgi::DXGI_SHARED_RESOURCE,
a4: *mut *mut core::ffi::c_void,
) -> windows::core::HRESULT {
unsafe { (*(this as *const T)).CreateSurface(a0, a1, a2, a3, a4) }
}
unsafe extern "system" fn QueryResourceResidency<T: DxgiDeviceMethods>(
this: *mut c_void,
a0: *const *mut core::ffi::c_void,
a1: *mut windows::Win32::Graphics::Dxgi::DXGI_RESIDENCY,
a2: u32,
) -> windows::core::HRESULT {
unsafe { (*(this as *const T)).QueryResourceResidency(a0, a1, a2) }
}
unsafe extern "system" fn SetGPUThreadPriority<T: DxgiDeviceMethods>(
this: *mut c_void,
a0: i32,
) -> windows::core::HRESULT {
unsafe { (*(this as *const T)).SetGPUThreadPriority(a0) }
}
unsafe extern "system" fn GetGPUThreadPriority<T: DxgiDeviceMethods>(
this: *mut c_void,
a0: *mut i32,
) -> windows::core::HRESULT {
unsafe { (*(this as *const T)).GetGPUThreadPriority(a0) }
}
unsafe extern "system" fn SetMaximumFrameLatency<T: DxgiDeviceMethods>(
this: *mut c_void,
a0: u32,
) -> windows::core::HRESULT {
unsafe { (*(this as *const T)).SetMaximumFrameLatency(a0) }
}
unsafe extern "system" fn GetMaximumFrameLatency<T: DxgiDeviceMethods>(
this: *mut c_void,
a0: *mut u32,
) -> windows::core::HRESULT {
unsafe { (*(this as *const T)).GetMaximumFrameLatency(a0) }
}
unsafe extern "system" fn OfferResources<T: DxgiDeviceMethods>(
this: *mut c_void,
a0: u32,
a1: *const *mut core::ffi::c_void,
a2: windows::Win32::Graphics::Dxgi::DXGI_OFFER_RESOURCE_PRIORITY,
) -> windows::core::HRESULT {
unsafe { (*(this as *const T)).OfferResources(a0, a1, a2) }
}
unsafe extern "system" fn ReclaimResources<T: DxgiDeviceMethods>(
this: *mut c_void,
a0: u32,
a1: *const *mut core::ffi::c_void,
a2: *mut windows::core::BOOL,
) -> windows::core::HRESULT {
unsafe { (*(this as *const T)).ReclaimResources(a0, a1, a2) }
}
unsafe extern "system" fn EnqueueSetEvent<T: DxgiDeviceMethods>(
this: *mut c_void,
a0: windows::Win32::Foundation::HANDLE,
) -> windows::core::HRESULT {
unsafe { (*(this as *const T)).EnqueueSetEvent(a0) }
}
unsafe extern "system" fn Trim<T: DxgiDeviceMethods>(this: *mut c_void) {
unsafe { (*(this as *const T)).Trim() }
}
unsafe extern "system" fn OfferResources1<T: DxgiDeviceMethods>(
this: *mut c_void,
a0: u32,
a1: *const *mut core::ffi::c_void,
a2: windows::Win32::Graphics::Dxgi::DXGI_OFFER_RESOURCE_PRIORITY,
a3: u32,
) -> windows::core::HRESULT {
unsafe { (*(this as *const T)).OfferResources1(a0, a1, a2, a3) }
}
unsafe extern "system" fn ReclaimResources1<T: DxgiDeviceMethods>(
this: *mut c_void,
a0: u32,
a1: *const *mut core::ffi::c_void,
a2: *mut windows::Win32::Graphics::Dxgi::DXGI_RECLAIM_RESOURCE_RESULTS,
) -> windows::core::HRESULT {
unsafe { (*(this as *const T)).ReclaimResources1(a0, a1, a2) }
}
pub const fn vtable<T: DxgiDeviceMethods>() -> windows::Win32::Graphics::Dxgi::IDXGIDevice4_Vtbl {
windows::Win32::Graphics::Dxgi::IDXGIDevice4_Vtbl {
base__: windows::Win32::Graphics::Dxgi::IDXGIDevice3_Vtbl {
base__: windows::Win32::Graphics::Dxgi::IDXGIDevice2_Vtbl {
base__: windows::Win32::Graphics::Dxgi::IDXGIDevice1_Vtbl {
base__: windows::Win32::Graphics::Dxgi::IDXGIDevice_Vtbl {
base__: windows::Win32::Graphics::Dxgi::IDXGIObject_Vtbl {
base__: windows::core::IUnknown_Vtbl {
QueryInterface: QueryInterface::<T>,
AddRef: AddRef::<T>,
Release: Release::<T>,
},
SetPrivateData: SetPrivateData::<T>,
SetPrivateDataInterface: SetPrivateDataInterface::<T>,
GetPrivateData: GetPrivateData::<T>,
GetParent: GetParent::<T>,
},
GetAdapter: GetAdapter::<T>,
CreateSurface: CreateSurface::<T>,
QueryResourceResidency: QueryResourceResidency::<T>,
SetGPUThreadPriority: SetGPUThreadPriority::<T>,
GetGPUThreadPriority: GetGPUThreadPriority::<T>,
},
SetMaximumFrameLatency: SetMaximumFrameLatency::<T>,
GetMaximumFrameLatency: GetMaximumFrameLatency::<T>,
},
OfferResources: OfferResources::<T>,
ReclaimResources: ReclaimResources::<T>,
EnqueueSetEvent: EnqueueSetEvent::<T>,
},
Trim: Trim::<T>,
},
OfferResources1: OfferResources1::<T>,
ReclaimResources1: ReclaimResources1::<T>,
}
}