42acb9a66c
The `ArrayCopy` was simply calling `IsOnDevice` to see if the array from the `UnknownArrayHandle` was on a device. Seems right, but it is actually operating on an `ArrayHandleRecombineVec`. This is a special array that mostly behaves like other `ArrayHandle`s, but because it has variable vec size, it breaks some `ArrayHandle` conventions. One of the iffy things it has to do is stick the dependent `Buffer` objects into the metadata of its own `Buffer` rather than list them in the `Buffer` list. This means that `ArrayHandle` cannot properly check them to see where they are located. Instead, it just sees that the one `Buffer` it has is empty. A recent change to `IsOnDevice` made it return true for any device if the `Buffer` is empty. So previously this was broken in that it reported that the array was not on any device. That changed to report that it was on all devices, even inactive ones. So the code went from not efficiently copying to throwing an exception. This has been fixed by pulling one of the dependent arrays and checking that one. |
||
---|---|---|
.. | ||
cont | ||
exec | ||
filter | ||
internal | ||
interop | ||
io | ||
random | ||
rendering | ||
source | ||
testing | ||
thirdparty | ||
worklet | ||
.gitattributes | ||
Algorithms.h | ||
Assert.h | ||
Atomic.h | ||
BinaryOperators.h | ||
BinaryPredicates.h | ||
Bitset.h | ||
Bounds.h | ||
CellClassification.h | ||
CellShape.h | ||
CellTraits.h | ||
CMakeLists.txt | ||
Deprecated.h | ||
ErrorCode.h | ||
Flags.h | ||
Geometry.h | ||
Geometry.hxx | ||
Hash.h | ||
ImplicitFunction.h | ||
List.h | ||
ListTag.h | ||
LowerBound.h | ||
Math.h | ||
Math.h.in | ||
Matrix.h | ||
NewtonsMethod.h | ||
Pair.h | ||
Particle.h | ||
Range.h | ||
RangeId2.h | ||
RangeId3.h | ||
RangeId.h | ||
StaticAssert.h | ||
Swap.h | ||
TopologyElementTag.h | ||
Transform3D.h | ||
Tuple.h | ||
Tuple.h.in | ||
TypeList.h | ||
TypeListTag.h | ||
Types.h | ||
TypeTraits.h | ||
UnaryPredicates.h | ||
UpperBound.h | ||
VecAxisAlignedPointCoordinates.h | ||
VecFlat.h | ||
VecFromPortal.h | ||
VecFromPortalPermute.h | ||
VecFromVirtPortal.h | ||
VectorAnalysis.h | ||
VecTraits.h | ||
VecVariable.h | ||
Version.h.in | ||
VirtualObjectBase.h |