Skip to content

Commit 541735d

Browse files
L3 programming refactor 3/n
- Add L3UltHelper to be able to tell if L3 config is programmable - Run L3 config kernel tests according to its output Change-Id: I55b76e2da325d28f62b0bde20250b68f02154ae2
1 parent 2b9cf69 commit 541735d

18 files changed

+106
-256
lines changed

unit_tests/command_queue/enqueue_copy_buffer_rect_tests.cpp

Lines changed: 2 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -199,24 +199,8 @@ HWTEST_F(EnqueueCopyBufferRectTest, 2D_addsIndirectData) {
199199
}
200200

201201
HWTEST_F(EnqueueCopyBufferRectTest, 2D_LoadRegisterImmediateL3CNTLREG) {
202-
typedef typename FamilyType::MI_LOAD_REGISTER_IMM MI_LOAD_REGISTER_IMM;
203-
204202
enqueueCopyBufferRect2D<FamilyType>();
205-
206-
// All state should be programmed before walker
207-
auto itorCmd = findMmio<FamilyType>(cmdList.begin(), itorWalker, L3CNTLRegisterOffset<FamilyType>::registerOffset);
208-
ASSERT_NE(itorWalker, itorCmd);
209-
210-
auto *cmd = genCmdCast<MI_LOAD_REGISTER_IMM *>(*itorCmd);
211-
ASSERT_NE(nullptr, cmd);
212-
213-
auto RegisterOffset = L3CNTLRegisterOffset<FamilyType>::registerOffset;
214-
EXPECT_EQ(RegisterOffset, cmd->getRegisterOffset());
215-
auto l3Cntlreg = cmd->getDataDword();
216-
auto numURBWays = (l3Cntlreg >> 1) & 0x7f;
217-
auto L3ClientPool = (l3Cntlreg >> 25) & 0x7f;
218-
EXPECT_NE(0u, numURBWays);
219-
EXPECT_NE(0u, L3ClientPool);
203+
validateL3Programming<FamilyType>(cmdList, itorWalker);
220204
}
221205

