#[cfg(feature = "Win32_Graphics_Direct3D12")]
#[inline]
pub unsafe fn DMLCreateDevice<P0, T>(d3d12device: P0, flags: DML_CREATE_DEVICE_FLAGS, result__: *mut Option<T>) -> windows_core::Result<()>
where
P0: windows_core::Param<super::super::super::Graphics::Direct3D12::ID3D12Device>,
T: windows_core::Interface,
{
windows_core::link!("directml.dll" "system" fn DMLCreateDevice(d3d12device : * mut core::ffi::c_void, flags : DML_CREATE_DEVICE_FLAGS, riid : *const windows_core::GUID, ppv : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
unsafe { DMLCreateDevice(d3d12device.param().abi(), flags, &T::IID, result__ as *mut _ as *mut _).ok() }
}
#[cfg(feature = "Win32_Graphics_Direct3D12")]
#[inline]
pub unsafe fn DMLCreateDevice1<P0, T>(d3d12device: P0, flags: DML_CREATE_DEVICE_FLAGS, minimumfeaturelevel: DML_FEATURE_LEVEL, result__: *mut Option<T>) -> windows_core::Result<()>
where
P0: windows_core::Param<super::super::super::Graphics::Direct3D12::ID3D12Device>,
T: windows_core::Interface,
{
windows_core::link!("directml.dll" "system" fn DMLCreateDevice1(d3d12device : * mut core::ffi::c_void, flags : DML_CREATE_DEVICE_FLAGS, minimumfeaturelevel : DML_FEATURE_LEVEL, riid : *const windows_core::GUID, ppv : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
unsafe { DMLCreateDevice1(d3d12device.param().abi(), flags, minimumfeaturelevel, &T::IID, result__ as *mut _ as *mut _).ok() }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ACTIVATION_CELU_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub Alpha: f32,
}
impl Default for DML_ACTIVATION_CELU_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ACTIVATION_ELU_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub Alpha: f32,
}
impl Default for DML_ACTIVATION_ELU_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ACTIVATION_HARDMAX_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ACTIVATION_HARDMAX_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ACTIVATION_HARD_SIGMOID_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub Alpha: f32,
pub Beta: f32,
}
impl Default for DML_ACTIVATION_HARD_SIGMOID_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ACTIVATION_IDENTITY_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ACTIVATION_IDENTITY_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ACTIVATION_LEAKY_RELU_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub Alpha: f32,
}
impl Default for DML_ACTIVATION_LEAKY_RELU_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ACTIVATION_LINEAR_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub Alpha: f32,
pub Beta: f32,
}
impl Default for DML_ACTIVATION_LINEAR_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ACTIVATION_LOG_SOFTMAX_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ACTIVATION_LOG_SOFTMAX_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ACTIVATION_PARAMETERIZED_RELU_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub SlopeTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ACTIVATION_PARAMETERIZED_RELU_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ACTIVATION_PARAMETRIC_SOFTPLUS_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub Alpha: f32,
pub Beta: f32,
}
impl Default for DML_ACTIVATION_PARAMETRIC_SOFTPLUS_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ACTIVATION_RELU_GRAD_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub InputGradientTensor: *const DML_TENSOR_DESC,
pub OutputGradientTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ACTIVATION_RELU_GRAD_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ACTIVATION_RELU_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ACTIVATION_RELU_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ACTIVATION_SCALED_ELU_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub Alpha: f32,
pub Gamma: f32,
}
impl Default for DML_ACTIVATION_SCALED_ELU_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ACTIVATION_SCALED_TANH_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub Alpha: f32,
pub Beta: f32,
}
impl Default for DML_ACTIVATION_SCALED_TANH_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ACTIVATION_SHRINK_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub Bias: f32,
pub Threshold: f32,
}
impl Default for DML_ACTIVATION_SHRINK_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ACTIVATION_SIGMOID_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ACTIVATION_SIGMOID_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ACTIVATION_SOFTMAX_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ACTIVATION_SOFTMAX_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ACTIVATION_SOFTPLUS_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub Steepness: f32,
}
impl Default for DML_ACTIVATION_SOFTPLUS_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ACTIVATION_SOFTSIGN_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ACTIVATION_SOFTSIGN_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ACTIVATION_TANH_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ACTIVATION_TANH_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ACTIVATION_THRESHOLDED_RELU_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub Alpha: f32,
}
impl Default for DML_ACTIVATION_THRESHOLDED_RELU_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ADAM_OPTIMIZER_OPERATOR_DESC {
pub InputParametersTensor: *const DML_TENSOR_DESC,
pub InputFirstMomentTensor: *const DML_TENSOR_DESC,
pub InputSecondMomentTensor: *const DML_TENSOR_DESC,
pub GradientTensor: *const DML_TENSOR_DESC,
pub TrainingStepTensor: *const DML_TENSOR_DESC,
pub OutputParametersTensor: *const DML_TENSOR_DESC,
pub OutputFirstMomentTensor: *const DML_TENSOR_DESC,
pub OutputSecondMomentTensor: *const DML_TENSOR_DESC,
pub LearningRate: f32,
pub Beta1: f32,
pub Beta2: f32,
pub Epsilon: f32,
}
impl Default for DML_ADAM_OPTIMIZER_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ARGMAX_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub AxisCount: u32,
pub Axes: *const u32,
pub AxisDirection: DML_AXIS_DIRECTION,
}
impl Default for DML_ARGMAX_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ARGMIN_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub AxisCount: u32,
pub Axes: *const u32,
pub AxisDirection: DML_AXIS_DIRECTION,
}
impl Default for DML_ARGMIN_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_AVERAGE_POOLING_GRAD_OPERATOR_DESC {
pub InputGradientTensor: *const DML_TENSOR_DESC,
pub OutputGradientTensor: *const DML_TENSOR_DESC,
pub DimensionCount: u32,
pub Strides: *const u32,
pub WindowSize: *const u32,
pub StartPadding: *const u32,
pub EndPadding: *const u32,
pub IncludePadding: windows_core::BOOL,
}
impl Default for DML_AVERAGE_POOLING_GRAD_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_AVERAGE_POOLING_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub DimensionCount: u32,
pub Strides: *const u32,
pub WindowSize: *const u32,
pub StartPadding: *const u32,
pub EndPadding: *const u32,
pub IncludePadding: windows_core::BOOL,
}
impl Default for DML_AVERAGE_POOLING_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DML_AXIS_DIRECTION(pub i32);
pub const DML_AXIS_DIRECTION_DECREASING: DML_AXIS_DIRECTION = DML_AXIS_DIRECTION(1i32);
pub const DML_AXIS_DIRECTION_INCREASING: DML_AXIS_DIRECTION = DML_AXIS_DIRECTION(0i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_BATCH_NORMALIZATION_GRAD_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub InputGradientTensor: *const DML_TENSOR_DESC,
pub MeanTensor: *const DML_TENSOR_DESC,
pub VarianceTensor: *const DML_TENSOR_DESC,
pub ScaleTensor: *const DML_TENSOR_DESC,
pub OutputGradientTensor: *const DML_TENSOR_DESC,
pub OutputScaleGradientTensor: *const DML_TENSOR_DESC,
pub OutputBiasGradientTensor: *const DML_TENSOR_DESC,
pub Epsilon: f32,
}
impl Default for DML_BATCH_NORMALIZATION_GRAD_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_BATCH_NORMALIZATION_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub MeanTensor: *const DML_TENSOR_DESC,
pub VarianceTensor: *const DML_TENSOR_DESC,
pub ScaleTensor: *const DML_TENSOR_DESC,
pub BiasTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub Spatial: windows_core::BOOL,
pub Epsilon: f32,
pub FusedActivation: *const DML_OPERATOR_DESC,
}
impl Default for DML_BATCH_NORMALIZATION_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_BINDING_DESC {
pub Type: DML_BINDING_TYPE,
pub Desc: *const core::ffi::c_void,
}
impl Default for DML_BINDING_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DML_BINDING_PROPERTIES {
pub RequiredDescriptorCount: u32,
pub TemporaryResourceSize: u64,
pub PersistentResourceSize: u64,
}
#[repr(C)]
#[cfg(feature = "Win32_Graphics_Direct3D12")]
#[derive(Clone, Debug, Default, PartialEq)]
pub struct DML_BINDING_TABLE_DESC {
pub Dispatchable: core::mem::ManuallyDrop<Option<IDMLDispatchable>>,
pub CPUDescriptorHandle: super::super::super::Graphics::Direct3D12::D3D12_CPU_DESCRIPTOR_HANDLE,
pub GPUDescriptorHandle: super::super::super::Graphics::Direct3D12::D3D12_GPU_DESCRIPTOR_HANDLE,
pub SizeInDescriptors: u32,
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DML_BINDING_TYPE(pub i32);
pub const DML_BINDING_TYPE_BUFFER: DML_BINDING_TYPE = DML_BINDING_TYPE(1i32);
pub const DML_BINDING_TYPE_BUFFER_ARRAY: DML_BINDING_TYPE = DML_BINDING_TYPE(2i32);
pub const DML_BINDING_TYPE_NONE: DML_BINDING_TYPE = DML_BINDING_TYPE(0i32);
#[repr(C)]
#[cfg(feature = "Win32_Graphics_Direct3D12")]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_BUFFER_ARRAY_BINDING {
pub BindingCount: u32,
pub Bindings: *const DML_BUFFER_BINDING,
}
#[cfg(feature = "Win32_Graphics_Direct3D12")]
impl Default for DML_BUFFER_ARRAY_BINDING {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[cfg(feature = "Win32_Graphics_Direct3D12")]
#[derive(Clone, Debug, Default, PartialEq)]
pub struct DML_BUFFER_BINDING {
pub Buffer: core::mem::ManuallyDrop<Option<super::super::super::Graphics::Direct3D12::ID3D12Resource>>,
pub Offset: u64,
pub SizeInBytes: u64,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_BUFFER_TENSOR_DESC {
pub DataType: DML_TENSOR_DATA_TYPE,
pub Flags: DML_TENSOR_FLAGS,
pub DimensionCount: u32,
pub Sizes: *const u32,
pub Strides: *const u32,
pub TotalTensorSizeInBytes: u64,
pub GuaranteedBaseOffsetAlignment: u32,
}
impl Default for DML_BUFFER_TENSOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_CAST_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_CAST_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DML_CONVOLUTION_DIRECTION(pub i32);
pub const DML_CONVOLUTION_DIRECTION_BACKWARD: DML_CONVOLUTION_DIRECTION = DML_CONVOLUTION_DIRECTION(1i32);
pub const DML_CONVOLUTION_DIRECTION_FORWARD: DML_CONVOLUTION_DIRECTION = DML_CONVOLUTION_DIRECTION(0i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_CONVOLUTION_INTEGER_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub InputZeroPointTensor: *const DML_TENSOR_DESC,
pub FilterTensor: *const DML_TENSOR_DESC,
pub FilterZeroPointTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub DimensionCount: u32,
pub Strides: *const u32,
pub Dilations: *const u32,
pub StartPadding: *const u32,
pub EndPadding: *const u32,
pub GroupCount: u32,
}
impl Default for DML_CONVOLUTION_INTEGER_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DML_CONVOLUTION_MODE(pub i32);
pub const DML_CONVOLUTION_MODE_CONVOLUTION: DML_CONVOLUTION_MODE = DML_CONVOLUTION_MODE(0i32);
pub const DML_CONVOLUTION_MODE_CROSS_CORRELATION: DML_CONVOLUTION_MODE = DML_CONVOLUTION_MODE(1i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_CONVOLUTION_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub FilterTensor: *const DML_TENSOR_DESC,
pub BiasTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub Mode: DML_CONVOLUTION_MODE,
pub Direction: DML_CONVOLUTION_DIRECTION,
pub DimensionCount: u32,
pub Strides: *const u32,
pub Dilations: *const u32,
pub StartPadding: *const u32,
pub EndPadding: *const u32,
pub OutputPadding: *const u32,
pub GroupCount: u32,
pub FusedActivation: *const DML_OPERATOR_DESC,
}
impl Default for DML_CONVOLUTION_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DML_CREATE_DEVICE_FLAGS(pub i32);
impl DML_CREATE_DEVICE_FLAGS {
pub const fn contains(&self, other: Self) -> bool {
self.0 & other.0 == other.0
}
}
impl core::ops::BitOr for DML_CREATE_DEVICE_FLAGS {
type Output = Self;
fn bitor(self, other: Self) -> Self {
Self(self.0 | other.0)
}
}
impl core::ops::BitAnd for DML_CREATE_DEVICE_FLAGS {
type Output = Self;
fn bitand(self, other: Self) -> Self {
Self(self.0 & other.0)
}
}
impl core::ops::BitOrAssign for DML_CREATE_DEVICE_FLAGS {
fn bitor_assign(&mut self, other: Self) {
self.0.bitor_assign(other.0)
}
}
impl core::ops::BitAndAssign for DML_CREATE_DEVICE_FLAGS {
fn bitand_assign(&mut self, other: Self) {
self.0.bitand_assign(other.0)
}
}
impl core::ops::Not for DML_CREATE_DEVICE_FLAGS {
type Output = Self;
fn not(self) -> Self {
Self(self.0.not())
}
}
pub const DML_CREATE_DEVICE_FLAG_DEBUG: DML_CREATE_DEVICE_FLAGS = DML_CREATE_DEVICE_FLAGS(1i32);
pub const DML_CREATE_DEVICE_FLAG_NONE: DML_CREATE_DEVICE_FLAGS = DML_CREATE_DEVICE_FLAGS(0i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_CUMULATIVE_PRODUCT_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub Axis: u32,
pub AxisDirection: DML_AXIS_DIRECTION,
pub HasExclusiveProduct: windows_core::BOOL,
}
impl Default for DML_CUMULATIVE_PRODUCT_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_CUMULATIVE_SUMMATION_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub Axis: u32,
pub AxisDirection: DML_AXIS_DIRECTION,
pub HasExclusiveSum: windows_core::BOOL,
}
impl Default for DML_CUMULATIVE_SUMMATION_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DML_DEPTH_SPACE_ORDER(pub i32);
pub const DML_DEPTH_SPACE_ORDER_COLUMN_ROW_DEPTH: DML_DEPTH_SPACE_ORDER = DML_DEPTH_SPACE_ORDER(1i32);
pub const DML_DEPTH_SPACE_ORDER_DEPTH_COLUMN_ROW: DML_DEPTH_SPACE_ORDER = DML_DEPTH_SPACE_ORDER(0i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_DEPTH_TO_SPACE1_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub BlockSize: u32,
pub Order: DML_DEPTH_SPACE_ORDER,
}
impl Default for DML_DEPTH_TO_SPACE1_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_DEPTH_TO_SPACE_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub BlockSize: u32,
}
impl Default for DML_DEPTH_TO_SPACE_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_DIAGONAL_MATRIX_OPERATOR_DESC {
pub OutputTensor: *const DML_TENSOR_DESC,
pub Offset: i32,
pub Value: f32,
}
impl Default for DML_DIAGONAL_MATRIX_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_DYNAMIC_QUANTIZE_LINEAR_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub OutputScaleTensor: *const DML_TENSOR_DESC,
pub OutputZeroPointTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_DYNAMIC_QUANTIZE_LINEAR_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_ABS_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub ScaleBias: *const DML_SCALE_BIAS,
}
impl Default for DML_ELEMENT_WISE_ABS_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_ACOSH_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub ScaleBias: *const DML_SCALE_BIAS,
}
impl Default for DML_ELEMENT_WISE_ACOSH_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_ACOS_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub ScaleBias: *const DML_SCALE_BIAS,
}
impl Default for DML_ELEMENT_WISE_ACOS_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_ADD1_OPERATOR_DESC {
pub ATensor: *const DML_TENSOR_DESC,
pub BTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub FusedActivation: *const DML_OPERATOR_DESC,
}
impl Default for DML_ELEMENT_WISE_ADD1_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_ADD_OPERATOR_DESC {
pub ATensor: *const DML_TENSOR_DESC,
pub BTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_ADD_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_ASINH_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub ScaleBias: *const DML_SCALE_BIAS,
}
impl Default for DML_ELEMENT_WISE_ASINH_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_ASIN_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub ScaleBias: *const DML_SCALE_BIAS,
}
impl Default for DML_ELEMENT_WISE_ASIN_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_ATANH_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub ScaleBias: *const DML_SCALE_BIAS,
}
impl Default for DML_ELEMENT_WISE_ATANH_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_ATAN_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub ScaleBias: *const DML_SCALE_BIAS,
}
impl Default for DML_ELEMENT_WISE_ATAN_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_ATAN_YX_OPERATOR_DESC {
pub ATensor: *const DML_TENSOR_DESC,
pub BTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_ATAN_YX_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_BIT_AND_OPERATOR_DESC {
pub ATensor: *const DML_TENSOR_DESC,
pub BTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_BIT_AND_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_BIT_COUNT_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_BIT_COUNT_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_BIT_NOT_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_BIT_NOT_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_BIT_OR_OPERATOR_DESC {
pub ATensor: *const DML_TENSOR_DESC,
pub BTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_BIT_OR_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_BIT_SHIFT_LEFT_OPERATOR_DESC {
pub ATensor: *const DML_TENSOR_DESC,
pub BTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_BIT_SHIFT_LEFT_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_BIT_SHIFT_RIGHT_OPERATOR_DESC {
pub ATensor: *const DML_TENSOR_DESC,
pub BTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_BIT_SHIFT_RIGHT_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_BIT_XOR_OPERATOR_DESC {
pub ATensor: *const DML_TENSOR_DESC,
pub BTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_BIT_XOR_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_CEIL_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub ScaleBias: *const DML_SCALE_BIAS,
}
impl Default for DML_ELEMENT_WISE_CEIL_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_CLIP_GRAD_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub InputGradientTensor: *const DML_TENSOR_DESC,
pub OutputGradientTensor: *const DML_TENSOR_DESC,
pub Min: f32,
pub Max: f32,
}
impl Default for DML_ELEMENT_WISE_CLIP_GRAD_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_CLIP_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub ScaleBias: *const DML_SCALE_BIAS,
pub Min: f32,
pub Max: f32,
}
impl Default for DML_ELEMENT_WISE_CLIP_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_CONSTANT_POW_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub ScaleBias: *const DML_SCALE_BIAS,
pub Exponent: f32,
}
impl Default for DML_ELEMENT_WISE_CONSTANT_POW_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_COSH_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub ScaleBias: *const DML_SCALE_BIAS,
}
impl Default for DML_ELEMENT_WISE_COSH_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_COS_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub ScaleBias: *const DML_SCALE_BIAS,
}
impl Default for DML_ELEMENT_WISE_COS_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_DEQUANTIZE_LINEAR_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub ScaleTensor: *const DML_TENSOR_DESC,
pub ZeroPointTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_DEQUANTIZE_LINEAR_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_DIFFERENCE_SQUARE_OPERATOR_DESC {
pub ATensor: *const DML_TENSOR_DESC,
pub BTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_DIFFERENCE_SQUARE_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_DIVIDE_OPERATOR_DESC {
pub ATensor: *const DML_TENSOR_DESC,
pub BTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_DIVIDE_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_ERF_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub ScaleBias: *const DML_SCALE_BIAS,
}
impl Default for DML_ELEMENT_WISE_ERF_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_EXP_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub ScaleBias: *const DML_SCALE_BIAS,
}
impl Default for DML_ELEMENT_WISE_EXP_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_FLOOR_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub ScaleBias: *const DML_SCALE_BIAS,
}
impl Default for DML_ELEMENT_WISE_FLOOR_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_IDENTITY_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub ScaleBias: *const DML_SCALE_BIAS,
}
impl Default for DML_ELEMENT_WISE_IDENTITY_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_IF_OPERATOR_DESC {
pub ConditionTensor: *const DML_TENSOR_DESC,
pub ATensor: *const DML_TENSOR_DESC,
pub BTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_IF_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_IS_INFINITY_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub InfinityMode: DML_IS_INFINITY_MODE,
}
impl Default for DML_ELEMENT_WISE_IS_INFINITY_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_IS_NAN_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_IS_NAN_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_LOGICAL_AND_OPERATOR_DESC {
pub ATensor: *const DML_TENSOR_DESC,
pub BTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_LOGICAL_AND_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_LOGICAL_EQUALS_OPERATOR_DESC {
pub ATensor: *const DML_TENSOR_DESC,
pub BTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_LOGICAL_EQUALS_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_LOGICAL_GREATER_THAN_OPERATOR_DESC {
pub ATensor: *const DML_TENSOR_DESC,
pub BTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_LOGICAL_GREATER_THAN_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_LOGICAL_GREATER_THAN_OR_EQUAL_OPERATOR_DESC {
pub ATensor: *const DML_TENSOR_DESC,
pub BTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_LOGICAL_GREATER_THAN_OR_EQUAL_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_LOGICAL_LESS_THAN_OPERATOR_DESC {
pub ATensor: *const DML_TENSOR_DESC,
pub BTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_LOGICAL_LESS_THAN_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_LOGICAL_LESS_THAN_OR_EQUAL_OPERATOR_DESC {
pub ATensor: *const DML_TENSOR_DESC,
pub BTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_LOGICAL_LESS_THAN_OR_EQUAL_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_LOGICAL_NOT_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_LOGICAL_NOT_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_LOGICAL_OR_OPERATOR_DESC {
pub ATensor: *const DML_TENSOR_DESC,
pub BTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_LOGICAL_OR_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_LOGICAL_XOR_OPERATOR_DESC {
pub ATensor: *const DML_TENSOR_DESC,
pub BTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_LOGICAL_XOR_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_LOG_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub ScaleBias: *const DML_SCALE_BIAS,
}
impl Default for DML_ELEMENT_WISE_LOG_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_MAX_OPERATOR_DESC {
pub ATensor: *const DML_TENSOR_DESC,
pub BTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_MAX_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_MEAN_OPERATOR_DESC {
pub ATensor: *const DML_TENSOR_DESC,
pub BTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_MEAN_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_MIN_OPERATOR_DESC {
pub ATensor: *const DML_TENSOR_DESC,
pub BTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_MIN_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_MODULUS_FLOOR_OPERATOR_DESC {
pub ATensor: *const DML_TENSOR_DESC,
pub BTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_MODULUS_FLOOR_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_MODULUS_TRUNCATE_OPERATOR_DESC {
pub ATensor: *const DML_TENSOR_DESC,
pub BTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_MODULUS_TRUNCATE_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_MULTIPLY_OPERATOR_DESC {
pub ATensor: *const DML_TENSOR_DESC,
pub BTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_MULTIPLY_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_POW_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub ExponentTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub ScaleBias: *const DML_SCALE_BIAS,
}
impl Default for DML_ELEMENT_WISE_POW_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_QUANTIZED_LINEAR_ADD_OPERATOR_DESC {
pub ATensor: *const DML_TENSOR_DESC,
pub AScaleTensor: *const DML_TENSOR_DESC,
pub AZeroPointTensor: *const DML_TENSOR_DESC,
pub BTensor: *const DML_TENSOR_DESC,
pub BScaleTensor: *const DML_TENSOR_DESC,
pub BZeroPointTensor: *const DML_TENSOR_DESC,
pub OutputScaleTensor: *const DML_TENSOR_DESC,
pub OutputZeroPointTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_QUANTIZED_LINEAR_ADD_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_QUANTIZE_LINEAR_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub ScaleTensor: *const DML_TENSOR_DESC,
pub ZeroPointTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_QUANTIZE_LINEAR_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_RECIP_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub ScaleBias: *const DML_SCALE_BIAS,
}
impl Default for DML_ELEMENT_WISE_RECIP_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_ROUND_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub RoundingMode: DML_ROUNDING_MODE,
}
impl Default for DML_ELEMENT_WISE_ROUND_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_SIGN_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_SIGN_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_SINH_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub ScaleBias: *const DML_SCALE_BIAS,
}
impl Default for DML_ELEMENT_WISE_SINH_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_SIN_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub ScaleBias: *const DML_SCALE_BIAS,
}
impl Default for DML_ELEMENT_WISE_SIN_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_SQRT_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub ScaleBias: *const DML_SCALE_BIAS,
}
impl Default for DML_ELEMENT_WISE_SQRT_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_SUBTRACT_OPERATOR_DESC {
pub ATensor: *const DML_TENSOR_DESC,
pub BTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_ELEMENT_WISE_SUBTRACT_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_TANH_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub ScaleBias: *const DML_SCALE_BIAS,
}
impl Default for DML_ELEMENT_WISE_TANH_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_TAN_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub ScaleBias: *const DML_SCALE_BIAS,
}
impl Default for DML_ELEMENT_WISE_TAN_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ELEMENT_WISE_THRESHOLD_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub ScaleBias: *const DML_SCALE_BIAS,
pub Min: f32,
}
impl Default for DML_ELEMENT_WISE_THRESHOLD_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DML_EXECUTION_FLAGS(pub i32);
impl DML_EXECUTION_FLAGS {
pub const fn contains(&self, other: Self) -> bool {
self.0 & other.0 == other.0
}
}
impl core::ops::BitOr for DML_EXECUTION_FLAGS {
type Output = Self;
fn bitor(self, other: Self) -> Self {
Self(self.0 | other.0)
}
}
impl core::ops::BitAnd for DML_EXECUTION_FLAGS {
type Output = Self;
fn bitand(self, other: Self) -> Self {
Self(self.0 & other.0)
}
}
impl core::ops::BitOrAssign for DML_EXECUTION_FLAGS {
fn bitor_assign(&mut self, other: Self) {
self.0.bitor_assign(other.0)
}
}
impl core::ops::BitAndAssign for DML_EXECUTION_FLAGS {
fn bitand_assign(&mut self, other: Self) {
self.0.bitand_assign(other.0)
}
}
impl core::ops::Not for DML_EXECUTION_FLAGS {
type Output = Self;
fn not(self) -> Self {
Self(self.0.not())
}
}
pub const DML_EXECUTION_FLAG_ALLOW_HALF_PRECISION_COMPUTATION: DML_EXECUTION_FLAGS = DML_EXECUTION_FLAGS(1i32);
pub const DML_EXECUTION_FLAG_DESCRIPTORS_VOLATILE: DML_EXECUTION_FLAGS = DML_EXECUTION_FLAGS(4i32);
pub const DML_EXECUTION_FLAG_DISABLE_META_COMMANDS: DML_EXECUTION_FLAGS = DML_EXECUTION_FLAGS(2i32);
pub const DML_EXECUTION_FLAG_NONE: DML_EXECUTION_FLAGS = DML_EXECUTION_FLAGS(0i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DML_FEATURE(pub i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DML_FEATURE_DATA_FEATURE_LEVELS {
pub MaxSupportedFeatureLevel: DML_FEATURE_LEVEL,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DML_FEATURE_DATA_TENSOR_DATA_TYPE_SUPPORT {
pub IsSupported: windows_core::BOOL,
}
pub const DML_FEATURE_FEATURE_LEVELS: DML_FEATURE = DML_FEATURE(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DML_FEATURE_LEVEL(pub i32);
pub const DML_FEATURE_LEVEL_1_0: DML_FEATURE_LEVEL = DML_FEATURE_LEVEL(4096i32);
pub const DML_FEATURE_LEVEL_2_0: DML_FEATURE_LEVEL = DML_FEATURE_LEVEL(8192i32);
pub const DML_FEATURE_LEVEL_2_1: DML_FEATURE_LEVEL = DML_FEATURE_LEVEL(8448i32);
pub const DML_FEATURE_LEVEL_3_0: DML_FEATURE_LEVEL = DML_FEATURE_LEVEL(12288i32);
pub const DML_FEATURE_LEVEL_3_1: DML_FEATURE_LEVEL = DML_FEATURE_LEVEL(12544i32);
pub const DML_FEATURE_LEVEL_4_0: DML_FEATURE_LEVEL = DML_FEATURE_LEVEL(16384i32);
pub const DML_FEATURE_LEVEL_4_1: DML_FEATURE_LEVEL = DML_FEATURE_LEVEL(16640i32);
pub const DML_FEATURE_LEVEL_5_0: DML_FEATURE_LEVEL = DML_FEATURE_LEVEL(20480i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_FEATURE_QUERY_FEATURE_LEVELS {
pub RequestedFeatureLevelCount: u32,
pub RequestedFeatureLevels: *const DML_FEATURE_LEVEL,
}
impl Default for DML_FEATURE_QUERY_FEATURE_LEVELS {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DML_FEATURE_QUERY_TENSOR_DATA_TYPE_SUPPORT {
pub DataType: DML_TENSOR_DATA_TYPE,
}
pub const DML_FEATURE_TENSOR_DATA_TYPE_SUPPORT: DML_FEATURE = DML_FEATURE(0i32);
#[repr(C)]
#[derive(Clone, Copy)]
pub struct DML_FILL_VALUE_CONSTANT_OPERATOR_DESC {
pub OutputTensor: *const DML_TENSOR_DESC,
pub ValueDataType: DML_TENSOR_DATA_TYPE,
pub Value: DML_SCALAR_UNION,
}
impl Default for DML_FILL_VALUE_CONSTANT_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy)]
pub struct DML_FILL_VALUE_SEQUENCE_OPERATOR_DESC {
pub OutputTensor: *const DML_TENSOR_DESC,
pub ValueDataType: DML_TENSOR_DATA_TYPE,
pub ValueStart: DML_SCALAR_UNION,
pub ValueDelta: DML_SCALAR_UNION,
}
impl Default for DML_FILL_VALUE_SEQUENCE_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_GATHER_ELEMENTS_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub IndicesTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub Axis: u32,
}
impl Default for DML_GATHER_ELEMENTS_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_GATHER_ND1_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub IndicesTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub InputDimensionCount: u32,
pub IndicesDimensionCount: u32,
pub BatchDimensionCount: u32,
}
impl Default for DML_GATHER_ND1_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_GATHER_ND_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub IndicesTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub InputDimensionCount: u32,
pub IndicesDimensionCount: u32,
}
impl Default for DML_GATHER_ND_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_GATHER_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub IndicesTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub Axis: u32,
pub IndexDimensions: u32,
}
impl Default for DML_GATHER_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_GEMM_OPERATOR_DESC {
pub ATensor: *const DML_TENSOR_DESC,
pub BTensor: *const DML_TENSOR_DESC,
pub CTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub TransA: DML_MATRIX_TRANSFORM,
pub TransB: DML_MATRIX_TRANSFORM,
pub Alpha: f32,
pub Beta: f32,
pub FusedActivation: *const DML_OPERATOR_DESC,
}
impl Default for DML_GEMM_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_GRAPH_DESC {
pub InputCount: u32,
pub OutputCount: u32,
pub NodeCount: u32,
pub Nodes: *const DML_GRAPH_NODE_DESC,
pub InputEdgeCount: u32,
pub InputEdges: *const DML_GRAPH_EDGE_DESC,
pub OutputEdgeCount: u32,
pub OutputEdges: *const DML_GRAPH_EDGE_DESC,
pub IntermediateEdgeCount: u32,
pub IntermediateEdges: *const DML_GRAPH_EDGE_DESC,
}
impl Default for DML_GRAPH_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_GRAPH_EDGE_DESC {
pub Type: DML_GRAPH_EDGE_TYPE,
pub Desc: *const core::ffi::c_void,
}
impl Default for DML_GRAPH_EDGE_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DML_GRAPH_EDGE_TYPE(pub i32);
pub const DML_GRAPH_EDGE_TYPE_INPUT: DML_GRAPH_EDGE_TYPE = DML_GRAPH_EDGE_TYPE(1i32);
pub const DML_GRAPH_EDGE_TYPE_INTERMEDIATE: DML_GRAPH_EDGE_TYPE = DML_GRAPH_EDGE_TYPE(3i32);
pub const DML_GRAPH_EDGE_TYPE_INVALID: DML_GRAPH_EDGE_TYPE = DML_GRAPH_EDGE_TYPE(0i32);
pub const DML_GRAPH_EDGE_TYPE_OUTPUT: DML_GRAPH_EDGE_TYPE = DML_GRAPH_EDGE_TYPE(2i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_GRAPH_NODE_DESC {
pub Type: DML_GRAPH_NODE_TYPE,
pub Desc: *const core::ffi::c_void,
}
impl Default for DML_GRAPH_NODE_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DML_GRAPH_NODE_TYPE(pub i32);
pub const DML_GRAPH_NODE_TYPE_INVALID: DML_GRAPH_NODE_TYPE = DML_GRAPH_NODE_TYPE(0i32);
pub const DML_GRAPH_NODE_TYPE_OPERATOR: DML_GRAPH_NODE_TYPE = DML_GRAPH_NODE_TYPE(1i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_GRU_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub WeightTensor: *const DML_TENSOR_DESC,
pub RecurrenceTensor: *const DML_TENSOR_DESC,
pub BiasTensor: *const DML_TENSOR_DESC,
pub HiddenInitTensor: *const DML_TENSOR_DESC,
pub SequenceLengthsTensor: *const DML_TENSOR_DESC,
pub OutputSequenceTensor: *const DML_TENSOR_DESC,
pub OutputSingleTensor: *const DML_TENSOR_DESC,
pub ActivationDescCount: u32,
pub ActivationDescs: *const DML_OPERATOR_DESC,
pub Direction: DML_RECURRENT_NETWORK_DIRECTION,
pub LinearBeforeReset: windows_core::BOOL,
}
impl Default for DML_GRU_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DML_INPUT_GRAPH_EDGE_DESC {
pub GraphInputIndex: u32,
pub ToNodeIndex: u32,
pub ToNodeInputIndex: u32,
pub Name: windows_core::PCSTR,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DML_INTERMEDIATE_GRAPH_EDGE_DESC {
pub FromNodeIndex: u32,
pub FromNodeOutputIndex: u32,
pub ToNodeIndex: u32,
pub ToNodeInputIndex: u32,
pub Name: windows_core::PCSTR,
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DML_INTERPOLATION_MODE(pub i32);
pub const DML_INTERPOLATION_MODE_LINEAR: DML_INTERPOLATION_MODE = DML_INTERPOLATION_MODE(1i32);
pub const DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR: DML_INTERPOLATION_MODE = DML_INTERPOLATION_MODE(0i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DML_IS_INFINITY_MODE(pub i32);
pub const DML_IS_INFINITY_MODE_EITHER: DML_IS_INFINITY_MODE = DML_IS_INFINITY_MODE(0i32);
pub const DML_IS_INFINITY_MODE_NEGATIVE: DML_IS_INFINITY_MODE = DML_IS_INFINITY_MODE(2i32);
pub const DML_IS_INFINITY_MODE_POSITIVE: DML_IS_INFINITY_MODE = DML_IS_INFINITY_MODE(1i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_JOIN_OPERATOR_DESC {
pub InputCount: u32,
pub InputTensors: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub Axis: u32,
}
impl Default for DML_JOIN_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_LOCAL_RESPONSE_NORMALIZATION_GRAD_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub InputGradientTensor: *const DML_TENSOR_DESC,
pub OutputGradientTensor: *const DML_TENSOR_DESC,
pub CrossChannel: windows_core::BOOL,
pub LocalSize: u32,
pub Alpha: f32,
pub Beta: f32,
pub Bias: f32,
}
impl Default for DML_LOCAL_RESPONSE_NORMALIZATION_GRAD_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_LOCAL_RESPONSE_NORMALIZATION_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub CrossChannel: windows_core::BOOL,
pub LocalSize: u32,
pub Alpha: f32,
pub Beta: f32,
pub Bias: f32,
}
impl Default for DML_LOCAL_RESPONSE_NORMALIZATION_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_LP_NORMALIZATION_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub Axis: u32,
pub Epsilon: f32,
pub P: u32,
}
impl Default for DML_LP_NORMALIZATION_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_LP_POOLING_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub DimensionCount: u32,
pub Strides: *const u32,
pub WindowSize: *const u32,
pub StartPadding: *const u32,
pub EndPadding: *const u32,
pub P: u32,
}
impl Default for DML_LP_POOLING_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_LSTM_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub WeightTensor: *const DML_TENSOR_DESC,
pub RecurrenceTensor: *const DML_TENSOR_DESC,
pub BiasTensor: *const DML_TENSOR_DESC,
pub HiddenInitTensor: *const DML_TENSOR_DESC,
pub CellMemInitTensor: *const DML_TENSOR_DESC,
pub SequenceLengthsTensor: *const DML_TENSOR_DESC,
pub PeepholeTensor: *const DML_TENSOR_DESC,
pub OutputSequenceTensor: *const DML_TENSOR_DESC,
pub OutputSingleTensor: *const DML_TENSOR_DESC,
pub OutputCellSingleTensor: *const DML_TENSOR_DESC,
pub ActivationDescCount: u32,
pub ActivationDescs: *const DML_OPERATOR_DESC,
pub Direction: DML_RECURRENT_NETWORK_DIRECTION,
pub ClipThreshold: f32,
pub UseClipThreshold: windows_core::BOOL,
pub CoupleInputForget: windows_core::BOOL,
}
impl Default for DML_LSTM_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_MATRIX_MULTIPLY_INTEGER_OPERATOR_DESC {
pub ATensor: *const DML_TENSOR_DESC,
pub AZeroPointTensor: *const DML_TENSOR_DESC,
pub BTensor: *const DML_TENSOR_DESC,
pub BZeroPointTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_MATRIX_MULTIPLY_INTEGER_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DML_MATRIX_TRANSFORM(pub i32);
pub const DML_MATRIX_TRANSFORM_NONE: DML_MATRIX_TRANSFORM = DML_MATRIX_TRANSFORM(0i32);
pub const DML_MATRIX_TRANSFORM_TRANSPOSE: DML_MATRIX_TRANSFORM = DML_MATRIX_TRANSFORM(1i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_MAX_POOLING1_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub OutputIndicesTensor: *const DML_TENSOR_DESC,
pub DimensionCount: u32,
pub Strides: *const u32,
pub WindowSize: *const u32,
pub StartPadding: *const u32,
pub EndPadding: *const u32,
}
impl Default for DML_MAX_POOLING1_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_MAX_POOLING2_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub OutputIndicesTensor: *const DML_TENSOR_DESC,
pub DimensionCount: u32,
pub Strides: *const u32,
pub WindowSize: *const u32,
pub StartPadding: *const u32,
pub EndPadding: *const u32,
pub Dilations: *const u32,
}
impl Default for DML_MAX_POOLING2_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_MAX_POOLING_GRAD_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub InputGradientTensor: *const DML_TENSOR_DESC,
pub OutputGradientTensor: *const DML_TENSOR_DESC,
pub DimensionCount: u32,
pub Strides: *const u32,
pub WindowSize: *const u32,
pub StartPadding: *const u32,
pub EndPadding: *const u32,
pub Dilations: *const u32,
}
impl Default for DML_MAX_POOLING_GRAD_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_MAX_POOLING_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub DimensionCount: u32,
pub Strides: *const u32,
pub WindowSize: *const u32,
pub StartPadding: *const u32,
pub EndPadding: *const u32,
}
impl Default for DML_MAX_POOLING_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_MAX_UNPOOLING_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub IndicesTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_MAX_UNPOOLING_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_MEAN_VARIANCE_NORMALIZATION1_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub ScaleTensor: *const DML_TENSOR_DESC,
pub BiasTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub AxisCount: u32,
pub Axes: *const u32,
pub NormalizeVariance: windows_core::BOOL,
pub Epsilon: f32,
pub FusedActivation: *const DML_OPERATOR_DESC,
}
impl Default for DML_MEAN_VARIANCE_NORMALIZATION1_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_MEAN_VARIANCE_NORMALIZATION_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub ScaleTensor: *const DML_TENSOR_DESC,
pub BiasTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub CrossChannel: windows_core::BOOL,
pub NormalizeVariance: windows_core::BOOL,
pub Epsilon: f32,
pub FusedActivation: *const DML_OPERATOR_DESC,
}
impl Default for DML_MEAN_VARIANCE_NORMALIZATION_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
pub const DML_MINIMUM_BUFFER_TENSOR_ALIGNMENT: u32 = 16u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_NONZERO_COORDINATES_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputCountTensor: *const DML_TENSOR_DESC,
pub OutputCoordinatesTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_NONZERO_COORDINATES_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ONE_HOT_OPERATOR_DESC {
pub IndicesTensor: *const DML_TENSOR_DESC,
pub ValuesTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub Axis: u32,
}
impl Default for DML_ONE_HOT_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
pub const DML_OPERATOR_ACTIVATION_CELU: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(128i32);
pub const DML_OPERATOR_ACTIVATION_ELU: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(35i32);
pub const DML_OPERATOR_ACTIVATION_HARDMAX: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(36i32);
pub const DML_OPERATOR_ACTIVATION_HARD_SIGMOID: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(37i32);
pub const DML_OPERATOR_ACTIVATION_IDENTITY: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(38i32);
pub const DML_OPERATOR_ACTIVATION_LEAKY_RELU: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(39i32);
pub const DML_OPERATOR_ACTIVATION_LINEAR: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(40i32);
pub const DML_OPERATOR_ACTIVATION_LOG_SOFTMAX: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(41i32);
pub const DML_OPERATOR_ACTIVATION_PARAMETERIZED_RELU: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(42i32);
pub const DML_OPERATOR_ACTIVATION_PARAMETRIC_SOFTPLUS: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(43i32);
pub const DML_OPERATOR_ACTIVATION_RELU: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(44i32);
pub const DML_OPERATOR_ACTIVATION_RELU_GRAD: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(129i32);
pub const DML_OPERATOR_ACTIVATION_SCALED_ELU: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(45i32);
pub const DML_OPERATOR_ACTIVATION_SCALED_TANH: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(46i32);
pub const DML_OPERATOR_ACTIVATION_SHRINK: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(90i32);
pub const DML_OPERATOR_ACTIVATION_SIGMOID: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(47i32);
pub const DML_OPERATOR_ACTIVATION_SOFTMAX: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(48i32);
pub const DML_OPERATOR_ACTIVATION_SOFTPLUS: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(49i32);
pub const DML_OPERATOR_ACTIVATION_SOFTSIGN: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(50i32);
pub const DML_OPERATOR_ACTIVATION_TANH: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(51i32);
pub const DML_OPERATOR_ACTIVATION_THRESHOLDED_RELU: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(52i32);
pub const DML_OPERATOR_ADAM_OPTIMIZER: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(136i32);
pub const DML_OPERATOR_ARGMAX: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(138i32);
pub const DML_OPERATOR_ARGMIN: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(137i32);
pub const DML_OPERATOR_AVERAGE_POOLING: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(56i32);
pub const DML_OPERATOR_AVERAGE_POOLING_GRAD: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(130i32);
pub const DML_OPERATOR_BATCH_NORMALIZATION: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(72i32);
pub const DML_OPERATOR_BATCH_NORMALIZATION_GRAD: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(146i32);
pub const DML_OPERATOR_CAST: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(61i32);
pub const DML_OPERATOR_CONVOLUTION: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(53i32);
pub const DML_OPERATOR_CONVOLUTION_INTEGER: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(119i32);
pub const DML_OPERATOR_CUMULATIVE_PRODUCT: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(145i32);
pub const DML_OPERATOR_CUMULATIVE_SUMMATION: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(105i32);
pub const DML_OPERATOR_DEPTH_TO_SPACE: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(69i32);
pub const DML_OPERATOR_DEPTH_TO_SPACE1: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(113i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_OPERATOR_DESC {
pub Type: DML_OPERATOR_TYPE,
pub Desc: *const core::ffi::c_void,
}
impl Default for DML_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
pub const DML_OPERATOR_DIAGONAL_MATRIX: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(93i32);
pub const DML_OPERATOR_DYNAMIC_QUANTIZE_LINEAR: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(148i32);
pub const DML_OPERATOR_ELEMENT_WISE_ABS: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(2i32);
pub const DML_OPERATOR_ELEMENT_WISE_ACOS: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(3i32);
pub const DML_OPERATOR_ELEMENT_WISE_ACOSH: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(86i32);
pub const DML_OPERATOR_ELEMENT_WISE_ADD: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(4i32);
pub const DML_OPERATOR_ELEMENT_WISE_ADD1: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(89i32);
pub const DML_OPERATOR_ELEMENT_WISE_ASIN: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(5i32);
pub const DML_OPERATOR_ELEMENT_WISE_ASINH: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(85i32);
pub const DML_OPERATOR_ELEMENT_WISE_ATAN: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(6i32);
pub const DML_OPERATOR_ELEMENT_WISE_ATANH: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(87i32);
pub const DML_OPERATOR_ELEMENT_WISE_ATAN_YX: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(141i32);
pub const DML_OPERATOR_ELEMENT_WISE_BIT_AND: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(121i32);
pub const DML_OPERATOR_ELEMENT_WISE_BIT_COUNT: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(125i32);
pub const DML_OPERATOR_ELEMENT_WISE_BIT_NOT: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(124i32);
pub const DML_OPERATOR_ELEMENT_WISE_BIT_OR: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(122i32);
pub const DML_OPERATOR_ELEMENT_WISE_BIT_SHIFT_LEFT: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(97i32);
pub const DML_OPERATOR_ELEMENT_WISE_BIT_SHIFT_RIGHT: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(98i32);
pub const DML_OPERATOR_ELEMENT_WISE_BIT_XOR: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(123i32);
pub const DML_OPERATOR_ELEMENT_WISE_CEIL: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(7i32);
pub const DML_OPERATOR_ELEMENT_WISE_CLIP: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(8i32);
pub const DML_OPERATOR_ELEMENT_WISE_CLIP_GRAD: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(142i32);
pub const DML_OPERATOR_ELEMENT_WISE_CONSTANT_POW: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(26i32);
pub const DML_OPERATOR_ELEMENT_WISE_COS: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(9i32);
pub const DML_OPERATOR_ELEMENT_WISE_COSH: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(83i32);
pub const DML_OPERATOR_ELEMENT_WISE_DEQUANTIZE_LINEAR: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(34i32);
pub const DML_OPERATOR_ELEMENT_WISE_DIFFERENCE_SQUARE: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(143i32);
pub const DML_OPERATOR_ELEMENT_WISE_DIVIDE: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(10i32);
pub const DML_OPERATOR_ELEMENT_WISE_ERF: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(81i32);
pub const DML_OPERATOR_ELEMENT_WISE_EXP: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(11i32);
pub const DML_OPERATOR_ELEMENT_WISE_FLOOR: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(12i32);
pub const DML_OPERATOR_ELEMENT_WISE_IDENTITY: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(1i32);
pub const DML_OPERATOR_ELEMENT_WISE_IF: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(88i32);
pub const DML_OPERATOR_ELEMENT_WISE_IS_INFINITY: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(100i32);
pub const DML_OPERATOR_ELEMENT_WISE_IS_NAN: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(80i32);
pub const DML_OPERATOR_ELEMENT_WISE_LOG: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(13i32);
pub const DML_OPERATOR_ELEMENT_WISE_LOGICAL_AND: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(14i32);
pub const DML_OPERATOR_ELEMENT_WISE_LOGICAL_EQUALS: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(15i32);
pub const DML_OPERATOR_ELEMENT_WISE_LOGICAL_GREATER_THAN: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(16i32);
pub const DML_OPERATOR_ELEMENT_WISE_LOGICAL_GREATER_THAN_OR_EQUAL: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(126i32);
pub const DML_OPERATOR_ELEMENT_WISE_LOGICAL_LESS_THAN: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(17i32);
pub const DML_OPERATOR_ELEMENT_WISE_LOGICAL_LESS_THAN_OR_EQUAL: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(127i32);
pub const DML_OPERATOR_ELEMENT_WISE_LOGICAL_NOT: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(18i32);
pub const DML_OPERATOR_ELEMENT_WISE_LOGICAL_OR: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(19i32);
pub const DML_OPERATOR_ELEMENT_WISE_LOGICAL_XOR: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(20i32);
pub const DML_OPERATOR_ELEMENT_WISE_MAX: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(21i32);
pub const DML_OPERATOR_ELEMENT_WISE_MEAN: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(22i32);
pub const DML_OPERATOR_ELEMENT_WISE_MIN: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(23i32);
pub const DML_OPERATOR_ELEMENT_WISE_MODULUS_FLOOR: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(102i32);
pub const DML_OPERATOR_ELEMENT_WISE_MODULUS_TRUNCATE: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(101i32);
pub const DML_OPERATOR_ELEMENT_WISE_MULTIPLY: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(24i32);
pub const DML_OPERATOR_ELEMENT_WISE_POW: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(25i32);
pub const DML_OPERATOR_ELEMENT_WISE_QUANTIZED_LINEAR_ADD: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(147i32);
pub const DML_OPERATOR_ELEMENT_WISE_QUANTIZE_LINEAR: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(33i32);
pub const DML_OPERATOR_ELEMENT_WISE_RECIP: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(27i32);
pub const DML_OPERATOR_ELEMENT_WISE_ROUND: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(99i32);
pub const DML_OPERATOR_ELEMENT_WISE_SIGN: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(79i32);
pub const DML_OPERATOR_ELEMENT_WISE_SIN: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(28i32);
pub const DML_OPERATOR_ELEMENT_WISE_SINH: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(82i32);
pub const DML_OPERATOR_ELEMENT_WISE_SQRT: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(29i32);
pub const DML_OPERATOR_ELEMENT_WISE_SUBTRACT: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(30i32);
pub const DML_OPERATOR_ELEMENT_WISE_TAN: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(31i32);
pub const DML_OPERATOR_ELEMENT_WISE_TANH: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(84i32);
pub const DML_OPERATOR_ELEMENT_WISE_THRESHOLD: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(32i32);
pub const DML_OPERATOR_FILL_VALUE_CONSTANT: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(103i32);
pub const DML_OPERATOR_FILL_VALUE_SEQUENCE: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(104i32);
pub const DML_OPERATOR_GATHER: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(67i32);
pub const DML_OPERATOR_GATHER_ELEMENTS: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(107i32);
pub const DML_OPERATOR_GATHER_ND: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(108i32);
pub const DML_OPERATOR_GATHER_ND1: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(140i32);
pub const DML_OPERATOR_GEMM: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(54i32);
#[repr(C)]
#[derive(Clone, Debug, Default, PartialEq)]
pub struct DML_OPERATOR_GRAPH_NODE_DESC {
pub Operator: core::mem::ManuallyDrop<Option<IDMLOperator>>,
pub Name: windows_core::PCSTR,
}
pub const DML_OPERATOR_GRU: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(78i32);
pub const DML_OPERATOR_INVALID: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(0i32);
pub const DML_OPERATOR_JOIN: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(63i32);
pub const DML_OPERATOR_LOCAL_RESPONSE_NORMALIZATION: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(74i32);
pub const DML_OPERATOR_LOCAL_RESPONSE_NORMALIZATION_GRAD: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(144i32);
pub const DML_OPERATOR_LP_NORMALIZATION: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(75i32);
pub const DML_OPERATOR_LP_POOLING: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(57i32);
pub const DML_OPERATOR_LSTM: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(77i32);
pub const DML_OPERATOR_MATRIX_MULTIPLY_INTEGER: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(117i32);
pub const DML_OPERATOR_MAX_POOLING: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(58i32);
pub const DML_OPERATOR_MAX_POOLING1: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(91i32);
pub const DML_OPERATOR_MAX_POOLING2: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(110i32);
pub const DML_OPERATOR_MAX_POOLING_GRAD: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(131i32);
pub const DML_OPERATOR_MAX_UNPOOLING: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(92i32);
pub const DML_OPERATOR_MEAN_VARIANCE_NORMALIZATION: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(73i32);
pub const DML_OPERATOR_MEAN_VARIANCE_NORMALIZATION1: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(115i32);
pub const DML_OPERATOR_NONZERO_COORDINATES: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(133i32);
pub const DML_OPERATOR_ONE_HOT: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(95i32);
pub const DML_OPERATOR_PADDING: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(64i32);
pub const DML_OPERATOR_QUANTIZED_LINEAR_CONVOLUTION: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(120i32);
pub const DML_OPERATOR_QUANTIZED_LINEAR_MATRIX_MULTIPLY: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(118i32);
pub const DML_OPERATOR_RANDOM_GENERATOR: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(132i32);
pub const DML_OPERATOR_REDUCE: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(55i32);
pub const DML_OPERATOR_RESAMPLE: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(96i32);
pub const DML_OPERATOR_RESAMPLE1: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(116i32);
pub const DML_OPERATOR_RESAMPLE_GRAD: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(134i32);
pub const DML_OPERATOR_REVERSE_SUBSEQUENCES: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(106i32);
pub const DML_OPERATOR_RNN: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(76i32);
pub const DML_OPERATOR_ROI_ALIGN: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(139i32);
pub const DML_OPERATOR_ROI_ALIGN1: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(149i32);
pub const DML_OPERATOR_ROI_POOLING: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(59i32);
pub const DML_OPERATOR_SCATTER: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(94i32);
pub const DML_OPERATOR_SCATTER_ELEMENTS: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(94i32);
pub const DML_OPERATOR_SCATTER_ND: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(109i32);
pub const DML_OPERATOR_SLICE: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(60i32);
pub const DML_OPERATOR_SLICE1: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(111i32);
pub const DML_OPERATOR_SLICE_GRAD: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(135i32);
pub const DML_OPERATOR_SPACE_TO_DEPTH: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(68i32);
pub const DML_OPERATOR_SPACE_TO_DEPTH1: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(114i32);
pub const DML_OPERATOR_SPLIT: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(62i32);
pub const DML_OPERATOR_TILE: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(70i32);
pub const DML_OPERATOR_TOP_K: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(71i32);
pub const DML_OPERATOR_TOP_K1: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(112i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DML_OPERATOR_TYPE(pub i32);
pub const DML_OPERATOR_UPSAMPLE_2D: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(66i32);
pub const DML_OPERATOR_VALUE_SCALE_2D: DML_OPERATOR_TYPE = DML_OPERATOR_TYPE(65i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DML_OUTPUT_GRAPH_EDGE_DESC {
pub FromNodeIndex: u32,
pub FromNodeOutputIndex: u32,
pub GraphOutputIndex: u32,
pub Name: windows_core::PCSTR,
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DML_PADDING_MODE(pub i32);
pub const DML_PADDING_MODE_CONSTANT: DML_PADDING_MODE = DML_PADDING_MODE(0i32);
pub const DML_PADDING_MODE_EDGE: DML_PADDING_MODE = DML_PADDING_MODE(1i32);
pub const DML_PADDING_MODE_REFLECTION: DML_PADDING_MODE = DML_PADDING_MODE(2i32);
pub const DML_PADDING_MODE_SYMMETRIC: DML_PADDING_MODE = DML_PADDING_MODE(3i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_PADDING_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub PaddingMode: DML_PADDING_MODE,
pub PaddingValue: f32,
pub DimensionCount: u32,
pub StartPadding: *const u32,
pub EndPadding: *const u32,
}
impl Default for DML_PADDING_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
pub const DML_PERSISTENT_BUFFER_ALIGNMENT: u32 = 256u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_QUANTIZED_LINEAR_CONVOLUTION_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub InputScaleTensor: *const DML_TENSOR_DESC,
pub InputZeroPointTensor: *const DML_TENSOR_DESC,
pub FilterTensor: *const DML_TENSOR_DESC,
pub FilterScaleTensor: *const DML_TENSOR_DESC,
pub FilterZeroPointTensor: *const DML_TENSOR_DESC,
pub BiasTensor: *const DML_TENSOR_DESC,
pub OutputScaleTensor: *const DML_TENSOR_DESC,
pub OutputZeroPointTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub DimensionCount: u32,
pub Strides: *const u32,
pub Dilations: *const u32,
pub StartPadding: *const u32,
pub EndPadding: *const u32,
pub GroupCount: u32,
}
impl Default for DML_QUANTIZED_LINEAR_CONVOLUTION_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_QUANTIZED_LINEAR_MATRIX_MULTIPLY_OPERATOR_DESC {
pub ATensor: *const DML_TENSOR_DESC,
pub AScaleTensor: *const DML_TENSOR_DESC,
pub AZeroPointTensor: *const DML_TENSOR_DESC,
pub BTensor: *const DML_TENSOR_DESC,
pub BScaleTensor: *const DML_TENSOR_DESC,
pub BZeroPointTensor: *const DML_TENSOR_DESC,
pub OutputScaleTensor: *const DML_TENSOR_DESC,
pub OutputZeroPointTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
}
impl Default for DML_QUANTIZED_LINEAR_MATRIX_MULTIPLY_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_RANDOM_GENERATOR_OPERATOR_DESC {
pub InputStateTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub OutputStateTensor: *const DML_TENSOR_DESC,
pub Type: DML_RANDOM_GENERATOR_TYPE,
}
impl Default for DML_RANDOM_GENERATOR_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DML_RANDOM_GENERATOR_TYPE(pub i32);
pub const DML_RANDOM_GENERATOR_TYPE_PHILOX_4X32_10: DML_RANDOM_GENERATOR_TYPE = DML_RANDOM_GENERATOR_TYPE(0i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DML_RECURRENT_NETWORK_DIRECTION(pub i32);
pub const DML_RECURRENT_NETWORK_DIRECTION_BACKWARD: DML_RECURRENT_NETWORK_DIRECTION = DML_RECURRENT_NETWORK_DIRECTION(1i32);
pub const DML_RECURRENT_NETWORK_DIRECTION_BIDIRECTIONAL: DML_RECURRENT_NETWORK_DIRECTION = DML_RECURRENT_NETWORK_DIRECTION(2i32);
pub const DML_RECURRENT_NETWORK_DIRECTION_FORWARD: DML_RECURRENT_NETWORK_DIRECTION = DML_RECURRENT_NETWORK_DIRECTION(0i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DML_REDUCE_FUNCTION(pub i32);
pub const DML_REDUCE_FUNCTION_ARGMAX: DML_REDUCE_FUNCTION = DML_REDUCE_FUNCTION(0i32);
pub const DML_REDUCE_FUNCTION_ARGMIN: DML_REDUCE_FUNCTION = DML_REDUCE_FUNCTION(1i32);
pub const DML_REDUCE_FUNCTION_AVERAGE: DML_REDUCE_FUNCTION = DML_REDUCE_FUNCTION(2i32);
pub const DML_REDUCE_FUNCTION_L1: DML_REDUCE_FUNCTION = DML_REDUCE_FUNCTION(3i32);
pub const DML_REDUCE_FUNCTION_L2: DML_REDUCE_FUNCTION = DML_REDUCE_FUNCTION(4i32);
pub const DML_REDUCE_FUNCTION_LOG_SUM: DML_REDUCE_FUNCTION = DML_REDUCE_FUNCTION(5i32);
pub const DML_REDUCE_FUNCTION_LOG_SUM_EXP: DML_REDUCE_FUNCTION = DML_REDUCE_FUNCTION(6i32);
pub const DML_REDUCE_FUNCTION_MAX: DML_REDUCE_FUNCTION = DML_REDUCE_FUNCTION(7i32);
pub const DML_REDUCE_FUNCTION_MIN: DML_REDUCE_FUNCTION = DML_REDUCE_FUNCTION(8i32);
pub const DML_REDUCE_FUNCTION_MULTIPLY: DML_REDUCE_FUNCTION = DML_REDUCE_FUNCTION(9i32);
pub const DML_REDUCE_FUNCTION_SUM: DML_REDUCE_FUNCTION = DML_REDUCE_FUNCTION(10i32);
pub const DML_REDUCE_FUNCTION_SUM_SQUARE: DML_REDUCE_FUNCTION = DML_REDUCE_FUNCTION(11i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_REDUCE_OPERATOR_DESC {
pub Function: DML_REDUCE_FUNCTION,
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub AxisCount: u32,
pub Axes: *const u32,
}
impl Default for DML_REDUCE_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_RESAMPLE1_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub InterpolationMode: DML_INTERPOLATION_MODE,
pub DimensionCount: u32,
pub Scales: *const f32,
pub InputPixelOffsets: *const f32,
pub OutputPixelOffsets: *const f32,
}
impl Default for DML_RESAMPLE1_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_RESAMPLE_GRAD_OPERATOR_DESC {
pub InputGradientTensor: *const DML_TENSOR_DESC,
pub OutputGradientTensor: *const DML_TENSOR_DESC,
pub InterpolationMode: DML_INTERPOLATION_MODE,
pub DimensionCount: u32,
pub Scales: *const f32,
pub InputPixelOffsets: *const f32,
pub OutputPixelOffsets: *const f32,
}
impl Default for DML_RESAMPLE_GRAD_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_RESAMPLE_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub InterpolationMode: DML_INTERPOLATION_MODE,
pub ScaleCount: u32,
pub Scales: *const f32,
}
impl Default for DML_RESAMPLE_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_REVERSE_SUBSEQUENCES_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub SequenceLengthsTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub Axis: u32,
}
impl Default for DML_REVERSE_SUBSEQUENCES_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_RNN_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub WeightTensor: *const DML_TENSOR_DESC,
pub RecurrenceTensor: *const DML_TENSOR_DESC,
pub BiasTensor: *const DML_TENSOR_DESC,
pub HiddenInitTensor: *const DML_TENSOR_DESC,
pub SequenceLengthsTensor: *const DML_TENSOR_DESC,
pub OutputSequenceTensor: *const DML_TENSOR_DESC,
pub OutputSingleTensor: *const DML_TENSOR_DESC,
pub ActivationDescCount: u32,
pub ActivationDescs: *const DML_OPERATOR_DESC,
pub Direction: DML_RECURRENT_NETWORK_DIRECTION,
}
impl Default for DML_RNN_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ROI_ALIGN1_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub ROITensor: *const DML_TENSOR_DESC,
pub BatchIndicesTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub ReductionFunction: DML_REDUCE_FUNCTION,
pub InterpolationMode: DML_INTERPOLATION_MODE,
pub SpatialScaleX: f32,
pub SpatialScaleY: f32,
pub InputPixelOffset: f32,
pub OutputPixelOffset: f32,
pub OutOfBoundsInputValue: f32,
pub MinimumSamplesPerOutput: u32,
pub MaximumSamplesPerOutput: u32,
pub AlignRegionsToCorners: windows_core::BOOL,
}
impl Default for DML_ROI_ALIGN1_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ROI_ALIGN_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub ROITensor: *const DML_TENSOR_DESC,
pub BatchIndicesTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub ReductionFunction: DML_REDUCE_FUNCTION,
pub InterpolationMode: DML_INTERPOLATION_MODE,
pub SpatialScaleX: f32,
pub SpatialScaleY: f32,
pub OutOfBoundsInputValue: f32,
pub MinimumSamplesPerOutput: u32,
pub MaximumSamplesPerOutput: u32,
}
impl Default for DML_ROI_ALIGN_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_ROI_POOLING_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub ROITensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub SpatialScale: f32,
pub PooledSize: DML_SIZE_2D,
}
impl Default for DML_ROI_POOLING_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DML_ROUNDING_MODE(pub i32);
pub const DML_ROUNDING_MODE_HALVES_TO_NEAREST_EVEN: DML_ROUNDING_MODE = DML_ROUNDING_MODE(0i32);
pub const DML_ROUNDING_MODE_TOWARD_INFINITY: DML_ROUNDING_MODE = DML_ROUNDING_MODE(2i32);
pub const DML_ROUNDING_MODE_TOWARD_ZERO: DML_ROUNDING_MODE = DML_ROUNDING_MODE(1i32);
#[repr(C)]
#[derive(Clone, Copy)]
pub union DML_SCALAR_UNION {
pub Bytes: [u8; 8],
pub Int8: i8,
pub UInt8: u8,
pub Int16: i16,
pub UInt16: u16,
pub Int32: i32,
pub UInt32: u32,
pub Int64: i64,
pub UInt64: u64,
pub Float32: f32,
pub Float64: f64,
}
impl Default for DML_SCALAR_UNION {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DML_SCALE_BIAS {
pub Scale: f32,
pub Bias: f32,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_SCATTER_ND_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub IndicesTensor: *const DML_TENSOR_DESC,
pub UpdatesTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub InputDimensionCount: u32,
pub IndicesDimensionCount: u32,
}
impl Default for DML_SCATTER_ND_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_SCATTER_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub IndicesTensor: *const DML_TENSOR_DESC,
pub UpdatesTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub Axis: u32,
}
impl Default for DML_SCATTER_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DML_SIZE_2D {
pub Width: u32,
pub Height: u32,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_SLICE1_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub DimensionCount: u32,
pub InputWindowOffsets: *const u32,
pub InputWindowSizes: *const u32,
pub InputWindowStrides: *const i32,
}
impl Default for DML_SLICE1_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_SLICE_GRAD_OPERATOR_DESC {
pub InputGradientTensor: *const DML_TENSOR_DESC,
pub OutputGradientTensor: *const DML_TENSOR_DESC,
pub DimensionCount: u32,
pub InputWindowOffsets: *const u32,
pub InputWindowSizes: *const u32,
pub InputWindowStrides: *const i32,
}
impl Default for DML_SLICE_GRAD_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_SLICE_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub DimensionCount: u32,
pub Offsets: *const u32,
pub Sizes: *const u32,
pub Strides: *const u32,
}
impl Default for DML_SLICE_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_SPACE_TO_DEPTH1_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub BlockSize: u32,
pub Order: DML_DEPTH_SPACE_ORDER,
}
impl Default for DML_SPACE_TO_DEPTH1_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_SPACE_TO_DEPTH_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub BlockSize: u32,
}
impl Default for DML_SPACE_TO_DEPTH_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_SPLIT_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputCount: u32,
pub OutputTensors: *const DML_TENSOR_DESC,
pub Axis: u32,
}
impl Default for DML_SPLIT_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
pub const DML_TARGET_VERSION: u32 = 20480u32;
pub const DML_TEMPORARY_BUFFER_ALIGNMENT: u32 = 256u32;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DML_TENSOR_DATA_TYPE(pub i32);
pub const DML_TENSOR_DATA_TYPE_FLOAT16: DML_TENSOR_DATA_TYPE = DML_TENSOR_DATA_TYPE(2i32);
pub const DML_TENSOR_DATA_TYPE_FLOAT32: DML_TENSOR_DATA_TYPE = DML_TENSOR_DATA_TYPE(1i32);
pub const DML_TENSOR_DATA_TYPE_FLOAT64: DML_TENSOR_DATA_TYPE = DML_TENSOR_DATA_TYPE(9i32);
pub const DML_TENSOR_DATA_TYPE_INT16: DML_TENSOR_DATA_TYPE = DML_TENSOR_DATA_TYPE(7i32);
pub const DML_TENSOR_DATA_TYPE_INT32: DML_TENSOR_DATA_TYPE = DML_TENSOR_DATA_TYPE(6i32);
pub const DML_TENSOR_DATA_TYPE_INT64: DML_TENSOR_DATA_TYPE = DML_TENSOR_DATA_TYPE(11i32);
pub const DML_TENSOR_DATA_TYPE_INT8: DML_TENSOR_DATA_TYPE = DML_TENSOR_DATA_TYPE(8i32);
pub const DML_TENSOR_DATA_TYPE_UINT16: DML_TENSOR_DATA_TYPE = DML_TENSOR_DATA_TYPE(4i32);
pub const DML_TENSOR_DATA_TYPE_UINT32: DML_TENSOR_DATA_TYPE = DML_TENSOR_DATA_TYPE(3i32);
pub const DML_TENSOR_DATA_TYPE_UINT64: DML_TENSOR_DATA_TYPE = DML_TENSOR_DATA_TYPE(10i32);
pub const DML_TENSOR_DATA_TYPE_UINT8: DML_TENSOR_DATA_TYPE = DML_TENSOR_DATA_TYPE(5i32);
pub const DML_TENSOR_DATA_TYPE_UNKNOWN: DML_TENSOR_DATA_TYPE = DML_TENSOR_DATA_TYPE(0i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_TENSOR_DESC {
pub Type: DML_TENSOR_TYPE,
pub Desc: *const core::ffi::c_void,
}
impl Default for DML_TENSOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
pub const DML_TENSOR_DIMENSION_COUNT_MAX: u32 = 5u32;
pub const DML_TENSOR_DIMENSION_COUNT_MAX1: u32 = 8u32;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DML_TENSOR_FLAGS(pub i32);
impl DML_TENSOR_FLAGS {
pub const fn contains(&self, other: Self) -> bool {
self.0 & other.0 == other.0
}
}
impl core::ops::BitOr for DML_TENSOR_FLAGS {
type Output = Self;
fn bitor(self, other: Self) -> Self {
Self(self.0 | other.0)
}
}
impl core::ops::BitAnd for DML_TENSOR_FLAGS {
type Output = Self;
fn bitand(self, other: Self) -> Self {
Self(self.0 & other.0)
}
}
impl core::ops::BitOrAssign for DML_TENSOR_FLAGS {
fn bitor_assign(&mut self, other: Self) {
self.0.bitor_assign(other.0)
}
}
impl core::ops::BitAndAssign for DML_TENSOR_FLAGS {
fn bitand_assign(&mut self, other: Self) {
self.0.bitand_assign(other.0)
}
}
impl core::ops::Not for DML_TENSOR_FLAGS {
type Output = Self;
fn not(self) -> Self {
Self(self.0.not())
}
}
pub const DML_TENSOR_FLAG_NONE: DML_TENSOR_FLAGS = DML_TENSOR_FLAGS(0i32);
pub const DML_TENSOR_FLAG_OWNED_BY_DML: DML_TENSOR_FLAGS = DML_TENSOR_FLAGS(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DML_TENSOR_TYPE(pub i32);
pub const DML_TENSOR_TYPE_BUFFER: DML_TENSOR_TYPE = DML_TENSOR_TYPE(1i32);
pub const DML_TENSOR_TYPE_INVALID: DML_TENSOR_TYPE = DML_TENSOR_TYPE(0i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_TILE_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub RepeatsCount: u32,
pub Repeats: *const u32,
}
impl Default for DML_TILE_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_TOP_K1_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputValueTensor: *const DML_TENSOR_DESC,
pub OutputIndexTensor: *const DML_TENSOR_DESC,
pub Axis: u32,
pub K: u32,
pub AxisDirection: DML_AXIS_DIRECTION,
}
impl Default for DML_TOP_K1_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_TOP_K_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputValueTensor: *const DML_TENSOR_DESC,
pub OutputIndexTensor: *const DML_TENSOR_DESC,
pub Axis: u32,
pub K: u32,
}
impl Default for DML_TOP_K_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_UPSAMPLE_2D_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub ScaleSize: DML_SIZE_2D,
pub InterpolationMode: DML_INTERPOLATION_MODE,
}
impl Default for DML_UPSAMPLE_2D_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DML_VALUE_SCALE_2D_OPERATOR_DESC {
pub InputTensor: *const DML_TENSOR_DESC,
pub OutputTensor: *const DML_TENSOR_DESC,
pub Scale: f32,
pub ChannelCount: u32,
pub Bias: *const f32,
}
impl Default for DML_VALUE_SCALE_2D_OPERATOR_DESC {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
windows_core::imp::define_interface!(IDMLBindingTable, IDMLBindingTable_Vtbl, 0x29c687dc_de74_4e3b_ab00_1168f2fc3cfc);
impl core::ops::Deref for IDMLBindingTable {
type Target = IDMLDeviceChild;
fn deref(&self) -> &Self::Target {
unsafe { core::mem::transmute(self) }
}
}
windows_core::imp::interface_hierarchy!(IDMLBindingTable, windows_core::IUnknown, IDMLObject, IDMLDeviceChild);
impl IDMLBindingTable {
pub unsafe fn BindInputs(&self, bindings: Option<&[DML_BINDING_DESC]>) {
unsafe { (windows_core::Interface::vtable(self).BindInputs)(windows_core::Interface::as_raw(self), bindings.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), core::mem::transmute(bindings.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr()))) }
}
pub unsafe fn BindOutputs(&self, bindings: Option<&[DML_BINDING_DESC]>) {
unsafe { (windows_core::Interface::vtable(self).BindOutputs)(windows_core::Interface::as_raw(self), bindings.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), core::mem::transmute(bindings.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr()))) }
}
pub unsafe fn BindTemporaryResource(&self, binding: Option<*const DML_BINDING_DESC>) {
unsafe { (windows_core::Interface::vtable(self).BindTemporaryResource)(windows_core::Interface::as_raw(self), binding.unwrap_or(core::mem::zeroed()) as _) }
}
pub unsafe fn BindPersistentResource(&self, binding: Option<*const DML_BINDING_DESC>) {
unsafe { (windows_core::Interface::vtable(self).BindPersistentResource)(windows_core::Interface::as_raw(self), binding.unwrap_or(core::mem::zeroed()) as _) }
}
#[cfg(feature = "Win32_Graphics_Direct3D12")]
pub unsafe fn Reset(&self, desc: Option<*const DML_BINDING_TABLE_DESC>) -> windows_core::Result<()> {
unsafe { (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self), desc.unwrap_or(core::mem::zeroed()) as _).ok() }
}
}
#[repr(C)]
#[doc(hidden)]
pub struct IDMLBindingTable_Vtbl {
pub base__: IDMLDeviceChild_Vtbl,
pub BindInputs: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DML_BINDING_DESC),
pub BindOutputs: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DML_BINDING_DESC),
pub BindTemporaryResource: unsafe extern "system" fn(*mut core::ffi::c_void, *const DML_BINDING_DESC),
pub BindPersistentResource: unsafe extern "system" fn(*mut core::ffi::c_void, *const DML_BINDING_DESC),
#[cfg(feature = "Win32_Graphics_Direct3D12")]
pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void, *const DML_BINDING_TABLE_DESC) -> windows_core::HRESULT,
#[cfg(not(feature = "Win32_Graphics_Direct3D12"))]
Reset: usize,
}
#[cfg(feature = "Win32_Graphics_Direct3D12")]
pub trait IDMLBindingTable_Impl: IDMLDeviceChild_Impl {
fn BindInputs(&self, bindingcount: u32, bindings: *const DML_BINDING_DESC);
fn BindOutputs(&self, bindingcount: u32, bindings: *const DML_BINDING_DESC);
fn BindTemporaryResource(&self, binding: *const DML_BINDING_DESC);
fn BindPersistentResource(&self, binding: *const DML_BINDING_DESC);
fn Reset(&self, desc: *const DML_BINDING_TABLE_DESC) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Direct3D12")]
impl IDMLBindingTable_Vtbl {
pub const fn new<Identity: IDMLBindingTable_Impl, const OFFSET: isize>() -> Self {
unsafe extern "system" fn BindInputs<Identity: IDMLBindingTable_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bindingcount: u32, bindings: *const DML_BINDING_DESC) {
unsafe {
let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
IDMLBindingTable_Impl::BindInputs(this, core::mem::transmute_copy(&bindingcount), core::mem::transmute_copy(&bindings))
}
}
unsafe extern "system" fn BindOutputs<Identity: IDMLBindingTable_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bindingcount: u32, bindings: *const DML_BINDING_DESC) {
unsafe {
let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
IDMLBindingTable_Impl::BindOutputs(this, core::mem::transmute_copy(&bindingcount), core::mem::transmute_copy(&bindings))
}
}
unsafe extern "system" fn BindTemporaryResource<Identity: IDMLBindingTable_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, binding: *const DML_BINDING_DESC) {
unsafe {
let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
IDMLBindingTable_Impl::BindTemporaryResource(this, core::mem::transmute_copy(&binding))
}
}
unsafe extern "system" fn BindPersistentResource<Identity: IDMLBindingTable_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, binding: *const DML_BINDING_DESC) {
unsafe {
let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
IDMLBindingTable_Impl::BindPersistentResource(this, core::mem::transmute_copy(&binding))
}
}
unsafe extern "system" fn Reset<Identity: IDMLBindingTable_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, desc: *const DML_BINDING_TABLE_DESC) -> windows_core::HRESULT {
unsafe {
let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
IDMLBindingTable_Impl::Reset(this, core::mem::transmute_copy(&desc)).into()
}
}
Self {
base__: IDMLDeviceChild_Vtbl::new::<Identity, OFFSET>(),
BindInputs: BindInputs::<Identity, OFFSET>,
BindOutputs: BindOutputs::<Identity, OFFSET>,
BindTemporaryResource: BindTemporaryResource::<Identity, OFFSET>,
BindPersistentResource: BindPersistentResource::<Identity, OFFSET>,
Reset: Reset::<Identity, OFFSET>,
}
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IDMLBindingTable as windows_core::Interface>::IID || iid == &<IDMLObject as windows_core::Interface>::IID || iid == &<IDMLDeviceChild as windows_core::Interface>::IID
}
}
#[cfg(feature = "Win32_Graphics_Direct3D12")]
impl windows_core::RuntimeName for IDMLBindingTable {}
windows_core::imp::define_interface!(IDMLCommandRecorder, IDMLCommandRecorder_Vtbl, 0xe6857a76_2e3e_4fdd_bff4_5d2ba10fb453);
impl core::ops::Deref for IDMLCommandRecorder {
type Target = IDMLDeviceChild;
fn deref(&self) -> &Self::Target {
unsafe { core::mem::transmute(self) }
}
}
windows_core::imp::interface_hierarchy!(IDMLCommandRecorder, windows_core::IUnknown, IDMLObject, IDMLDeviceChild);
impl IDMLCommandRecorder {
#[cfg(feature = "Win32_Graphics_Direct3D12")]
pub unsafe fn RecordDispatch<P0, P1, P2>(&self, commandlist: P0, dispatchable: P1, bindings: P2)
where
P0: windows_core::Param<super::super::super::Graphics::Direct3D12::ID3D12CommandList>,
P1: windows_core::Param<IDMLDispatchable>,
P2: windows_core::Param<IDMLBindingTable>,
{
unsafe { (windows_core::Interface::vtable(self).RecordDispatch)(windows_core::Interface::as_raw(self), commandlist.param().abi(), dispatchable.param().abi(), bindings.param().abi()) }
}
}
#[repr(C)]
#[doc(hidden)]
pub struct IDMLCommandRecorder_Vtbl {
pub base__: IDMLDeviceChild_Vtbl,
#[cfg(feature = "Win32_Graphics_Direct3D12")]
pub RecordDispatch: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void),
#[cfg(not(feature = "Win32_Graphics_Direct3D12"))]
RecordDispatch: usize,
}
#[cfg(feature = "Win32_Graphics_Direct3D12")]
pub trait IDMLCommandRecorder_Impl: IDMLDeviceChild_Impl {
fn RecordDispatch(&self, commandlist: windows_core::Ref<super::super::super::Graphics::Direct3D12::ID3D12CommandList>, dispatchable: windows_core::Ref<IDMLDispatchable>, bindings: windows_core::Ref<IDMLBindingTable>);
}
#[cfg(feature = "Win32_Graphics_Direct3D12")]
impl IDMLCommandRecorder_Vtbl {
pub const fn new<Identity: IDMLCommandRecorder_Impl, const OFFSET: isize>() -> Self {
unsafe extern "system" fn RecordDispatch<Identity: IDMLCommandRecorder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, commandlist: *mut core::ffi::c_void, dispatchable: *mut core::ffi::c_void, bindings: *mut core::ffi::c_void) {
unsafe {
let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
IDMLCommandRecorder_Impl::RecordDispatch(this, core::mem::transmute_copy(&commandlist), core::mem::transmute_copy(&dispatchable), core::mem::transmute_copy(&bindings))
}
}
Self { base__: IDMLDeviceChild_Vtbl::new::<Identity, OFFSET>(), RecordDispatch: RecordDispatch::<Identity, OFFSET> }
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IDMLCommandRecorder as windows_core::Interface>::IID || iid == &<IDMLObject as windows_core::Interface>::IID || iid == &<IDMLDeviceChild as windows_core::Interface>::IID
}
}
#[cfg(feature = "Win32_Graphics_Direct3D12")]
impl windows_core::RuntimeName for IDMLCommandRecorder {}
windows_core::imp::define_interface!(IDMLCompiledOperator, IDMLCompiledOperator_Vtbl, 0x6b15e56a_bf5c_4902_92d8_da3a650afea4);
impl core::ops::Deref for IDMLCompiledOperator {
type Target = IDMLDispatchable;
fn deref(&self) -> &Self::Target {
unsafe { core::mem::transmute(self) }
}
}
windows_core::imp::interface_hierarchy!(IDMLCompiledOperator, windows_core::IUnknown, IDMLObject, IDMLDeviceChild, IDMLPageable, IDMLDispatchable);
#[repr(C)]
#[doc(hidden)]
pub struct IDMLCompiledOperator_Vtbl {
pub base__: IDMLDispatchable_Vtbl,
}
pub trait IDMLCompiledOperator_Impl: IDMLDispatchable_Impl {}
impl IDMLCompiledOperator_Vtbl {
pub const fn new<Identity: IDMLCompiledOperator_Impl, const OFFSET: isize>() -> Self {
Self { base__: IDMLDispatchable_Vtbl::new::<Identity, OFFSET>() }
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IDMLCompiledOperator as windows_core::Interface>::IID || iid == &<IDMLObject as windows_core::Interface>::IID || iid == &<IDMLDeviceChild as windows_core::Interface>::IID || iid == &<IDMLPageable as windows_core::Interface>::IID || iid == &<IDMLDispatchable as windows_core::Interface>::IID
}
}
impl windows_core::RuntimeName for IDMLCompiledOperator {}
windows_core::imp::define_interface!(IDMLDebugDevice, IDMLDebugDevice_Vtbl, 0x7d6f3ac9_394a_4ac3_92a7_390cc57a8217);
windows_core::imp::interface_hierarchy!(IDMLDebugDevice, windows_core::IUnknown);
impl IDMLDebugDevice {
pub unsafe fn SetMuteDebugOutput(&self, mute: bool) {
unsafe { (windows_core::Interface::vtable(self).SetMuteDebugOutput)(windows_core::Interface::as_raw(self), mute.into()) }
}
}
#[repr(C)]
#[doc(hidden)]
pub struct IDMLDebugDevice_Vtbl {
pub base__: windows_core::IUnknown_Vtbl,
pub SetMuteDebugOutput: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL),
}
pub trait IDMLDebugDevice_Impl: windows_core::IUnknownImpl {
fn SetMuteDebugOutput(&self, mute: windows_core::BOOL);
}
impl IDMLDebugDevice_Vtbl {
pub const fn new<Identity: IDMLDebugDevice_Impl, const OFFSET: isize>() -> Self {
unsafe extern "system" fn SetMuteDebugOutput<Identity: IDMLDebugDevice_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mute: windows_core::BOOL) {
unsafe {
let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
IDMLDebugDevice_Impl::SetMuteDebugOutput(this, core::mem::transmute_copy(&mute))
}
}
Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetMuteDebugOutput: SetMuteDebugOutput::<Identity, OFFSET> }
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IDMLDebugDevice as windows_core::Interface>::IID
}
}
impl windows_core::RuntimeName for IDMLDebugDevice {}
windows_core::imp::define_interface!(IDMLDevice, IDMLDevice_Vtbl, 0x6dbd6437_96fd_423f_a98c_ae5e7c2a573f);
impl core::ops::Deref for IDMLDevice {
type Target = IDMLObject;
fn deref(&self) -> &Self::Target {
unsafe { core::mem::transmute(self) }
}
}
windows_core::imp::interface_hierarchy!(IDMLDevice, windows_core::IUnknown, IDMLObject);
impl IDMLDevice {
pub unsafe fn CheckFeatureSupport(&self, feature: DML_FEATURE, featurequerydatasize: u32, featurequerydata: Option<*const core::ffi::c_void>, featuresupportdatasize: u32, featuresupportdata: *mut core::ffi::c_void) -> windows_core::Result<()> {
unsafe { (windows_core::Interface::vtable(self).CheckFeatureSupport)(windows_core::Interface::as_raw(self), feature, featurequerydatasize, featurequerydata.unwrap_or(core::mem::zeroed()) as _, featuresupportdatasize, featuresupportdata as _).ok() }
}
pub unsafe fn CreateOperator<T>(&self, desc: *const DML_OPERATOR_DESC, result__: *mut Option<T>) -> windows_core::Result<()>
where
T: windows_core::Interface,
{
unsafe { (windows_core::Interface::vtable(self).CreateOperator)(windows_core::Interface::as_raw(self), desc, &T::IID, result__ as *mut _ as *mut _).ok() }
}
pub unsafe fn CompileOperator<P0, T>(&self, op: P0, flags: DML_EXECUTION_FLAGS, result__: *mut Option<T>) -> windows_core::Result<()>
where
P0: windows_core::Param<IDMLOperator>,
T: windows_core::Interface,
{
unsafe { (windows_core::Interface::vtable(self).CompileOperator)(windows_core::Interface::as_raw(self), op.param().abi(), flags, &T::IID, result__ as *mut _ as *mut _).ok() }
}
pub unsafe fn CreateOperatorInitializer<T>(&self, operators: Option<&[Option<IDMLCompiledOperator>]>) -> windows_core::Result<T>
where
T: windows_core::Interface,
{
let mut result__ = core::ptr::null_mut();
unsafe { (windows_core::Interface::vtable(self).CreateOperatorInitializer)(windows_core::Interface::as_raw(self), operators.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), core::mem::transmute(operators.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
pub unsafe fn CreateCommandRecorder<T>(&self) -> windows_core::Result<T>
where
T: windows_core::Interface,
{
let mut result__ = core::ptr::null_mut();
unsafe { (windows_core::Interface::vtable(self).CreateCommandRecorder)(windows_core::Interface::as_raw(self), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[cfg(feature = "Win32_Graphics_Direct3D12")]
pub unsafe fn CreateBindingTable<T>(&self, desc: Option<*const DML_BINDING_TABLE_DESC>) -> windows_core::Result<T>
where
T: windows_core::Interface,
{
let mut result__ = core::ptr::null_mut();
unsafe { (windows_core::Interface::vtable(self).CreateBindingTable)(windows_core::Interface::as_raw(self), desc.unwrap_or(core::mem::zeroed()) as _, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
pub unsafe fn Evict(&self, ppobjects: &[Option<IDMLPageable>]) -> windows_core::Result<()> {
unsafe { (windows_core::Interface::vtable(self).Evict)(windows_core::Interface::as_raw(self), ppobjects.len().try_into().unwrap(), core::mem::transmute(ppobjects.as_ptr())).ok() }
}
pub unsafe fn MakeResident(&self, ppobjects: &[Option<IDMLPageable>]) -> windows_core::Result<()> {
unsafe { (windows_core::Interface::vtable(self).MakeResident)(windows_core::Interface::as_raw(self), ppobjects.len().try_into().unwrap(), core::mem::transmute(ppobjects.as_ptr())).ok() }
}
pub unsafe fn GetDeviceRemovedReason(&self) -> windows_core::Result<()> {
unsafe { (windows_core::Interface::vtable(self).GetDeviceRemovedReason)(windows_core::Interface::as_raw(self)).ok() }
}
pub unsafe fn GetParentDevice<T>(&self) -> windows_core::Result<T>
where
T: windows_core::Interface,
{
let mut result__ = core::ptr::null_mut();
unsafe { (windows_core::Interface::vtable(self).GetParentDevice)(windows_core::Interface::as_raw(self), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
}
#[repr(C)]
#[doc(hidden)]
pub struct IDMLDevice_Vtbl {
pub base__: IDMLObject_Vtbl,
pub CheckFeatureSupport: unsafe extern "system" fn(*mut core::ffi::c_void, DML_FEATURE, u32, *const core::ffi::c_void, u32, *mut core::ffi::c_void) -> windows_core::HRESULT,
pub CreateOperator: unsafe extern "system" fn(*mut core::ffi::c_void, *const DML_OPERATOR_DESC, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
pub CompileOperator: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, DML_EXECUTION_FLAGS, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
pub CreateOperatorInitializer: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const *mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
pub CreateCommandRecorder: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
#[cfg(feature = "Win32_Graphics_Direct3D12")]
pub CreateBindingTable: unsafe extern "system" fn(*mut core::ffi::c_void, *const DML_BINDING_TABLE_DESC, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
#[cfg(not(feature = "Win32_Graphics_Direct3D12"))]
CreateBindingTable: usize,
pub Evict: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const *mut core::ffi::c_void) -> windows_core::HRESULT,
pub MakeResident: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const *mut core::ffi::c_void) -> windows_core::HRESULT,
pub GetDeviceRemovedReason: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
pub GetParentDevice: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_Graphics_Direct3D12")]
pub trait IDMLDevice_Impl: IDMLObject_Impl {
fn CheckFeatureSupport(&self, feature: DML_FEATURE, featurequerydatasize: u32, featurequerydata: *const core::ffi::c_void, featuresupportdatasize: u32, featuresupportdata: *mut core::ffi::c_void) -> windows_core::Result<()>;
fn CreateOperator(&self, desc: *const DML_OPERATOR_DESC, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
fn CompileOperator(&self, op: windows_core::Ref<IDMLOperator>, flags: DML_EXECUTION_FLAGS, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
fn CreateOperatorInitializer(&self, operatorcount: u32, operators: *const Option<IDMLCompiledOperator>, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
fn CreateCommandRecorder(&self, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
fn CreateBindingTable(&self, desc: *const DML_BINDING_TABLE_DESC, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
fn Evict(&self, count: u32, ppobjects: *const Option<IDMLPageable>) -> windows_core::Result<()>;
fn MakeResident(&self, count: u32, ppobjects: *const Option<IDMLPageable>) -> windows_core::Result<()>;
fn GetDeviceRemovedReason(&self) -> windows_core::Result<()>;
fn GetParentDevice(&self, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Direct3D12")]
impl IDMLDevice_Vtbl {
pub const fn new<Identity: IDMLDevice_Impl, const OFFSET: isize>() -> Self {
unsafe extern "system" fn CheckFeatureSupport<Identity: IDMLDevice_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, feature: DML_FEATURE, featurequerydatasize: u32, featurequerydata: *const core::ffi::c_void, featuresupportdatasize: u32, featuresupportdata: *mut core::ffi::c_void) -> windows_core::HRESULT {
unsafe {
let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
IDMLDevice_Impl::CheckFeatureSupport(this, core::mem::transmute_copy(&feature), core::mem::transmute_copy(&featurequerydatasize), core::mem::transmute_copy(&featurequerydata), core::mem::transmute_copy(&featuresupportdatasize), core::mem::transmute_copy(&featuresupportdata)).into()
}
}
unsafe extern "system" fn CreateOperator<Identity: IDMLDevice_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, desc: *const DML_OPERATOR_DESC, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
unsafe {
let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
IDMLDevice_Impl::CreateOperator(this, core::mem::transmute_copy(&desc), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
}
}
unsafe extern "system" fn CompileOperator<Identity: IDMLDevice_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, op: *mut core::ffi::c_void, flags: DML_EXECUTION_FLAGS, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
unsafe {
let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
IDMLDevice_Impl::CompileOperator(this, core::mem::transmute_copy(&op), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
}
}
unsafe extern "system" fn CreateOperatorInitializer<Identity: IDMLDevice_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, operatorcount: u32, operators: *const *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
unsafe {
let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
IDMLDevice_Impl::CreateOperatorInitializer(this, core::mem::transmute_copy(&operatorcount), core::mem::transmute_copy(&operators), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
}
}
unsafe extern "system" fn CreateCommandRecorder<Identity: IDMLDevice_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
unsafe {
let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
IDMLDevice_Impl::CreateCommandRecorder(this, core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
}
}
unsafe extern "system" fn CreateBindingTable<Identity: IDMLDevice_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, desc: *const DML_BINDING_TABLE_DESC, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
unsafe {
let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
IDMLDevice_Impl::CreateBindingTable(this, core::mem::transmute_copy(&desc), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
}
}
unsafe extern "system" fn Evict<Identity: IDMLDevice_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, ppobjects: *const *mut core::ffi::c_void) -> windows_core::HRESULT {
unsafe {
let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
IDMLDevice_Impl::Evict(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&ppobjects)).into()
}
}
unsafe extern "system" fn MakeResident<Identity: IDMLDevice_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, ppobjects: *const *mut core::ffi::c_void) -> windows_core::HRESULT {
unsafe {
let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
IDMLDevice_Impl::MakeResident(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&ppobjects)).into()
}
}
unsafe extern "system" fn GetDeviceRemovedReason<Identity: IDMLDevice_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
unsafe {
let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
IDMLDevice_Impl::GetDeviceRemovedReason(this).into()
}
}
unsafe extern "system" fn GetParentDevice<Identity: IDMLDevice_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
unsafe {
let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
IDMLDevice_Impl::GetParentDevice(this, core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
}
}
Self {
base__: IDMLObject_Vtbl::new::<Identity, OFFSET>(),
CheckFeatureSupport: CheckFeatureSupport::<Identity, OFFSET>,
CreateOperator: CreateOperator::<Identity, OFFSET>,
CompileOperator: CompileOperator::<Identity, OFFSET>,
CreateOperatorInitializer: CreateOperatorInitializer::<Identity, OFFSET>,
CreateCommandRecorder: CreateCommandRecorder::<Identity, OFFSET>,
CreateBindingTable: CreateBindingTable::<Identity, OFFSET>,
Evict: Evict::<Identity, OFFSET>,
MakeResident: MakeResident::<Identity, OFFSET>,
GetDeviceRemovedReason: GetDeviceRemovedReason::<Identity, OFFSET>,
GetParentDevice: GetParentDevice::<Identity, OFFSET>,
}
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IDMLDevice as windows_core::Interface>::IID || iid == &<IDMLObject as windows_core::Interface>::IID
}
}
#[cfg(feature = "Win32_Graphics_Direct3D12")]
impl windows_core::RuntimeName for IDMLDevice {}
windows_core::imp::define_interface!(IDMLDevice1, IDMLDevice1_Vtbl, 0xa0884f9a_d2be_4355_aa5d_5901281ad1d2);
impl core::ops::Deref for IDMLDevice1 {
type Target = IDMLDevice;
fn deref(&self) -> &Self::Target {
unsafe { core::mem::transmute(self) }
}
}
windows_core::imp::interface_hierarchy!(IDMLDevice1, windows_core::IUnknown, IDMLObject, IDMLDevice);
impl IDMLDevice1 {
pub unsafe fn CompileGraph<T>(&self, desc: *const DML_GRAPH_DESC, flags: DML_EXECUTION_FLAGS, result__: *mut Option<T>) -> windows_core::Result<()>
where
T: windows_core::Interface,
{
unsafe { (windows_core::Interface::vtable(self).CompileGraph)(windows_core::Interface::as_raw(self), desc, flags, &T::IID, result__ as *mut _ as *mut _).ok() }
}
}
#[repr(C)]
#[doc(hidden)]
pub struct IDMLDevice1_Vtbl {
pub base__: IDMLDevice_Vtbl,
pub CompileGraph: unsafe extern "system" fn(*mut core::ffi::c_void, *const DML_GRAPH_DESC, DML_EXECUTION_FLAGS, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_Graphics_Direct3D12")]
pub trait IDMLDevice1_Impl: IDMLDevice_Impl {
fn CompileGraph(&self, desc: *const DML_GRAPH_DESC, flags: DML_EXECUTION_FLAGS, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Direct3D12")]
impl IDMLDevice1_Vtbl {
pub const fn new<Identity: IDMLDevice1_Impl, const OFFSET: isize>() -> Self {
unsafe extern "system" fn CompileGraph<Identity: IDMLDevice1_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, desc: *const DML_GRAPH_DESC, flags: DML_EXECUTION_FLAGS, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
unsafe {
let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
IDMLDevice1_Impl::CompileGraph(this, core::mem::transmute_copy(&desc), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
}
}
Self { base__: IDMLDevice_Vtbl::new::<Identity, OFFSET>(), CompileGraph: CompileGraph::<Identity, OFFSET> }
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IDMLDevice1 as windows_core::Interface>::IID || iid == &<IDMLObject as windows_core::Interface>::IID || iid == &<IDMLDevice as windows_core::Interface>::IID
}
}
#[cfg(feature = "Win32_Graphics_Direct3D12")]
impl windows_core::RuntimeName for IDMLDevice1 {}
windows_core::imp::define_interface!(IDMLDeviceChild, IDMLDeviceChild_Vtbl, 0x27e83142_8165_49e3_974e_2fd66e4cb69d);
impl core::ops::Deref for IDMLDeviceChild {
type Target = IDMLObject;
fn deref(&self) -> &Self::Target {
unsafe { core::mem::transmute(self) }
}
}
windows_core::imp::interface_hierarchy!(IDMLDeviceChild, windows_core::IUnknown, IDMLObject);
impl IDMLDeviceChild {
pub unsafe fn GetDevice<T>(&self) -> windows_core::Result<T>
where
T: windows_core::Interface,
{
let mut result__ = core::ptr::null_mut();
unsafe { (windows_core::Interface::vtable(self).GetDevice)(windows_core::Interface::as_raw(self), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
}
#[repr(C)]
#[doc(hidden)]
pub struct IDMLDeviceChild_Vtbl {
pub base__: IDMLObject_Vtbl,
pub GetDevice: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IDMLDeviceChild_Impl: IDMLObject_Impl {
fn GetDevice(&self, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
impl IDMLDeviceChild_Vtbl {
pub const fn new<Identity: IDMLDeviceChild_Impl, const OFFSET: isize>() -> Self {
unsafe extern "system" fn GetDevice<Identity: IDMLDeviceChild_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
unsafe {
let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
IDMLDeviceChild_Impl::GetDevice(this, core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
}
}
Self { base__: IDMLObject_Vtbl::new::<Identity, OFFSET>(), GetDevice: GetDevice::<Identity, OFFSET> }
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IDMLDeviceChild as windows_core::Interface>::IID || iid == &<IDMLObject as windows_core::Interface>::IID
}
}
impl windows_core::RuntimeName for IDMLDeviceChild {}
windows_core::imp::define_interface!(IDMLDispatchable, IDMLDispatchable_Vtbl, 0xdcb821a8_1039_441e_9f1c_b1759c2f3cec);
impl core::ops::Deref for IDMLDispatchable {
type Target = IDMLPageable;
fn deref(&self) -> &Self::Target {
unsafe { core::mem::transmute(self) }
}
}
windows_core::imp::interface_hierarchy!(IDMLDispatchable, windows_core::IUnknown, IDMLObject, IDMLDeviceChild, IDMLPageable);
impl IDMLDispatchable {
pub unsafe fn GetBindingProperties(&self) -> DML_BINDING_PROPERTIES {
unsafe {
let mut result__ = core::mem::zeroed();
(windows_core::Interface::vtable(self).GetBindingProperties)(windows_core::Interface::as_raw(self), &mut result__);
result__
}
}
}
#[repr(C)]
#[doc(hidden)]
pub struct IDMLDispatchable_Vtbl {
pub base__: IDMLPageable_Vtbl,
pub GetBindingProperties: unsafe extern "system" fn(*mut core::ffi::c_void, *mut DML_BINDING_PROPERTIES),
}
pub trait IDMLDispatchable_Impl: IDMLPageable_Impl {
fn GetBindingProperties(&self) -> DML_BINDING_PROPERTIES;
}
impl IDMLDispatchable_Vtbl {
pub const fn new<Identity: IDMLDispatchable_Impl, const OFFSET: isize>() -> Self {
unsafe extern "system" fn GetBindingProperties<Identity: IDMLDispatchable_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, result__: *mut DML_BINDING_PROPERTIES) {
unsafe {
let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
*result__ = IDMLDispatchable_Impl::GetBindingProperties(this)
}
}
Self { base__: IDMLPageable_Vtbl::new::<Identity, OFFSET>(), GetBindingProperties: GetBindingProperties::<Identity, OFFSET> }
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IDMLDispatchable as windows_core::Interface>::IID || iid == &<IDMLObject as windows_core::Interface>::IID || iid == &<IDMLDeviceChild as windows_core::Interface>::IID || iid == &<IDMLPageable as windows_core::Interface>::IID
}
}
impl windows_core::RuntimeName for IDMLDispatchable {}
windows_core::imp::define_interface!(IDMLObject, IDMLObject_Vtbl, 0xc8263aac_9e0c_4a2d_9b8e_007521a3317c);
windows_core::imp::interface_hierarchy!(IDMLObject, windows_core::IUnknown);
impl IDMLObject {
pub unsafe fn GetPrivateData(&self, guid: *const windows_core::GUID, datasize: *mut u32, data: Option<*mut core::ffi::c_void>) -> windows_core::Result<()> {
unsafe { (windows_core::Interface::vtable(self).GetPrivateData)(windows_core::Interface::as_raw(self), guid, datasize as _, data.unwrap_or(core::mem::zeroed()) as _).ok() }
}
pub unsafe fn SetPrivateData(&self, guid: *const windows_core::GUID, datasize: u32, data: Option<*const core::ffi::c_void>) -> windows_core::Result<()> {
unsafe { (windows_core::Interface::vtable(self).SetPrivateData)(windows_core::Interface::as_raw(self), guid, datasize, data.unwrap_or(core::mem::zeroed()) as _).ok() }
}
pub unsafe fn SetPrivateDataInterface<P1>(&self, guid: *const windows_core::GUID, data: P1) -> windows_core::Result<()>
where
P1: windows_core::Param<windows_core::IUnknown>,
{
unsafe { (windows_core::Interface::vtable(self).SetPrivateDataInterface)(windows_core::Interface::as_raw(self), guid, data.param().abi()).ok() }
}
pub unsafe fn SetName<P0>(&self, name: P0) -> windows_core::Result<()>
where
P0: windows_core::Param<windows_core::PCWSTR>,
{
unsafe { (windows_core::Interface::vtable(self).SetName)(windows_core::Interface::as_raw(self), name.param().abi()).ok() }
}
}
#[repr(C)]
#[doc(hidden)]
pub struct IDMLObject_Vtbl {
pub base__: windows_core::IUnknown_Vtbl,
pub GetPrivateData: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut u32, *mut core::ffi::c_void) -> windows_core::HRESULT,
pub SetPrivateData: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, u32, *const core::ffi::c_void) -> windows_core::HRESULT,
pub SetPrivateDataInterface: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut core::ffi::c_void) -> windows_core::HRESULT,
pub SetName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
}
pub trait IDMLObject_Impl: windows_core::IUnknownImpl {
fn GetPrivateData(&self, guid: *const windows_core::GUID, datasize: *mut u32, data: *mut core::ffi::c_void) -> windows_core::Result<()>;
fn SetPrivateData(&self, guid: *const windows_core::GUID, datasize: u32, data: *const core::ffi::c_void) -> windows_core::Result<()>;
fn SetPrivateDataInterface(&self, guid: *const windows_core::GUID, data: windows_core::Ref<windows_core::IUnknown>) -> windows_core::Result<()>;
fn SetName(&self, name: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl IDMLObject_Vtbl {
pub const fn new<Identity: IDMLObject_Impl, const OFFSET: isize>() -> Self {
unsafe extern "system" fn GetPrivateData<Identity: IDMLObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, guid: *const windows_core::GUID, datasize: *mut u32, data: *mut core::ffi::c_void) -> windows_core::HRESULT {
unsafe {
let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
IDMLObject_Impl::GetPrivateData(this, core::mem::transmute_copy(&guid), core::mem::transmute_copy(&datasize), core::mem::transmute_copy(&data)).into()
}
}
unsafe extern "system" fn SetPrivateData<Identity: IDMLObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, guid: *const windows_core::GUID, datasize: u32, data: *const core::ffi::c_void) -> windows_core::HRESULT {
unsafe {
let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
IDMLObject_Impl::SetPrivateData(this, core::mem::transmute_copy(&guid), core::mem::transmute_copy(&datasize), core::mem::transmute_copy(&data)).into()
}
}
unsafe extern "system" fn SetPrivateDataInterface<Identity: IDMLObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, guid: *const windows_core::GUID, data: *mut core::ffi::c_void) -> windows_core::HRESULT {
unsafe {
let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
IDMLObject_Impl::SetPrivateDataInterface(this, core::mem::transmute_copy(&guid), core::mem::transmute_copy(&data)).into()
}
}
unsafe extern "system" fn SetName<Identity: IDMLObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: windows_core::PCWSTR) -> windows_core::HRESULT {
unsafe {
let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
IDMLObject_Impl::SetName(this, core::mem::transmute(&name)).into()
}
}
Self {
base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
GetPrivateData: GetPrivateData::<Identity, OFFSET>,
SetPrivateData: SetPrivateData::<Identity, OFFSET>,
SetPrivateDataInterface: SetPrivateDataInterface::<Identity, OFFSET>,
SetName: SetName::<Identity, OFFSET>,
}
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IDMLObject as windows_core::Interface>::IID
}
}
impl windows_core::RuntimeName for IDMLObject {}
windows_core::imp::define_interface!(IDMLOperator, IDMLOperator_Vtbl, 0x26caae7a_3081_4633_9581_226fbe57695d);
impl core::ops::Deref for IDMLOperator {
type Target = IDMLDeviceChild;
fn deref(&self) -> &Self::Target {
unsafe { core::mem::transmute(self) }
}
}
windows_core::imp::interface_hierarchy!(IDMLOperator, windows_core::IUnknown, IDMLObject, IDMLDeviceChild);
#[repr(C)]
#[doc(hidden)]
pub struct IDMLOperator_Vtbl {
pub base__: IDMLDeviceChild_Vtbl,
}
pub trait IDMLOperator_Impl: IDMLDeviceChild_Impl {}
impl IDMLOperator_Vtbl {
pub const fn new<Identity: IDMLOperator_Impl, const OFFSET: isize>() -> Self {
Self { base__: IDMLDeviceChild_Vtbl::new::<Identity, OFFSET>() }
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IDMLOperator as windows_core::Interface>::IID || iid == &<IDMLObject as windows_core::Interface>::IID || iid == &<IDMLDeviceChild as windows_core::Interface>::IID
}
}
impl windows_core::RuntimeName for IDMLOperator {}
windows_core::imp::define_interface!(IDMLOperatorInitializer, IDMLOperatorInitializer_Vtbl, 0x427c1113_435c_469c_8676_4d5dd072f813);
impl core::ops::Deref for IDMLOperatorInitializer {
type Target = IDMLDispatchable;
fn deref(&self) -> &Self::Target {
unsafe { core::mem::transmute(self) }
}
}
windows_core::imp::interface_hierarchy!(IDMLOperatorInitializer, windows_core::IUnknown, IDMLObject, IDMLDeviceChild, IDMLPageable, IDMLDispatchable);
impl IDMLOperatorInitializer {
pub unsafe fn Reset(&self, operators: Option<&[Option<IDMLCompiledOperator>]>) -> windows_core::Result<()> {
unsafe { (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self), operators.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), core::mem::transmute(operators.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr()))).ok() }
}
}
#[repr(C)]
#[doc(hidden)]
pub struct IDMLOperatorInitializer_Vtbl {
pub base__: IDMLDispatchable_Vtbl,
pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IDMLOperatorInitializer_Impl: IDMLDispatchable_Impl {
fn Reset(&self, operatorcount: u32, operators: *const Option<IDMLCompiledOperator>) -> windows_core::Result<()>;
}
impl IDMLOperatorInitializer_Vtbl {
pub const fn new<Identity: IDMLOperatorInitializer_Impl, const OFFSET: isize>() -> Self {
unsafe extern "system" fn Reset<Identity: IDMLOperatorInitializer_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, operatorcount: u32, operators: *const *mut core::ffi::c_void) -> windows_core::HRESULT {
unsafe {
let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
IDMLOperatorInitializer_Impl::Reset(this, core::mem::transmute_copy(&operatorcount), core::mem::transmute_copy(&operators)).into()
}
}
Self { base__: IDMLDispatchable_Vtbl::new::<Identity, OFFSET>(), Reset: Reset::<Identity, OFFSET> }
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IDMLOperatorInitializer as windows_core::Interface>::IID || iid == &<IDMLObject as windows_core::Interface>::IID || iid == &<IDMLDeviceChild as windows_core::Interface>::IID || iid == &<IDMLPageable as windows_core::Interface>::IID || iid == &<IDMLDispatchable as windows_core::Interface>::IID
}
}
impl windows_core::RuntimeName for IDMLOperatorInitializer {}
windows_core::imp::define_interface!(IDMLPageable, IDMLPageable_Vtbl, 0xb1ab0825_4542_4a4b_8617_6dde6e8f6201);
impl core::ops::Deref for IDMLPageable {
type Target = IDMLDeviceChild;
fn deref(&self) -> &Self::Target {
unsafe { core::mem::transmute(self) }
}
}
windows_core::imp::interface_hierarchy!(IDMLPageable, windows_core::IUnknown, IDMLObject, IDMLDeviceChild);
#[repr(C)]
#[doc(hidden)]
pub struct IDMLPageable_Vtbl {
pub base__: IDMLDeviceChild_Vtbl,
}
pub trait IDMLPageable_Impl: IDMLDeviceChild_Impl {}
impl IDMLPageable_Vtbl {
pub const fn new<Identity: IDMLPageable_Impl, const OFFSET: isize>() -> Self {
Self { base__: IDMLDeviceChild_Vtbl::new::<Identity, OFFSET>() }
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IDMLPageable as windows_core::Interface>::IID || iid == &<IDMLObject as windows_core::Interface>::IID || iid == &<IDMLDeviceChild as windows_core::Interface>::IID
}
}
impl windows_core::RuntimeName for IDMLPageable {}