compute-runtime/opencl/source/gen12lp/gpgpu_walker_gen12lp.cpp

63 lines
1.9 KiB
C++

/*
* Copyright (C) 2019-2021 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "shared/source/gen12lp/hw_info.h"
#include "shared/source/gmm_helper/gmm.h"
#include "shared/source/gmm_helper/resource_info.h"
#include "shared/source/memory_manager/graphics_allocation.h"
#include "opencl/source/command_queue/gpgpu_walker_bdw_and_later.inl"
#include "opencl/source/command_queue/hardware_interface_bdw_and_later.inl"
namespace NEO {
template <>
void GpgpuWalkerHelper<TGLLPFamily>::adjustMiStoreRegMemMode(MI_STORE_REG_MEM<TGLLPFamily> *storeCmd) {
storeCmd->setMmioRemapEnable(true);
}
template <>
void HardwareInterface<TGLLPFamily>::dispatchWorkarounds(
LinearStream *commandStream,
CommandQueue &commandQueue,
Kernel &kernel,
const bool &enable) {
using MI_LOAD_REGISTER_IMM = typename TGLLPFamily::MI_LOAD_REGISTER_IMM;
using PIPE_CONTROL = typename TGLLPFamily::PIPE_CONTROL;
if (kernel.requiresWaDisableRccRhwoOptimization()) {
PIPE_CONTROL cmdPipeControl = TGLLPFamily::cmdInitPipeControl;
cmdPipeControl.setCommandStreamerStallEnable(true);
auto pCmdPipeControl = commandStream->getSpaceForCmd<PIPE_CONTROL>();
*pCmdPipeControl = cmdPipeControl;
uint32_t value = enable ? 0x40004000 : 0x40000000;
NEO::LriHelper<TGLLPFamily>::program(commandStream,
0x7010,
value,
false);
}
}
template <>
size_t GpgpuWalkerHelper<TGLLPFamily>::getSizeForWaDisableRccRhwoOptimization(const Kernel *pKernel) {
if (pKernel->requiresWaDisableRccRhwoOptimization()) {
return (2 * (sizeof(TGLLPFamily::PIPE_CONTROL) + sizeof(TGLLPFamily::MI_LOAD_REGISTER_IMM)));
}
return 0u;
}
template class HardwareInterface<TGLLPFamily>;
template class GpgpuWalkerHelper<TGLLPFamily>;
template struct EnqueueOperation<TGLLPFamily>;
} // namespace NEO