Open3D (C++ API)  0.19.0
Loading...
Searching...
No Matches
ComputeGPUVulkan.h
Go to the documentation of this file.
1// ----------------------------------------------------------------------------
2// - Open3D: www.open3d.org -
3// ----------------------------------------------------------------------------
4// Copyright (c) 2018-2024 www.open3d.org
5// SPDX-License-Identifier: MIT
6// ----------------------------------------------------------------------------
7//
8// Vulkan compute backend for the Gaussian splatting pipeline.
9// Compiled on non-Apple platforms.
10//
11// Key design:
12// - Implements GaussianSplatGpuContext backed by Vulkan compute pipelines
13// loaded from SPIR-V assets at resources/gaussian_splat/.
14// - Uses VK_KHR_push_descriptor for efficient per-dispatch binding (no
15// descriptor pool allocation per frame).
16// - Uses VMA for general buffer/image allocation. Shared cross-API images
17// (color, depth) are registered via RegisterSharedImageInVulkanContext()
18// rather than allocated here; VulkanInteropContext owns those.
19// - Synchronisation: each EndXxxPass() submits and waits (fence-based) so
20// the rest of the pipeline sees a completed GPU result.
21
22#pragma once
23
24#if !defined(__APPLE__)
25
26#include <cstdint>
27#include <memory>
28
30
31namespace open3d {
32namespace visualization {
33namespace rendering {
34
44void RegisterSharedImageInVulkanContext(GaussianSplatGpuContext& ctx,
45 std::uint32_t gl_name,
46 std::uintptr_t vk_image_opaque,
47 std::uint32_t vk_format_opaque,
48 std::uint32_t width,
49 std::uint32_t height);
50
53void UnregisterSharedImageFromVulkanContext(GaussianSplatGpuContext& ctx,
54 std::uint32_t gl_name);
55
59[[nodiscard]] std::unique_ptr<GaussianSplatGpuContext>
61
62} // namespace rendering
63} // namespace visualization
64} // namespace open3d
65
66#endif // !defined(__APPLE__)
int width
Definition FilePCD.cpp:53
int height
Definition FilePCD.cpp:54
void UnregisterSharedImageFromVulkanContext(GaussianSplatGpuContext &ctx, std::uint32_t gl_name)
Definition ComputeGPUVulkan.cpp:1359
void RegisterSharedImageInVulkanContext(GaussianSplatGpuContext &ctx, std::uint32_t gl_name, std::uintptr_t vk_image_opaque, std::uint32_t vk_format_opaque, std::uint32_t width, std::uint32_t height)
Definition ComputeGPUVulkan.cpp:1346
std::unique_ptr< GaussianSplatGpuContext > CreateComputeGpuContextVulkan()
Definition ComputeGPUVulkan.cpp:1366
Definition PinholeCameraIntrinsic.cpp:16