/* * Copyright (C) 2020-2021 Intel Corporation * * SPDX-License-Identifier: MIT * */ #pragma once #include "shared/source/command_container/command_encoder.h" #include "shared/source/command_stream/linear_stream.h" namespace NEO { template void EncodeStates::adjustStateComputeMode(LinearStream &csr, uint32_t numGrfRequired, void *const stateComputeModePtr, bool isMultiOsContextCapable, bool requiresCoherency, bool useGlobalAtomics, bool areMultipleSubDevicesInContext, uint32_t threadArbitrationPolicy) { StreamProperties properties{}; properties.stateComputeMode.setProperties(requiresCoherency, numGrfRequired, isMultiOsContextCapable, useGlobalAtomics, areMultipleSubDevicesInContext, threadArbitrationPolicy); EncodeComputeMode::adjustComputeMode(csr, stateComputeModePtr, properties.stateComputeMode); } template inline void EncodeStoreMMIO::remapOffset(MI_STORE_REGISTER_MEM *pStoreRegMem) { pStoreRegMem->setMmioRemapEnable(true); } template void EncodeSetMMIO::remapOffset(MI_LOAD_REGISTER_MEM *pMiLoadReg) { if (isRemapApplicable(pMiLoadReg->getRegisterAddress())) { pMiLoadReg->setMmioRemapEnable(true); } } template void EncodeSetMMIO::remapOffset(MI_LOAD_REGISTER_REG *pMiLoadReg) { if (isRemapApplicable(pMiLoadReg->getSourceRegisterAddress())) { pMiLoadReg->setMmioRemapEnableSource(true); } if (isRemapApplicable(pMiLoadReg->getDestinationRegisterAddress())) { pMiLoadReg->setMmioRemapEnableDestination(true); } } template inline bool EncodeSetMMIO::isRemapApplicable(uint32_t offset) { return (0x2000 <= offset && offset <= 0x27ff) || (0x4200 <= offset && offset <= 0x420f) || (0x4400 <= offset && offset <= 0x441f); } template void EncodeSurfaceState::disableCompressionFlags(R_SURFACE_STATE *surfaceState) { surfaceState->setAuxiliarySurfaceMode(Family::RENDER_SURFACE_STATE::AUXILIARY_SURFACE_MODE::AUXILIARY_SURFACE_MODE_AUX_NONE); surfaceState->setMemoryCompressionEnable(false); } } // namespace NEO