MCPcopy Create free account
hub / github.com/ROCm/clr / hipTexRefSetAddress

Function hipTexRefSetAddress

hipamd/src/hip_texture.cpp:1055–1096  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1053}
1054
1055hipError_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
1098hipError_t hipTexRefSetAddress2D(textureReference* texRef, const HIP_ARRAY_DESCRIPTOR* desc,
1099 hipDeviceptr_t dptr, size_t Pitch) {

Callers

nothing calls this directly

Calls 8

ihipDestroyTextureObjectFunction · 0.85
getChannelFormatDescFunction · 0.85
getTextureDescFunction · 0.85
ihipCreateTextureObjectFunction · 0.85
getNullStreamFunction · 0.85
ihipMemcpyFunction · 0.85
getDynTexGlobalVarMethod · 0.80

Tested by

no test coverage detected