Skip to content

Commit 2ffc330

Browse files
author
devsh
committed
deprecate some usages of vectorSIMDu in CBlitUtilities also make CConvolutionWeightFunction link properly for a DLL build
1 parent da0fcf3 commit 2ffc330

File tree

3 files changed

+42
-32
lines changed

3 files changed

+42
-32
lines changed

examples_tests

include/nbl/asset/filters/CBlitUtilities.h

Lines changed: 37 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -253,40 +253,41 @@ class CBlitUtilities : public IBlitUtilities
253253
SimpleWeightFunction1D ReconZA = ReconZR,
254254
SimpleWeightFunction1D ResampZA = ResampZR>
255255
static inline convolution_kernels_t getConvolutionKernels(
256-
const core::vectorSIMDu32& inExtent,
257-
const core::vectorSIMDu32& outExtent,
258-
ReconXR&& reconXR = ReconXR(),
259-
ResampXR&& resampXR = ResampXR(),
260-
ReconXG&& reconXG = ReconXG(),
261-
ResampXG&& resampXG = ResampXG(),
262-
ReconXB&& reconXB = ReconXB(),
263-
ResampXB&& resampXB = ResampXB(),
264-
ReconXA&& reconXA = ReconXA(),
265-
ResampXA&& resampXA = ResampXA(),
256+
const hlsl::uint32_t3& inExtent,
257+
const hlsl::uint32_t3& outExtent,
258+
259+
ReconXR&& reconXR = ReconXR(),
260+
ResampXR&& resampXR = ResampXR(),
261+
ReconXG&& reconXG = ReconXG(),
262+
ResampXG&& resampXG = ResampXG(),
263+
ReconXB&& reconXB = ReconXB(),
264+
ResampXB&& resampXB = ResampXB(),
265+
ReconXA&& reconXA = ReconXA(),
266+
ResampXA&& resampXA = ResampXA(),
266267

267-
ReconYR&& reconYR = ReconYR(),
268-
ResampYR&& resampYR = ResampYR(),
269-
ReconYG&& reconYG = ReconYG(),
270-
ResampYG&& resampYG = ResampYG(),
271-
ReconYB&& reconYB = ReconYB(),
272-
ResampYB&& resampYB = ResampYB(),
273-
ReconYA&& reconYA = ReconYA(),
274-
ResampYA&& resampYA = ResampYA(),
268+
ReconYR&& reconYR = ReconYR(),
269+
ResampYR&& resampYR = ResampYR(),
270+
ReconYG&& reconYG = ReconYG(),
271+
ResampYG&& resampYG = ResampYG(),
272+
ReconYB&& reconYB = ReconYB(),
273+
ResampYB&& resampYB = ResampYB(),
274+
ReconYA&& reconYA = ReconYA(),
275+
ResampYA&& resampYA = ResampYA(),
275276

276-
ReconZR&& reconZR = ReconZR(),
277-
ResampZR&& resampZR = ResampZR(),
278-
ReconZG&& reconZG = ReconZG(),
279-
ResampZG&& resampZG = ResampZG(),
280-
ReconZB&& reconZB = ReconZB(),
281-
ResampZB&& resampZB = ResampZB(),
282-
ReconZA&& reconZA = ReconZA(),
283-
ResampZA&& resampZA = ResampZA())
277+
ReconZR&& reconZR = ReconZR(),
278+
ResampZR&& resampZR = ResampZR(),
279+
ReconZG&& reconZG = ReconZG(),
280+
ResampZG&& resampZG = ResampZG(),
281+
ReconZB&& reconZB = ReconZB(),
282+
ResampZB&& resampZB = ResampZB(),
283+
ReconZA&& reconZA = ReconZA(),
284+
ResampZA&& resampZA = ResampZA())
284285
{
285286
// Stretch and scale the resampling kernels.
286287
// we'll need to stretch the kernel support to be relative to the output image but in the input image coordinate system
287288
// (if support is 3 pixels, it needs to be 3 output texels, but measured in input texels)
288289

289-
const auto rcp_c2 = core::vectorSIMDf(inExtent).preciseDivision(core::vectorSIMDf(outExtent));
290+
const auto rcp_c2 = hlsl::float64_t3(inExtent)/hlsl::float64_t3(outExtent);
290291

291292
resampXR.stretchAndScale(rcp_c2.x);
292293
resampXG.stretchAndScale(rcp_c2.x);
@@ -325,6 +326,15 @@ class CBlitUtilities : public IBlitUtilities
325326

326327
return result;
327328
}
329+
template<typename... Args>
330+
[[deprecated]] static inline convolution_kernels_t getConvolutionKernels(const core::vectorSIMDu32& inExtent, const core::vectorSIMDu32& outExtent, Args&&... args)
331+
{
332+
return getConvolutionKernels(
333+
hlsl::uint32_t3(inExtent[0],inExtent[1],inExtent[2]),
334+
hlsl::uint32_t3(outExtent[0],outExtent[1],outExtent[2]),
335+
std::forward<Args>(args)...
336+
);
337+
}
328338

329339
static inline core::vectorSIMDi32 getWindowSize(
330340
const asset::IImage::E_TYPE inImageType,

include/nbl/asset/filters/kernels/CConvolutionWeightFunction.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ class CConvolutionWeightFunction1D final : public impl::IWeightFunction1D<typena
8484
const WeightFunction1DA m_funcA;
8585
const WeightFunction1DB m_funcB;
8686

87-
value_t NBL_API2 weight_impl(const float x, const uint32_t sampleCount) const
87+
inline value_t weight_impl(const float x, const uint32_t sampleCount) const
8888
{
8989
const auto [minIntegrationLimit,maxIntegrationLimit] = getIntegrationDomain(x);
9090
const double dtau = (maxIntegrationLimit-minIntegrationLimit)/double(sampleCount);
@@ -110,15 +110,15 @@ class CConvolutionWeightFunction1D final : public impl::IWeightFunction1D<typena
110110
};
111111

112112
template <>
113-
double CConvolutionWeightFunction1D<CWeightFunction1D<SBoxFunction>, CWeightFunction1D<SBoxFunction>>::weight_impl(const float x, const uint32_t) const;
113+
NBL_API2 double CConvolutionWeightFunction1D<CWeightFunction1D<SBoxFunction>, CWeightFunction1D<SBoxFunction>>::weight_impl(const float x, const uint32_t) const;
114114

115115
template <>
116-
double CConvolutionWeightFunction1D<CWeightFunction1D<SGaussianFunction<>>, CWeightFunction1D<SGaussianFunction<>>>::weight_impl(const float x, const uint32_t) const;
116+
NBL_API2 double CConvolutionWeightFunction1D<CWeightFunction1D<SGaussianFunction<>>, CWeightFunction1D<SGaussianFunction<>>>::weight_impl(const float x, const uint32_t) const;
117117

118118
// TODO: Specialization: CConvolutionWeightFunction1D<CWeightFunction1D<STriangleFunction>, CWeightFunction1D<STriangleFunction>> = this is tricky but feasible
119119

120120
template <>
121-
double CConvolutionWeightFunction1D<CWeightFunction1D<SKaiserFunction>, CWeightFunction1D<SKaiserFunction>>::weight_impl(const float x, const uint32_t) const;
121+
NBL_API2 double CConvolutionWeightFunction1D<CWeightFunction1D<SKaiserFunction>, CWeightFunction1D<SKaiserFunction>>::weight_impl(const float x, const uint32_t) const;
122122

123123
} // end namespace nbl::asset
124124

0 commit comments

Comments
 (0)