21 static constexpr size_t blockSz = 64;
22 static constexpr size_t alignment = 64;
29 Id(
Id&& other)
noexcept;
33 const size_t size()
const {
return rgn.asize; }
34 void set(
const Tempest::Matrix4x4* anim);
35 void set(
const Tempest::Matrix4x4& obj,
size_t offset);
36 void set(
const void* data,
size_t offset,
size_t size);
39 const uint32_t
offsetId()
const {
return uint32_t(rgn.begin/
sizeof(T)); }
41 bool isEmpty()
const {
return rgn.asize==0; }
54 auto ssbo () const -> const Tempest::StorageBuffer&;
55 bool commit(Tempest::Encoder<Tempest::CommandBuffer>& cmd, uint8_t fId);
59 void free(const Range& r);
68 std::vector<Range> rgn;
69 std::vector<uint32_t> durty;
73 std::vector<uint8_t> patchCpu;
74 std::vector<Path> patchBlock;
76 Tempest::StorageBuffer dataGpu;
77 std::vector<uint8_t> dataCpu;
81 std::condition_variable uploadCnd;
82 int32_t uploadFId = -1;