diff options
author | Dario <dariosamo@gmail.com> | 2023-09-18 10:05:20 -0300 |
---|---|---|
committer | Dario <dariosamo@gmail.com> | 2023-09-25 14:53:45 -0300 |
commit | ab65effed015df76b0858df27127f62b3aa94e0e (patch) | |
tree | cab7bbbdd2b63235b809560e47c3ac3784fa892b /thirdparty/oidn/core/api.cpp | |
parent | 1b2b726502eabaae4a15d544d92735cc2efe35b5 (diff) | |
download | redot-engine-ab65effed015df76b0858df27127f62b3aa94e0e.tar.gz |
Remove denoise module and thirdparty OIDN.
This is replaced by a much lighter weight and faster JNLM denoiser. OIDN is still much more accurate, and may be provided as an optional backend in the future, but the JNLM denoiser seems good enough for most use cases and removing OIDN reduces the build system complexity, binary size, and build times very significantly.
Diffstat (limited to 'thirdparty/oidn/core/api.cpp')
-rw-r--r-- | thirdparty/oidn/core/api.cpp | 408 |
1 files changed, 0 insertions, 408 deletions
diff --git a/thirdparty/oidn/core/api.cpp b/thirdparty/oidn/core/api.cpp deleted file mode 100644 index 7353fe4e25..0000000000 --- a/thirdparty/oidn/core/api.cpp +++ /dev/null @@ -1,408 +0,0 @@ -// ======================================================================== // -// Copyright 2009-2019 Intel Corporation // -// // -// Licensed under the Apache License, Version 2.0 (the "License"); // -// you may not use this file except in compliance with the License. // -// You may obtain a copy of the License at // -// // -// http://www.apache.org/licenses/LICENSE-2.0 // -// // -// Unless required by applicable law or agreed to in writing, software // -// distributed under the License is distributed on an "AS IS" BASIS, // -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // -// See the License for the specific language governing permissions and // -// limitations under the License. // -// ======================================================================== // - -#ifdef _WIN32 -# define OIDN_API extern "C" __declspec(dllexport) -#else -# define OIDN_API extern "C" __attribute__ ((visibility ("default"))) -#endif - -// Locks the device that owns the specified object -// Use *only* inside OIDN_TRY/CATCH! -#define OIDN_LOCK(obj) \ - std::lock_guard<std::mutex> lock(obj->getDevice()->getMutex()); - -// Try/catch for converting exceptions to errors -#define OIDN_TRY \ - try { - -#define OIDN_CATCH(obj) \ - } catch (Exception& e) { \ - Device::setError(obj ? obj->getDevice() : nullptr, e.code(), e.what()); \ - } catch (std::bad_alloc&) { \ - Device::setError(obj ? obj->getDevice() : nullptr, Error::OutOfMemory, "out of memory"); \ - } catch (mkldnn::error& e) { \ - if (e.status == mkldnn_out_of_memory) \ - Device::setError(obj ? obj->getDevice() : nullptr, Error::OutOfMemory, "out of memory"); \ - else \ - Device::setError(obj ? obj->getDevice() : nullptr, Error::Unknown, e.message); \ - } catch (std::exception& e) { \ - Device::setError(obj ? obj->getDevice() : nullptr, Error::Unknown, e.what()); \ - } catch (...) { \ - Device::setError(obj ? obj->getDevice() : nullptr, Error::Unknown, "unknown exception caught"); \ - } - -#include "device.h" -#include "filter.h" -#include <mutex> - -namespace oidn { - - namespace - { - __forceinline void checkHandle(void* handle) - { - if (handle == nullptr) - throw Exception(Error::InvalidArgument, "invalid handle"); - } - - template<typename T> - __forceinline void retainObject(T* obj) - { - if (obj) - { - obj->incRef(); - } - else - { - OIDN_TRY - checkHandle(obj); - OIDN_CATCH(obj) - } - } - - template<typename T> - __forceinline void releaseObject(T* obj) - { - if (obj == nullptr || obj->decRefKeep() == 0) - { - OIDN_TRY - checkHandle(obj); - OIDN_LOCK(obj); - obj->destroy(); - OIDN_CATCH(obj) - } - } - - template<> - __forceinline void releaseObject(Device* obj) - { - if (obj == nullptr || obj->decRefKeep() == 0) - { - OIDN_TRY - checkHandle(obj); - // Do NOT lock the device because it owns the mutex - obj->destroy(); - OIDN_CATCH(obj) - } - } - } - - OIDN_API OIDNDevice oidnNewDevice(OIDNDeviceType type) - { - Ref<Device> device = nullptr; - OIDN_TRY - if (type == OIDN_DEVICE_TYPE_CPU || type == OIDN_DEVICE_TYPE_DEFAULT) - device = makeRef<Device>(); - else - throw Exception(Error::InvalidArgument, "invalid device type"); - OIDN_CATCH(device) - return (OIDNDevice)device.detach(); - } - - OIDN_API void oidnRetainDevice(OIDNDevice hDevice) - { - Device* device = (Device*)hDevice; - retainObject(device); - } - - OIDN_API void oidnReleaseDevice(OIDNDevice hDevice) - { - Device* device = (Device*)hDevice; - releaseObject(device); - } - - OIDN_API void oidnSetDevice1b(OIDNDevice hDevice, const char* name, bool value) - { - Device* device = (Device*)hDevice; - OIDN_TRY - checkHandle(hDevice); - OIDN_LOCK(device); - device->set1i(name, value); - OIDN_CATCH(device) - } - - OIDN_API void oidnSetDevice1i(OIDNDevice hDevice, const char* name, int value) - { - Device* device = (Device*)hDevice; - OIDN_TRY - checkHandle(hDevice); - OIDN_LOCK(device); - device->set1i(name, value); - OIDN_CATCH(device) - } - - OIDN_API bool oidnGetDevice1b(OIDNDevice hDevice, const char* name) - { - Device* device = (Device*)hDevice; - OIDN_TRY - checkHandle(hDevice); - OIDN_LOCK(device); - return device->get1i(name); - OIDN_CATCH(device) - return false; - } - - OIDN_API int oidnGetDevice1i(OIDNDevice hDevice, const char* name) - { - Device* device = (Device*)hDevice; - OIDN_TRY - checkHandle(hDevice); - OIDN_LOCK(device); - return device->get1i(name); - OIDN_CATCH(device) - return 0; - } - - OIDN_API void oidnSetDeviceErrorFunction(OIDNDevice hDevice, OIDNErrorFunction func, void* userPtr) - { - Device* device = (Device*)hDevice; - OIDN_TRY - checkHandle(hDevice); - OIDN_LOCK(device); - device->setErrorFunction((ErrorFunction)func, userPtr); - OIDN_CATCH(device) - } - - OIDN_API OIDNError oidnGetDeviceError(OIDNDevice hDevice, const char** outMessage) - { - Device* device = (Device*)hDevice; - OIDN_TRY - return (OIDNError)Device::getError(device, outMessage); - OIDN_CATCH(device) - if (outMessage) *outMessage = ""; - return OIDN_ERROR_UNKNOWN; - } - - OIDN_API void oidnCommitDevice(OIDNDevice hDevice) - { - Device* device = (Device*)hDevice; - OIDN_TRY - checkHandle(hDevice); - OIDN_LOCK(device); - device->commit(); - OIDN_CATCH(device) - } - - OIDN_API OIDNBuffer oidnNewBuffer(OIDNDevice hDevice, size_t byteSize) - { - Device* device = (Device*)hDevice; - OIDN_TRY - checkHandle(hDevice); - OIDN_LOCK(device); - Ref<Buffer> buffer = device->newBuffer(byteSize); - return (OIDNBuffer)buffer.detach(); - OIDN_CATCH(device) - return nullptr; - } - - OIDN_API OIDNBuffer oidnNewSharedBuffer(OIDNDevice hDevice, void* ptr, size_t byteSize) - { - Device* device = (Device*)hDevice; - OIDN_TRY - checkHandle(hDevice); - OIDN_LOCK(device); - Ref<Buffer> buffer = device->newBuffer(ptr, byteSize); - return (OIDNBuffer)buffer.detach(); - OIDN_CATCH(device) - return nullptr; - } - - OIDN_API void oidnRetainBuffer(OIDNBuffer hBuffer) - { - Buffer* buffer = (Buffer*)hBuffer; - retainObject(buffer); - } - - OIDN_API void oidnReleaseBuffer(OIDNBuffer hBuffer) - { - Buffer* buffer = (Buffer*)hBuffer; - releaseObject(buffer); - } - - OIDN_API void* oidnMapBuffer(OIDNBuffer hBuffer, OIDNAccess access, size_t byteOffset, size_t byteSize) - { - Buffer* buffer = (Buffer*)hBuffer; - OIDN_TRY - checkHandle(hBuffer); - OIDN_LOCK(buffer); - return buffer->map(byteOffset, byteSize); - OIDN_CATCH(buffer) - return nullptr; - } - - OIDN_API void oidnUnmapBuffer(OIDNBuffer hBuffer, void* mappedPtr) - { - Buffer* buffer = (Buffer*)hBuffer; - OIDN_TRY - checkHandle(hBuffer); - OIDN_LOCK(buffer); - return buffer->unmap(mappedPtr); - OIDN_CATCH(buffer) - } - - OIDN_API OIDNFilter oidnNewFilter(OIDNDevice hDevice, const char* type) - { - Device* device = (Device*)hDevice; - OIDN_TRY - checkHandle(hDevice); - OIDN_LOCK(device); - Ref<Filter> filter = device->newFilter(type); - return (OIDNFilter)filter.detach(); - OIDN_CATCH(device) - return nullptr; - } - - OIDN_API void oidnRetainFilter(OIDNFilter hFilter) - { - Filter* filter = (Filter*)hFilter; - retainObject(filter); - } - - OIDN_API void oidnReleaseFilter(OIDNFilter hFilter) - { - Filter* filter = (Filter*)hFilter; - releaseObject(filter); - } - - OIDN_API void oidnSetFilterImage(OIDNFilter hFilter, const char* name, - OIDNBuffer hBuffer, OIDNFormat format, - size_t width, size_t height, - size_t byteOffset, - size_t bytePixelStride, size_t byteRowStride) - { - Filter* filter = (Filter*)hFilter; - OIDN_TRY - checkHandle(hFilter); - checkHandle(hBuffer); - OIDN_LOCK(filter); - Ref<Buffer> buffer = (Buffer*)hBuffer; - if (buffer->getDevice() != filter->getDevice()) - throw Exception(Error::InvalidArgument, "the specified objects are bound to different devices"); - Image data(buffer, (Format)format, (int)width, (int)height, byteOffset, bytePixelStride, byteRowStride); - filter->setImage(name, data); - OIDN_CATCH(filter) - } - - OIDN_API void oidnSetSharedFilterImage(OIDNFilter hFilter, const char* name, - void* ptr, OIDNFormat format, - size_t width, size_t height, - size_t byteOffset, - size_t bytePixelStride, size_t byteRowStride) - { - Filter* filter = (Filter*)hFilter; - OIDN_TRY - checkHandle(hFilter); - OIDN_LOCK(filter); - Image data(ptr, (Format)format, (int)width, (int)height, byteOffset, bytePixelStride, byteRowStride); - filter->setImage(name, data); - OIDN_CATCH(filter) - } - - OIDN_API void oidnSetFilter1b(OIDNFilter hFilter, const char* name, bool value) - { - Filter* filter = (Filter*)hFilter; - OIDN_TRY - checkHandle(hFilter); - OIDN_LOCK(filter); - filter->set1i(name, int(value)); - OIDN_CATCH(filter) - } - - OIDN_API bool oidnGetFilter1b(OIDNFilter hFilter, const char* name) - { - Filter* filter = (Filter*)hFilter; - OIDN_TRY - checkHandle(hFilter); - OIDN_LOCK(filter); - return filter->get1i(name); - OIDN_CATCH(filter) - return false; - } - - OIDN_API void oidnSetFilter1i(OIDNFilter hFilter, const char* name, int value) - { - Filter* filter = (Filter*)hFilter; - OIDN_TRY - checkHandle(hFilter); - OIDN_LOCK(filter); - filter->set1i(name, value); - OIDN_CATCH(filter) - } - - OIDN_API int oidnGetFilter1i(OIDNFilter hFilter, const char* name) - { - Filter* filter = (Filter*)hFilter; - OIDN_TRY - checkHandle(hFilter); - OIDN_LOCK(filter); - return filter->get1i(name); - OIDN_CATCH(filter) - return 0; - } - - OIDN_API void oidnSetFilter1f(OIDNFilter hFilter, const char* name, float value) - { - Filter* filter = (Filter*)hFilter; - OIDN_TRY - checkHandle(hFilter); - OIDN_LOCK(filter); - filter->set1f(name, value); - OIDN_CATCH(filter) - } - - OIDN_API float oidnGetFilter1f(OIDNFilter hFilter, const char* name) - { - Filter* filter = (Filter*)hFilter; - OIDN_TRY - checkHandle(hFilter); - OIDN_LOCK(filter); - return filter->get1f(name); - OIDN_CATCH(filter) - return 0; - } - - OIDN_API void oidnSetFilterProgressMonitorFunction(OIDNFilter hFilter, OIDNProgressMonitorFunction func, void* userPtr) - { - Filter* filter = (Filter*)hFilter; - OIDN_TRY - checkHandle(hFilter); - OIDN_LOCK(filter); - filter->setProgressMonitorFunction(func, userPtr); - OIDN_CATCH(filter) - } - - OIDN_API void oidnCommitFilter(OIDNFilter hFilter) - { - Filter* filter = (Filter*)hFilter; - OIDN_TRY - checkHandle(hFilter); - OIDN_LOCK(filter); - filter->commit(); - OIDN_CATCH(filter) - } - - OIDN_API void oidnExecuteFilter(OIDNFilter hFilter) - { - Filter* filter = (Filter*)hFilter; - OIDN_TRY - checkHandle(hFilter); - OIDN_LOCK(filter); - filter->execute(); - OIDN_CATCH(filter) - } - -} // namespace oidn |