From c15f7d52aa4f360eba2344449baa418b7608ac7c Mon Sep 17 00:00:00 2001 From: James Ward Date: Wed, 7 Dec 2022 15:38:01 +0000 Subject: Schema changes for CLAMP, PAD float attributes * Float attributes now serialized as uint8 vectors, but treated as floats at input/output to serialization Signed-off-by: James Ward Change-Id: I417b0fabe0ef11fea263fe937b57d49bbfdb00da --- include/tosa_generated.h | 63 +++++++++++++++++++++++++++++++++--------------- 1 file changed, 43 insertions(+), 20 deletions(-) (limited to 'include/tosa_generated.h') diff --git a/include/tosa_generated.h b/include/tosa_generated.h index 1a79453..b34875f 100644 --- a/include/tosa_generated.h +++ b/include/tosa_generated.h @@ -968,15 +968,16 @@ struct PadAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { int32_t pad_const_int() const { return GetField(VT_PAD_CONST_INT, 0); } - float pad_const_fp() const { - return GetField(VT_PAD_CONST_FP, 0.0f); + const flatbuffers::Vector *pad_const_fp() const { + return GetPointer *>(VT_PAD_CONST_FP); } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, VT_PADDING) && verifier.VerifyVector(padding()) && VerifyField(verifier, VT_PAD_CONST_INT, 4) && - VerifyField(verifier, VT_PAD_CONST_FP, 4) && + VerifyOffset(verifier, VT_PAD_CONST_FP) && + verifier.VerifyVector(pad_const_fp()) && verifier.EndTable(); } }; @@ -991,8 +992,8 @@ struct PadAttributeBuilder { void add_pad_const_int(int32_t pad_const_int) { fbb_.AddElement(PadAttribute::VT_PAD_CONST_INT, pad_const_int, 0); } - void add_pad_const_fp(float pad_const_fp) { - fbb_.AddElement(PadAttribute::VT_PAD_CONST_FP, pad_const_fp, 0.0f); + void add_pad_const_fp(flatbuffers::Offset> pad_const_fp) { + fbb_.AddOffset(PadAttribute::VT_PAD_CONST_FP, pad_const_fp); } explicit PadAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { @@ -1009,7 +1010,7 @@ inline flatbuffers::Offset CreatePadAttribute( flatbuffers::FlatBufferBuilder &_fbb, flatbuffers::Offset> padding = 0, int32_t pad_const_int = 0, - float pad_const_fp = 0.0f) { + flatbuffers::Offset> pad_const_fp = 0) { PadAttributeBuilder builder_(_fbb); builder_.add_pad_const_fp(pad_const_fp); builder_.add_pad_const_int(pad_const_int); @@ -1021,13 +1022,15 @@ inline flatbuffers::Offset CreatePadAttributeDirect( flatbuffers::FlatBufferBuilder &_fbb, const std::vector *padding = nullptr, int32_t pad_const_int = 0, - float pad_const_fp = 0.0f) { + const std::vector *pad_const_fp = nullptr) { auto padding__ = padding ? _fbb.CreateVector(*padding) : 0; + if (pad_const_fp) { _fbb.ForceVectorAlignment(pad_const_fp->size(), sizeof(uint8_t), 8); } + auto pad_const_fp__ = pad_const_fp ? _fbb.CreateVector(*pad_const_fp) : 0; return tosa::CreatePadAttribute( _fbb, padding__, pad_const_int, - pad_const_fp); + pad_const_fp__); } struct AxisAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { @@ -1343,18 +1346,20 @@ struct ClampAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { int32_t max_int() const { return GetField(VT_MAX_INT, 0); } - float min_fp() const { - return GetField(VT_MIN_FP, 0.0f); + const flatbuffers::Vector *min_fp() const { + return GetPointer *>(VT_MIN_FP); } - float max_fp() const { - return GetField(VT_MAX_FP, 0.0f); + const flatbuffers::Vector *max_fp() const { + return GetPointer *>(VT_MAX_FP); } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_MIN_INT, 4) && VerifyField(verifier, VT_MAX_INT, 4) && - VerifyField(verifier, VT_MIN_FP, 4) && - VerifyField(verifier, VT_MAX_FP, 4) && + VerifyOffset(verifier, VT_MIN_FP) && + verifier.VerifyVector(min_fp()) && + VerifyOffset(verifier, VT_MAX_FP) && + verifier.VerifyVector(max_fp()) && verifier.EndTable(); } }; @@ -1369,11 +1374,11 @@ struct ClampAttributeBuilder { void add_max_int(int32_t max_int) { fbb_.AddElement(ClampAttribute::VT_MAX_INT, max_int, 0); } - void add_min_fp(float min_fp) { - fbb_.AddElement(ClampAttribute::VT_MIN_FP, min_fp, 0.0f); + void add_min_fp(flatbuffers::Offset> min_fp) { + fbb_.AddOffset(ClampAttribute::VT_MIN_FP, min_fp); } - void add_max_fp(float max_fp) { - fbb_.AddElement(ClampAttribute::VT_MAX_FP, max_fp, 0.0f); + void add_max_fp(flatbuffers::Offset> max_fp) { + fbb_.AddOffset(ClampAttribute::VT_MAX_FP, max_fp); } explicit ClampAttributeBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { @@ -1390,8 +1395,8 @@ inline flatbuffers::Offset CreateClampAttribute( flatbuffers::FlatBufferBuilder &_fbb, int32_t min_int = 0, int32_t max_int = 0, - float min_fp = 0.0f, - float max_fp = 0.0f) { + flatbuffers::Offset> min_fp = 0, + flatbuffers::Offset> max_fp = 0) { ClampAttributeBuilder builder_(_fbb); builder_.add_max_fp(max_fp); builder_.add_min_fp(min_fp); @@ -1400,6 +1405,24 @@ inline flatbuffers::Offset CreateClampAttribute( return builder_.Finish(); } +inline flatbuffers::Offset CreateClampAttributeDirect( + flatbuffers::FlatBufferBuilder &_fbb, + int32_t min_int = 0, + int32_t max_int = 0, + const std::vector *min_fp = nullptr, + const std::vector *max_fp = nullptr) { + if (min_fp) { _fbb.ForceVectorAlignment(min_fp->size(), sizeof(uint8_t), 8); } + auto min_fp__ = min_fp ? _fbb.CreateVector(*min_fp) : 0; + if (max_fp) { _fbb.ForceVectorAlignment(max_fp->size(), sizeof(uint8_t), 8); } + auto max_fp__ = max_fp ? _fbb.CreateVector(*max_fp) : 0; + return tosa::CreateClampAttribute( + _fbb, + min_int, + max_int, + min_fp__, + max_fp__); +} + struct RescaleAttribute FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { typedef RescaleAttributeBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { -- cgit v1.2.1