Merge branch 'blender-v4.1-release'

This commit is contained in:
Nikita Sirgienko
2024-02-07 20:12:34 +01:00
2 changed files with 26 additions and 20 deletions

View File

@@ -96,18 +96,7 @@ OIDNDenoiserGPU::OIDNDenoiserGPU(Device *path_trace_device, const DenoiseParams
OIDNDenoiserGPU::~OIDNDenoiserGPU()
{
if (albedo_filter_) {
oidnReleaseFilter(albedo_filter_);
}
if (normal_filter_) {
oidnReleaseFilter(normal_filter_);
}
if (oidn_filter_) {
oidnReleaseFilter(oidn_filter_);
}
if (oidn_device_) {
oidnReleaseDevice(oidn_device_);
}
release_all_resources();
}
bool OIDNDenoiserGPU::denoise_buffer(const BufferParams &buffer_params,
@@ -208,14 +197,8 @@ bool OIDNDenoiserGPU::denoise_create_if_needed(DenoiseContext &context)
return true;
}
/* Destroy existing handle before creating new one. */
if (oidn_filter_) {
oidnReleaseFilter(oidn_filter_);
}
if (oidn_device_) {
oidnReleaseDevice(oidn_device_);
}
/* Destroy existing handles before creating new ones. */
release_all_resources();
switch (denoiser_device_->info.type) {
# if defined(OIDN_DEVICE_SYCL) && defined(WITH_ONEAPI)
@@ -465,6 +448,26 @@ void OIDNDenoiserGPU::set_filter_pass(OIDNFilter filter,
}
}
void OIDNDenoiserGPU::release_all_resources()
{
if (albedo_filter_) {
oidnReleaseFilter(albedo_filter_);
albedo_filter_ = nullptr;
}
if (normal_filter_) {
oidnReleaseFilter(normal_filter_);
normal_filter_ = nullptr;
}
if (oidn_filter_) {
oidnReleaseFilter(oidn_filter_);
oidn_filter_ = nullptr;
}
if (oidn_device_) {
oidnReleaseDevice(oidn_device_);
oidn_device_ = nullptr;
}
}
CCL_NAMESPACE_END
#endif

View File

@@ -67,6 +67,9 @@ class OIDNDenoiserGPU : public DenoiserGPU {
size_t pixel_stride_in_bytes,
size_t row_stride_in_bytes);
/* Delete all allocated OIDN objects. */
void release_all_resources();
OIDNDevice oidn_device_ = nullptr;
OIDNFilter oidn_filter_ = nullptr;
OIDNFilter albedo_filter_ = nullptr;