2
0

P4 to Git Change 1196902 by gandryey@gera-dev-w7 on 2015/10/05 13:18:47

SWDEV-77981 - Clean-up CAL map/unmap functionality
	- Keep map information only for SDMA copy. GSL map/unmap doesn't require any tracking
	- simplify the interface to return the address from map()

Affected files ...

... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuresource.cpp#229 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuresource.hpp#85 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gslbe/src/rt/EventQueue.h#7 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gslbe/src/rt/GSLContext.cpp#80 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gslbe/src/rt/GSLDevice.cpp#146 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gslbe/src/rt/GSLDevice.h#58 edit


[ROCm/clr commit: 7b6c0331d1]
Este cometimento está contido em:
foreman
2015-10-05 13:25:42 -04:00
ascendente c773efee15
cometimento 0068d75f03
6 ficheiros modificados com 138 adições e 387 eliminações
+19 -31
Ver ficheiro
@@ -1389,38 +1389,28 @@ Resource::hostRead(
return true;
}
bool
Resource::gslMap(void** ptr, size_t* pitch, gslMapAccessType flags, gslMemObject resource) const
void*
Resource::gslMap(size_t* pitch, gslMapAccessType flags, gslMemObject resource) const
{
bool result = true;
if (cal_.cardMemory_ || cal_.tiled_) {
// @todo remove const cast
result = const_cast<Device&>(dev()).resMapLocal(*ptr, *pitch, resource, flags,
dev().settings().enableHwDebug_);
return const_cast<Device&>(dev()).resMapLocal(*pitch, resource, flags);
}
else {
result = dev().resMapRemote(*ptr, *pitch, resource, flags);
return dev().resMapRemote(*pitch, resource, flags);
}
return result;
}
bool
void
Resource::gslUnmap(gslMemObject resource) const
{
bool result = true;
if (cal_.cardMemory_) {
// @todo remove const cast
result = const_cast<Device&>(dev()).resUnmapLocal(resource,
dev().settings().enableHwDebug_);
const_cast<Device&>(dev()).resUnmapLocal(resource);
}
else {
result = dev().resUnmapRemote(resource);
dev().resUnmapRemote(resource);
}
return result;
}
bool
@@ -1546,7 +1536,8 @@ Resource::map(VirtualGPU* gpu, uint flags, uint startLayer, uint numLayers)
}
else {
// Map current resource
if (!gslMap(&address_, &cal_.pitch_, mapFlags, gslResource())) {
address_ = gslMap(&cal_.pitch_, mapFlags, gslResource());
if (address_ == NULL) {
LogError("cal::ResMap failed!");
--mapCount_;
return NULL;
@@ -1622,7 +1613,8 @@ Resource::mapLayers(VirtualGPU* gpu, CALuint flags)
}
// Map 2D layer
if (!gslMap(&sliceAddr, &pitch, GSL_MAP_READ_ONLY, sliceResource)) {
sliceAddr = gslMap(&pitch, GSL_MAP_READ_ONLY, sliceResource);
if (sliceAddr == NULL) {
LogError("Map layer. CalResMap failed!");
return NULL;
}
@@ -1641,9 +1633,7 @@ Resource::mapLayers(VirtualGPU* gpu, CALuint flags)
}
// Unmap a layer
if (!gslUnmap(sliceResource)) {
LogError("Map layer. CalResUnmap failed!");
}
gslUnmap(sliceResource);
dev().resFree(sliceResource);
}
@@ -1669,9 +1659,7 @@ Resource::unmap(VirtualGPU* gpu)
}
else {
// Unmap current resource
if (!gslUnmap(gslResource())) {
LogError("CalResUnmap failed!");
}
gslUnmap(gslResource());
}
address_ = NULL;
}
@@ -1729,7 +1717,8 @@ Resource::unmapLayers(VirtualGPU* gpu)
}
// Map a layer
if (!gslMap(&sliceAddr, &pitch, GSL_MAP_WRITE_ONLY, sliceResource)) {
sliceAddr = gslMap(&pitch, GSL_MAP_WRITE_ONLY, sliceResource);
if (sliceAddr == NULL) {
LogError("Unmap layer. CalResMap failed!");
return;
}
@@ -1748,9 +1737,7 @@ Resource::unmapLayers(VirtualGPU* gpu)
}
// Unmap a layer
if (!gslUnmap(sliceResource)) {
LogError("Unmap layer. CalResUnmap failed!");
}
gslUnmap(sliceResource);
dev().resFree(sliceResource);
}
}
@@ -1830,8 +1817,9 @@ Resource::rename(VirtualGPU& gpu, bool force)
if (create(memoryType())) {
if (mapCount_ > 0) {
assert(!cal()->cardMemory_ && "Unsupported memory type!");
if (!dev().resMapRemote(gslRef_->cpuAddress_, cal_.pitch_,
gslResource(), GSL_MAP_READ_WRITE)) {
gslRef_->cpuAddress_ = dev().resMapRemote(cal_.pitch_,
gslResource(), GSL_MAP_READ_WRITE);
if (gslRef_->cpuAddress_ == NULL) {
LogError("gslMap fails on rename!");
}
address_ = gslRef_->cpuAddress_;