aboutsummaryrefslogtreecommitdiffstats
path: root/api-test/dx12-device.cpp
diff options
context:
space:
mode:
authorladevieq <ladevie.quentin@gmail.com>2025-01-21 23:22:24 +0100
committerladevieq <ladevie.quentin@gmail.com>2025-01-21 23:22:24 +0100
commit11ede6055d54480d3b7486c5811a44f6f63e1c61 (patch)
treee7d3df776bdc94b778d8fa24927af40db99bc8ba /api-test/dx12-device.cpp
parentc4a6f4bbaaf86d50d5da103894469a9bc12a1323 (diff)
Save dx12 initial work
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, )
+}