mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-19 06:24:51 +08:00
fix: report ZE_MEMORY_ACCESS_CAP_FLAG_CONCURRENT correctly
At the moment the capability is returned only based on the value returned by the `productHelper`, which is too liberal. The capability must also consider the support reported by `memoryManager`. Only then the support reported is aligned with actual logic of handling USM-allocations. Related-To: NEO-10040 Signed-off-by: Maciej Bielski <maciej.bielski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
1abb48c3e0
commit
a8779c2387
@@ -26,6 +26,7 @@ struct KmdNotifyProperties;
|
||||
struct AllocationData;
|
||||
class CommandStreamReceiver;
|
||||
class Device;
|
||||
class Drm;
|
||||
enum class LocalMemoryAccessMode;
|
||||
struct FrontEndPropertiesSupport;
|
||||
struct HardwareInfo;
|
||||
@@ -82,7 +83,7 @@ class ProductHelper {
|
||||
virtual void adjustSamplerState(void *sampler, const HardwareInfo &hwInfo) const = 0;
|
||||
virtual uint64_t getHostMemCapabilities(const HardwareInfo *hwInfo) const = 0;
|
||||
virtual uint64_t getDeviceMemCapabilities() const = 0;
|
||||
virtual uint64_t getSingleDeviceSharedMemCapabilities() const = 0;
|
||||
virtual uint64_t getSingleDeviceSharedMemCapabilities(bool isKmdMigrationAvailable) const = 0;
|
||||
virtual uint64_t getCrossDeviceSharedMemCapabilities() const = 0;
|
||||
virtual uint64_t getSharedSystemMemCapabilities(const HardwareInfo *hwInfo) const = 0;
|
||||
virtual std::vector<int32_t> getKernelSupportedThreadArbitrationPolicies() const = 0;
|
||||
|
||||
@@ -148,10 +148,10 @@ uint64_t ProductHelperHw<gfxProduct>::getDeviceMemCapabilities() const {
|
||||
}
|
||||
|
||||
template <PRODUCT_FAMILY gfxProduct>
|
||||
uint64_t ProductHelperHw<gfxProduct>::getSingleDeviceSharedMemCapabilities() const {
|
||||
uint64_t ProductHelperHw<gfxProduct>::getSingleDeviceSharedMemCapabilities(bool isKmdMigrationAvailable) const {
|
||||
uint64_t capabilities = UnifiedSharedMemoryFlags::access | UnifiedSharedMemoryFlags::atomicAccess;
|
||||
|
||||
if (isKmdMigrationSupported() || getConcurrentAccessMemCapabilitiesSupported(UsmAccessCapabilities::sharedSingleDevice)) {
|
||||
if (isKmdMigrationAvailable || getConcurrentAccessMemCapabilitiesSupported(UsmAccessCapabilities::sharedSingleDevice)) {
|
||||
capabilities |= UnifiedSharedMemoryFlags::concurrentAccess | UnifiedSharedMemoryFlags::concurrentAtomicAccess;
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ class ProductHelperHw : public ProductHelper {
|
||||
void adjustSamplerState(void *sampler, const HardwareInfo &hwInfo) const override;
|
||||
uint64_t getHostMemCapabilities(const HardwareInfo *hwInfo) const override;
|
||||
uint64_t getDeviceMemCapabilities() const override;
|
||||
uint64_t getSingleDeviceSharedMemCapabilities() const override;
|
||||
uint64_t getSingleDeviceSharedMemCapabilities(bool isKmdMigrationAvailable) const override;
|
||||
uint64_t getCrossDeviceSharedMemCapabilities() const override;
|
||||
uint64_t getSharedSystemMemCapabilities(const HardwareInfo *hwInfo) const override;
|
||||
std::vector<int32_t> getKernelSupportedThreadArbitrationPolicies() const override;
|
||||
|
||||
Reference in New Issue
Block a user