#include #include #include #include #include #include #include #include namespace mbgl { namespace webgpu { const gfx::UniqueVertexBufferResource& VertexAttribute::getBuffer(gfx::VertexAttribute& attrib_, UploadPass& uploadPass, const gfx::BufferUsageType usage, bool forceUpdate) { if (!attrib_.getBuffer()) { auto& attrib = static_cast(attrib_); if (attrib.sharedRawData) { return uploadPass.getBuffer(attrib.sharedRawData, usage, forceUpdate); } else { if (!attrib.rawData.empty()) { auto buffer = uploadPass.createVertexBufferResource( attrib.rawData.data(), attrib.rawData.size(), usage, false); attrib.setBuffer(std::move(buffer)); attrib.setRawData({}); attrib_.setDirty(false); } else { assert(false); } } } return attrib_.getBuffer(); } bool VertexAttributeArray::isModifiedAfter(std::chrono::duration time) const { // Use the base class implementation return gfx::VertexAttributeArray::isModifiedAfter(time); } } // namespace webgpu } // namespace mbgl