From 7f3439714858d4c70f60db71543df15db5708d92 Mon Sep 17 00:00:00 2001 From: Nicolas James Date: Fri, 20 Feb 2026 20:57:37 +1100 Subject: Don't inject timestamps into unsupported queues --- src/physical_device_context.cc | 41 ++++++++++++++++++++++++++++++++++------- 1 file changed, 34 insertions(+), 7 deletions(-) (limited to 'src/physical_device_context.cc') diff --git a/src/physical_device_context.cc b/src/physical_device_context.cc index d265c9d..2d1afc3 100644 --- a/src/physical_device_context.cc +++ b/src/physical_device_context.cc @@ -1,17 +1,44 @@ #include "physical_device_context.hh" +#include namespace low_latency { - -PhysicalDeviceContext::PhysicalDeviceContext( - InstanceContext& instance_context, const VkPhysicalDevice& physical_device) - : instance(instance_context), physical_device(physical_device) { + +static std::unique_ptr +make_pd_props(const InstanceContext& instance_context, + const VkPhysicalDevice& physical_device) { + const auto& vtable = instance_context.vtable; auto props = VkPhysicalDeviceProperties{}; - instance.vtable.GetPhysicalDeviceProperties(this->physical_device, &props); - this->properties = - std::make_unique(std::move(props)); + vtable.GetPhysicalDeviceProperties(physical_device, &props); + return std::make_unique(std::move(props)); +} + +static std::unique_ptr +make_qf_props(const InstanceContext& instance_context, + const VkPhysicalDevice& physical_device) { + + const auto& vtable = instance_context.vtable; + + auto count = std::uint32_t{}; + vtable.GetPhysicalDeviceQueueFamilyProperties2(physical_device, &count, + nullptr); + + auto result = std::vector( + count, VkQueueFamilyProperties2{ + .sType = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2}); + vtable.GetPhysicalDeviceQueueFamilyProperties2(physical_device, &count, + std::data(result)); + + using qp_t = PhysicalDeviceContext::queue_properties_t; + return std::make_unique(std::move(result)); } +PhysicalDeviceContext::PhysicalDeviceContext( + InstanceContext& instance_context, const VkPhysicalDevice& physical_device) + : instance(instance_context), physical_device(physical_device), + properties(make_pd_props(instance, physical_device)), + queue_properties(make_qf_props(instance, physical_device)) {} + PhysicalDeviceContext::~PhysicalDeviceContext() {} } // namespace low_latency \ No newline at end of file -- cgit v1.2.3