1313#include " shared/test/common/helpers/unit_test_helper.h"
1414#include " shared/test/common/test_macros/hw_test.h"
1515#include " shared/test/common/test_macros/mock_method_macros.h"
16+ #include " shared/test/common/test_macros/test.h"
1617
1718#include " opencl/source/command_queue/command_queue.h"
1819#include " opencl/source/program/program.h"
1920#include " opencl/test/unit_test/fixtures/enqueue_handler_fixture.h"
2021#include " opencl/test/unit_test/mocks/mock_buffer.h"
2122#include " opencl/test/unit_test/mocks/mock_command_queue.h"
23+ #include " opencl/test/unit_test/mocks/mock_debug_program.h"
2224#include " opencl/test/unit_test/mocks/mock_kernel.h"
2325#include " opencl/test/unit_test/program/program_from_binary.h"
2426
2527using namespace NEO ;
26- using namespace ::testing;
2728
2829typedef EnqueueHandlerTest EnqueueDebugKernelSimpleTest;
2930
30- class EnqueueDebugKernelTest : public ProgramSimpleFixture ,
31- public ::testing::Test {
31+ class EnqueueDebugKernelFixture {
3232 public:
33- void SetUp () override {
34- ProgramSimpleFixture::setUp ();
35- device = pClDevice;
36- pDevice->executionEnvironment ->rootDeviceEnvironments [pDevice->getRootDeviceIndex ()]->debugger .reset (new SourceLevelDebugger (nullptr ));
37-
38- auto sipType = SipKernel::getSipKernelType (*pDevice);
39- SipKernel::initSipKernel (sipType, *pDevice);
40-
41- if (pDevice->getHardwareInfo ().platform .eRenderCoreFamily >= IGFX_GEN9_CORE) {
42- pDevice->deviceInfo .debuggerActive = true ;
43- std::string filename;
44- std::string kernelOption (CompilerOptions::debugKernelEnable);
45- KernelFilenameHelper::getKernelFilenameFromInternalOption (kernelOption, filename);
46-
47- kbHelper = new KernelBinaryHelper (filename, false );
48- createProgramWithSource (
49- pContext,
50- " copybuffer.cl" );
51- pProgram->enableKernelDebug ();
52-
53- cl_int retVal = pProgram->build (pProgram->getDevices (), nullptr , false );
33+ void setUp () {
34+ clDevice = context.getDevice (0 );
35+ device = &clDevice->getDevice ();
36+
37+ device->getExecutionEnvironment ()->rootDeviceEnvironments [device->getRootDeviceIndex ()]->debugger .reset (new SourceLevelDebugger (nullptr ));
38+
39+ auto sipType = SipKernel::getSipKernelType (*device);
40+ SipKernel::initSipKernel (sipType, *device);
41+
42+ if (device->getHardwareInfo ().platform .eRenderCoreFamily >= IGFX_GEN9_CORE) {
43+ const_cast <DeviceInfo &>(device->getDeviceInfo ()).debuggerActive = true ;
44+
45+ program = std::make_unique<MockDebugProgram>(context.getDevices ());
46+ cl_int retVal = program->build (program->getDevices (), nullptr , false );
5447 ASSERT_EQ (CL_SUCCESS, retVal);
5548
56- // create a kernel
57- pMultiDeviceKernel = MultiDeviceKernel::create (
58- pProgram,
59- pProgram->getKernelInfosForKernel (" CopyBuffer" ),
49+ multiDeviceKernel = MultiDeviceKernel::create (
50+ static_cast <NEO::Program *>(program.get ()),
51+ MockKernel::toKernelInfoContainer (*program->getKernelInfo (" kernel" , 0 ), device->getRootDeviceIndex ()),
6052 &retVal);
61- debugKernel = pMultiDeviceKernel ->getKernel (rootDeviceIndex );
53+ debugKernel = multiDeviceKernel ->getKernel (device-> getRootDeviceIndex () );
6254
6355 ASSERT_EQ (CL_SUCCESS, retVal);
6456 ASSERT_NE (nullptr , debugKernel);
65-
66- cl_mem src = &bufferSrc;
67- cl_mem dst = &bufferDst;
68- retVal = debugKernel->setArg (
69- 0 ,
70- sizeof (cl_mem),
71- &src);
72- retVal = debugKernel->setArg (
73- 1 ,
74- sizeof (cl_mem),
75- &dst);
7657 }
7758 }
7859
79- void TearDown () override {
80- if (pDevice->getHardwareInfo ().platform .eRenderCoreFamily >= IGFX_GEN9_CORE) {
81- delete kbHelper;
82- pMultiDeviceKernel->release ();
60+ void tearDown () {
61+ if (multiDeviceKernel != nullptr ) {
62+ multiDeviceKernel->release ();
8363 }
84- ProgramSimpleFixture::tearDown ();
8564 }
86- cl_device_id device;
65+
66+ std::unique_ptr<char []> ssh = nullptr ;
67+ std::unique_ptr<MockDebugProgram> program = nullptr ;
68+ NEO::ClDevice *clDevice = nullptr ;
69+ NEO::Device *device = nullptr ;
8770 Kernel *debugKernel = nullptr ;
88- MultiDeviceKernel *pMultiDeviceKernel = nullptr ;
89- KernelBinaryHelper *kbHelper = nullptr ;
71+ MultiDeviceKernel *multiDeviceKernel = nullptr ;
9072 MockContext context;
9173 MockBuffer bufferSrc;
9274 MockBuffer bufferDst;
9375};
9476
77+ using EnqueueDebugKernelTest = Test<EnqueueDebugKernelFixture>;
78+
9579HWTEST_F (EnqueueDebugKernelTest, givenDebugKernelWhenEnqueuedThenSSHAndBtiAreCorrectlySet) {
96- if (pDevice ->isDebuggerActive ()) {
80+ if (device ->isDebuggerActive ()) {
9781 using BINDING_TABLE_STATE = typename FamilyType::BINDING_TABLE_STATE;
9882 using RENDER_SURFACE_STATE = typename FamilyType::RENDER_SURFACE_STATE;
99- std::unique_ptr<MockCommandQueueHw<FamilyType>> mockCmdQ (new MockCommandQueueHw<FamilyType>(&context, pClDevice , 0 ));
83+ std::unique_ptr<MockCommandQueueHw<FamilyType>> mockCmdQ (new MockCommandQueueHw<FamilyType>(&context, clDevice , 0 ));
10084
10185 size_t gws[] = {1 , 1 , 1 };
10286 auto &ssh = mockCmdQ->getIndirectHeap (IndirectHeap::Type::SURFACE_STATE, 4096u );
@@ -118,10 +102,10 @@ HWTEST_F(EnqueueDebugKernelTest, givenDebugKernelWhenEnqueuedThenSSHAndBtiAreCor
118102}
119103
120104HWTEST_F (EnqueueDebugKernelTest, givenDebugKernelWhenEnqueuedThenSurfaceStateForDebugSurfaceIsSetAtBindlessOffsetZero) {
121- if (pDevice ->isDebuggerActive ()) {
105+ if (device ->isDebuggerActive ()) {
122106 using BINDING_TABLE_STATE = typename FamilyType::BINDING_TABLE_STATE;
123107 using RENDER_SURFACE_STATE = typename FamilyType::RENDER_SURFACE_STATE;
124- std::unique_ptr<MockCommandQueueHw<FamilyType>> mockCmdQ (new MockCommandQueueHw<FamilyType>(&context, pClDevice , 0 ));
108+ std::unique_ptr<MockCommandQueueHw<FamilyType>> mockCmdQ (new MockCommandQueueHw<FamilyType>(&context, clDevice , 0 ));
125109
126110 size_t gws[] = {1 , 1 , 1 };
127111 auto &ssh = mockCmdQ->getIndirectHeap (IndirectHeap::Type::SURFACE_STATE, 4096u );
@@ -219,9 +203,9 @@ HWTEST_F(EnqueueDebugKernelSimpleTest, givenKernelFromProgramWithoutDebugEnabled
219203using ActiveDebuggerTest = EnqueueDebugKernelTest;
220204
221205HWTEST_F (ActiveDebuggerTest, givenKernelFromProgramWithoutDebugEnabledAndActiveDebuggerWhenEnqueuedThenDebugSurfaceIsSetup) {
222- MockProgram program (&context, false , toClDeviceVector (*pClDevice ));
223- std::unique_ptr<MockDebugKernel> kernel (MockKernel::create<MockDebugKernel>(*pDevice , &program));
224- std::unique_ptr<CommandQueueHw<FamilyType>> cmdQ (new CommandQueueHw<FamilyType>(&context, pClDevice , nullptr , false ));
206+ MockProgram program (&context, false , toClDeviceVector (*clDevice ));
207+ std::unique_ptr<MockDebugKernel> kernel (MockKernel::create<MockDebugKernel>(*device , &program));
208+ std::unique_ptr<CommandQueueHw<FamilyType>> cmdQ (new CommandQueueHw<FamilyType>(&context, clDevice , nullptr , false ));
225209
226210 size_t gws[] = {1 , 1 , 1 };
227211 cmdQ->enqueueKernel (kernel.get (), 1 , nullptr , gws, nullptr , 0 , nullptr , nullptr );
0 commit comments