VisuTwin Canvas
C++ 3D Engine — Metal Backend
Loading...
Searching...
No Matches
vulkanUtils.h
Go to the documentation of this file.
1// SPDX-License-Identifier: Apache-2.0
2// Copyright 2025-2026 Arnis Lektauers
3//
4// Vulkan utility functions: immediate submit, layout transitions, enum mappings.
5//
6#pragma once
7
8#ifdef VISUTWIN_HAS_VULKAN
9
10#include <functional>
11#include <vulkan/vulkan.h>
12
14#include "scene/mesh.h"
15
16namespace visutwin::canvas
17{
18 class VulkanGraphicsDevice;
19
20 // Execute a one-shot command buffer and block until GPU completes.
21 void vulkanImmediateSubmit(VulkanGraphicsDevice* device,
22 const std::function<void(VkCommandBuffer)>& func);
23
24 // Insert an image layout transition barrier.
25 void vulkanTransitionImageLayout(VkCommandBuffer cmd, VkImage image,
26 VkImageLayout oldLayout, VkImageLayout newLayout,
27 VkImageAspectFlags aspect = VK_IMAGE_ASPECT_COLOR_BIT);
28
29 // Enum mapping functions.
30 VkFormat vulkanMapPixelFormat(PixelFormat format);
31 VkFilter vulkanMapFilterMode(FilterMode mode);
32 VkSamplerAddressMode vulkanMapAddressMode(AddressMode mode);
33 VkCullModeFlags vulkanMapCullMode(CullMode mode);
34 VkPrimitiveTopology vulkanMapPrimitiveType(PrimitiveType type);
35 VkBlendFactor vulkanMapBlendFactor(int factor);
36 VkBlendOp vulkanMapBlendOp(int op);
37}
38
39#endif // VISUTWIN_HAS_VULKAN