222206
HWTEST_F(EnqueueCopyBufferRectTest, When2DEnqueueIsDoneThenStateBaseAddressIsProperlyProgrammed) {
@@ -348,24 +332,8 @@ HWTEST_F(EnqueueCopyBufferRectTest, 3D_addsIndirectData) {
348332
}
349333

350334
HWTEST_F(EnqueueCopyBufferRectTest, 3D_LoadRegisterImmediateL3CNTLREG) {
351-
typedef typename FamilyType::MI_LOAD_REGISTER_IMM MI_LOAD_REGISTER_IMM;
352-
353335
enqueueCopyBufferRect3D<FamilyType>();
354-
355-
// All state should be programmed before walker
356-
auto itorCmd = findMmio<FamilyType>(cmdList.begin(), itorWalker, L3CNTLRegisterOffset<FamilyType>::registerOffset);
357-
ASSERT_NE(itorWalker, itorCmd);
358-
359-
auto *cmd = genCmdCast<MI_LOAD_REGISTER_IMM *>(*itorCmd);
360-
ASSERT_NE(nullptr, cmd);
361-
362-
auto RegisterOffset = L3CNTLRegisterOffset<FamilyType>::registerOffset;
363-
EXPECT_EQ(RegisterOffset, cmd->getRegisterOffset());
364-
auto l3Cntlreg = cmd->getDataDword();
365-
auto numURBWays = (l3Cntlreg >> 1) & 0x7f;
366-
auto L3ClientPool = (l3Cntlreg >> 25) & 0x7f;
367-
EXPECT_NE(0u, numURBWays);
368-
EXPECT_NE(0u, L3ClientPool);
336+
validateL3Programming<FamilyType>(cmdList, itorWalker);
369337
}
370338

371339
HWTEST_F(EnqueueCopyBufferRectTest, When3DEnqueueIsDoneThenStateBaseAddressIsProperlyProgrammed) {

unit_tests/command_queue/enqueue_copy_buffer_tests.cpp

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -167,24 +167,8 @@ HWTEST_F(EnqueueCopyBufferTest, addsIndirectData) {
167167
}
168168

169169
HWTEST_F(EnqueueCopyBufferTest, LoadRegisterImmediateL3CNTLREG) {
170-
typedef typename FamilyType::MI_LOAD_REGISTER_IMM MI_LOAD_REGISTER_IMM;
171-
172170
enqueueCopyBuffer<FamilyType>();
173-
174-
// All state should be programmed before walker
175-
auto itorCmd = findMmio<FamilyType>(cmdList.begin(), itorWalker, L3CNTLRegisterOffset<FamilyType>::registerOffset);
176-
ASSERT_NE(itorWalker, itorCmd);
177-
178-
auto *cmd = genCmdCast<MI_LOAD_REGISTER_IMM *>(*itorCmd);
179-
ASSERT_NE(nullptr, cmd);
180-
auto RegisterOffset = L3CNTLRegisterOffset<FamilyType>::registerOffset;
181-
EXPECT_EQ(RegisterOffset, cmd->getRegisterOffset());
182-
183-
auto l3Cntlreg = cmd->getDataDword();
184-
auto numURBWays = (l3Cntlreg >> 1) & 0x7f;
185-
auto L3ClientPool = (l3Cntlreg >> 25) & 0x7f;
186-
EXPECT_NE(0u, numURBWays);
187-
EXPECT_NE(0u, L3ClientPool);
171+
validateL3Programming<FamilyType>(cmdList, itorWalker);
188172
}
189173

190174
HWTEST_F(EnqueueCopyBufferTest, WhenEnqueueIsDoneThenStateBaseAddressIsProperlyProgrammed) {

unit_tests/command_queue/enqueue_copy_buffer_to_image_tests.cpp

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -98,24 +98,8 @@ HWTEST_F(EnqueueCopyBufferToImageTest, addsIndirectData) {
9898
}
9999

100100
HWTEST_F(EnqueueCopyBufferToImageTest, loadRegisterImmediateL3CNTLREG) {
101-
typedef typename FamilyType::MI_LOAD_REGISTER_IMM MI_LOAD_REGISTER_IMM;
102-
103101
enqueueCopyBufferToImage<FamilyType>();
104-
105-
// All state should be programmed before walker
106-
auto itorCmd = findMmio<FamilyType>(cmdList.begin(), itorWalker, L3CNTLRegisterOffset<FamilyType>::registerOffset);
107-
ASSERT_NE(itorWalker, itorCmd);
108-
109-
auto *cmd = genCmdCast<MI_LOAD_REGISTER_IMM *>(*itorCmd);
110-
ASSERT_NE(nullptr, cmd);
111-
112-
auto RegisterOffset = L3CNTLRegisterOffset<FamilyType>::registerOffset;
113-
EXPECT_EQ(RegisterOffset, cmd->getRegisterOffset());
114-
auto l3Cntlreg = cmd->getDataDword();
115-
auto numURBWays = (l3Cntlreg >> 1) & 0x7f;
116-
auto L3ClientPool = (l3Cntlreg >> 25) & 0x7f;
117-
EXPECT_NE(0u, numURBWays);
118-
EXPECT_NE(0u, L3ClientPool);
102+
validateL3Programming<FamilyType>(cmdList, itorWalker);
119103
}
120104

121105
HWTEST_F(EnqueueCopyBufferToImageTest, WhenEnqueueIsDoneThenStateBaseAddressIsProperlyProgrammed) {

unit_tests/command_queue/enqueue_copy_image_tests.cpp

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -101,24 +101,8 @@ HWTEST_F(EnqueueCopyImageTest, addsIndirectData) {
101101
}
102102

103103
HWTEST_F(EnqueueCopyImageTest, loadRegisterImmediateL3CNTLREG) {
104-
typedef typename FamilyType::MI_LOAD_REGISTER_IMM MI_LOAD_REGISTER_IMM;
105-
106104
enqueueCopyImage<FamilyType>();
107-
108-
// All state should be programmed before walker
109-
auto itorCmd = findMmio<FamilyType>(cmdList.begin(), itorWalker, L3CNTLRegisterOffset<FamilyType>::registerOffset);
110-
ASSERT_NE(itorWalker, itorCmd);
111-
112-
auto *cmd = genCmdCast<MI_LOAD_REGISTER_IMM *>(*itorCmd);
113-
ASSERT_NE(nullptr, cmd);
114-
115-
auto RegisterOffset = L3CNTLRegisterOffset<FamilyType>::registerOffset;
116-
EXPECT_EQ(RegisterOffset, cmd->getRegisterOffset());
117-
auto l3Cntlreg = cmd->getDataDword();
118-
auto numURBWays = (l3Cntlreg >> 1) & 0x7f;
119-
auto L3ClientPool = (l3Cntlreg >> 25) & 0x7f;
120-
EXPECT_NE(0u, numURBWays);
121-
EXPECT_NE(0u, L3ClientPool);
105+
validateL3Programming<FamilyType>(cmdList, itorWalker);
122106
}
123107

124108
HWTEST_F(EnqueueCopyImageTest, WhenEnqueueIsDoneThenStateBaseAddressIsProperlyProgrammed) {

unit_tests/command_queue/enqueue_copy_image_to_buffer_tests.cpp

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -99,24 +99,8 @@ HWTEST_F(EnqueueCopyImageToBufferTest, addsIndirectData) {
9999
}
100100

101101
HWTEST_F(EnqueueCopyImageToBufferTest, loadRegisterImmediateL3CNTLREG) {
102-
typedef typename FamilyType::MI_LOAD_REGISTER_IMM MI_LOAD_REGISTER_IMM;
103-
104102
enqueueCopyImageToBuffer<FamilyType>();
105-
106-
// All state should be programmed before walker
107-
auto itorCmd = findMmio<FamilyType>(cmdList.begin(), itorWalker, L3CNTLRegisterOffset<FamilyType>::registerOffset);
108-
ASSERT_NE(itorWalker, itorCmd);
109-
110-
auto *cmd = genCmdCast<MI_LOAD_REGISTER_IMM *>(*itorCmd);
111-
ASSERT_NE(nullptr, cmd);
112-
113-
auto RegisterOffset = L3CNTLRegisterOffset<FamilyType>::registerOffset;
114-
EXPECT_EQ(RegisterOffset, cmd->getRegisterOffset());
115-
auto l3Cntlreg = cmd->getDataDword();
116-
auto numURBWays = (l3Cntlreg >> 1) & 0x7f;
117-
auto L3ClientPool = (l3Cntlreg >> 25) & 0x7f;
118-
EXPECT_NE(0u, numURBWays);
119-
EXPECT_NE(0u, L3ClientPool);
103+
validateL3Programming<FamilyType>(cmdList, itorWalker);
120104
}
121105

122106
HWTEST_F(EnqueueCopyImageToBufferTest, WhenEnqueueIsDoneThenStateBaseAddressIsProperlyProgrammed) {

unit_tests/command_queue/enqueue_fill_buffer_tests.cpp

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -218,24 +218,8 @@ HWTEST_F(EnqueueFillBufferCmdTests, FillBufferLeftLeftover) {
218218
}
219219

220220
HWTEST_F(EnqueueFillBufferCmdTests, LoadRegisterImmediateL3CNTLREG) {
221-
typedef typename FamilyType::PARSE PARSE;
222-
typedef typename FamilyType::MI_LOAD_REGISTER_IMM MI_LOAD_REGISTER_IMM;
223221
enqueueFillBuffer<FamilyType>();
224-
225-
// All state should be programmed before walker
226-
auto itorCmd = findMmio<FamilyType>(cmdList.begin(), itorWalker, L3CNTLRegisterOffset<FamilyType>::registerOffset);
227-
ASSERT_NE(itorWalker, itorCmd);
228-
229-
auto *cmd = genCmdCast<MI_LOAD_REGISTER_IMM *>(*itorCmd);
230-
ASSERT_NE(nullptr, cmd);
231-
232-
auto RegisterOffset = L3CNTLRegisterOffset<FamilyType>::registerOffset;
233-
EXPECT_EQ(RegisterOffset, cmd->getRegisterOffset());
234-
auto l3Cntlreg = cmd->getDataDword();
235-
auto numURBWays = (l3Cntlreg >> 1) & 0x7f;
236-
auto L3ClientPool = (l3Cntlreg >> 25) & 0x7f;
237-
EXPECT_NE(0u, numURBWays);
238-
EXPECT_NE(0u, L3ClientPool);
222+
validateL3Programming<FamilyType>(cmdList, itorWalker);
239223
}
240224

241225
HWTEST_F(EnqueueFillBufferCmdTests, WhenEnqueueIsDoneThenStateBaseAddressIsProperlyProgrammed) {

unit_tests/command_queue/enqueue_fill_image_tests.cpp

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -108,24 +108,8 @@ HWTEST_F(EnqueueFillImageTest, addsIndirectData) {
108108
}
109109

110110
HWTEST_F(EnqueueFillImageTest, loadRegisterImmediateL3CNTLREG) {
111-
typedef typename FamilyType::MI_LOAD_REGISTER_IMM MI_LOAD_REGISTER_IMM;
112-
113111
enqueueFillImage<FamilyType>();
114-
115-
// All state should be programmed before walker
116-
auto itorCmd = findMmio<FamilyType>(cmdList.begin(), itorWalker, L3CNTLRegisterOffset<FamilyType>::registerOffset);
117-
ASSERT_NE(itorWalker, itorCmd);
118-
119-
auto *cmd = genCmdCast<MI_LOAD_REGISTER_IMM *>(*itorCmd);
120-
ASSERT_NE(nullptr, cmd);
121-
122-
auto RegisterOffset = L3CNTLRegisterOffset<FamilyType>::registerOffset;
123-
EXPECT_EQ(RegisterOffset, cmd->getRegisterOffset());
124-
auto l3Cntlreg = cmd->getDataDword();
125-
auto numURBWays = (l3Cntlreg >> 1) & 0x7f;
126-
auto L3ClientPool = (l3Cntlreg >> 25) & 0x7f;
127-
EXPECT_NE(0u, numURBWays);
128-
EXPECT_NE(0u, L3ClientPool);
112+
validateL3Programming<FamilyType>(cmdList, itorWalker);
129113
}
130114

131115
HWTEST_F(EnqueueFillImageTest, WhenEnqueueIsDoneThenStateBaseAddressIsProperlyProgrammed) {

unit_tests/command_queue/enqueue_kernel_tests.cpp

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -275,8 +275,8 @@ struct EnqueueKernelTypeTest : public HelloWorldFixture<HelloWorldFixtureFactory
275275
public HardwareParse,
276276
::testing::TestWithParam<InputType> {
277277
typedef HelloWorldFixture<HelloWorldFixtureFactory> ParentClass;
278-
using ParentClass::pCS;
279278
using ParentClass::pCmdBuffer;
279+
using ParentClass::pCS;
280280

281281
EnqueueKernelTypeTest() {
282282
}
@@ -424,24 +424,8 @@ HWTEST_P(EnqueueWorkItemTests, addsIndirectData) {
424424
}
425425

426426
HWTEST_P(EnqueueWorkItemTests, LoadRegisterImmediateL3CNTLREG) {
427-
typedef typename FamilyType::PARSE PARSE;
428-
typedef typename PARSE::MI_LOAD_REGISTER_IMM MI_LOAD_REGISTER_IMM;
429427
enqueueKernel<FamilyType>();
430-
431-
// All state should be programmed before walker
432-
auto itorCmd = findMmio<FamilyType>(cmdList.begin(), itorWalker, L3CNTLRegisterOffset<FamilyType>::registerOffset);
433-
ASSERT_NE(itorWalker, itorCmd);
434-
435-
auto *cmd = genCmdCast<MI_LOAD_REGISTER_IMM *>(*itorCmd);
436-
ASSERT_NE(nullptr, cmd);
437-
438-
auto RegisterOffset = L3CNTLRegisterOffset<FamilyType>::registerOffset;
439-
EXPECT_EQ(RegisterOffset, cmd->getRegisterOffset());
440-
auto l3Cntlreg = cmd->getDataDword();
441-
auto numURBWays = (l3Cntlreg >> 1) & 0x7f;
442-
auto L3ClientPool = (l3Cntlreg >> 25) & 0x7f;
443-
EXPECT_NE(0u, numURBWays);
444-
EXPECT_NE(0u, L3ClientPool);
428+
validateL3Programming<FamilyType>(cmdList, itorWalker);
445429
}
446430

447431
HWTEST_P(EnqueueWorkItemTests, WhenEnqueueIsDoneThenStateBaseAddressIsProperlyProgrammed) {

unit_tests/command_queue/enqueue_read_buffer_rect_tests.cpp

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -211,24 +211,8 @@ HWTEST_F(EnqueueReadBufferRectTest, 2D_addsIndirectData) {
211211
}
212212

213213
HWTEST_F(EnqueueReadBufferRectTest, 2D_LoadRegisterImmediateL3CNTLREG) {
214-
typedef typename FamilyType::MI_LOAD_REGISTER_IMM MI_LOAD_REGISTER_IMM;
215-
216214
enqueueReadBufferRect2D<FamilyType>();
217-
218-
// All state should be programmed before walker
219-
auto itorCmd = findMmio<FamilyType>(cmdList.begin(), itorWalker, L3CNTLRegisterOffset<FamilyType>::registerOffset);
220-
ASSERT_NE(itorWalker, itorCmd);
221-
222-
auto *cmd = genCmdCast<MI_LOAD_REGISTER_IMM *>(*itorCmd);
223-
ASSERT_NE(nullptr, cmd);
224-
225-
auto RegisterOffset = L3CNTLRegisterOffset<FamilyType>::registerOffset;
226-
EXPECT_EQ(RegisterOffset, cmd->getRegisterOffset());
227-
auto l3Cntlreg = cmd->getDataDword();
228-
auto numURBWays = (l3Cntlreg >> 1) & 0x7f;
229-
auto L3ClientPool = (l3Cntlreg >> 25) & 0x7f;
230-
EXPECT_NE(0u, numURBWays);
231-
EXPECT_NE(0u, L3ClientPool);
215+
validateL3Programming<FamilyType>(cmdList, itorWalker);
232216
}
233217

234218
HWTEST_F(EnqueueReadBufferRectTest, When2DEnqueueIsDoneThenStateBaseAddressIsProperlyProgrammed) {

unit_tests/command_queue/enqueue_read_buffer_tests.cpp

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -174,25 +174,9 @@ HWTEST_F(EnqueueReadBufferTypeTest, addsIndirectData) {
174174
}
175175

176176
HWTEST_F(EnqueueReadBufferTypeTest, LoadRegisterImmediateL3CNTLREG) {
177-
typedef typename FamilyType::MI_LOAD_REGISTER_IMM MI_LOAD_REGISTER_IMM;
178-
179177
srcBuffer->forceDisallowCPUCopy = true;
180178
enqueueReadBuffer<FamilyType>();
181-
182-
// All state should be programmed before walker
183-
auto itorCmd = findMmio<FamilyType>(cmdList.begin(), itorWalker, L3CNTLRegisterOffset<FamilyType>::registerOffset);
184-
ASSERT_NE(itorWalker, itorCmd);
185-
186-
auto *cmd = genCmdCast<MI_LOAD_REGISTER_IMM *>(*itorCmd);
187-
ASSERT_NE(nullptr, cmd);
188-
189-
auto RegisterOffset = L3CNTLRegisterOffset<FamilyType>::registerOffset;
190-
EXPECT_EQ(RegisterOffset, cmd->getRegisterOffset());
191-
auto l3Cntlreg = cmd->getDataDword();
192-
auto numURBWays = (l3Cntlreg >> 1) & 0x7f;
193-
auto L3ClientPool = (l3Cntlreg >> 25) & 0x7f;
194-
EXPECT_NE(0u, numURBWays);
195-
EXPECT_NE(0u, L3ClientPool);
179+
validateL3Programming<FamilyType>(cmdList, itorWalker);
196180
}
197181

198182
HWTEST_F(EnqueueReadBufferTypeTest, WhenEnqueueIsDoneThenStateBaseAddressIsProperlyProgrammed) {

0 commit comments

Comments
 (0)