mirror of
https://github.com/intel/compute-runtime.git
synced 2025-09-10 12:53:42 +08:00
Return error code for unsuported image arg in gen12lp
Signed-off-by: Maciej Plewka <maciej.plewka@intel.com>
This commit is contained in:

committed by
Compute-Runtime-Automation

parent
7195aa6f8e
commit
bbc31e6aac
@ -19,6 +19,8 @@ set(IGDRCL_SRCS_tests_fixtures
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/hello_world_kernel_fixture.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/image_fixture.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/image_fixture.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/image_set_arg_fixture.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/image_set_arg_fixture.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/kernel_arg_fixture.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/kernel_arg_fixture.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/kernel_data_fixture.cpp
|
||||
|
82
opencl/test/unit_test/fixtures/image_set_arg_fixture.cpp
Normal file
82
opencl/test/unit_test/fixtures/image_set_arg_fixture.cpp
Normal file
@ -0,0 +1,82 @@
|
||||
/*
|
||||
* Copyright (C) 2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "opencl/test/unit_test/fixtures/image_set_arg_fixture.h"
|
||||
|
||||
#include "shared/test/common/test_macros/test.h"
|
||||
|
||||
#include "opencl/source/kernel/kernel.h"
|
||||
#include "opencl/source/mem_obj/image.h"
|
||||
#include "opencl/test/unit_test/fixtures/image_fixture.h"
|
||||
#include "opencl/test/unit_test/mocks/mock_kernel.h"
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
namespace NEO {
|
||||
void ImageSetArgTest::SetUp() {
|
||||
ClDeviceFixture::setUp();
|
||||
pKernelInfo = std::make_unique<MockKernelInfo>();
|
||||
pKernelInfo->kernelDescriptor.kernelAttributes.simdSize = 1;
|
||||
|
||||
// define kernel info
|
||||
pKernelInfo->heapInfo.pSsh = surfaceStateHeap;
|
||||
pKernelInfo->heapInfo.SurfaceStateHeapSize = sizeof(surfaceStateHeap);
|
||||
|
||||
// setup kernel arg offsets
|
||||
pKernelInfo->addArgImage(0, 0x00);
|
||||
pKernelInfo->addArgImage(1, 0x40);
|
||||
|
||||
program = std::make_unique<MockProgram>(toClDeviceVector(*pClDevice));
|
||||
retVal = CL_INVALID_VALUE;
|
||||
pMultiDeviceKernel = MultiDeviceKernel::create<MockKernel>(program.get(), MockKernel::toKernelInfoContainer(*pKernelInfo, rootDeviceIndex), &retVal);
|
||||
pKernel = static_cast<MockKernel *>(pMultiDeviceKernel->getKernel(rootDeviceIndex));
|
||||
ASSERT_NE(nullptr, pKernel);
|
||||
ASSERT_EQ(CL_SUCCESS, retVal);
|
||||
|
||||
pKernel->setKernelArgHandler(0, &Kernel::setArgImage);
|
||||
pKernel->setKernelArgHandler(1, &Kernel::setArgImage);
|
||||
context = new MockContext(pClDevice);
|
||||
srcImage = Image3dHelper<>::create(context);
|
||||
srcAllocation = srcImage->getGraphicsAllocation(pClDevice->getRootDeviceIndex());
|
||||
ASSERT_NE(nullptr, srcImage);
|
||||
}
|
||||
|
||||
void ImageSetArgTest::TearDown() {
|
||||
delete srcImage;
|
||||
delete pMultiDeviceKernel;
|
||||
|
||||
delete context;
|
||||
ClDeviceFixture::tearDown();
|
||||
};
|
||||
|
||||
void ImageMediaBlockSetArgTest::SetUp() {
|
||||
ClDeviceFixture::setUp();
|
||||
pKernelInfo = std::make_unique<MockKernelInfo>();
|
||||
pKernelInfo->kernelDescriptor.kernelAttributes.simdSize = 1;
|
||||
|
||||
// define kernel info
|
||||
pKernelInfo->heapInfo.pSsh = surfaceStateHeap;
|
||||
pKernelInfo->heapInfo.SurfaceStateHeapSize = sizeof(surfaceStateHeap);
|
||||
|
||||
// setup kernel arg offsets
|
||||
pKernelInfo->addArgImage(0, 0x00, iOpenCL::IMAGE_MEMORY_OBJECT_2D_MEDIA_BLOCK);
|
||||
pKernelInfo->addArgImage(0, 0x40, iOpenCL::IMAGE_MEMORY_OBJECT_2D_MEDIA_BLOCK);
|
||||
|
||||
program = std::make_unique<MockProgram>(toClDeviceVector(*pClDevice));
|
||||
retVal = CL_INVALID_VALUE;
|
||||
pMultiDeviceKernel = MultiDeviceKernel::create<MockKernel>(program.get(), MockKernel::toKernelInfoContainer(*pKernelInfo, rootDeviceIndex), &retVal);
|
||||
pKernel = static_cast<MockKernel *>(pMultiDeviceKernel->getKernel(rootDeviceIndex));
|
||||
ASSERT_NE(nullptr, pKernel);
|
||||
ASSERT_EQ(CL_SUCCESS, retVal);
|
||||
|
||||
pKernel->setKernelArgHandler(0, &Kernel::setArgImage);
|
||||
pKernel->setKernelArgHandler(1, &Kernel::setArgImage);
|
||||
context = new MockContext(pClDevice);
|
||||
srcImage = Image3dHelper<>::create(context);
|
||||
srcAllocation = srcImage->getGraphicsAllocation(pClDevice->getRootDeviceIndex());
|
||||
ASSERT_NE(nullptr, srcImage);
|
||||
}
|
||||
} // namespace NEO
|
72
opencl/test/unit_test/fixtures/image_set_arg_fixture.h
Normal file
72
opencl/test/unit_test/fixtures/image_set_arg_fixture.h
Normal file
@ -0,0 +1,72 @@
|
||||
/*
|
||||
* Copyright (C) 2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "shared/test/common/test_macros/test.h"
|
||||
|
||||
#include "opencl/test/unit_test/fixtures/image_fixture.h"
|
||||
#include "opencl/test/unit_test/mocks/mock_kernel.h"
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
namespace NEO {
|
||||
class Kernel;
|
||||
class Image;
|
||||
|
||||
class ImageSetArgTest : public ClDeviceFixture,
|
||||
public testing::Test {
|
||||
|
||||
public:
|
||||
ImageSetArgTest() = default;
|
||||
|
||||
protected:
|
||||
template <typename FamilyType>
|
||||
void setupChannels(int imgChannelOrder) {
|
||||
using RENDER_SURFACE_STATE = typename FamilyType::RENDER_SURFACE_STATE;
|
||||
|
||||
expectedChannelRed = RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT_RED;
|
||||
expectedChannelGreen = RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT_GREEN;
|
||||
expectedChannelBlue = RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT_BLUE;
|
||||
|
||||
if (imgChannelOrder == CL_A) {
|
||||
expectedChannelRed = RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT_ZERO;
|
||||
expectedChannelGreen = RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT_ZERO;
|
||||
expectedChannelBlue = RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT_ZERO;
|
||||
} else if (imgChannelOrder == CL_RA ||
|
||||
imgChannelOrder == CL_R ||
|
||||
imgChannelOrder == CL_Rx) {
|
||||
expectedChannelGreen = RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT_ZERO;
|
||||
expectedChannelBlue = RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT_ZERO;
|
||||
} else if (imgChannelOrder == CL_RG ||
|
||||
imgChannelOrder == CL_RGx) {
|
||||
expectedChannelBlue = RENDER_SURFACE_STATE::SHADER_CHANNEL_SELECT_ZERO;
|
||||
}
|
||||
}
|
||||
|
||||
void SetUp() override;
|
||||
|
||||
void TearDown() override;
|
||||
|
||||
cl_int retVal = CL_SUCCESS;
|
||||
MockContext *context;
|
||||
std::unique_ptr<MockProgram> program;
|
||||
MockKernel *pKernel = nullptr;
|
||||
MultiDeviceKernel *pMultiDeviceKernel = nullptr;
|
||||
std::unique_ptr<MockKernelInfo> pKernelInfo;
|
||||
char surfaceStateHeap[0x80] = {};
|
||||
Image *srcImage = nullptr;
|
||||
GraphicsAllocation *srcAllocation = nullptr;
|
||||
int expectedChannelRed = 0;
|
||||
int expectedChannelGreen = 0;
|
||||
int expectedChannelBlue = 0;
|
||||
};
|
||||
|
||||
class ImageMediaBlockSetArgTest : public ImageSetArgTest {
|
||||
protected:
|
||||
void SetUp() override;
|
||||
};
|
||||
} // namespace NEO
|
Reference in New Issue
Block a user