aboutsummaryrefslogtreecommitdiffstats
path: root/api-test/dx12-device.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'api-test/dx12-device.cpp')
-rw-r--r--api-test/dx12-device.cpp53
1 files changed, 53 insertions, 0 deletions
diff --git a/api-test/dx12-device.cpp b/api-test/dx12-device.cpp
new file mode 100644
index 0000000..86340d1
--- /dev/null
+++ b/api-test/dx12-device.cpp
@@ -0,0 +1,53 @@
+#include "dx12-device.hpp"
+
+#include <cstdint>
+#include <cstdio>
+
+dx12device dx12device::render_device = dx12device();
+
+void dx12device::init() {
+ SUCCEEDED(CreateDXGIFactory(IID_PPV_ARGS(&factory)));
+
+ uint32_t index = 0U;
+ while (factory->EnumAdapters(index, &adapter) != DXGI_ERROR_NOT_FOUND) {
+ DXGI_ADAPTER_DESC desc;
+ SUCCEEDED(adapter->GetDesc(&desc));
+ printf("%S\n", desc.Description);
+ index++;
+ }
+
+ SUCCEEDED(factory->EnumAdapters(0U, &adapter));
+
+ SUCCEEDED(D3D12CreateDevice(adapter, D3D_FEATURE_LEVEL_12_0, IID_PPV_ARGS(&device)));
+
+ D3D12_COMMAND_QUEUE_DESC queue_desc{
+ .Type = D3D12_COMMAND_LIST_TYPE::D3D12_COMMAND_LIST_TYPE_DIRECT,
+ .Priority = D3D12_COMMAND_QUEUE_PRIORITY::D3D12_COMMAND_QUEUE_PRIORITY_HIGH,
+ .Flags = D3D12_COMMAND_QUEUE_FLAGS::D3D12_COMMAND_QUEUE_FLAG_NONE,
+ .NodeMask = 0U,
+ };
+ SUCCEEDED(device->CreateCommandQueue(&queue_desc, IID_PPV_ARGS(&queues[0U])));
+
+ queue_desc.Type = D3D12_COMMAND_LIST_TYPE::D3D12_COMMAND_LIST_TYPE_COMPUTE;
+ queue_desc.Priority = D3D12_COMMAND_QUEUE_PRIORITY::D3D12_COMMAND_QUEUE_PRIORITY_HIGH,
+ SUCCEEDED(device->CreateCommandQueue(&queue_desc, IID_PPV_ARGS(&queues[1U])));
+
+ queue_desc.Type = D3D12_COMMAND_LIST_TYPE::D3D12_COMMAND_LIST_TYPE_COPY;
+ queue_desc.Priority = D3D12_COMMAND_QUEUE_PRIORITY::D3D12_COMMAND_QUEUE_PRIORITY_HIGH,
+ SUCCEEDED(device->CreateCommandQueue(&queue_desc, IID_PPV_ARGS(&queues[2U])));
+}
+
+void dx12device::create_surface(const surface_desc& desc)
+ DXGI_MODE_DESC mode_desc{
+ .Width = desc.
+ };
+ DXGI_SAMPLE_DESC sample_desc{
+
+ };
+ DXGI_SWAP_CHAIN_DESC swapchain_desc{
+ .BufferDesc = mode_desc,
+ .SampleDesc = sample_desc,
+ .BufferUsage = DXGI_USAGE_UNORDERED_ACCESS | DXGI_USAGE_RENDER_TARGET_OUTPUT,
+ };
+ factory->CreateSwapChain(device, )
+}