directml.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. #include <initguid.h>
  2. #include <d3d11.h>
  3. #include <dxgi1_2.h>
  4. #include <dxgi1_4.h>
  5. #include <dxgi.h>
  6. #include <dxcore.h>
  7. #include <dxcore_interface.h>
  8. #include <d3d12.h>
  9. #include <directml.h>
  10. int main(int /*argc*/, char** /*argv*/)
  11. {
  12. IDXCoreAdapterFactory* factory;
  13. DXCoreCreateAdapterFactory(__uuidof(IDXCoreAdapterFactory), (void**)&factory);
  14. IDXCoreAdapterList* adapterList;
  15. const GUID dxGUIDs[] = { DXCORE_ADAPTER_ATTRIBUTE_D3D12_CORE_COMPUTE };
  16. factory->CreateAdapterList(ARRAYSIZE(dxGUIDs), dxGUIDs, __uuidof(IDXCoreAdapterList), (void**)&adapterList);
  17. IDXCoreAdapter* adapter;
  18. adapterList->GetAdapter(0u, __uuidof(IDXCoreAdapter), (void**)&adapter);
  19. D3D_FEATURE_LEVEL d3dFeatureLevel = D3D_FEATURE_LEVEL_1_0_CORE;
  20. ID3D12Device* d3d12Device = NULL;
  21. D3D12CreateDevice((IUnknown*)adapter, d3dFeatureLevel, __uuidof(ID3D11Device), (void**)&d3d12Device);
  22. D3D12_COMMAND_LIST_TYPE commandQueueType = D3D12_COMMAND_LIST_TYPE_COMPUTE;
  23. ID3D12CommandQueue* cmdQueue;
  24. D3D12_COMMAND_QUEUE_DESC commandQueueDesc = {};
  25. commandQueueDesc.Type = commandQueueType;
  26. d3d12Device->CreateCommandQueue(&commandQueueDesc, __uuidof(ID3D12CommandQueue), (void**)&cmdQueue);
  27. IDMLDevice* dmlDevice;
  28. DMLCreateDevice(d3d12Device, DML_CREATE_DEVICE_FLAG_NONE, IID_PPV_ARGS(&dmlDevice));
  29. return 0;
  30. }