Loading...
Searching...
No Matches
VkHostImportUpload.hpp
Go to the documentation of this file.
1#pragma once
2
26#include <score_plugin_gfx_export.h>
27
28#include <cstddef>
29#include <cstdint>
30#include <vector>
31
32class QRhi;
33class QRhiTexture;
34class QRhiCommandBuffer;
35
36namespace score::gfx::interop
37{
38
41SCORE_PLUGIN_GFX_EXPORT void* alignedSlotAlloc(std::size_t bytes, std::size_t alignment);
42SCORE_PLUGIN_GFX_EXPORT void alignedSlotFree(void* p);
43
58SCORE_PLUGIN_GFX_EXPORT void* importableAlloc(std::size_t bytes);
59SCORE_PLUGIN_GFX_EXPORT void importableFree(void* p);
60
65{
66 void* buffer{};
67 void* memory{};
68 std::size_t importedBytes{};
69};
70
77SCORE_PLUGIN_GFX_EXPORT bool importHostPointerBuffer(
78 QRhi& rhi, void* host, std::size_t bytes, unsigned bufferUsage,
79 bool requireHostCoherent, VkHostImportedBuffer& out);
80
82SCORE_PLUGIN_GFX_EXPORT void
83releaseHostImportedBuffer(QRhi& rhi, VkHostImportedBuffer& buf);
84
85class SCORE_PLUGIN_GFX_EXPORT VkHostImportUpload
86{
87public:
89
92 static std::size_t requiredAlignment(QRhi& rhi) noexcept;
93
97 bool init(QRhi& rhi, const std::vector<void*>& slots, std::size_t bytes);
98 void release();
99
100 bool valid() const noexcept { return !m_buffers.empty(); }
101
114 bool copyToTexture(
115 QRhiCommandBuffer& cb, QRhiTexture& tex, std::size_t slot, int width,
116 int height, std::size_t srcOffset = 0,
117 std::size_t rowPitchBytes = 0) noexcept;
118
119private:
120 struct Impl;
121 Impl* m_d{};
122 std::vector<void*> m_buffers;
123};
124
125} // namespace score::gfx::interop
Definition VkHostImportUpload.hpp:86
Definition VkHostImportUpload.cpp:452
Definition VkHostImportUpload.hpp:65