chrono_batch_render/
Coverage:
low: ≥ 0%
medium: ≥ 75.0%
high: ≥ 90.0%
Lines:
0 / 4
0.0%
Branches:
0 / 4
0.0%
Functions:
-
-%

device/vulkan/interop.h
Line Branch Exec Source
1 // SPDX-License-Identifier: BSD-3-Clause
2 #pragma once
3
4 #include <cstdint>
5 #include <memory>
6
7 #include "chrono_batch_render/device/queue.h"
8 #include "chrono_batch_render/device/vulkan/device.h"
9
10 namespace chrono::batch_render::device::vulkan {
11
12
0/2
✗ Branch 2 not taken.
✗ Branch 5 not taken.
✗ class StreamInterop {
13 public:
14 ✗ virtual ~StreamInterop() = default;
15
16 virtual void Follow(void* stream, uint64_t value) = 0;
17
18 virtual void Wait(void* stream, uint64_t value) = 0;
19 };
20
21 std::unique_ptr<StreamInterop> CreateStreamInterop(VulkanDevice& device, VkSemaphore timeline,
22 VkSemaphore follow);
23
24 struct ExportedMemory {
25 int fd = -1;
26 uint64_t memoryBytes = 0;
27 uint64_t offset = 0;
28 uint64_t bytes = 0;
29 };
30
31 struct ImportedMemory {
32 void* external = nullptr;
33 uint64_t address = 0;
34 };
35
36
0/2
✗ Branch 1 not taken.
✗ Branch 4 not taken.
✗ class MemoryInterop {
37 public:
38 ✗ virtual ~MemoryInterop() = default;
39
40 virtual DLDevice Device() const = 0;
41 virtual ImportedMemory Import(const ExportedMemory& memory) = 0;
42 virtual void Release(ImportedMemory& memory) noexcept = 0;
43 virtual void Copy(uint64_t dst, uint64_t src, uint64_t bytes, void* stream) = 0;
44 virtual void* Stream() const = 0;
45 };
46
47 std::unique_ptr<MemoryInterop> CreateMemoryInterop(VulkanDevice& device);
48
49 }
50