2022-02-04 13:50:19 +00:00
|
|
|
/*
|
|
|
|
|
* Copyright (C) 2022 Intel Corporation
|
|
|
|
|
*
|
|
|
|
|
* SPDX-License-Identifier: MIT
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#include "shared/source/gmm_helper/cache_settings_helper.h"
|
|
|
|
|
|
2022-02-08 17:15:22 +00:00
|
|
|
#include "shared/source/debug_settings/debug_settings_manager.h"
|
2022-02-04 13:50:19 +00:00
|
|
|
#include "shared/source/memory_manager/allocation_type.h"
|
|
|
|
|
|
|
|
|
|
namespace NEO {
|
|
|
|
|
|
2022-02-08 17:15:22 +00:00
|
|
|
GMM_RESOURCE_USAGE_TYPE_ENUM CacheSettingsHelper::getGmmUsageType(AllocationType allocationType, bool forceUncached) {
|
2022-02-04 13:50:19 +00:00
|
|
|
if (forceUncached) {
|
2022-02-08 17:15:22 +00:00
|
|
|
return getDefaultUsageTypeWithCachingDisabled(allocationType);
|
|
|
|
|
} else {
|
|
|
|
|
return getDefaultUsageTypeWithCachingEnabled(allocationType);
|
2022-02-04 13:50:19 +00:00
|
|
|
}
|
2022-02-08 17:15:22 +00:00
|
|
|
}
|
2022-02-04 13:50:19 +00:00
|
|
|
|
2022-02-08 17:15:22 +00:00
|
|
|
GMM_RESOURCE_USAGE_TYPE_ENUM CacheSettingsHelper::getDefaultUsageTypeWithCachingEnabled(AllocationType allocationType) {
|
|
|
|
|
switch (allocationType) {
|
|
|
|
|
case AllocationType::IMAGE:
|
2022-02-04 13:50:19 +00:00
|
|
|
return GMM_RESOURCE_USAGE_OCL_IMAGE;
|
2022-02-08 17:15:22 +00:00
|
|
|
case AllocationType::INTERNAL_HEAP:
|
|
|
|
|
case AllocationType::LINEAR_STREAM:
|
|
|
|
|
if (DebugManager.flags.DisableCachingForHeaps.get()) {
|
|
|
|
|
return getDefaultUsageTypeWithCachingDisabled(allocationType);
|
|
|
|
|
}
|
|
|
|
|
return GMM_RESOURCE_USAGE_OCL_STATE_HEAP_BUFFER;
|
|
|
|
|
default:
|
|
|
|
|
return GMM_RESOURCE_USAGE_OCL_BUFFER;
|
2022-02-04 13:50:19 +00:00
|
|
|
}
|
2022-02-08 17:15:22 +00:00
|
|
|
}
|
2022-02-04 13:50:19 +00:00
|
|
|
|
2022-02-08 17:15:22 +00:00
|
|
|
GMM_RESOURCE_USAGE_TYPE_ENUM CacheSettingsHelper::getDefaultUsageTypeWithCachingDisabled(AllocationType allocationType) {
|
|
|
|
|
switch (allocationType) {
|
|
|
|
|
case AllocationType::PREEMPTION:
|
|
|
|
|
return GMM_RESOURCE_USAGE_OCL_BUFFER_CSR_UC;
|
|
|
|
|
case AllocationType::INTERNAL_HEAP:
|
|
|
|
|
case AllocationType::LINEAR_STREAM:
|
|
|
|
|
return GMM_RESOURCE_USAGE_OCL_SYSTEM_MEMORY_BUFFER_CACHELINE_MISALIGNED;
|
|
|
|
|
default:
|
|
|
|
|
return GMM_RESOURCE_USAGE_OCL_BUFFER_CACHELINE_MISALIGNED;
|
|
|
|
|
}
|
2022-02-04 13:50:19 +00:00
|
|
|
}
|
2022-02-08 17:15:22 +00:00
|
|
|
|
2022-02-04 13:50:19 +00:00
|
|
|
} // namespace NEO
|