From a248ae64e52e7e3c80f9404ae3ee20afc076780c Mon Sep 17 00:00:00 2001 From: kradchen Date: Mon, 6 Jan 2025 16:07:27 +0800 Subject: [PATCH] feat: Add texture obj init logic for cuda 12.3 support --- SAFT_TOFI/src/saft.cpp | 47 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/SAFT_TOFI/src/saft.cpp b/SAFT_TOFI/src/saft.cpp index d2ce245..c551ad1 100644 --- a/SAFT_TOFI/src/saft.cpp +++ b/SAFT_TOFI/src/saft.cpp @@ -86,6 +86,53 @@ SAFTHandler::SAFTHandler(int deviceId, ///< CUDA ID of th IMAGE_RESOLUTION_FACTOR = 1 / IMAGE_RESOLUTION; // Auflösung im OutputVolumen SOS_RESOLUTION_FACTOR = 1 / SOS_RESOLUTION; // Auflösung im SoS-Volumen + + memset(&resDesc, 0, sizeof(resDesc)); + resDesc.resType = cudaResourceTypeArray; + + memset(&texDesc, 0, sizeof(texDesc)); + texDesc.addressMode[0] = cudaAddressModeClamp; + texDesc.addressMode[1] = cudaAddressModeClamp; + texDesc.addressMode[2] = cudaAddressModeClamp; + switch (SAFT_VARIANT[SAFT_VARIANT_3DVolumeInterpolationAtReconstruction]) { + case 0: + texDesc.filterMode = cudaFilterModePoint; + break; + case 1: + texDesc.filterMode = cudaFilterModeLinear; + break; + } + texDesc.readMode = cudaReadModeElementType; + texDesc.normalizedCoords = 0; + + memset(&texDescSosAttField, 0, sizeof(texDescSosAttField)); + texDescSosAttField.addressMode[0] = cudaAddressModeClamp; + texDescSosAttField.addressMode[1] = cudaAddressModeClamp; + texDescSosAttField.addressMode[2] = cudaAddressModeClamp; + if (SAFT_VARIANT[SAFT_VARIANT_3DVolumeInterpolationAtPreprocessing] == 1) + { + texDescSosAttField.filterMode = cudaFilterModeLinear; // Lineare Interpolation + } + else + { + texDescSosAttField.filterMode = cudaFilterModePoint; // Nearest Neighbor + } + texDescSosAttField.readMode = cudaReadModeElementType; + texDescSosAttField.normalizedCoords = 0; + + memset(&texDesc2D, 0, sizeof(texDesc2D)); + texDesc2D.addressMode[0] = cudaAddressModeBorder; + texDesc2D.addressMode[1] = cudaAddressModeBorder; + if (SAFT_VARIANT[SAFT_VARIANT_AscanInterpolation] == 1) + { + texDesc2D.filterMode = cudaFilterModeLinear; // Lineare Interpolation + } + else + { + texDesc2D.filterMode = cudaFilterModePoint; // Nearest Neighbor + } + texDesc2D.readMode = cudaReadModeElementType; + texDesc2D.normalizedCoords = 0; } /**