Fix build with libc++, which follows recent changes to the specification of std::variant, disallowing certain implicit conversions during initialization.

PiperOrigin-RevId: 257683060
This commit is contained in:
A. Unique TensorFlower 2019-07-11 14:32:14 -07:00 committed by TensorFlower Gardener
parent 75ba861345
commit 7c41671882
2 changed files with 17 additions and 14 deletions

View File

@ -85,8 +85,7 @@ inline const ObjectData* GetData(const Object& object) {
inline size_t ByteSizeOf(const Object& object); inline size_t ByteSizeOf(const Object& object);
// @return object that references an object created externally. // @return object that references an object created externally.
template <typename SizeT> inline Object MakeObjectRef(ObjectRef unique_id, const ObjectSize& size,
inline Object MakeObjectRef(ObjectRef unique_id, const SizeT& size,
AccessType access_type) { AccessType access_type) {
return Object{access_type, DataType::FLOAT32, ObjectType::UNKNOWN, 0, return Object{access_type, DataType::FLOAT32, ObjectType::UNKNOWN, 0,
size, unique_id}; size, unique_id};
@ -122,8 +121,8 @@ inline size_t ByteSizeOf(const Object& object) {
return SizeOf(object.data_type) * /* vec4 */ 4 * NumElements(object.size); return SizeOf(object.data_type) * /* vec4 */ 4 * NumElements(object.size);
} }
template <typename SizeT> inline Object MakeReadonlyObject(const ObjectSize& size,
Object MakeReadonlyObject(const SizeT& size, const std::vector<float>& data) { const std::vector<float>& data) {
return Object{AccessType::READ, return Object{AccessType::READ,
DataType::FLOAT32, DataType::FLOAT32,
ObjectType::UNKNOWN, ObjectType::UNKNOWN,
@ -132,8 +131,8 @@ Object MakeReadonlyObject(const SizeT& size, const std::vector<float>& data) {
internal_object::ToBytesVector(data, 16)}; internal_object::ToBytesVector(data, 16)};
} }
template <typename SizeT> inline Object MakeReadonlyTexture(const ObjectSize& size,
Object MakeReadonlyTexture(const SizeT& size, const std::vector<float>& data) { const std::vector<float>& data) {
return Object{AccessType::READ, return Object{AccessType::READ,
DataType::FLOAT32, DataType::FLOAT32,
ObjectType::TEXTURE, ObjectType::TEXTURE,
@ -142,8 +141,8 @@ Object MakeReadonlyTexture(const SizeT& size, const std::vector<float>& data) {
internal_object::ToBytesVector(data, 16)}; internal_object::ToBytesVector(data, 16)};
} }
template <typename SizeT> inline Object MakeReadonlyBuffer(const ObjectSize& size,
Object MakeReadonlyBuffer(const SizeT& size, const std::vector<float>& data) { const std::vector<float>& data) {
return Object{AccessType::READ, return Object{AccessType::READ,
DataType::FLOAT32, DataType::FLOAT32,
ObjectType::BUFFER, ObjectType::BUFFER,
@ -153,15 +152,18 @@ Object MakeReadonlyBuffer(const SizeT& size, const std::vector<float>& data) {
} }
inline Object MakeReadonlyObject(const std::vector<float>& data) { inline Object MakeReadonlyObject(const std::vector<float>& data) {
return MakeReadonlyObject(IntegralDivideRoundUp(data.size(), 4U), data); return MakeReadonlyObject(
IntegralDivideRoundUp(static_cast<uint32_t>(data.size()), 4U), data);
} }
inline Object MakeReadonlyTexture(const std::vector<float>& data) { inline Object MakeReadonlyTexture(const std::vector<float>& data) {
return MakeReadonlyTexture(IntegralDivideRoundUp(data.size(), 4U), data); return MakeReadonlyTexture(
IntegralDivideRoundUp(static_cast<uint32_t>(data.size()), 4U), data);
} }
inline Object MakeReadonlyBuffer(const std::vector<float>& data) { inline Object MakeReadonlyBuffer(const std::vector<float>& data) {
return MakeReadonlyBuffer(IntegralDivideRoundUp(data.size(), 4U), data); return MakeReadonlyBuffer(
IntegralDivideRoundUp(static_cast<uint32_t>(data.size()), 4U), data);
} }
// TODO(akulik): find better place for functions below. // TODO(akulik): find better place for functions below.

View File

@ -543,7 +543,8 @@ Status Runtime::AssignInternalObjects(std::vector<Object>* shared_objects) {
shared_object.object = shared_ref; shared_object.object = shared_ref;
if (shared_object.object_type == ObjectType::BUFFER) { if (shared_object.object_type == ObjectType::BUFFER) {
// Make a buffer linear. // Make a buffer linear.
shared_object.size = NumElements(object.size); shared_object.size =
static_cast<uint32_t>(NumElements(object.size));
} }
shared_objects->push_back(std::move(shared_object)); shared_objects->push_back(std::move(shared_object));
is_used_shared_object.push_back(false); is_used_shared_object.push_back(false);
@ -552,8 +553,8 @@ Status Runtime::AssignInternalObjects(std::vector<Object>* shared_objects) {
Object& shared_object = (*shared_objects)[shared_ref]; Object& shared_object = (*shared_objects)[shared_ref];
switch (object.object_type) { switch (object.object_type) {
case ObjectType::BUFFER: case ObjectType::BUFFER:
shared_object.size = std::max(NumElements(object.size), shared_object.size = std::max<uint32_t>(
NumElements(shared_object.size)); NumElements(object.size), NumElements(shared_object.size));
break; break;
case ObjectType::TEXTURE: { case ObjectType::TEXTURE: {
if (!FitSize(object.size, shared_object.size, if (!FitSize(object.size, shared_object.size,