/* * Copyright (C) 2020-2024 Intel Corporation * * SPDX-License-Identifier: MIT * */ #pragma once #include "shared/source/command_container/command_encoder.h" #include "shared/source/command_stream/linear_stream.h" #include "shared/source/helpers/gfx_core_helper.h" #include "shared/source/helpers/pipe_control_args.h" namespace NEO { template <> void EncodeWA::addPipeControlBeforeStateBaseAddress(LinearStream &commandStream, const RootDeviceEnvironment &rootDeviceEnvironment, bool isRcs, bool dcFlushRequired) { PipeControlArgs args; args.dcFlushEnable = dcFlushRequired; args.textureCacheInvalidationEnable = true; args.hdcPipelineFlush = true; NEO::EncodeWA::addPipeControlPriorToNonPipelinedStateCommand(commandStream, args, rootDeviceEnvironment, isRcs); } template <> inline void EncodeMiArbCheck::adjust(MI_ARB_CHECK &miArbCheck, std::optional preParserDisable) { if (debugManager.flags.ForcePreParserEnabledForMiArbCheck.get() != -1) { preParserDisable = !debugManager.flags.ForcePreParserEnabledForMiArbCheck.get(); } if (preParserDisable.has_value()) { miArbCheck.setPreParserDisable(preParserDisable.value()); } } template <> inline void EncodeStoreMemory::encodeForceCompletionCheck(MI_STORE_DATA_IMM &storeDataImmCmd) { storeDataImmCmd.setForceWriteCompletionCheck(true); } } // namespace NEO