From 7c4167188208ef9041b4938ac883d90970f61644 Mon Sep 17 00:00:00 2001 From: "A. Unique TensorFlower" Date: Thu, 11 Jul 2019 14:32:14 -0700 Subject: [PATCH] Fix build with libc++, which follows recent changes to the specification of std::variant, disallowing certain implicit conversions during initialization. PiperOrigin-RevId: 257683060 --- tensorflow/lite/delegates/gpu/gl/object.h | 24 +++++++++++---------- tensorflow/lite/delegates/gpu/gl/runtime.cc | 7 +++--- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/tensorflow/lite/delegates/gpu/gl/object.h b/tensorflow/lite/delegates/gpu/gl/object.h index 75e9443764d..3340caca8f3 100644 --- a/tensorflow/lite/delegates/gpu/gl/object.h +++ b/tensorflow/lite/delegates/gpu/gl/object.h @@ -85,8 +85,7 @@ inline const ObjectData* GetData(const Object& object) { inline size_t ByteSizeOf(const Object& object); // @return object that references an object created externally. -template -inline Object MakeObjectRef(ObjectRef unique_id, const SizeT& size, +inline Object MakeObjectRef(ObjectRef unique_id, const ObjectSize& size, AccessType access_type) { return Object{access_type, DataType::FLOAT32, ObjectType::UNKNOWN, 0, size, unique_id}; @@ -122,8 +121,8 @@ inline size_t ByteSizeOf(const Object& object) { return SizeOf(object.data_type) * /* vec4 */ 4 * NumElements(object.size); } -template -Object MakeReadonlyObject(const SizeT& size, const std::vector& data) { +inline Object MakeReadonlyObject(const ObjectSize& size, + const std::vector& data) { return Object{AccessType::READ, DataType::FLOAT32, ObjectType::UNKNOWN, @@ -132,8 +131,8 @@ Object MakeReadonlyObject(const SizeT& size, const std::vector& data) { internal_object::ToBytesVector(data, 16)}; } -template -Object MakeReadonlyTexture(const SizeT& size, const std::vector& data) { +inline Object MakeReadonlyTexture(const ObjectSize& size, + const std::vector& data) { return Object{AccessType::READ, DataType::FLOAT32, ObjectType::TEXTURE, @@ -142,8 +141,8 @@ Object MakeReadonlyTexture(const SizeT& size, const std::vector& data) { internal_object::ToBytesVector(data, 16)}; } -template -Object MakeReadonlyBuffer(const SizeT& size, const std::vector& data) { +inline Object MakeReadonlyBuffer(const ObjectSize& size, + const std::vector& data) { return Object{AccessType::READ, DataType::FLOAT32, ObjectType::BUFFER, @@ -153,15 +152,18 @@ Object MakeReadonlyBuffer(const SizeT& size, const std::vector& data) { } inline Object MakeReadonlyObject(const std::vector& data) { - return MakeReadonlyObject(IntegralDivideRoundUp(data.size(), 4U), data); + return MakeReadonlyObject( + IntegralDivideRoundUp(static_cast(data.size()), 4U), data); } inline Object MakeReadonlyTexture(const std::vector& data) { - return MakeReadonlyTexture(IntegralDivideRoundUp(data.size(), 4U), data); + return MakeReadonlyTexture( + IntegralDivideRoundUp(static_cast(data.size()), 4U), data); } inline Object MakeReadonlyBuffer(const std::vector& data) { - return MakeReadonlyBuffer(IntegralDivideRoundUp(data.size(), 4U), data); + return MakeReadonlyBuffer( + IntegralDivideRoundUp(static_cast(data.size()), 4U), data); } // TODO(akulik): find better place for functions below. diff --git a/tensorflow/lite/delegates/gpu/gl/runtime.cc b/tensorflow/lite/delegates/gpu/gl/runtime.cc index ca908d5e4c1..7249ac40ce2 100644 --- a/tensorflow/lite/delegates/gpu/gl/runtime.cc +++ b/tensorflow/lite/delegates/gpu/gl/runtime.cc @@ -543,7 +543,8 @@ Status Runtime::AssignInternalObjects(std::vector* shared_objects) { shared_object.object = shared_ref; if (shared_object.object_type == ObjectType::BUFFER) { // Make a buffer linear. - shared_object.size = NumElements(object.size); + shared_object.size = + static_cast(NumElements(object.size)); } shared_objects->push_back(std::move(shared_object)); is_used_shared_object.push_back(false); @@ -552,8 +553,8 @@ Status Runtime::AssignInternalObjects(std::vector* shared_objects) { Object& shared_object = (*shared_objects)[shared_ref]; switch (object.object_type) { case ObjectType::BUFFER: - shared_object.size = std::max(NumElements(object.size), - NumElements(shared_object.size)); + shared_object.size = std::max( + NumElements(object.size), NumElements(shared_object.size)); break; case ObjectType::TEXTURE: { if (!FitSize(object.size, shared_object.size,