| 606 | } |
| 607 | |
| 608 | OIDN_API OIDNBuffer oidnNewSharedBufferFromFD(OIDNDevice deviceC, |
| 609 | OIDNExternalMemoryTypeFlags fdTypeC, |
| 610 | int fd, size_t byteSize) |
| 611 | { |
| 612 | Device* device = reinterpret_cast<Device*>(deviceC); |
| 613 | OIDN_TRY |
| 614 | checkHandle(deviceC); |
| 615 | OIDN_LOCK_DEVICE(device); |
| 616 | device->checkCommitted(); |
| 617 | const ExternalMemoryTypeFlags fdType = static_cast<ExternalMemoryTypeFlags>(fdTypeC); |
| 618 | if ((fdType & device->getExternalMemoryTypes()) != fdType) |
| 619 | throw Exception(Error::InvalidArgument, "external memory type not supported by the device"); |
| 620 | Ref<Buffer> buffer = device->newExternalUserBuffer(fdType, fd, byteSize); |
| 621 | return reinterpret_cast<OIDNBuffer>(buffer.detach()); |
| 622 | OIDN_CATCH_DEVICE(device) |
| 623 | return nullptr; |
| 624 | } |
| 625 | |
| 626 | OIDN_API OIDNBuffer oidnNewSharedBufferFromWin32Handle(OIDNDevice deviceC, |
| 627 | OIDNExternalMemoryTypeFlags handleTypeC, |
nothing calls this directly
no test coverage detected