* Implement Batched pointcloud_search, pointcloud_get, and pointcloud_write. Updated behavior of scalar pointcloud_search and pointcloud_get to not code gen branch with code gen runtime error for maxpoints/num_points larger than array size. Instead now it codgens a clamp of the maxpoints/num_points to the arraysize. This allows code to continue executing, and if accessed outside of the range, existing codgen range checks will still emit a runtime error. Extracted class PointCloud defnition and some helper functions to pointcloud.h so it can be shared between batched and scalar implementation. Moved PointCloud out of anonymous namespace to OSL::pvt so a single implementation (including static maps) could be shared between batched and scalar implementation. Refactored implementation of template<typename DataT, int WidthT> struct Masked; template<typename DataT> struct Ref; to flatten class hierarchy and fix bug where derivatives of unbounded arrays could not be constructed, IE: MaskedDx<int[]> myDeriv(ptr, arraylength); Added MaskedData::assign_val_lane_from_scalar Renamed MaskedData::assign_val_from to MaskedData::assign_val_from_wide Renamed MaskedData::assign_all_from to MaskedData::assign_all_from_scalar Updated BatchedAnalysis to indicate that results of pointcloud_search, pointcloud_get, and pointcloud_write are always varying regardless of the symbols passed in. Updated debugging in BatchedAnalysis to emit unmangled symbol names. Properly implement (was broken previously) BatchedBackendLLVM::llvm_zero_derivs(const Symbol& sym, llvm::Value* count) including using code gen loop to reduce code bloat. * Fixed warnings about BatchedRendererServices<WidthT>::pointcloud_get and BatchedRendererServices<WidthT>::pointcloud_write not returning a value. * Fixed unused variable "ok" in batched pointcloud_write. Fixed undefined type when building with USE_PARTIO=0 * Update pointcloud tests to avoid non-deterministic results for unsorted results and out of range max_points/num_points. Added support for NOOPTIMIZE file tag for batched regression tests. Made array-length-reg NOOPTIMIZE so its code gen would actually execute vs. constant fold. Fixed bug for storing arraylength result in varying result symbol. * Fix missing virtual function overrides of MyBatchedRendererServices in example-batched-deformer * Change varying point cloud tests to use pixel centers in order to avoid situations where point cloud could provice multiple data points at equal distances causing non-determinism. * More changes to avoid non-determinism in pointcloud test results * Add alternate reference images for point cloud results that were coming back slightly different for essentially identical distances. * Fixed bug in llvm_gen for raytype where the wrong type was passed as a parameter for a string. Signed-off-by: Alex M. Wells <alex.m.wells@intel.com>
0 lines
0 B
Plaintext
0 lines
0 B
Plaintext
The file is empty.