mirror of
https://github.com/intel/compute-runtime.git
synced 2025-09-15 13:01:45 +08:00
Use single class to program load register command
Change-Id: I90fe084409588cb32f0ac43a3db5082047d7a68b Signed-off-by: Zbigniew Zdanowicz <zbigniew.zdanowicz@intel.com>
This commit is contained in:

committed by
sys_ocldev

parent
138f04bdcd
commit
ce1b669cda
@ -53,12 +53,10 @@ void GpgpuWalkerHelper<GfxFamily>::addAluReadModifyWriteRegister(
|
||||
*pCmd = cmdReg;
|
||||
|
||||
// Load "Mask" into CS_GPR_R1
|
||||
typedef typename GfxFamily::MI_LOAD_REGISTER_IMM MI_LOAD_REGISTER_IMM;
|
||||
auto pCmd2 = pCommandStream->getSpaceForCmd<MI_LOAD_REGISTER_IMM>();
|
||||
MI_LOAD_REGISTER_IMM cmdImm = GfxFamily::cmdInitLoadRegisterImm;
|
||||
cmdImm.setRegisterOffset(CS_GPR_R1);
|
||||
cmdImm.setDataDword(mask);
|
||||
*pCmd2 = cmdImm;
|
||||
LriHelper<GfxFamily>::program(pCommandStream,
|
||||
CS_GPR_R1,
|
||||
mask,
|
||||
false);
|
||||
|
||||
// Add instruction MI_MATH with 4 MI_MATH_ALU_INST_INLINE operands
|
||||
auto pCmd3 = reinterpret_cast<uint32_t *>(pCommandStream->getSpace(sizeof(MI_MATH) + NUM_ALU_INST_FOR_READ_MODIFY_WRITE * sizeof(MI_MATH_ALU_INST_INLINE)));
|
||||
|
@ -202,14 +202,18 @@ size_t DeviceQueueHw<GfxFamily>::getCSPrefetchSize() {
|
||||
|
||||
template <typename GfxFamily>
|
||||
void DeviceQueueHw<GfxFamily>::addLriCmd(bool setArbCheck) {
|
||||
using MI_LOAD_REGISTER_IMM = typename GfxFamily::MI_LOAD_REGISTER_IMM;
|
||||
auto lri = slbCS.getSpaceForCmd<MI_LOAD_REGISTER_IMM>();
|
||||
*lri = GfxFamily::cmdInitLoadRegisterImm;
|
||||
lri->setRegisterOffset(0x2248); // CTXT_PREMP_DBG offset
|
||||
if (setArbCheck)
|
||||
lri->setDataDword(0x00000100); // set only bit 8 (Preempt On MI_ARB_CHK Only)
|
||||
else
|
||||
lri->setDataDword(0x0);
|
||||
// CTXT_PREMP_DBG offset
|
||||
constexpr uint32_t registerAddress = 0x2248u;
|
||||
uint32_t value = 0u;
|
||||
if (setArbCheck) {
|
||||
// set only bit 8 (Preempt On MI_ARB_CHK Only)
|
||||
value = 0x00000100;
|
||||
}
|
||||
|
||||
LriHelper<GfxFamily>::program(&slbCS,
|
||||
registerAddress,
|
||||
value,
|
||||
false);
|
||||
}
|
||||
|
||||
template <typename GfxFamily>
|
||||
|
@ -42,13 +42,18 @@ void DeviceQueueHw<Family>::addMiAtomicCmdWa(uint64_t atomicOpPlaceholder) {
|
||||
|
||||
template <>
|
||||
void DeviceQueueHw<Family>::addLriCmdWa(bool setArbCheck) {
|
||||
auto lri = slbCS.getSpaceForCmd<Family::MI_LOAD_REGISTER_IMM>();
|
||||
*lri = Family::cmdInitLoadRegisterImm;
|
||||
lri->setRegisterOffset(0x2248); // CTXT_PREMP_DBG offset
|
||||
if (setArbCheck)
|
||||
lri->setDataDword(0x00000100); // set only bit 8 (Preempt On MI_ARB_CHK Only)
|
||||
else
|
||||
lri->setDataDword(0x0);
|
||||
// CTXT_PREMP_DBG offset
|
||||
constexpr uint32_t registerAddress = 0x2248u;
|
||||
uint32_t value = 0u;
|
||||
if (setArbCheck) {
|
||||
// set only bit 8 (Preempt On MI_ARB_CHK Only)
|
||||
value = 0x00000100;
|
||||
}
|
||||
|
||||
LriHelper<Family>::program(&slbCS,
|
||||
registerAddress,
|
||||
value,
|
||||
false);
|
||||
}
|
||||
|
||||
template <>
|
||||
|
Reference in New Issue
Block a user