onnxruntime/winml/test/api/raw/microsoft.ai.machinelearning.gpu.h
Sheil Kumar 43a828f0a2
Add tests for WinRT Projection Raw ABI consumption (#3718)
Add tests for WinRT Projection Raw ABI consumption
Co-authored-by: Sheil Kumar <sheilk@microsoft.com>
2020-05-02 00:33:17 -07:00

58 lines
No EOL
1.8 KiB
C++

#pragma once
#ifndef MICROSOFT_AI_MACHINELEARNING_GPU_H_
#define MICROSOFT_AI_MACHINELEARNING_GPU_H_
#include "microsoft.ai.machinelearning.h"
namespace Microsoft { namespace AI { namespace MachineLearning { namespace gpu {
enum directx_device_kind { directx, directx_high_power, directx_min_power };
struct directx_device : public learning_model_device
{
directx_device(directx_device_kind kind) :
learning_model_device(create_device(kind))
{}
directx_device(ABI::Windows::Graphics::DirectX::Direct3D11::IDirect3DDevice* d3dDevice) :
learning_model_device(create_device(d3dDevice))
{}
directx_device(ID3D12CommandQueue* queue) :
learning_model_device(create_device(queue))
{}
private:
static Details::learning_model_device create_device(
directx_device_kind kind)
{
switch (kind)
{
case directx_device_kind::directx:
return Details::learning_model_device::create_directx_device();
case directx_device_kind::directx_high_power:
return Details::learning_model_device::create_directx_high_power_device();
case directx_device_kind::directx_min_power:
return Details::learning_model_device::create_directx_min_power_device();
};
return Details::learning_model_device();
}
static Details::learning_model_device create_device(
ABI::Windows::Graphics::DirectX::Direct3D11::IDirect3DDevice* d3dDevice)
{
return Details::learning_model_device::create_directx_device(d3dDevice);
}
static Details::learning_model_device create_device(
ID3D12CommandQueue* queue)
{
return Details::learning_model_device::create_directx_device(queue);
}
};
}}}} // namespace Microsoft::AI::MachineLearning::gpu
#endif // MICROSOFT_AI_MACHINELEARNING_GPU_H