2019-09-19 01:32:33 +08:00
|
|
|
/*
|
2021-03-22 23:26:03 +08:00
|
|
|
* Copyright (C) 2019-2021 Intel Corporation
|
2019-09-19 01:32:33 +08:00
|
|
|
*
|
|
|
|
* SPDX-License-Identifier: MIT
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
2020-02-23 05:50:57 +08:00
|
|
|
#include "opencl/source/helpers/hardware_commands_helper.h"
|
2020-05-28 20:05:12 +08:00
|
|
|
#include "opencl/test/unit_test/fixtures/cl_device_fixture.h"
|
2020-10-09 18:27:32 +08:00
|
|
|
#include "opencl/test/unit_test/mocks/mock_buffer.h"
|
2020-02-23 22:20:22 +08:00
|
|
|
#include "opencl/test/unit_test/mocks/mock_kernel.h"
|
2019-09-19 01:32:33 +08:00
|
|
|
#include "test.h"
|
|
|
|
|
|
|
|
using namespace NEO;
|
|
|
|
|
2020-05-28 20:05:12 +08:00
|
|
|
using Gen12LpKernelTest = Test<ClDeviceFixture>;
|
2021-06-21 23:25:03 +08:00
|
|
|
GEN12LPTEST_F(Gen12LpKernelTest, givenKernelWhenCanTransformImagesIsCalledThenReturnsFalse) {
|
2020-01-14 21:32:11 +08:00
|
|
|
MockKernelWithInternals mockKernel(*pClDevice);
|
2019-09-19 01:32:33 +08:00
|
|
|
auto retVal = mockKernel.mockKernel->Kernel::canTransformImages();
|
2019-10-23 17:47:19 +08:00
|
|
|
EXPECT_FALSE(retVal);
|
2019-09-19 01:32:33 +08:00
|
|
|
}
|
2020-10-09 18:27:32 +08:00
|
|
|
|
|
|
|
GEN12LPTEST_F(Gen12LpKernelTest, GivenKernelWhenNotUsingSharedObjArgsThenWaDisableRccRhwoOptimizationIsNotRequired) {
|
|
|
|
MockKernelWithInternals kernel(*pClDevice);
|
2021-03-22 23:26:03 +08:00
|
|
|
EXPECT_FALSE(kernel.mockKernel->requiresWaDisableRccRhwoOptimization());
|
2020-10-09 18:27:32 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
GEN12LPTEST_F(Gen12LpKernelTest, GivenKernelWhenAtLeastOneArgIsMediaCompressedThenWaDisableRccRhwoOptimizationIsRequired) {
|
|
|
|
MockKernelWithInternals kernel(*pClDevice);
|
2021-04-08 17:05:45 +08:00
|
|
|
kernel.kernelInfo.kernelDescriptor.payloadMappings.explicitArgs.resize(3);
|
|
|
|
kernel.kernelInfo.addArgBuffer(0);
|
|
|
|
kernel.kernelInfo.addArgImmediate(1);
|
|
|
|
kernel.kernelInfo.addArgBuffer(2);
|
|
|
|
|
2020-10-09 18:27:32 +08:00
|
|
|
kernel.mockKernel->initialize();
|
|
|
|
|
|
|
|
MockBuffer buffer;
|
|
|
|
auto allocation = buffer.getGraphicsAllocation(pClDevice->getRootDeviceIndex());
|
2021-09-20 22:29:22 +08:00
|
|
|
MockGmm gmm1(pDevice->getGmmClientContext());
|
2020-10-09 18:27:32 +08:00
|
|
|
allocation->setGmm(&gmm1, 0);
|
|
|
|
|
|
|
|
cl_mem clMem = &buffer;
|
|
|
|
kernel.mockKernel->setArgBuffer(0, sizeof(cl_mem *), &clMem);
|
|
|
|
|
|
|
|
uint32_t immediateArg = 0;
|
|
|
|
kernel.mockKernel->setArgImmediate(1, sizeof(uint32_t), &immediateArg);
|
|
|
|
|
|
|
|
MockBuffer bufferMediaCompressed;
|
|
|
|
bufferMediaCompressed.setSharingHandler(new SharingHandler());
|
|
|
|
allocation = bufferMediaCompressed.getGraphicsAllocation(pClDevice->getRootDeviceIndex());
|
2021-09-20 22:29:22 +08:00
|
|
|
MockGmm gmm2(pDevice->getGmmClientContext());
|
2020-10-09 18:27:32 +08:00
|
|
|
allocation->setGmm(&gmm2, 0);
|
|
|
|
allocation->getGmm(0)->gmmResourceInfo->getResourceFlags()->Info.MediaCompressed = 1;
|
|
|
|
cl_mem clMem2 = &bufferMediaCompressed;
|
|
|
|
kernel.mockKernel->setArgBuffer(2, sizeof(cl_mem *), &clMem2);
|
|
|
|
|
2021-03-22 23:26:03 +08:00
|
|
|
EXPECT_TRUE(kernel.mockKernel->requiresWaDisableRccRhwoOptimization());
|
2020-10-09 18:27:32 +08:00
|
|
|
}
|