#![allow(
non_snake_case,
clippy::too_many_arguments,
clippy::missing_safety_doc,
dead_code
)]
use core::ffi::c_void;
pub unsafe trait DebugDevice12Methods: 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 SetFeatureMask(
&self,
a0: windows::Win32::Graphics::Direct3D12::D3D12_DEBUG_FEATURE,
) -> windows::core::HRESULT {
unsafe { real::SetFeatureMask(self.inner(), a0) }
}
unsafe fn GetFeatureMask(&self) -> windows::Win32::Graphics::Direct3D12::D3D12_DEBUG_FEATURE {
unsafe { real::GetFeatureMask(self.inner()) }
}
unsafe fn ReportLiveDeviceObjects(
&self,
a0: windows::Win32::Graphics::Direct3D12::D3D12_RLDO_FLAGS,
) -> windows::core::HRESULT {
unsafe { real::ReportLiveDeviceObjects(self.inner(), a0) }
}
unsafe fn SetDebugParameter(
&self,
a0: windows::Win32::Graphics::Direct3D12::D3D12_DEBUG_DEVICE_PARAMETER_TYPE,
a1: *const core::ffi::c_void,
a2: u32,
) -> windows::core::HRESULT {
unsafe { real::SetDebugParameter(self.inner(), a0, a1, a2) }
}
unsafe fn GetDebugParameter(
&self,
a0: windows::Win32::Graphics::Direct3D12::D3D12_DEBUG_DEVICE_PARAMETER_TYPE,
a1: *mut core::ffi::c_void,
a2: u32,
) -> windows::core::HRESULT {
unsafe { real::GetDebugParameter(self.inner(), a0, a1, a2) }
}
}
pub mod real {
use core::ffi::c_void;
pub unsafe fn SetFeatureMask(
inner: *mut c_void,
a0: windows::Win32::Graphics::Direct3D12::D3D12_DEBUG_FEATURE,
) -> windows::core::HRESULT {
unsafe {
((*(*(inner as *const *const windows::Win32::Graphics::Direct3D12::ID3D12DebugDevice2_Vtbl)))
.base__
.SetFeatureMask)(inner, a0)
}
}
pub unsafe fn GetFeatureMask(
inner: *mut c_void,
) -> windows::Win32::Graphics::Direct3D12::D3D12_DEBUG_FEATURE {
unsafe {
((*(*(inner as *const *const windows::Win32::Graphics::Direct3D12::ID3D12DebugDevice2_Vtbl)))
.base__
.GetFeatureMask)(inner)
}
}
pub unsafe fn ReportLiveDeviceObjects(
inner: *mut c_void,
a0: windows::Win32::Graphics::Direct3D12::D3D12_RLDO_FLAGS,
) -> windows::core::HRESULT {
unsafe {
((*(*(inner as *const *const windows::Win32::Graphics::Direct3D12::ID3D12DebugDevice2_Vtbl)))
.base__
.ReportLiveDeviceObjects)(inner, a0)
}
}
pub unsafe fn SetDebugParameter(
inner: *mut c_void,
a0: windows::Win32::Graphics::Direct3D12::D3D12_DEBUG_DEVICE_PARAMETER_TYPE,
a1: *const core::ffi::c_void,
a2: u32,
) -> windows::core::HRESULT {
unsafe {
((*(*(inner as *const *const windows::Win32::Graphics::Direct3D12::ID3D12DebugDevice2_Vtbl)))
.SetDebugParameter)(inner, a0, a1, a2)
}
}
pub unsafe fn GetDebugParameter(
inner: *mut c_void,
a0: windows::Win32::Graphics::Direct3D12::D3D12_DEBUG_DEVICE_PARAMETER_TYPE,
a1: *mut core::ffi::c_void,
a2: u32,
) -> windows::core::HRESULT {
unsafe {
((*(*(inner as *const *const windows::Win32::Graphics::Direct3D12::ID3D12DebugDevice2_Vtbl)))
.GetDebugParameter)(inner, a0, a1, a2)
}
}
}
unsafe extern "system" fn QueryInterface<T: DebugDevice12Methods>(
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: DebugDevice12Methods>(this: *mut c_void) -> u32 {
unsafe { (*(this as *const T)).AddRef() }
}
unsafe extern "system" fn Release<T: DebugDevice12Methods>(this: *mut c_void) -> u32 {
unsafe { (*(this as *const T)).Release() }
}
unsafe extern "system" fn SetFeatureMask<T: DebugDevice12Methods>(
this: *mut c_void,
a0: windows::Win32::Graphics::Direct3D12::D3D12_DEBUG_FEATURE,
) -> windows::core::HRESULT {
unsafe { (*(this as *const T)).SetFeatureMask(a0) }
}
unsafe extern "system" fn GetFeatureMask<T: DebugDevice12Methods>(
this: *mut c_void,
) -> windows::Win32::Graphics::Direct3D12::D3D12_DEBUG_FEATURE {
unsafe { (*(this as *const T)).GetFeatureMask() }
}
unsafe extern "system" fn ReportLiveDeviceObjects<T: DebugDevice12Methods>(
this: *mut c_void,
a0: windows::Win32::Graphics::Direct3D12::D3D12_RLDO_FLAGS,
) -> windows::core::HRESULT {
unsafe { (*(this as *const T)).ReportLiveDeviceObjects(a0) }
}
unsafe extern "system" fn SetDebugParameter<T: DebugDevice12Methods>(
this: *mut c_void,
a0: windows::Win32::Graphics::Direct3D12::D3D12_DEBUG_DEVICE_PARAMETER_TYPE,
a1: *const core::ffi::c_void,
a2: u32,
) -> windows::core::HRESULT {
unsafe { (*(this as *const T)).SetDebugParameter(a0, a1, a2) }
}
unsafe extern "system" fn GetDebugParameter<T: DebugDevice12Methods>(
this: *mut c_void,
a0: windows::Win32::Graphics::Direct3D12::D3D12_DEBUG_DEVICE_PARAMETER_TYPE,
a1: *mut core::ffi::c_void,
a2: u32,
) -> windows::core::HRESULT {
unsafe { (*(this as *const T)).GetDebugParameter(a0, a1, a2) }
}
#[allow(clippy::let_and_return)] unsafe impl DebugDevice12Methods for crate::d3d12::Object {
fn inner(&self) -> *mut c_void {
self.real()
}
unsafe fn QueryInterface(
&self,
iid: *const windows::core::GUID,
out: *mut *mut c_void,
) -> windows::core::HRESULT {
unsafe { self.query(iid, out) }
}
unsafe fn AddRef(&self) -> u32 {
self.add_ref()
}
unsafe fn Release(&self) -> u32 {
unsafe { self.release() }
}
unsafe fn SetFeatureMask(
&self,
a0: windows::Win32::Graphics::Direct3D12::D3D12_DEBUG_FEATURE,
) -> windows::core::HRESULT {
unsafe {
let result = real::SetFeatureMask(self.real(), a0);
result
}
}
unsafe fn GetFeatureMask(&self) -> windows::Win32::Graphics::Direct3D12::D3D12_DEBUG_FEATURE {
unsafe {
let result = real::GetFeatureMask(self.real());
result
}
}
unsafe fn ReportLiveDeviceObjects(
&self,
a0: windows::Win32::Graphics::Direct3D12::D3D12_RLDO_FLAGS,
) -> windows::core::HRESULT {
unsafe {
let result = real::ReportLiveDeviceObjects(self.real(), a0);
result
}
}
unsafe fn SetDebugParameter(
&self,
a0: windows::Win32::Graphics::Direct3D12::D3D12_DEBUG_DEVICE_PARAMETER_TYPE,
a1: *const core::ffi::c_void,
a2: u32,
) -> windows::core::HRESULT {
unsafe {
let result = real::SetDebugParameter(self.real(), a0, a1, a2);
result
}
}
unsafe fn GetDebugParameter(
&self,
a0: windows::Win32::Graphics::Direct3D12::D3D12_DEBUG_DEVICE_PARAMETER_TYPE,
a1: *mut core::ffi::c_void,
a2: u32,
) -> windows::core::HRESULT {
unsafe {
let result = real::GetDebugParameter(self.real(), a0, crate::d3d12::unwrap(a1), a2);
result
}
}
}
pub const fn vtable<T: DebugDevice12Methods>() -> windows::Win32::Graphics::Direct3D12::ID3D12DebugDevice2_Vtbl
{
windows::Win32::Graphics::Direct3D12::ID3D12DebugDevice2_Vtbl {
base__: windows::Win32::Graphics::Direct3D12::ID3D12DebugDevice_Vtbl {
base__: windows::core::IUnknown_Vtbl {
QueryInterface: QueryInterface::<T>,
AddRef: AddRef::<T>,
Release: Release::<T>,
},
SetFeatureMask: SetFeatureMask::<T>,
GetFeatureMask: GetFeatureMask::<T>,
ReportLiveDeviceObjects: ReportLiveDeviceObjects::<T>,
},
SetDebugParameter: SetDebugParameter::<T>,
GetDebugParameter: GetDebugParameter::<T>,
}
}