Improve ftr/wa flags packing

Signed-off-by: Bartosz Dunajski <bartosz.dunajski@intel.com>
This commit is contained in:
Bartosz Dunajski
2021-11-25 09:31:14 +00:00
committed by Compute-Runtime-Automation
parent 1da896bee0
commit 995cb88bfa
160 changed files with 1777 additions and 1765 deletions

View File

@@ -93,41 +93,41 @@ void BXT::setupFeatureAndWorkaroundTable(HardwareInfo *hwInfo) {
FeatureTable *featureTable = &hwInfo->featureTable;
WorkaroundTable *workaroundTable = &hwInfo->workaroundTable;
featureTable->ftrGpGpuMidBatchPreempt = true;
featureTable->ftrGpGpuThreadGroupLevelPreempt = true;
featureTable->ftrL3IACoherency = true;
featureTable->ftrVEBOX = true;
featureTable->ftrULT = true;
featureTable->ftrGpGpuMidThreadLevelPreempt = true;
featureTable->ftr3dMidBatchPreempt = true;
featureTable->ftr3dObjectLevelPreempt = true;
featureTable->ftrPerCtxtPreemptionGranularityControl = true;
featureTable->ftrLCIA = true;
featureTable->ftrPPGTT = true;
featureTable->ftrIA32eGfxPTEs = true;
featureTable->ftrDisplayYTiling = true;
featureTable->ftrTranslationTable = true;
featureTable->ftrUserModeTranslationTable = true;
featureTable->ftrEnableGuC = true;
featureTable->ftrFbc = true;
featureTable->ftrFbc2AddressTranslation = true;
featureTable->ftrFbcBlitterTracking = true;
featureTable->ftrFbcCpuTracking = true;
featureTable->ftrTileY = true;
featureTable->flags.ftrGpGpuMidBatchPreempt = true;
featureTable->flags.ftrGpGpuThreadGroupLevelPreempt = true;
featureTable->flags.ftrL3IACoherency = true;
featureTable->flags.ftrVEBOX = true;
featureTable->flags.ftrULT = true;
featureTable->flags.ftrGpGpuMidThreadLevelPreempt = true;
featureTable->flags.ftr3dMidBatchPreempt = true;
featureTable->flags.ftr3dObjectLevelPreempt = true;
featureTable->flags.ftrPerCtxtPreemptionGranularityControl = true;
featureTable->flags.ftrLCIA = true;
featureTable->flags.ftrPPGTT = true;
featureTable->flags.ftrIA32eGfxPTEs = true;
featureTable->flags.ftrDisplayYTiling = true;
featureTable->flags.ftrTranslationTable = true;
featureTable->flags.ftrUserModeTranslationTable = true;
featureTable->flags.ftrEnableGuC = true;
featureTable->flags.ftrFbc = true;
featureTable->flags.ftrFbc2AddressTranslation = true;
featureTable->flags.ftrFbcBlitterTracking = true;
featureTable->flags.ftrFbcCpuTracking = true;
featureTable->flags.ftrTileY = true;
if (platform->usRevId >= 3) {
featureTable->ftrGttCacheInvalidation = true;
featureTable->flags.ftrGttCacheInvalidation = true;
}
workaroundTable->waLLCCachingUnsupported = true;
workaroundTable->waMsaa8xTileYDepthPitchAlignment = true;
workaroundTable->waFbcLinearSurfaceStride = true;
workaroundTable->wa4kAlignUVOffsetNV12LinearSurface = true;
workaroundTable->waEnablePreemptionGranularityControlByUMD = true;
workaroundTable->waSendMIFLUSHBeforeVFE = true;
workaroundTable->waForcePcBbFullCfgRestore = true;
workaroundTable->waReportPerfCountUseGlobalContextID = true;
workaroundTable->waSamplerCacheFlushBetweenRedescribedSurfaceReads = true;
workaroundTable->flags.waLLCCachingUnsupported = true;
workaroundTable->flags.waMsaa8xTileYDepthPitchAlignment = true;
workaroundTable->flags.waFbcLinearSurfaceStride = true;
workaroundTable->flags.wa4kAlignUVOffsetNV12LinearSurface = true;
workaroundTable->flags.waEnablePreemptionGranularityControlByUMD = true;
workaroundTable->flags.waSendMIFLUSHBeforeVFE = true;
workaroundTable->flags.waForcePcBbFullCfgRestore = true;
workaroundTable->flags.waReportPerfCountUseGlobalContextID = true;
workaroundTable->flags.waSamplerCacheFlushBetweenRedescribedSurfaceReads = true;
}
const HardwareInfo BXT_1x2x6::hwInfo = {

View File

@@ -87,35 +87,35 @@ void CFL::setupFeatureAndWorkaroundTable(HardwareInfo *hwInfo) {
FeatureTable *featureTable = &hwInfo->featureTable;
WorkaroundTable *workaroundTable = &hwInfo->workaroundTable;
featureTable->ftrGpGpuMidBatchPreempt = true;
featureTable->ftrGpGpuThreadGroupLevelPreempt = true;
featureTable->ftrL3IACoherency = true;
featureTable->ftrVEBOX = true;
featureTable->ftrGpGpuMidThreadLevelPreempt = true;
featureTable->ftr3dMidBatchPreempt = true;
featureTable->ftr3dObjectLevelPreempt = true;
featureTable->ftrPerCtxtPreemptionGranularityControl = true;
featureTable->ftrPPGTT = true;
featureTable->ftrSVM = true;
featureTable->ftrIA32eGfxPTEs = true;
featureTable->ftrDisplayYTiling = true;
featureTable->ftrTranslationTable = true;
featureTable->ftrUserModeTranslationTable = true;
featureTable->ftrEnableGuC = true;
featureTable->ftrFbc = true;
featureTable->ftrFbc2AddressTranslation = true;
featureTable->ftrFbcBlitterTracking = true;
featureTable->ftrFbcCpuTracking = true;
featureTable->ftrTileY = true;
featureTable->flags.ftrGpGpuMidBatchPreempt = true;
featureTable->flags.ftrGpGpuThreadGroupLevelPreempt = true;
featureTable->flags.ftrL3IACoherency = true;
featureTable->flags.ftrVEBOX = true;
featureTable->flags.ftrGpGpuMidThreadLevelPreempt = true;
featureTable->flags.ftr3dMidBatchPreempt = true;
featureTable->flags.ftr3dObjectLevelPreempt = true;
featureTable->flags.ftrPerCtxtPreemptionGranularityControl = true;
featureTable->flags.ftrPPGTT = true;
featureTable->flags.ftrSVM = true;
featureTable->flags.ftrIA32eGfxPTEs = true;
featureTable->flags.ftrDisplayYTiling = true;
featureTable->flags.ftrTranslationTable = true;
featureTable->flags.ftrUserModeTranslationTable = true;
featureTable->flags.ftrEnableGuC = true;
featureTable->flags.ftrFbc = true;
featureTable->flags.ftrFbc2AddressTranslation = true;
featureTable->flags.ftrFbcBlitterTracking = true;
featureTable->flags.ftrFbcCpuTracking = true;
featureTable->flags.ftrTileY = true;
workaroundTable->waEnablePreemptionGranularityControlByUMD = true;
workaroundTable->waSendMIFLUSHBeforeVFE = true;
workaroundTable->waReportPerfCountUseGlobalContextID = true;
workaroundTable->waMsaa8xTileYDepthPitchAlignment = true;
workaroundTable->waLosslessCompressionSurfaceStride = true;
workaroundTable->waFbcLinearSurfaceStride = true;
workaroundTable->wa4kAlignUVOffsetNV12LinearSurface = true;
workaroundTable->waSamplerCacheFlushBetweenRedescribedSurfaceReads = true;
workaroundTable->flags.waEnablePreemptionGranularityControlByUMD = true;
workaroundTable->flags.waSendMIFLUSHBeforeVFE = true;
workaroundTable->flags.waReportPerfCountUseGlobalContextID = true;
workaroundTable->flags.waMsaa8xTileYDepthPitchAlignment = true;
workaroundTable->flags.waLosslessCompressionSurfaceStride = true;
workaroundTable->flags.waFbcLinearSurfaceStride = true;
workaroundTable->flags.wa4kAlignUVOffsetNV12LinearSurface = true;
workaroundTable->flags.waSamplerCacheFlushBetweenRedescribedSurfaceReads = true;
}
const HardwareInfo CFL_1x2x6::hwInfo = {

View File

@@ -87,34 +87,34 @@ void GLK::setupFeatureAndWorkaroundTable(HardwareInfo *hwInfo) {
FeatureTable *featureTable = &hwInfo->featureTable;
WorkaroundTable *workaroundTable = &hwInfo->workaroundTable;
featureTable->ftrGpGpuMidBatchPreempt = true;
featureTable->ftrGpGpuThreadGroupLevelPreempt = true;
featureTable->ftrL3IACoherency = true;
featureTable->ftrGpGpuMidThreadLevelPreempt = true;
featureTable->ftr3dMidBatchPreempt = true;
featureTable->ftr3dObjectLevelPreempt = true;
featureTable->ftrPerCtxtPreemptionGranularityControl = true;
featureTable->ftrLCIA = true;
featureTable->ftrPPGTT = true;
featureTable->ftrIA32eGfxPTEs = true;
featureTable->ftrTranslationTable = true;
featureTable->ftrUserModeTranslationTable = true;
featureTable->ftrEnableGuC = true;
featureTable->ftrTileMappedResource = true;
featureTable->ftrULT = true;
featureTable->ftrAstcHdr2D = true;
featureTable->ftrAstcLdr2D = true;
featureTable->ftrTileY = true;
featureTable->flags.ftrGpGpuMidBatchPreempt = true;
featureTable->flags.ftrGpGpuThreadGroupLevelPreempt = true;
featureTable->flags.ftrL3IACoherency = true;
featureTable->flags.ftrGpGpuMidThreadLevelPreempt = true;
featureTable->flags.ftr3dMidBatchPreempt = true;
featureTable->flags.ftr3dObjectLevelPreempt = true;
featureTable->flags.ftrPerCtxtPreemptionGranularityControl = true;
featureTable->flags.ftrLCIA = true;
featureTable->flags.ftrPPGTT = true;
featureTable->flags.ftrIA32eGfxPTEs = true;
featureTable->flags.ftrTranslationTable = true;
featureTable->flags.ftrUserModeTranslationTable = true;
featureTable->flags.ftrEnableGuC = true;
featureTable->flags.ftrTileMappedResource = true;
featureTable->flags.ftrULT = true;
featureTable->flags.ftrAstcHdr2D = true;
featureTable->flags.ftrAstcLdr2D = true;
featureTable->flags.ftrTileY = true;
workaroundTable->waLLCCachingUnsupported = true;
workaroundTable->waMsaa8xTileYDepthPitchAlignment = true;
workaroundTable->waFbcLinearSurfaceStride = true;
workaroundTable->wa4kAlignUVOffsetNV12LinearSurface = true;
workaroundTable->waEnablePreemptionGranularityControlByUMD = true;
workaroundTable->waSendMIFLUSHBeforeVFE = true;
workaroundTable->waForcePcBbFullCfgRestore = true;
workaroundTable->waReportPerfCountUseGlobalContextID = true;
workaroundTable->waSamplerCacheFlushBetweenRedescribedSurfaceReads = true;
workaroundTable->flags.waLLCCachingUnsupported = true;
workaroundTable->flags.waMsaa8xTileYDepthPitchAlignment = true;
workaroundTable->flags.waFbcLinearSurfaceStride = true;
workaroundTable->flags.wa4kAlignUVOffsetNV12LinearSurface = true;
workaroundTable->flags.waEnablePreemptionGranularityControlByUMD = true;
workaroundTable->flags.waSendMIFLUSHBeforeVFE = true;
workaroundTable->flags.waForcePcBbFullCfgRestore = true;
workaroundTable->flags.waReportPerfCountUseGlobalContextID = true;
workaroundTable->flags.waSamplerCacheFlushBetweenRedescribedSurfaceReads = true;
}
const HardwareInfo GLK_1x3x6::hwInfo = {

View File

@@ -88,42 +88,42 @@ void KBL::setupFeatureAndWorkaroundTable(HardwareInfo *hwInfo) {
FeatureTable *featureTable = &hwInfo->featureTable;
WorkaroundTable *workaroundTable = &hwInfo->workaroundTable;
featureTable->ftrGpGpuMidBatchPreempt = true;
featureTable->ftrGpGpuThreadGroupLevelPreempt = true;
featureTable->ftrL3IACoherency = true;
featureTable->ftrVEBOX = true;
featureTable->ftrGpGpuMidThreadLevelPreempt = true;
featureTable->ftr3dMidBatchPreempt = true;
featureTable->ftr3dObjectLevelPreempt = true;
featureTable->ftrPerCtxtPreemptionGranularityControl = true;
featureTable->ftrPPGTT = true;
featureTable->ftrSVM = true;
featureTable->ftrIA32eGfxPTEs = true;
featureTable->ftrDisplayYTiling = true;
featureTable->ftrTranslationTable = true;
featureTable->ftrUserModeTranslationTable = true;
featureTable->ftrEnableGuC = true;
featureTable->ftrFbc = true;
featureTable->ftrFbc2AddressTranslation = true;
featureTable->ftrFbcBlitterTracking = true;
featureTable->ftrFbcCpuTracking = true;
featureTable->ftrTileY = true;
featureTable->flags.ftrGpGpuMidBatchPreempt = true;
featureTable->flags.ftrGpGpuThreadGroupLevelPreempt = true;
featureTable->flags.ftrL3IACoherency = true;
featureTable->flags.ftrVEBOX = true;
featureTable->flags.ftrGpGpuMidThreadLevelPreempt = true;
featureTable->flags.ftr3dMidBatchPreempt = true;
featureTable->flags.ftr3dObjectLevelPreempt = true;
featureTable->flags.ftrPerCtxtPreemptionGranularityControl = true;
featureTable->flags.ftrPPGTT = true;
featureTable->flags.ftrSVM = true;
featureTable->flags.ftrIA32eGfxPTEs = true;
featureTable->flags.ftrDisplayYTiling = true;
featureTable->flags.ftrTranslationTable = true;
featureTable->flags.ftrUserModeTranslationTable = true;
featureTable->flags.ftrEnableGuC = true;
featureTable->flags.ftrFbc = true;
featureTable->flags.ftrFbc2AddressTranslation = true;
featureTable->flags.ftrFbcBlitterTracking = true;
featureTable->flags.ftrFbcCpuTracking = true;
featureTable->flags.ftrTileY = true;
workaroundTable->waEnablePreemptionGranularityControlByUMD = true;
workaroundTable->waSendMIFLUSHBeforeVFE = true;
workaroundTable->waReportPerfCountUseGlobalContextID = true;
workaroundTable->waMsaa8xTileYDepthPitchAlignment = true;
workaroundTable->waLosslessCompressionSurfaceStride = true;
workaroundTable->waFbcLinearSurfaceStride = true;
workaroundTable->wa4kAlignUVOffsetNV12LinearSurface = true;
workaroundTable->waSamplerCacheFlushBetweenRedescribedSurfaceReads = true;
workaroundTable->flags.waEnablePreemptionGranularityControlByUMD = true;
workaroundTable->flags.waSendMIFLUSHBeforeVFE = true;
workaroundTable->flags.waReportPerfCountUseGlobalContextID = true;
workaroundTable->flags.waMsaa8xTileYDepthPitchAlignment = true;
workaroundTable->flags.waLosslessCompressionSurfaceStride = true;
workaroundTable->flags.waFbcLinearSurfaceStride = true;
workaroundTable->flags.wa4kAlignUVOffsetNV12LinearSurface = true;
workaroundTable->flags.waSamplerCacheFlushBetweenRedescribedSurfaceReads = true;
if (platform->usRevId <= 0x6) {
workaroundTable->waDisableLSQCROPERFforOCL = true;
workaroundTable->waEncryptedEdramOnlyPartials = true;
workaroundTable->flags.waDisableLSQCROPERFforOCL = true;
workaroundTable->flags.waEncryptedEdramOnlyPartials = true;
}
if (platform->usRevId <= 0x8) {
workaroundTable->waForcePcBbFullCfgRestore = true;
workaroundTable->flags.waForcePcBbFullCfgRestore = true;
}
}

View File

@@ -94,51 +94,51 @@ void SKL::setupFeatureAndWorkaroundTable(HardwareInfo *hwInfo) {
FeatureTable *featureTable = &hwInfo->featureTable;
WorkaroundTable *workaroundTable = &hwInfo->workaroundTable;
featureTable->ftrGpGpuMidBatchPreempt = true;
featureTable->ftrGpGpuThreadGroupLevelPreempt = true;
featureTable->ftrL3IACoherency = true;
featureTable->ftrGpGpuMidThreadLevelPreempt = true;
featureTable->ftr3dMidBatchPreempt = true;
featureTable->ftr3dObjectLevelPreempt = true;
featureTable->ftrPerCtxtPreemptionGranularityControl = true;
featureTable->ftrPPGTT = true;
featureTable->ftrSVM = true;
featureTable->ftrIA32eGfxPTEs = true;
featureTable->ftrDisplayYTiling = true;
featureTable->ftrTranslationTable = true;
featureTable->ftrUserModeTranslationTable = true;
featureTable->ftrEnableGuC = true;
featureTable->ftrFbc = true;
featureTable->ftrFbc2AddressTranslation = true;
featureTable->ftrFbcBlitterTracking = true;
featureTable->ftrFbcCpuTracking = true;
featureTable->ftrVcs2 = featureTable->ftrGT3 || featureTable->ftrGT4;
featureTable->ftrVEBOX = true;
featureTable->ftrSingleVeboxSlice = featureTable->ftrGT1 || featureTable->ftrGT2;
featureTable->ftrTileY = true;
featureTable->flags.ftrGpGpuMidBatchPreempt = true;
featureTable->flags.ftrGpGpuThreadGroupLevelPreempt = true;
featureTable->flags.ftrL3IACoherency = true;
featureTable->flags.ftrGpGpuMidThreadLevelPreempt = true;
featureTable->flags.ftr3dMidBatchPreempt = true;
featureTable->flags.ftr3dObjectLevelPreempt = true;
featureTable->flags.ftrPerCtxtPreemptionGranularityControl = true;
featureTable->flags.ftrPPGTT = true;
featureTable->flags.ftrSVM = true;
featureTable->flags.ftrIA32eGfxPTEs = true;
featureTable->flags.ftrDisplayYTiling = true;
featureTable->flags.ftrTranslationTable = true;
featureTable->flags.ftrUserModeTranslationTable = true;
featureTable->flags.ftrEnableGuC = true;
featureTable->flags.ftrFbc = true;
featureTable->flags.ftrFbc2AddressTranslation = true;
featureTable->flags.ftrFbcBlitterTracking = true;
featureTable->flags.ftrFbcCpuTracking = true;
featureTable->flags.ftrVcs2 = featureTable->flags.ftrGT3 || featureTable->flags.ftrGT4;
featureTable->flags.ftrVEBOX = true;
featureTable->flags.ftrSingleVeboxSlice = featureTable->flags.ftrGT1 || featureTable->flags.ftrGT2;
featureTable->flags.ftrTileY = true;
workaroundTable->waEnablePreemptionGranularityControlByUMD = true;
workaroundTable->waSendMIFLUSHBeforeVFE = true;
workaroundTable->waReportPerfCountUseGlobalContextID = true;
workaroundTable->waDisableLSQCROPERFforOCL = true;
workaroundTable->waMsaa8xTileYDepthPitchAlignment = true;
workaroundTable->waLosslessCompressionSurfaceStride = true;
workaroundTable->waFbcLinearSurfaceStride = true;
workaroundTable->wa4kAlignUVOffsetNV12LinearSurface = true;
workaroundTable->waEncryptedEdramOnlyPartials = true;
workaroundTable->waDisableEdramForDisplayRT = true;
workaroundTable->waForcePcBbFullCfgRestore = true;
workaroundTable->waSamplerCacheFlushBetweenRedescribedSurfaceReads = true;
workaroundTable->flags.waEnablePreemptionGranularityControlByUMD = true;
workaroundTable->flags.waSendMIFLUSHBeforeVFE = true;
workaroundTable->flags.waReportPerfCountUseGlobalContextID = true;
workaroundTable->flags.waDisableLSQCROPERFforOCL = true;
workaroundTable->flags.waMsaa8xTileYDepthPitchAlignment = true;
workaroundTable->flags.waLosslessCompressionSurfaceStride = true;
workaroundTable->flags.waFbcLinearSurfaceStride = true;
workaroundTable->flags.wa4kAlignUVOffsetNV12LinearSurface = true;
workaroundTable->flags.waEncryptedEdramOnlyPartials = true;
workaroundTable->flags.waDisableEdramForDisplayRT = true;
workaroundTable->flags.waForcePcBbFullCfgRestore = true;
workaroundTable->flags.waSamplerCacheFlushBetweenRedescribedSurfaceReads = true;
if ((1 << hwInfo->platform.usRevId) & 0x0eu) {
workaroundTable->waCompressedResourceRequiresConstVA21 = true;
workaroundTable->flags.waCompressedResourceRequiresConstVA21 = true;
}
if ((1 << hwInfo->platform.usRevId) & 0x0fu) {
workaroundTable->waDisablePerCtxtPreemptionGranularityControl = true;
workaroundTable->waModifyVFEStateAfterGPGPUPreemption = true;
workaroundTable->flags.waDisablePerCtxtPreemptionGranularityControl = true;
workaroundTable->flags.waModifyVFEStateAfterGPGPUPreemption = true;
}
if ((1 << hwInfo->platform.usRevId) & 0x3f) {
workaroundTable->waCSRUncachable = true;
workaroundTable->flags.waCSRUncachable = true;
}
}
const HardwareInfo SKL_1x2x6::hwInfo = {

View File

@@ -32,7 +32,7 @@ int HwInfoConfigHw<IGFX_BROXTON>::configureHardwareCustom(HardwareInfo *hwInfo,
int enabled = 0;
int retVal = drm->getEnabledPooledEu(enabled);
if (retVal == 0) {
featureTable->ftrPooledEuEnabled = (enabled != 0);
featureTable->flags.ftrPooledEuEnabled = (enabled != 0);
}
if (enabled) {
int num = 0;

View File

@@ -30,7 +30,7 @@ int HwInfoConfigHw<IGFX_GEMINILAKE>::configureHardwareCustom(HardwareInfo *hwInf
int enabled = 0;
int retVal = drm->getEnabledPooledEu(enabled);
if (retVal == 0) {
featureTable->ftrPooledEuEnabled = (enabled != 0);
featureTable->flags.ftrPooledEuEnabled = (enabled != 0);
}
if (enabled) {
int num = 0;

View File

@@ -55,7 +55,7 @@ void PreambleHelper<SKLFamily>::addPipeControlBeforeVfeCmd(LinearStream *pComman
auto pipeControl = pCommandStream->getSpaceForCmd<PIPE_CONTROL>();
PIPE_CONTROL cmd = SKLFamily::cmdInitPipeControl;
cmd.setCommandStreamerStallEnable(true);
if (hwInfo->workaroundTable.waSendMIFLUSHBeforeVFE) {
if (hwInfo->workaroundTable.flags.waSendMIFLUSHBeforeVFE) {
cmd.setRenderTargetCacheFlushEnable(true);
cmd.setDepthCacheFlushEnable(true);
cmd.setDcFlushEnable(true);

View File

@@ -23,7 +23,7 @@ size_t PreemptionHelper::getPreemptionWaCsSize<GfxFamily>(const Device &device)
PreemptionMode preemptionMode = device.getPreemptionMode();
if (preemptionMode == PreemptionMode::ThreadGroup ||
preemptionMode == PreemptionMode::MidThread) {
if (device.getHardwareInfo().workaroundTable.waModifyVFEStateAfterGPGPUPreemption) {
if (device.getHardwareInfo().workaroundTable.flags.waModifyVFEStateAfterGPGPUPreemption) {
size += 2 * sizeof(MI_LOAD_REGISTER_IMM);
}
}
@@ -36,7 +36,7 @@ void PreemptionHelper::applyPreemptionWaCmdsBegin<GfxFamily>(LinearStream *pComm
PreemptionMode preemptionMode = device.getPreemptionMode();
if (preemptionMode == PreemptionMode::ThreadGroup ||
preemptionMode == PreemptionMode::MidThread) {
if (device.getHardwareInfo().workaroundTable.waModifyVFEStateAfterGPGPUPreemption) {
if (device.getHardwareInfo().workaroundTable.flags.waModifyVFEStateAfterGPGPUPreemption) {
LriHelper<GfxFamily>::program(pCommandStream,
CS_GPR_R0,
GPGPU_WALKER_COOKIE_VALUE_BEFORE_WALKER,
@@ -51,7 +51,7 @@ void PreemptionHelper::applyPreemptionWaCmdsEnd<GfxFamily>(LinearStream *pComman
PreemptionMode preemptionMode = device.getPreemptionMode();
if (preemptionMode == PreemptionMode::ThreadGroup ||
preemptionMode == PreemptionMode::MidThread) {
if (device.getHardwareInfo().workaroundTable.waModifyVFEStateAfterGPGPUPreemption) {
if (device.getHardwareInfo().workaroundTable.flags.waModifyVFEStateAfterGPGPUPreemption) {
LriHelper<GfxFamily>::program(pCommandStream,
CS_GPR_R0,
GPGPU_WALKER_COOKIE_VALUE_AFTER_WALKER,