aboutsummaryrefslogtreecommitdiffstats
path: root/api-test/dx12-device.cpp
diff options
context:
space:
mode:
authorladevieq <ladevie.quentin@gmail.com>2025-01-23 00:16:41 +0100
committerladevieq <ladevie.quentin@gmail.com>2025-01-23 00:16:57 +0100
commit0dd7e34602d0abec6442e4b63c22a8b2e760aad2 (patch)
tree99c4c5a4fb04517069b8d95ee92950e83bb3211f /api-test/dx12-device.cpp
parent11ede6055d54480d3b7486c5811a44f6f63e1c61 (diff)
Dx12 surface creation
Diffstat (limited to 'api-test/dx12-device.cpp')
-rw-r--r--api-test/dx12-device.cpp28
1 files changed, 23 insertions, 5 deletions
diff --git a/api-test/dx12-device.cpp b/api-test/dx12-device.cpp
index 86340d1..4de63b6 100644
--- a/api-test/dx12-device.cpp
+++ b/api-test/dx12-device.cpp
@@ -37,17 +37,35 @@ void dx12device::init() {
SUCCEEDED(device->CreateCommandQueue(&queue_desc, IID_PPV_ARGS(&queues[2U])));
}
-void dx12device::create_surface(const surface_desc& desc)
+handle<dx12::device_surface> dx12device::create_surface(const dx12::surface_desc& desc) {
+ dx12::device_surface surface {
+ };
DXGI_MODE_DESC mode_desc{
- .Width = desc.
+ .Width = 0U,
+ .Height = 0U,
+ .RefreshRate = {
+ .Numerator = 1U,
+ .Denominator = 60U,
+ },
+ .Format = desc.surface_format,
+ .ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED,
+ .Scaling = DXGI_MODE_SCALING_CENTERED,
};
DXGI_SAMPLE_DESC sample_desc{
-
+ .Count = 1U,
+ .Quality = 0U,
};
DXGI_SWAP_CHAIN_DESC swapchain_desc{
.BufferDesc = mode_desc,
.SampleDesc = sample_desc,
- .BufferUsage = DXGI_USAGE_UNORDERED_ACCESS | DXGI_USAGE_RENDER_TARGET_OUTPUT,
+ .BufferUsage = desc.usages,
+ .BufferCount = desc.image_count,
+ .OutputWindow = desc.window_handle,
+ .Windowed = TRUE,
+ .SwapEffect = desc.present_mode,
+ .Flags = 0U,
};
- factory->CreateSwapChain(device, )
+ HRESULT hr = factory->CreateSwapChain(device, &swapchain_desc, &surface.swapchain);
+
+ return surfaces.add(surface);
}