SWDEV-475114 - Prevent segfaults in hipBindTexture

Change-Id: I050f36a5c74a5d4542155040ccce043fee6b73ad
Этот коммит содержится в:
Marko Arandjelovic
2024-07-23 10:22:58 +02:00
родитель 7d0ff387e9
Коммит b3153a5f41
+9 -4
Просмотреть файл
@@ -392,7 +392,9 @@ hipError_t ihipDestroyTextureObject(hipTextureObject_t texObject) {
return hipErrorNotSupported;
}
texObject->image->release();
if (texObject != nullptr && texObject->image) {
texObject->image->release();
}
// The texture object always owns the sampler SRD.
texObject->sampler->release();
@@ -554,7 +556,8 @@ hipError_t ihipBindTexture(size_t* offset,
}
// Align the user ptr to HW requirments.
resDesc.res.linear.devPtr = static_cast<char*>(const_cast<void*>(devPtr)) - *offset;
resDesc.res.linear.devPtr =
static_cast<char*>(const_cast<void*>(devPtr)) - (offset != nullptr ? *offset : 0);
hipTextureDesc texDesc = hip::getTextureDesc(texref);
return ihipCreateTextureObject(const_cast<hipTextureObject_t*>(&texref->textureObject), &resDesc, &texDesc, nullptr);
@@ -569,7 +572,8 @@ hipError_t ihipBindTexture2D(size_t* offset,
size_t pitch) {
if ((texref == nullptr) ||
(devPtr == nullptr) ||
(desc == nullptr)) {
(desc == nullptr) ||
(pitch == 0)) {
return hipErrorInvalidValue;
}
@@ -594,7 +598,8 @@ hipError_t ihipBindTexture2D(size_t* offset,
}
// Align the user ptr to HW requirments.
resDesc.res.pitch2D.devPtr = static_cast<char*>(const_cast<void*>(devPtr)) - *offset;
resDesc.res.pitch2D.devPtr =
static_cast<char*>(const_cast<void*>(devPtr)) - (offset != nullptr ? *offset : 0);
hipTextureDesc texDesc = hip::getTextureDesc(texref);
return ihipCreateTextureObject(const_cast<hipTextureObject_t*>(&texref->textureObject), &resDesc, &texDesc, nullptr);