// Copyright (c) 2021, NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // NVIDIA CORPORATION and its licensors retain all intellectual property // and proprietary rights in and to this software, related documentation // and any modifications thereto. Any use, reproduction, disclosure or // distribution of this software and related documentation without an express // license agreement from NVIDIA CORPORATION is strictly prohibited. #include //------------------------------------------------------------------------ // CUDA kernel parameters. struct upfirdn2d_kernel_params { const void* x; const float* f; void* y; int2 up; int2 down; int2 pad0; int flip; float gain; int4 inSize; // [width, height, channel, batch] int4 inStride; int2 filterSize; // [width, height] int2 filterStride; int4 outSize; // [width, height, channel, batch] int4 outStride; int sizeMinor; int sizeMajor; int loopMinor; int loopMajor; int loopX; int launchMinor; int launchMajor; }; //------------------------------------------------------------------------ // CUDA kernel specialization. struct upfirdn2d_kernel_spec { void* kernel; int tileOutW; int tileOutH; int loopMinor; int loopX; }; //------------------------------------------------------------------------ // CUDA kernel selection. template upfirdn2d_kernel_spec choose_upfirdn2d_kernel(const upfirdn2d_kernel_params& p); //------------------------------------------------------------------------