The rtcNewSharedBuffer functions have declaration:
/* Creates a new shared buffer. */
RTC_API RTCBuffer rtcNewSharedBuffer(RTCDevice device, void* ptr, size_t byteSize);
/* Creates a new shared buffer using explicit host device memory. */
RTC_API RTCBuffer rtcNewSharedBufferHostDevice(RTCDevice device, void* ptr, size_t byteSize);
. . . why not void const*? Are there circumstances Embree modifies the user data? I didn't see anything about this in the documentation.