MCPcopy Create free account
hub / github.com/RenderKit/embree / rtcSetNewGeometryBufferHostDevice

Function rtcSetNewGeometryBufferHostDevice

kernels/common/rtcore.cpp:1943–1984  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1941 }
1942
1943 RTC_API void rtcSetNewGeometryBufferHostDevice(RTCGeometry hgeometry, RTCBufferType bufferType, unsigned int slot, RTCFormat format, size_t byteStride, size_t itemCount, void** ptr, void** dptr)
1944 {
1945 Geometry* geometry = (Geometry*) hgeometry;
1946 RTC_CATCH_BEGIN;
1947 RTC_TRACE(rtcSetNewGeometryBufferHostDevice);
1948 RTC_VERIFY_HANDLE(hgeometry);
1949
1950#if defined(EMBREE_SYCL_SUPPORT)
1951 if (geometry->device->is_gpu())
1952 {
1953 if (itemCount > 0xFFFFFFFFu)
1954 throw_RTCError(RTC_ERROR_INVALID_ARGUMENT,"buffer too large");
1955
1956 if (byteStride > 0xFFFFFFFFu)
1957 throw_RTCError(RTC_ERROR_INVALID_ARGUMENT,"stride too large");
1958
1959 /* vertex buffers need to get overallocated slightly as elements are accessed using SSE loads */
1960 size_t bytes = itemCount*byteStride;
1961 if (bufferType == RTC_BUFFER_TYPE_VERTEX || bufferType == RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE)
1962 bytes += (16 - (byteStride%16))%16;
1963
1964 Ref<Buffer> buffer = new Buffer(geometry->device, bytes, nullptr, nullptr);
1965 geometry->setBuffer(bufferType, slot, format, buffer, 0, byteStride, (unsigned int)itemCount);
1966
1967 if(ptr)
1968 *ptr = buffer->getHostPtr();
1969 if (dptr)
1970 *dptr = buffer->getDevicePtr();
1971 }
1972 else
1973#endif
1974 {
1975 void* tmp = rtcSetNewGeometryBuffer(hgeometry, bufferType, slot, format, byteStride, itemCount);
1976 if(ptr)
1977 *ptr = tmp;
1978 if (dptr) {
1979 *dptr = tmp;
1980 }
1981 }
1982
1983 RTC_CATCH_END2(geometry);
1984 }
1985
1986 RTC_API void* rtcGetGeometryBufferData(RTCGeometry hgeometry, RTCBufferType type, unsigned int slot)
1987 {

Callers 1

addCubeHostDeviceFunction · 0.85

Calls 5

rtcSetNewGeometryBufferFunction · 0.85
getHostPtrMethod · 0.80
getDevicePtrMethod · 0.80
is_gpuMethod · 0.45
setBufferMethod · 0.45

Tested by

no test coverage detected