P4 to Git Change 1453901 by gandryey@gera-w8 on 2017/08/31 14:34:49
SWDEV-86035 - Code clean-up - Use TS check first to avoid LogError - Reset VirtualGPU reference if resource was cached - Lock active VirtualGPU on release, since a cached resource can have access to that queue from another thread Affected files ... ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palresource.cpp#32 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palvirtual.cpp#54 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palvirtual.hpp#30 edit
This commit is contained in:
@@ -158,6 +158,7 @@ GpuMemoryReference::~GpuMemoryReference() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
amd::ScopedLock l(gpu_->execution());
|
||||||
gpu_->releaseMemory(this, &events_[gpu_->index()]);
|
gpu_->releaseMemory(this, &events_[gpu_->index()]);
|
||||||
}
|
}
|
||||||
if (device_.vgpus().size() != 0) {
|
if (device_.vgpus().size() != 0) {
|
||||||
@@ -1097,6 +1098,7 @@ void Resource::free() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
amd::ScopedLock l(memRef_->gpu_->execution());
|
||||||
memRef_->gpu_->waitForEvent(&memRef_->events_[memRef_->gpu_->index()]);
|
memRef_->gpu_->waitForEvent(&memRef_->events_[memRef_->gpu_->index()]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1975,6 +1977,7 @@ bool ResourceCache::addGpuMemory(Resource::Descriptor* desc, GpuMemoryReference*
|
|||||||
|
|
||||||
// Add the current resource to the cache
|
// Add the current resource to the cache
|
||||||
resCache_.push_front(std::make_pair(descCached, ref));
|
resCache_.push_front(std::make_pair(descCached, ref));
|
||||||
|
ref->gpu_ = nullptr;
|
||||||
cacheSize_ += size;
|
cacheSize_ += size;
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2281,7 +2281,6 @@ void VirtualGPU::submitMarker(amd::Marker& vcmd) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void VirtualGPU::releaseMemory(GpuMemoryReference* mem, GpuEvent* event) {
|
void VirtualGPU::releaseMemory(GpuMemoryReference* mem, GpuEvent* event) {
|
||||||
waitForEvent(event);
|
|
||||||
queues_[MainEngine]->removeCmdMemRef(mem);
|
queues_[MainEngine]->removeCmdMemRef(mem);
|
||||||
queues_[SdmaEngine]->removeCmdMemRef(mem);
|
queues_[SdmaEngine]->removeCmdMemRef(mem);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ class VirtualGPU : public device::VirtualDevice {
|
|||||||
if (!ibReuse) {
|
if (!ibReuse) {
|
||||||
start = amd::Os::timeNanos();
|
start = amd::Os::timeNanos();
|
||||||
}
|
}
|
||||||
while (ibReuse || (Pal::Result::Success != (result = iCmdFences_[cbId]->GetStatus()))) {
|
while ((Pal::Result::Success != (result = iCmdFences_[cbId]->GetStatus())) || ibReuse) {
|
||||||
if (result == Pal::Result::ErrorFenceNeverSubmitted) {
|
if (result == Pal::Result::ErrorFenceNeverSubmitted) {
|
||||||
result = Pal::Result::Success;
|
result = Pal::Result::Success;
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user