diff options
| author | ladevieq <ladevie.quentin@gmail.com> | 2025-01-23 12:22:10 +0100 |
|---|---|---|
| committer | ladevieq <ladevie.quentin@gmail.com> | 2025-01-23 12:22:10 +0100 |
| commit | f63be3ecc79499a9a362ce38d0f3be44033c37fc (patch) | |
| tree | 2988140a5d1b6df5a345d0085e57e1c4ee8df148 | |
| parent | 0dd7e34602d0abec6442e4b63c22a8b2e760aad2 (diff) | |
Store queues in a dedicated struct
| -rw-r--r-- | api-test/dx12-device.cpp | 8 | ||||
| -rw-r--r-- | api-test/vk-device.cpp | 6 | ||||
| -rw-r--r-- | include/api-test/command-buffer.hpp | 8 | ||||
| -rw-r--r-- | include/api-test/dx12-device-types.hpp | 7 | ||||
| -rw-r--r-- | include/api-test/dx12-device.hpp | 5 | ||||
| -rw-r--r-- | include/api-test/vk-device-types.hpp | 7 | ||||
| -rw-r--r-- | include/api-test/vk-device.hpp | 1 |
7 files changed, 26 insertions, 16 deletions
diff --git a/api-test/dx12-device.cpp b/api-test/dx12-device.cpp index 4de63b6..e603fef 100644 --- a/api-test/dx12-device.cpp +++ b/api-test/dx12-device.cpp @@ -26,15 +26,15 @@ void dx12device::init() { .Flags = D3D12_COMMAND_QUEUE_FLAGS::D3D12_COMMAND_QUEUE_FLAG_NONE, .NodeMask = 0U, }; - SUCCEEDED(device->CreateCommandQueue(&queue_desc, IID_PPV_ARGS(&queues[0U]))); + SUCCEEDED(device->CreateCommandQueue(&queue_desc, IID_PPV_ARGS(&queues[0U].dx_queue))); 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]))); + SUCCEEDED(device->CreateCommandQueue(&queue_desc, IID_PPV_ARGS(&queues[1U].dx_queue))); 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]))); + SUCCEEDED(device->CreateCommandQueue(&queue_desc, IID_PPV_ARGS(&queues[2U].dx_queue))); } handle<dx12::device_surface> dx12device::create_surface(const dx12::surface_desc& desc) { @@ -65,7 +65,7 @@ handle<dx12::device_surface> dx12device::create_surface(const dx12::surface_desc .SwapEffect = desc.present_mode, .Flags = 0U, }; - HRESULT hr = factory->CreateSwapChain(device, &swapchain_desc, &surface.swapchain); + HRESULT hr = factory->CreateSwapChain(queues[static_cast<uint32_t>(dx12::QueueType::GRAPHICS)].dx_queue, &swapchain_desc, &surface.swapchain); return surfaces.add(surface); } diff --git a/api-test/vk-device.cpp b/api-test/vk-device.cpp index 029d3ac..024b570 100644 --- a/api-test/vk-device.cpp +++ b/api-test/vk-device.cpp @@ -12,15 +12,15 @@ vkdevice vkdevice::render_device = vkdevice(); void vkdevice::init() { - queues[0U] = { + queues[static_cast<uint32_t>(QueueType::GRAPHICS)] = { .usages = VK_QUEUE_GRAPHICS_BIT | VK_QUEUE_COMPUTE_BIT | VK_QUEUE_TRANSFER_BIT, }; - queues[1U] = { + queues[static_cast<uint32_t>(QueueType::ASYNC_COMPUTE)] = { .usages = VK_QUEUE_COMPUTE_BIT, }; - queues[2U] = { + queues[static_cast<uint32_t>(QueueType::TRANSFER)] = { .usages = VK_QUEUE_TRANSFER_BIT, }; diff --git a/include/api-test/command-buffer.hpp b/include/api-test/command-buffer.hpp index d26fa13..0eff93a 100644 --- a/include/api-test/command-buffer.hpp +++ b/include/api-test/command-buffer.hpp @@ -9,13 +9,7 @@ #include "vec3.hpp" -enum class QueueType : uint32_t { - GRAPHICS, - ASYNC_COMPUTE, - TRANSFER, - MAX, -}; - +#include "vk-device-types.hpp" struct device_texture; struct device_buffer; diff --git a/include/api-test/dx12-device-types.hpp b/include/api-test/dx12-device-types.hpp index dee1811..b70ecf4 100644 --- a/include/api-test/dx12-device-types.hpp +++ b/include/api-test/dx12-device-types.hpp @@ -2,6 +2,13 @@ #include <dxgi.h> namespace dx12 { + enum class QueueType : uint32_t { + GRAPHICS, + ASYNC_COMPUTE, + TRANSFER, + MAX, + }; + struct texture_desc { }; diff --git a/include/api-test/dx12-device.hpp b/include/api-test/dx12-device.hpp index 5f48f95..83d8888 100644 --- a/include/api-test/dx12-device.hpp +++ b/include/api-test/dx12-device.hpp @@ -4,6 +4,9 @@ #include "dx12-device-types.hpp" class dx12device { + struct queue { + ID3D12CommandQueue* dx_queue; + }; public: void init(); @@ -36,7 +39,7 @@ class dx12device { IDXGIAdapter* adapter; ID3D12Device* device; - ID3D12CommandQueue* queues[3U]; + queue queues[static_cast<uint32_t>(dx12::QueueType::MAX)]; freelist<dx12::device_surface> surfaces; diff --git a/include/api-test/vk-device-types.hpp b/include/api-test/vk-device-types.hpp index 994f0c4..dd8348b 100644 --- a/include/api-test/vk-device-types.hpp +++ b/include/api-test/vk-device-types.hpp @@ -8,6 +8,13 @@ using VmaAllocation = struct VmaAllocation_T*; +enum class QueueType : uint32_t { + GRAPHICS, + ASYNC_COMPUTE, + TRANSFER, + MAX, +}; + struct texture_desc { uint32_t width = 1U; uint32_t height = 1U; diff --git a/include/api-test/vk-device.hpp b/include/api-test/vk-device.hpp index 9c4b9a9..9dffad8 100644 --- a/include/api-test/vk-device.hpp +++ b/include/api-test/vk-device.hpp @@ -8,7 +8,6 @@ #include "command-buffer.hpp" #include "freelist.hpp" #include "vk-bindless.hpp" -#include "vk-device-types.hpp" using VmaAllocator = struct VmaAllocator_T*; |
