Open3D (C++ API)  0.19.0
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 
31 namespace open3d {
32 namespace visualization {
33 namespace rendering {
34 
44 void RegisterSharedImageInVulkanContext(GaussianSplatGpuContext& ctx,
45  std::uint32_t gl_name,
46  std::uintptr_t vk_image_opaque,
47  std::uint32_t vk_format_opaque,
50 
53 void 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:52
int height
Definition: FilePCD.cpp:53
const char const char value recording_handle imu_sample recording_handle uint8_t size_t data_size k4a_record_configuration_t config target_format k4a_capture_t capture_handle k4a_imu_sample_t imu_sample playback_handle k4a_logging_message_cb_t void min_level device_handle k4a_imu_sample_t timeout_in_ms capture_handle capture_handle capture_handle image_handle temperature_c k4a_image_t image_handle uint8_t image_handle image_handle image_handle image_handle uint32_t
Definition: K4aPlugin.cpp:548
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