| 1053 | } |
| 1054 | |
| 1055 | hipError_t hipTexRefSetAddress(size_t* ByteOffset, textureReference* texRef, hipDeviceptr_t dptr, |
| 1056 | size_t bytes) { |
| 1057 | HIP_INIT_API(hipTexRefSetAddress, ByteOffset, texRef, dptr, bytes); |
| 1058 | |
| 1059 | if (texRef == nullptr) { |
| 1060 | HIP_RETURN(hipErrorInvalidValue); |
| 1061 | } |
| 1062 | |
| 1063 | hipDeviceptr_t refDevPtr = nullptr; |
| 1064 | size_t refDevSize = 0; |
| 1065 | HIP_RETURN_ONFAIL(PlatformState::instance().getDynTexGlobalVar(texRef, &refDevPtr, &refDevSize)); |
| 1066 | assert(refDevSize == sizeof(textureReference)); |
| 1067 | |
| 1068 | // Any previous address or HIP array state associated with the texture reference is superseded by |
| 1069 | // this function. Any memory previously bound to hTexRef is unbound. No need to check for errors. |
| 1070 | hipError_t err = ihipDestroyTextureObject(texRef->textureObject); |
| 1071 | if (err != hipSuccess) { |
| 1072 | HIP_RETURN(err); |
| 1073 | } |
| 1074 | |
| 1075 | hipResourceDesc resDesc = {}; |
| 1076 | resDesc.resType = hipResourceTypeLinear; |
| 1077 | resDesc.res.linear.devPtr = dptr; |
| 1078 | resDesc.res.linear.desc = hip::getChannelFormatDesc(texRef->numChannels, texRef->format); |
| 1079 | resDesc.res.linear.sizeInBytes = bytes; |
| 1080 | err = ihipGetTextureAlignmentOffset(ByteOffset, dptr); |
| 1081 | if (err != hipSuccess) { |
| 1082 | HIP_RETURN(err); |
| 1083 | } |
| 1084 | |
| 1085 | // Align the user ptr to HW requirments. |
| 1086 | resDesc.res.linear.devPtr = static_cast<char*>(dptr) - (ByteOffset ? *ByteOffset : 0); |
| 1087 | hipTextureDesc texDesc = hip::getTextureDesc(texRef); |
| 1088 | |
| 1089 | err = ihipCreateTextureObject(&texRef->textureObject, &resDesc, &texDesc, nullptr); |
| 1090 | if (err != hipSuccess) { |
| 1091 | HIP_RETURN(err); |
| 1092 | } |
| 1093 | // Copy to device. |
| 1094 | hip::Stream* stream = hip::getNullStream(); |
| 1095 | HIP_RETURN(ihipMemcpy(refDevPtr, texRef, refDevSize, hipMemcpyHostToDevice, *stream)); |
| 1096 | } |
| 1097 | |
| 1098 | hipError_t hipTexRefSetAddress2D(textureReference* texRef, const HIP_ARRAY_DESCRIPTOR* desc, |
| 1099 | hipDeviceptr_t dptr, size_t Pitch) { |
nothing calls this directly
no test coverage detected