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:
parent
75ba861345
commit
7c41671882
@ -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.
|
||||||
|
@ -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,
|
||||||
|
Loading…
Reference in New Issue
Block a user