using NvAPIWrapper.Native.Exceptions;
using NvAPIWrapper.Native.General;
using NvAPIWrapper.Native.GPU;
using NvAPIWrapper.Native.GPU.Structures;
using NvAPIWrapper.Native.Helpers;
using NvAPIWrapper.Native.Helpers.Structures;
namespace NvAPIWrapper.Native
{
public static partial class GPUApi
{
///
/// Gets the control information about illumination devices on the given GPU.
///
/// The physical GPU handle.
/// An instance of .
public static IlluminationDeviceControlParametersV1 ClientIlluminationDevicesGetControl(
PhysicalGPUHandle gpuHandle)
{
var instance = typeof(IlluminationDeviceControlParametersV1)
.Instantiate();
using (var deviceControlParametersReference = ValueTypeReference.FromValueType(instance))
{
var status = DelegateFactory.GetDelegate()(
gpuHandle,
deviceControlParametersReference
);
if (status != Status.Ok)
{
throw new NVIDIAApiException(status);
}
return deviceControlParametersReference.ToValueType()
.GetValueOrDefault();
}
}
///
/// Returns static information about illumination devices on the given GPU.
///
/// The physical GPU handle.
/// An instance of .
public static IlluminationDeviceInfoParametersV1 ClientIlluminationDevicesGetInfo(PhysicalGPUHandle gpuHandle)
{
var instance = typeof(IlluminationDeviceInfoParametersV1).Instantiate();
using (var deviceInfoParametersReference = ValueTypeReference.FromValueType(instance))
{
var status = DelegateFactory.GetDelegate()(
gpuHandle,
deviceInfoParametersReference
);
if (status != Status.Ok)
{
throw new NVIDIAApiException(status);
}
return deviceInfoParametersReference.ToValueType()
.GetValueOrDefault();
}
}
///
/// Sets the control information about illumination devices on the given GPU.
///
/// The physical GPU handle.
/// The new control illumination devices control information.
public static void ClientIlluminationDevicesSetControl(
PhysicalGPUHandle gpuHandle,
IlluminationDeviceControlParametersV1 deviceControlParameters)
{
using (var deviceControlParametersReference = ValueTypeReference.FromValueType(deviceControlParameters))
{
var status = DelegateFactory.GetDelegate()(
gpuHandle,
deviceControlParametersReference
);
if (status != Status.Ok)
{
throw new NVIDIAApiException(status);
}
}
}
///
/// Gets the control information about illumination zones on the given GPU.
///
/// The physical GPU handle.
/// The type of settings to retrieve.
/// An instance of .
public static IlluminationZoneControlParametersV1 ClientIlluminationZonesGetControl(
PhysicalGPUHandle gpuHandle,
IlluminationZoneControlValuesType valuesType)
{
var instance = new IlluminationZoneControlParametersV1(valuesType);
using (var zoneControlParametersReference = ValueTypeReference.FromValueType(instance))
{
var status = DelegateFactory.GetDelegate()(
gpuHandle,
zoneControlParametersReference
);
if (status != Status.Ok)
{
throw new NVIDIAApiException(status);
}
return zoneControlParametersReference.ToValueType()
.GetValueOrDefault();
}
}
///
/// Returns static information about illumination zones on the given GPU.
///
/// The physical GPU handle.
/// An instance of .
public static IlluminationZoneInfoParametersV1 ClientIlluminationZonesGetInfo(PhysicalGPUHandle gpuHandle)
{
var instance = typeof(IlluminationZoneInfoParametersV1).Instantiate();
using (var zoneInfoParametersReference = ValueTypeReference.FromValueType(instance))
{
var status = DelegateFactory.GetDelegate()(
gpuHandle,
zoneInfoParametersReference
);
if (status != Status.Ok)
{
throw new NVIDIAApiException(status);
}
return zoneInfoParametersReference.ToValueType().GetValueOrDefault();
}
}
///
/// Sets the control information about illumination zones on the given GPU.
///
/// The physical GPU handle.
/// The new control illumination zones control information.
public static void ClientIlluminationZonesSetControl(
PhysicalGPUHandle gpuHandle,
IlluminationZoneControlParametersV1 zoneControlParameters)
{
using (var zoneControlParametersReference = ValueTypeReference.FromValueType(zoneControlParameters))
{
var status = DelegateFactory.GetDelegate()(
gpuHandle,
zoneControlParametersReference
);
if (status != Status.Ok)
{
throw new NVIDIAApiException(status);
}
}
}
///
/// Reports value of the specified illumination attribute brightness.
///
/// The physical GPU handle.
/// The attribute to get the value of.
/// Brightness value in percentage.
public static uint GetIllumination(PhysicalGPUHandle gpuHandle, IlluminationAttribute attribute)
{
var instance = new GetIlluminationParameterV1(gpuHandle, attribute);
using (var getParameterReference = ValueTypeReference.FromValueType(instance))
{
var status = DelegateFactory.GetDelegate()(
getParameterReference
);
if (status != Status.Ok)
{
throw new NVIDIAApiException(status);
}
return getParameterReference.ToValueType()
.GetValueOrDefault()
.ValueInPercentage;
}
}
///
/// Queries a illumination attribute support status.
///
/// The physical GPU handle.
/// The attribute to get the support status of.
/// true if the attribute is supported on this GPU; otherwise false.
public static bool QueryIlluminationSupport(PhysicalGPUHandle gpuHandle, IlluminationAttribute attribute)
{
var instance = new QueryIlluminationSupportParameterV1(gpuHandle, attribute);
using (var querySupportParameterReference = ValueTypeReference.FromValueType(instance))
{
var status = DelegateFactory.GetDelegate()(
querySupportParameterReference
);
if (status != Status.Ok)
{
throw new NVIDIAApiException(status);
}
return querySupportParameterReference.ToValueType()
.GetValueOrDefault()
.IsSupported;
}
}
///
/// Sets the value of the specified illumination attribute brightness.
///
/// The physical GPU handle.
/// The attribute to set the value of.
/// Brightness value in percentage.
public static void SetIllumination(
PhysicalGPUHandle gpuHandle,
IlluminationAttribute attribute,
uint valueInPercentage)
{
var instance = new SetIlluminationParameterV1(gpuHandle, attribute, valueInPercentage);
using (var setParameterReference = ValueTypeReference.FromValueType(instance))
{
var status = DelegateFactory.GetDelegate()(
setParameterReference
);
if (status != Status.Ok)
{
throw new NVIDIAApiException(status);
}
}
}
}
}