SWDEV-392870 - Enable p2p support for image using PAL.
Change-Id: I3acbbc01ee11e488e93204814361b8c3431bca4f
This commit is contained in:
committed by
Jaydeepkumar Patel
parent
c585aefdb7
commit
82e4859e03
@@ -220,7 +220,32 @@ GpuMemoryReference* GpuMemoryReference::Create(const Device& dev,
|
||||
}
|
||||
return memRef;
|
||||
}
|
||||
GpuMemoryReference* GpuMemoryReference::Create(const Device& dev,
|
||||
const Pal::PeerImageOpenInfo& openInfo,
|
||||
Pal::IImage** image) {
|
||||
Pal::Result result;
|
||||
size_t imageSize = 0;
|
||||
size_t gpuMemSize = 0;
|
||||
dev.iDev()->GetPeerImageSizes(openInfo, &imageSize, &gpuMemSize, &result);
|
||||
if (Pal::Result::Success != result) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
char* imgMem = new char[imageSize];
|
||||
GpuMemoryReference* memRef = new (gpuMemSize) GpuMemoryReference(dev);
|
||||
if (memRef != nullptr) {
|
||||
result = dev.iDev()->OpenPeerImage(openInfo, imgMem, &memRef[1], image,
|
||||
&memRef->gpuMem_);
|
||||
if (result == Pal::Result::Success) {
|
||||
result = memRef->MakeResident();
|
||||
}
|
||||
if (result != Pal::Result::Success) {
|
||||
memRef->release();
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
return memRef;
|
||||
}
|
||||
// ================================================================================================
|
||||
GpuMemoryReference::GpuMemoryReference(const Device& dev)
|
||||
: gpuMem_(nullptr), cpuAddress_(nullptr), device_(dev), gpu_(nullptr) {}
|
||||
@@ -1003,11 +1028,16 @@ bool Resource::CreateInterop(CreateParams* params) {
|
||||
}
|
||||
|
||||
// ================================================================================================
|
||||
bool Resource::CreateP2PAccess(CreateParams* params) {
|
||||
Pal::PeerGpuMemoryOpenInfo openInfo = {};
|
||||
openInfo.pOriginalMem = params->svmBase_->iMem();
|
||||
|
||||
memRef_ = GpuMemoryReference::Create(dev(), openInfo);
|
||||
bool Resource::CreateP2PAccess(CreateParams* params) {
|
||||
if (params->owner_->asImage()) {
|
||||
Pal::PeerImageOpenInfo openInfo = {};
|
||||
openInfo.pOriginalImage = params->svmBase_->image();
|
||||
memRef_ = GpuMemoryReference::Create(dev(), openInfo, &image_);
|
||||
} else {
|
||||
Pal::PeerGpuMemoryOpenInfo openInfo = {};
|
||||
openInfo.pOriginalMem = params->svmBase_->iMem();
|
||||
memRef_ = GpuMemoryReference::Create(dev(), openInfo);
|
||||
}
|
||||
if (nullptr == memRef_) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user