#![allow(
non_snake_case,
clippy::too_many_arguments,
clippy::missing_safety_doc,
dead_code
)]
use core::ffi::c_void;
pub unsafe trait Sharing12Methods: 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 Present(&self, a0: *mut core::ffi::c_void, a1: u32, a2: windows::Win32::Foundation::HWND) {
unsafe { real::Present(self.inner(), a0, a1, a2) }
}
unsafe fn SharedFenceSignal(&self, a0: *mut core::ffi::c_void, a1: u64) {
unsafe { real::SharedFenceSignal(self.inner(), a0, a1) }
}
unsafe fn BeginCapturableWork(&self, a0: *const windows::core::GUID) {
unsafe { real::BeginCapturableWork(self.inner(), a0) }
}
unsafe fn EndCapturableWork(&self, a0: *const windows::core::GUID) {
unsafe { real::EndCapturableWork(self.inner(), a0) }
}
}
pub mod real {
use core::ffi::c_void;
pub unsafe fn Present(
inner: *mut c_void,
a0: *mut core::ffi::c_void,
a1: u32,
a2: windows::Win32::Foundation::HWND,
) {
unsafe {
((*(*(inner as *const *const windows::Win32::Graphics::Direct3D12::ID3D12SharingContract_Vtbl)))
.Present)(inner, a0, a1, a2)
}
}
pub unsafe fn SharedFenceSignal(inner: *mut c_void, a0: *mut core::ffi::c_void, a1: u64) {
unsafe {
((*(*(inner as *const *const windows::Win32::Graphics::Direct3D12::ID3D12SharingContract_Vtbl)))
.SharedFenceSignal)(inner, a0, a1)
}
}
pub unsafe fn BeginCapturableWork(inner: *mut c_void, a0: *const windows::core::GUID) {
unsafe {
((*(*(inner as *const *const windows::Win32::Graphics::Direct3D12::ID3D12SharingContract_Vtbl)))
.BeginCapturableWork)(inner, a0)
}
}
pub unsafe fn EndCapturableWork(inner: *mut c_void, a0: *const windows::core::GUID) {
unsafe {
((*(*(inner as *const *const windows::Win32::Graphics::Direct3D12::ID3D12SharingContract_Vtbl)))
.EndCapturableWork)(inner, a0)
}
}
}
unsafe extern "system" fn QueryInterface<T: Sharing12Methods>(
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: Sharing12Methods>(this: *mut c_void) -> u32 {
unsafe { (*(this as *const T)).AddRef() }
}
unsafe extern "system" fn Release<T: Sharing12Methods>(this: *mut c_void) -> u32 {
unsafe { (*(this as *const T)).Release() }
}
unsafe extern "system" fn Present<T: Sharing12Methods>(
this: *mut c_void,
a0: *mut core::ffi::c_void,
a1: u32,
a2: windows::Win32::Foundation::HWND,
) {
unsafe { (*(this as *const T)).Present(a0, a1, a2) }
}
unsafe extern "system" fn SharedFenceSignal<T: Sharing12Methods>(
this: *mut c_void,
a0: *mut core::ffi::c_void,
a1: u64,
) {
unsafe { (*(this as *const T)).SharedFenceSignal(a0, a1) }
}
unsafe extern "system" fn BeginCapturableWork<T: Sharing12Methods>(
this: *mut c_void,
a0: *const windows::core::GUID,
) {
unsafe { (*(this as *const T)).BeginCapturableWork(a0) }
}
unsafe extern "system" fn EndCapturableWork<T: Sharing12Methods>(
this: *mut c_void,
a0: *const windows::core::GUID,
) {
unsafe { (*(this as *const T)).EndCapturableWork(a0) }
}
#[allow(clippy::let_and_return)] unsafe impl Sharing12Methods 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 Present(&self, a0: *mut core::ffi::c_void, a1: u32, a2: windows::Win32::Foundation::HWND) {
unsafe {
real::Present(self.real(), crate::d3d12::unwrap(a0), a1, a2);
}
}
unsafe fn SharedFenceSignal(&self, a0: *mut core::ffi::c_void, a1: u64) {
unsafe {
real::SharedFenceSignal(self.real(), crate::d3d12::unwrap(a0), a1);
}
}
unsafe fn BeginCapturableWork(&self, a0: *const windows::core::GUID) {
unsafe {
real::BeginCapturableWork(self.real(), a0);
}
}
unsafe fn EndCapturableWork(&self, a0: *const windows::core::GUID) {
unsafe {
real::EndCapturableWork(self.real(), a0);
}
}
}
pub const fn vtable<T: Sharing12Methods>() -> windows::Win32::Graphics::Direct3D12::ID3D12SharingContract_Vtbl
{
windows::Win32::Graphics::Direct3D12::ID3D12SharingContract_Vtbl {
base__: windows::core::IUnknown_Vtbl {
QueryInterface: QueryInterface::<T>,
AddRef: AddRef::<T>,
Release: Release::<T>,
},
Present: Present::<T>,
SharedFenceSignal: SharedFenceSignal::<T>,
BeginCapturableWork: BeginCapturableWork::<T>,
EndCapturableWork: EndCapturableWork::<T>,
}
}