From f63be3ecc79499a9a362ce38d0f3be44033c37fc Mon Sep 17 00:00:00 2001 From: ladevieq Date: Thu, 23 Jan 2025 12:22:10 +0100 Subject: Store queues in a dedicated struct --- api-test/dx12-device.cpp | 8 ++++---- api-test/vk-device.cpp | 6 +++--- include/api-test/command-buffer.hpp | 8 +------- include/api-test/dx12-device-types.hpp | 7 +++++++ include/api-test/dx12-device.hpp | 5 ++++- include/api-test/vk-device-types.hpp | 7 +++++++ 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 dx12device::create_surface(const dx12::surface_desc& desc) { @@ -65,7 +65,7 @@ handle 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(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(QueueType::GRAPHICS)] = { .usages = VK_QUEUE_GRAPHICS_BIT | VK_QUEUE_COMPUTE_BIT | VK_QUEUE_TRANSFER_BIT, }; - queues[1U] = { + queues[static_cast(QueueType::ASYNC_COMPUTE)] = { .usages = VK_QUEUE_COMPUTE_BIT, }; - queues[2U] = { + queues[static_cast(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 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(dx12::QueueType::MAX)]; freelist 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*; -- cgit v1.3