mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 14:55:24 +08:00
Use kernel info to determine if AUX resolves required
This commit decouples the logic for AUX resolves from set kernel arg handlers. Related-To: NEO-5107 Change-Id: I4c2912dc18633bcaefddb03cc6966e859d95262c Signed-off-by: Slawomir Milczarek <slawomir.milczarek@intel.com>
This commit is contained in:
committed by
sys_ocldev
parent
5826d3e105
commit
5f7b763ce5
@@ -27,6 +27,7 @@ class GraphicsAllocation;
|
||||
struct AllocationData;
|
||||
struct AllocationProperties;
|
||||
struct HardwareCapabilities;
|
||||
struct KernelInfo;
|
||||
struct RootDeviceEnvironment;
|
||||
struct PipeControlArgs;
|
||||
|
||||
@@ -99,7 +100,7 @@ class HwHelper {
|
||||
virtual uint32_t getMaxThreadsForWorkgroup(const HardwareInfo &hwInfo, uint32_t maxNumEUsPerSubSlice) const;
|
||||
virtual uint32_t getMetricsLibraryGenId() const = 0;
|
||||
virtual uint32_t getMocsIndex(const GmmHelper &gmmHelper, bool l3enabled, bool l1enabled) const = 0;
|
||||
virtual bool requiresAuxResolves() const = 0;
|
||||
virtual bool requiresAuxResolves(const KernelInfo &kernelInfo) const = 0;
|
||||
virtual bool tilingAllowed(bool isSharedContext, bool isImage1d, bool forceLinearStorage) = 0;
|
||||
virtual uint32_t getBarriersCountFromHasBarriers(uint32_t hasBarriers) = 0;
|
||||
virtual uint32_t calculateAvailableThreadCount(PRODUCT_FAMILY family, uint32_t grfCount, uint32_t euCount,
|
||||
@@ -133,6 +134,7 @@ class HwHelper {
|
||||
|
||||
protected:
|
||||
virtual LocalMemoryAccessMode getDefaultLocalMemoryAccessMode(const HardwareInfo &hwInfo) const = 0;
|
||||
virtual bool hasStatelessAccessToBuffer(const KernelInfo &kernelInfo) const = 0;
|
||||
|
||||
HwHelper() = default;
|
||||
};
|
||||
@@ -250,7 +252,7 @@ class HwHelperHw : public HwHelper {
|
||||
|
||||
uint32_t getMocsIndex(const GmmHelper &gmmHelper, bool l3enabled, bool l1enabled) const override;
|
||||
|
||||
bool requiresAuxResolves() const override;
|
||||
bool requiresAuxResolves(const KernelInfo &kernelInfo) const override;
|
||||
|
||||
bool tilingAllowed(bool isSharedContext, bool isImage1d, bool forceLinearStorage) override;
|
||||
|
||||
@@ -312,6 +314,7 @@ class HwHelperHw : public HwHelper {
|
||||
|
||||
protected:
|
||||
LocalMemoryAccessMode getDefaultLocalMemoryAccessMode(const HardwareInfo &hwInfo) const override;
|
||||
bool hasStatelessAccessToBuffer(const KernelInfo &kernelInfo) const override;
|
||||
|
||||
static const AuxTranslationMode defaultAuxTranslationMode;
|
||||
HwHelperHw() = default;
|
||||
|
||||
@@ -317,8 +317,8 @@ uint32_t HwHelperHw<GfxFamily>::getMetricsLibraryGenId() const {
|
||||
}
|
||||
|
||||
template <typename GfxFamily>
|
||||
inline bool HwHelperHw<GfxFamily>::requiresAuxResolves() const {
|
||||
return true;
|
||||
inline bool HwHelperHw<GfxFamily>::requiresAuxResolves(const KernelInfo &kernelInfo) const {
|
||||
return hasStatelessAccessToBuffer(kernelInfo);
|
||||
}
|
||||
|
||||
template <typename GfxFamily>
|
||||
@@ -447,6 +447,17 @@ inline LocalMemoryAccessMode HwHelperHw<GfxFamily>::getDefaultLocalMemoryAccessM
|
||||
return LocalMemoryAccessMode::Default;
|
||||
}
|
||||
|
||||
template <typename GfxFamily>
|
||||
inline bool HwHelperHw<GfxFamily>::hasStatelessAccessToBuffer(const KernelInfo &kernelInfo) const {
|
||||
bool hasStatelessAccessToBuffer = false;
|
||||
for (uint32_t i = 0; i < kernelInfo.kernelArgInfo.size(); ++i) {
|
||||
if (kernelInfo.kernelArgInfo[i].isBuffer) {
|
||||
hasStatelessAccessToBuffer |= !kernelInfo.kernelArgInfo[i].pureStatefulBufferAccess;
|
||||
}
|
||||
}
|
||||
return hasStatelessAccessToBuffer;
|
||||
}
|
||||
|
||||
template <typename GfxFamily>
|
||||
size_t MemorySynchronizationCommands<GfxFamily>::getSizeForFullCacheFlush() {
|
||||
return sizeof(typename GfxFamily::PIPE_CONTROL);
|
||||
|
||||
Reference in New Issue
Block a user