This commit is contained in:
2026-01-06 21:10:07 +01:00
parent bc2131f1e4
commit 4a83333116
7 changed files with 56 additions and 52 deletions

View File

@@ -232,7 +232,7 @@ pub fn init(allocator: std.mem.Allocator, maybe_window: ?*glfw.Window) !Engine {
var queue_create_info: std.ArrayList(vk.DeviceQueueCreateInfo) = .initBuffer(&queue_create_info_buffer);
const queue_allocations: QueueAllocations = blk: {
var queue_allocator: QueueAllocator = .init(instance, physical_device);
var queue_allocator = QueueAllocator.init(instance, physical_device);
const queue_families_properties = queue_allocator.queueFamiliesProperties();
const graphics_queue_family = findGraphicsQueueFamily(queue_families_properties) orelse return error.NoGraphicsQueue;
@@ -347,21 +347,21 @@ pub fn init(allocator: std.mem.Allocator, maybe_window: ?*glfw.Window) !Engine {
}, &vk_allocator.interface);
errdefer device.destroyCommandPool(transfer_command_pool, &vk_allocator.interface);
const graphics_queue: Queue = .init(
const graphics_queue = Queue.init(
device.getDeviceQueue(
queue_allocations.graphics_queue.family,
queue_allocations.graphics_queue.index,
),
queue_allocations.graphics_queue,
);
const compute_queue: Queue = .init(
const compute_queue = Queue.init(
device.getDeviceQueue(
queue_allocations.compute_queue.family,
queue_allocations.compute_queue.index,
),
queue_allocations.compute_queue,
);
const transfer_queue: Queue = .init(
const transfer_queue = Queue.init(
device.getDeviceQueue(
queue_allocations.transfer_queue.family,
queue_allocations.transfer_queue.index,
@@ -692,6 +692,10 @@ fn findPresentationQueueFamily(queue_families_properties: []const vk.QueueFamily
return null;
}
fn makeArena(self: *const Engine) std.heap.ArenaAllocator {
return .init(self.vk_allocator.allocator);
}
fn resolveCommandPool(self: *const Engine, queue_type: QueueType) vk.CommandPool {
return switch (queue_type) {
.graphics => self.graphics_command_pool,
@@ -975,7 +979,7 @@ pub fn bindImageMemory(self: *Engine, image: vk.Image, memory: vk.DeviceMemory,
}
pub fn createBuffer(self: *Engine, create_info: BufferCreateInfo) !vk.Buffer {
var arena: std.heap.ArenaAllocator = .init(self.vk_allocator.allocator);
var arena = self.makeArena();
defer arena.deinit();
const allocator = arena.allocator();
@@ -998,7 +1002,7 @@ pub fn createBuffer(self: *Engine, create_info: BufferCreateInfo) !vk.Buffer {
}
pub fn createDescriptorSetLayout(self: *Engine, create_info: DescriptorSetLayoutCreateInfo) !vk.DescriptorSetLayout {
var arena: std.heap.ArenaAllocator = .init(self.vk_allocator.allocator);
var arena = self.makeArena();
defer arena.deinit();
const allocator = arena.allocator();
@@ -1074,7 +1078,7 @@ pub fn createFramebuffer(self: *Engine, create_info: FramebufferCreateInfo) !vk.
}
pub fn createGraphicsPipeline(self: *Engine, create_info: GraphicsPipelineCreateInfo) !vk.Pipeline {
var arena: std.heap.ArenaAllocator = .init(self.vk_allocator.allocator);
var arena = self.makeArena();
defer arena.deinit();
const allocator = arena.allocator();
@@ -1153,7 +1157,7 @@ pub fn createGraphicsPipeline(self: *Engine, create_info: GraphicsPipelineCreate
}
pub fn createImage(self: *Engine, create_info: ImageCreateInfo) !vk.Image {
var arena: std.heap.ArenaAllocator = .init(self.vk_allocator.allocator);
var arena = self.makeArena();
defer arena.deinit();
const allocator = arena.allocator();
@@ -1206,7 +1210,7 @@ pub fn createPipelineLayout(self: *Engine, create_info: PipelineLayoutCreateInfo
}
pub fn createRenderPass(self: *Engine, create_info: RenderPassCreateInfo) !vk.RenderPass {
var arena: std.heap.ArenaAllocator = .init(self.vk_allocator.allocator);
var arena = self.makeArena();
defer arena.deinit();
const allocator = arena.allocator();
@@ -1258,7 +1262,7 @@ pub fn createShaderModule(self: *Engine, create_info: ShaderModuleCreateInfo) !v
}
pub fn createSwapchain(self: *Engine, create_info: SwapchainCreateInfo) !vk.SwapchainKHR {
var arena: std.heap.ArenaAllocator = .init(self.vk_allocator.allocator);
var arena = self.makeArena();
defer arena.deinit();
const allocator = arena.allocator();
@@ -1402,7 +1406,7 @@ pub fn unmapMemory(self: *Engine, memory: vk.DeviceMemory) void {
}
pub fn updateDescriptorSets(self: *Engine, update_info: DescriptorSetsUpdateInfo) !void {
var arena: std.heap.ArenaAllocator = .init(self.vk_allocator.allocator);
var arena = self.makeArena();
defer arena.deinit();
const allocator = arena.allocator();