SWDEV-416580 - Add condition when memory has direct access, only use host fill if image is small

Change-Id: I3509c4aa21f6413adad3b46273ec650f5c577ddd


[ROCm/clr commit: cb426df1bd]
This commit is contained in:
victzhan
2023-08-15 15:54:31 -04:00
zatwierdzone przez Victor Zhang
rodzic 17813d3e3c
commit 4312ca9e32
2 zmienionych plików z 12 dodań i 6 usunięć
@@ -2325,9 +2325,12 @@ bool KernelBlitManager::fillImage(device::Memory& memory, const void* pattern,
bool entire) const { bool entire) const {
amd::ScopedLock k(lockXferOps_); amd::ScopedLock k(lockXferOps_);
bool result = false; bool result = false;
constexpr size_t kFillImageThreshold = 256 * 256;
// Use host fill if memory has direct access // Use host fill if memory has direct access and image is small
if (setup_.disableFillImage_ || gpuMem(memory).isHostMemDirectAccess()) { if (setup_.disableFillImage_ ||
(gpuMem(memory).isHostMemDirectAccess() &&
(size.c[0] * size.c[1] * size.c[2]) <= kFillImageThreshold)) {
gpu().releaseGpuMemoryFence(); gpu().releaseGpuMemoryFence();
result = HostBlitManager::fillImage(memory, pattern, origin, size, entire); result = HostBlitManager::fillImage(memory, pattern, origin, size, entire);
@@ -2352,9 +2352,12 @@ bool KernelBlitManager::fillImage(device::Memory& memory, const void* pattern,
amd::ScopedLock k(lockXferOps_); amd::ScopedLock k(lockXferOps_);
bool result = false; bool result = false;
constexpr size_t kFillImageThreshold = 256 * 256;
// Use host fill if memory has direct access // Use host fill if memory has direct access and image is small
if (setup_.disableFillImage_ || memory.isHostMemDirectAccess()) { if (setup_.disableFillImage_ ||
(gpuMem(memory).isHostMemDirectAccess() &&
(size.c[0] * size.c[1] * size.c[2]) <= kFillImageThreshold)) {
// Stall GPU before CPU access // Stall GPU before CPU access
gpu().releaseGpuMemoryFence(); gpu().releaseGpuMemoryFence();
result = HostBlitManager::fillImage(memory, pattern, origin, size, entire); result = HostBlitManager::fillImage(memory, pattern, origin, size, entire);