mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 14:55:24 +08:00
Add channelOrder and channelDataType to crossThreadData in L0
Related-To: NEO-4649 Change-Id: If07127424fc03ac410665cd1eb0c0da966b46584 Signed-off-by: Konstanty Misiak <konstanty.misiak@intel.com>
This commit is contained in:
committed by
sys_ocldev
parent
3afeb00d3a
commit
1067596196
@@ -50,6 +50,8 @@ set(L0_RUNTIME_SOURCES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/kernel/kernel_imp.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/kernel/kernel_imp.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/image/image.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/image/image_format_desc_helper.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/image/image_format_desc_helper.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/image/image_formats.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/image/image_hw.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/image/image_hw.inl
|
||||
|
||||
116
level_zero/core/source/image/image_format_desc_helper.cpp
Normal file
116
level_zero/core/source/image/image_format_desc_helper.cpp
Normal file
@@ -0,0 +1,116 @@
|
||||
/*
|
||||
* Copyright (C) 2020 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "level_zero/core/source/image/image_format_desc_helper.h"
|
||||
|
||||
#include "shared/source/utilities/compiler_support.h"
|
||||
|
||||
namespace L0 {
|
||||
|
||||
cl_channel_type getClChannelDataType(const ze_image_format_desc_t &imgDescription) {
|
||||
switch (imgDescription.layout) {
|
||||
case ZE_IMAGE_FORMAT_LAYOUT_8:
|
||||
case ZE_IMAGE_FORMAT_LAYOUT_8_8:
|
||||
case ZE_IMAGE_FORMAT_LAYOUT_8_8_8_8:
|
||||
if (imgDescription.type == ZE_IMAGE_FORMAT_TYPE_UINT)
|
||||
return CL_UNSIGNED_INT8;
|
||||
if (imgDescription.type == ZE_IMAGE_FORMAT_TYPE_SINT)
|
||||
return CL_SIGNED_INT8;
|
||||
if (imgDescription.type == ZE_IMAGE_FORMAT_TYPE_UNORM)
|
||||
return CL_UNORM_INT8;
|
||||
if (imgDescription.type == ZE_IMAGE_FORMAT_TYPE_SNORM)
|
||||
return CL_SNORM_INT8;
|
||||
break;
|
||||
case ZE_IMAGE_FORMAT_LAYOUT_16:
|
||||
case ZE_IMAGE_FORMAT_LAYOUT_16_16:
|
||||
case ZE_IMAGE_FORMAT_LAYOUT_16_16_16_16:
|
||||
if (imgDescription.type == ZE_IMAGE_FORMAT_TYPE_UINT)
|
||||
return CL_UNSIGNED_INT16;
|
||||
if (imgDescription.type == ZE_IMAGE_FORMAT_TYPE_SINT)
|
||||
return CL_SIGNED_INT16;
|
||||
if (imgDescription.type == ZE_IMAGE_FORMAT_TYPE_UNORM)
|
||||
return CL_UNORM_INT16;
|
||||
if (imgDescription.type == ZE_IMAGE_FORMAT_TYPE_SNORM)
|
||||
return CL_SNORM_INT16;
|
||||
|
||||
return CL_HALF_FLOAT;
|
||||
CPP_ATTRIBUTE_FALLTHROUGH;
|
||||
case ZE_IMAGE_FORMAT_LAYOUT_32:
|
||||
case ZE_IMAGE_FORMAT_LAYOUT_32_32:
|
||||
case ZE_IMAGE_FORMAT_LAYOUT_32_32_32_32:
|
||||
if (imgDescription.type == ZE_IMAGE_FORMAT_TYPE_UINT)
|
||||
return CL_UNSIGNED_INT32;
|
||||
if (imgDescription.type == ZE_IMAGE_FORMAT_TYPE_SINT)
|
||||
return CL_SIGNED_INT32;
|
||||
if (imgDescription.type == ZE_IMAGE_FORMAT_TYPE_FLOAT)
|
||||
return CL_FLOAT;
|
||||
break;
|
||||
case ZE_IMAGE_FORMAT_LAYOUT_10_10_10_2:
|
||||
if (imgDescription.type == ZE_IMAGE_FORMAT_TYPE_UNORM)
|
||||
return CL_UNORM_INT_101010_2;
|
||||
break;
|
||||
case ZE_IMAGE_FORMAT_LAYOUT_5_6_5:
|
||||
if (imgDescription.type == ZE_IMAGE_FORMAT_TYPE_UNORM)
|
||||
return CL_UNORM_SHORT_565;
|
||||
break;
|
||||
case ZE_IMAGE_FORMAT_LAYOUT_5_5_5_1:
|
||||
if (imgDescription.type == ZE_IMAGE_FORMAT_TYPE_UNORM)
|
||||
return CL_UNORM_SHORT_555;
|
||||
break;
|
||||
case ZE_IMAGE_FORMAT_LAYOUT_NV12:
|
||||
if (imgDescription.type == ZE_IMAGE_FORMAT_TYPE_UNORM)
|
||||
return CL_NV12_INTEL;
|
||||
break;
|
||||
case ZE_IMAGE_FORMAT_LAYOUT_YUYV:
|
||||
if (imgDescription.type == ZE_IMAGE_FORMAT_TYPE_UNORM)
|
||||
return CL_YUYV_INTEL;
|
||||
break;
|
||||
case ZE_IMAGE_FORMAT_LAYOUT_VYUY:
|
||||
if (imgDescription.type == ZE_IMAGE_FORMAT_TYPE_UNORM)
|
||||
return CL_VYUY_INTEL;
|
||||
break;
|
||||
case ZE_IMAGE_FORMAT_LAYOUT_YVYU:
|
||||
if (imgDescription.type == ZE_IMAGE_FORMAT_TYPE_UNORM)
|
||||
return CL_YVYU_INTEL;
|
||||
break;
|
||||
case ZE_IMAGE_FORMAT_LAYOUT_UYVY:
|
||||
if (imgDescription.type == ZE_IMAGE_FORMAT_TYPE_UNORM)
|
||||
return CL_UYVY_INTEL;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return CL_INVALID_VALUE;
|
||||
}
|
||||
|
||||
cl_channel_order getClChannelOrder(const ze_image_format_desc_t &imgDescription) {
|
||||
swizzles imgSwizzles{imgDescription.x, imgDescription.y, imgDescription.z, imgDescription.w};
|
||||
|
||||
if (imgSwizzles == swizzles{ZE_IMAGE_FORMAT_SWIZZLE_R, ZE_IMAGE_FORMAT_SWIZZLE_0, ZE_IMAGE_FORMAT_SWIZZLE_0, ZE_IMAGE_FORMAT_SWIZZLE_1})
|
||||
return CL_R;
|
||||
if (imgSwizzles == swizzles{ZE_IMAGE_FORMAT_SWIZZLE_0, ZE_IMAGE_FORMAT_SWIZZLE_0, ZE_IMAGE_FORMAT_SWIZZLE_0, ZE_IMAGE_FORMAT_SWIZZLE_A})
|
||||
return CL_A;
|
||||
if (imgSwizzles == swizzles{ZE_IMAGE_FORMAT_SWIZZLE_R, ZE_IMAGE_FORMAT_SWIZZLE_G, ZE_IMAGE_FORMAT_SWIZZLE_0, ZE_IMAGE_FORMAT_SWIZZLE_1})
|
||||
return CL_RG;
|
||||
if (imgSwizzles == swizzles{ZE_IMAGE_FORMAT_SWIZZLE_R, ZE_IMAGE_FORMAT_SWIZZLE_0, ZE_IMAGE_FORMAT_SWIZZLE_0, ZE_IMAGE_FORMAT_SWIZZLE_A})
|
||||
return CL_RA;
|
||||
if (imgSwizzles == swizzles{ZE_IMAGE_FORMAT_SWIZZLE_R, ZE_IMAGE_FORMAT_SWIZZLE_G, ZE_IMAGE_FORMAT_SWIZZLE_B, ZE_IMAGE_FORMAT_SWIZZLE_1})
|
||||
return CL_RGB;
|
||||
if (imgSwizzles == swizzles{ZE_IMAGE_FORMAT_SWIZZLE_R, ZE_IMAGE_FORMAT_SWIZZLE_G, ZE_IMAGE_FORMAT_SWIZZLE_B, ZE_IMAGE_FORMAT_SWIZZLE_A})
|
||||
return CL_RGBA;
|
||||
if (imgSwizzles == swizzles{ZE_IMAGE_FORMAT_SWIZZLE_B, ZE_IMAGE_FORMAT_SWIZZLE_G, ZE_IMAGE_FORMAT_SWIZZLE_R, ZE_IMAGE_FORMAT_SWIZZLE_A})
|
||||
return CL_BGRA;
|
||||
if (imgSwizzles == swizzles{ZE_IMAGE_FORMAT_SWIZZLE_A, ZE_IMAGE_FORMAT_SWIZZLE_R, ZE_IMAGE_FORMAT_SWIZZLE_G, ZE_IMAGE_FORMAT_SWIZZLE_B})
|
||||
return CL_ARGB;
|
||||
if (imgSwizzles == swizzles{ZE_IMAGE_FORMAT_SWIZZLE_A, ZE_IMAGE_FORMAT_SWIZZLE_B, ZE_IMAGE_FORMAT_SWIZZLE_G, ZE_IMAGE_FORMAT_SWIZZLE_R})
|
||||
return CL_ABGR;
|
||||
|
||||
return CL_INVALID_VALUE;
|
||||
}
|
||||
|
||||
} // namespace L0
|
||||
37
level_zero/core/source/image/image_format_desc_helper.h
Normal file
37
level_zero/core/source/image/image_format_desc_helper.h
Normal file
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Copyright (C) 2020 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "level_zero/core/source/image/image.h"
|
||||
|
||||
namespace L0 {
|
||||
|
||||
struct swizzles {
|
||||
ze_image_format_swizzle_t x;
|
||||
ze_image_format_swizzle_t y;
|
||||
ze_image_format_swizzle_t z;
|
||||
ze_image_format_swizzle_t w;
|
||||
|
||||
bool operator==(const swizzles &rhs) {
|
||||
if (x != rhs.x)
|
||||
return false;
|
||||
if (y != rhs.y)
|
||||
return false;
|
||||
if (z != rhs.z)
|
||||
return false;
|
||||
if (w != rhs.w)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
cl_channel_type getClChannelDataType(const ze_image_format_desc_t &imgDescription);
|
||||
cl_channel_order getClChannelOrder(const ze_image_format_desc_t &imgDescription);
|
||||
|
||||
} // namespace L0
|
||||
@@ -22,6 +22,7 @@
|
||||
|
||||
#include "level_zero/core/source/device/device.h"
|
||||
#include "level_zero/core/source/image/image.h"
|
||||
#include "level_zero/core/source/image/image_format_desc_helper.h"
|
||||
#include "level_zero/core/source/module/module.h"
|
||||
#include "level_zero/core/source/module/module_imp.h"
|
||||
#include "level_zero/core/source/printf_handler/printf_handler.h"
|
||||
@@ -513,11 +514,15 @@ ze_result_t KernelImp::setArgImage(uint32_t argIndex, size_t argSize, const void
|
||||
|
||||
auto imageInfo = image->getImageInfo();
|
||||
|
||||
auto clChannelType = getClChannelDataType(image->getImageDesc().format);
|
||||
auto clChannelOrder = getClChannelOrder(image->getImageDesc().format);
|
||||
NEO::patchNonPointer<size_t>(ArrayRef<uint8_t>(crossThreadData.get(), crossThreadDataSize), arg.metadataPayload.imgWidth, imageInfo.imgDesc.imageWidth);
|
||||
NEO::patchNonPointer<size_t>(ArrayRef<uint8_t>(crossThreadData.get(), crossThreadDataSize), arg.metadataPayload.imgHeight, imageInfo.imgDesc.imageHeight);
|
||||
NEO::patchNonPointer<size_t>(ArrayRef<uint8_t>(crossThreadData.get(), crossThreadDataSize), arg.metadataPayload.imgDepth, imageInfo.imgDesc.imageDepth);
|
||||
NEO::patchNonPointer<uint32_t>(ArrayRef<uint8_t>(crossThreadData.get(), crossThreadDataSize), arg.metadataPayload.numSamples, imageInfo.imgDesc.numSamples);
|
||||
NEO::patchNonPointer<size_t>(ArrayRef<uint8_t>(crossThreadData.get(), crossThreadDataSize), arg.metadataPayload.arraySize, imageInfo.imgDesc.imageArraySize);
|
||||
NEO::patchNonPointer<cl_channel_type>(ArrayRef<uint8_t>(crossThreadData.get(), crossThreadDataSize), arg.metadataPayload.channelDataType, clChannelType);
|
||||
NEO::patchNonPointer<cl_channel_order>(ArrayRef<uint8_t>(crossThreadData.get(), crossThreadDataSize), arg.metadataPayload.channelOrder, clChannelOrder);
|
||||
NEO::patchNonPointer<uint32_t>(ArrayRef<uint8_t>(crossThreadData.get(), crossThreadDataSize), arg.metadataPayload.numMipLevels, imageInfo.imgDesc.numMipLevels);
|
||||
|
||||
auto pixelSize = imageInfo.surfaceFormat->ImageElementSizeInBytes;
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
|
||||
#include "test.h"
|
||||
|
||||
#include "level_zero/core/source/image/image_format_desc_helper.h"
|
||||
#include "level_zero/core/source/image/image_formats.h"
|
||||
#include "level_zero/core/source/image/image_hw.h"
|
||||
#include "level_zero/core/test/unit_tests/fixtures/device_fixture.h"
|
||||
@@ -291,5 +292,164 @@ INSTANTIATE_TEST_CASE_P(
|
||||
TestImageFormats,
|
||||
testing::ValuesIn(validFormats));
|
||||
|
||||
TEST(ImageFormatDescHelperTest, givenUnsupportedImageFormatLayoutAndTypeThenProperClEnumIsReturned) {
|
||||
auto invalid = static_cast<cl_channel_type>(CL_INVALID_VALUE);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_8, ZE_IMAGE_FORMAT_TYPE_FLOAT}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_8_8, ZE_IMAGE_FORMAT_TYPE_FLOAT}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_8_8_8_8, ZE_IMAGE_FORMAT_TYPE_FLOAT}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_32, ZE_IMAGE_FORMAT_TYPE_UNORM}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_10_10_10_2, ZE_IMAGE_FORMAT_TYPE_FLOAT}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_11_11_10, ZE_IMAGE_FORMAT_TYPE_UINT}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_11_11_10, ZE_IMAGE_FORMAT_TYPE_SINT}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_11_11_10, ZE_IMAGE_FORMAT_TYPE_UNORM}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_11_11_10, ZE_IMAGE_FORMAT_TYPE_SNORM}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_5_6_5, ZE_IMAGE_FORMAT_TYPE_UINT}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_5_6_5, ZE_IMAGE_FORMAT_TYPE_SINT}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_5_6_5, ZE_IMAGE_FORMAT_TYPE_SNORM}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_5_6_5, ZE_IMAGE_FORMAT_TYPE_FLOAT}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_5_5_5_1, ZE_IMAGE_FORMAT_TYPE_UINT}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_5_5_5_1, ZE_IMAGE_FORMAT_TYPE_SINT}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_5_5_5_1, ZE_IMAGE_FORMAT_TYPE_SNORM}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_5_5_5_1, ZE_IMAGE_FORMAT_TYPE_FLOAT}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_4_4_4_4, ZE_IMAGE_FORMAT_TYPE_UINT}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_4_4_4_4, ZE_IMAGE_FORMAT_TYPE_SINT}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_4_4_4_4, ZE_IMAGE_FORMAT_TYPE_SNORM}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_4_4_4_4, ZE_IMAGE_FORMAT_TYPE_FLOAT}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_NV12, ZE_IMAGE_FORMAT_TYPE_UINT}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_NV12, ZE_IMAGE_FORMAT_TYPE_SINT}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_NV12, ZE_IMAGE_FORMAT_TYPE_SNORM}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_NV12, ZE_IMAGE_FORMAT_TYPE_FLOAT}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_YUYV, ZE_IMAGE_FORMAT_TYPE_UINT}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_YUYV, ZE_IMAGE_FORMAT_TYPE_SINT}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_YUYV, ZE_IMAGE_FORMAT_TYPE_SNORM}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_YUYV, ZE_IMAGE_FORMAT_TYPE_FLOAT}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_VYUY, ZE_IMAGE_FORMAT_TYPE_UINT}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_VYUY, ZE_IMAGE_FORMAT_TYPE_SINT}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_VYUY, ZE_IMAGE_FORMAT_TYPE_SNORM}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_VYUY, ZE_IMAGE_FORMAT_TYPE_FLOAT}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_YVYU, ZE_IMAGE_FORMAT_TYPE_UINT}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_YVYU, ZE_IMAGE_FORMAT_TYPE_SINT}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_YVYU, ZE_IMAGE_FORMAT_TYPE_SNORM}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_YVYU, ZE_IMAGE_FORMAT_TYPE_FLOAT}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_UYVY, ZE_IMAGE_FORMAT_TYPE_UINT}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_UYVY, ZE_IMAGE_FORMAT_TYPE_SINT}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_UYVY, ZE_IMAGE_FORMAT_TYPE_SNORM}), invalid);
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_UYVY, ZE_IMAGE_FORMAT_TYPE_FLOAT}), invalid);
|
||||
}
|
||||
|
||||
TEST(ImageFormatDescHelperTest, givenSupportedImageFormatLayoutAndTypeThenProperClEnumIsReturned) {
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_8, ZE_IMAGE_FORMAT_TYPE_UINT}), static_cast<cl_channel_type>(CL_UNSIGNED_INT8));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_8, ZE_IMAGE_FORMAT_TYPE_SINT}), static_cast<cl_channel_type>(CL_SIGNED_INT8));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_8, ZE_IMAGE_FORMAT_TYPE_UNORM}), static_cast<cl_channel_type>(CL_UNORM_INT8));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_8, ZE_IMAGE_FORMAT_TYPE_SNORM}), static_cast<cl_channel_type>(CL_SNORM_INT8));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_16, ZE_IMAGE_FORMAT_TYPE_UINT}), static_cast<cl_channel_type>(CL_UNSIGNED_INT16));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_16, ZE_IMAGE_FORMAT_TYPE_SINT}), static_cast<cl_channel_type>(CL_SIGNED_INT16));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_16, ZE_IMAGE_FORMAT_TYPE_UNORM}), static_cast<cl_channel_type>(CL_UNORM_INT16));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_16, ZE_IMAGE_FORMAT_TYPE_SNORM}), static_cast<cl_channel_type>(CL_SNORM_INT16));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_16, ZE_IMAGE_FORMAT_TYPE_FLOAT}), static_cast<cl_channel_type>(CL_HALF_FLOAT));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_32, ZE_IMAGE_FORMAT_TYPE_UINT}), static_cast<cl_channel_type>(CL_UNSIGNED_INT32));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_32, ZE_IMAGE_FORMAT_TYPE_SINT}), static_cast<cl_channel_type>(CL_SIGNED_INT32));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_32, ZE_IMAGE_FORMAT_TYPE_FLOAT}), static_cast<cl_channel_type>(CL_FLOAT));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_8_8, ZE_IMAGE_FORMAT_TYPE_UINT}), static_cast<cl_channel_type>(CL_UNSIGNED_INT8));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_8_8, ZE_IMAGE_FORMAT_TYPE_SINT}), static_cast<cl_channel_type>(CL_SIGNED_INT8));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_8_8, ZE_IMAGE_FORMAT_TYPE_UNORM}), static_cast<cl_channel_type>(CL_UNORM_INT8));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_8_8, ZE_IMAGE_FORMAT_TYPE_SNORM}), static_cast<cl_channel_type>(CL_SNORM_INT8));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_8_8_8_8, ZE_IMAGE_FORMAT_TYPE_UINT}), static_cast<cl_channel_type>(CL_UNSIGNED_INT8));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_8_8_8_8, ZE_IMAGE_FORMAT_TYPE_SINT}), static_cast<cl_channel_type>(CL_SIGNED_INT8));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_8_8_8_8, ZE_IMAGE_FORMAT_TYPE_UNORM}), static_cast<cl_channel_type>(CL_UNORM_INT8));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_8_8_8_8, ZE_IMAGE_FORMAT_TYPE_SNORM}), static_cast<cl_channel_type>(CL_SNORM_INT8));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_16_16, ZE_IMAGE_FORMAT_TYPE_UINT}), static_cast<cl_channel_type>(CL_UNSIGNED_INT16));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_16_16, ZE_IMAGE_FORMAT_TYPE_SINT}), static_cast<cl_channel_type>(CL_SIGNED_INT16));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_16_16, ZE_IMAGE_FORMAT_TYPE_UNORM}), static_cast<cl_channel_type>(CL_UNORM_INT16));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_16_16, ZE_IMAGE_FORMAT_TYPE_SNORM}), static_cast<cl_channel_type>(CL_SNORM_INT16));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_16_16, ZE_IMAGE_FORMAT_TYPE_FLOAT}), static_cast<cl_channel_type>(CL_HALF_FLOAT));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_16_16_16_16, ZE_IMAGE_FORMAT_TYPE_UINT}), static_cast<cl_channel_type>(CL_UNSIGNED_INT16));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_16_16_16_16, ZE_IMAGE_FORMAT_TYPE_SINT}), static_cast<cl_channel_type>(CL_SIGNED_INT16));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_16_16_16_16, ZE_IMAGE_FORMAT_TYPE_UNORM}), static_cast<cl_channel_type>(CL_UNORM_INT16));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_16_16_16_16, ZE_IMAGE_FORMAT_TYPE_SNORM}), static_cast<cl_channel_type>(CL_SNORM_INT16));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_16_16_16_16, ZE_IMAGE_FORMAT_TYPE_FLOAT}), static_cast<cl_channel_type>(CL_HALF_FLOAT));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_32_32, ZE_IMAGE_FORMAT_TYPE_UINT}), static_cast<cl_channel_type>(CL_UNSIGNED_INT32));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_32_32, ZE_IMAGE_FORMAT_TYPE_SINT}), static_cast<cl_channel_type>(CL_SIGNED_INT32));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_32_32, ZE_IMAGE_FORMAT_TYPE_FLOAT}), static_cast<cl_channel_type>(CL_FLOAT));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_32_32_32_32, ZE_IMAGE_FORMAT_TYPE_UINT}), static_cast<cl_channel_type>(CL_UNSIGNED_INT32));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_32_32_32_32, ZE_IMAGE_FORMAT_TYPE_SINT}), static_cast<cl_channel_type>(CL_SIGNED_INT32));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_32_32_32_32, ZE_IMAGE_FORMAT_TYPE_FLOAT}), static_cast<cl_channel_type>(CL_FLOAT));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_10_10_10_2, ZE_IMAGE_FORMAT_TYPE_UNORM}), static_cast<cl_channel_type>(CL_UNORM_INT_101010_2));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_5_6_5, ZE_IMAGE_FORMAT_TYPE_UNORM}), static_cast<cl_channel_type>(CL_UNORM_SHORT_565));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_5_5_5_1, ZE_IMAGE_FORMAT_TYPE_UNORM}), static_cast<cl_channel_type>(CL_UNORM_SHORT_555));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_NV12, ZE_IMAGE_FORMAT_TYPE_UNORM}), static_cast<cl_channel_type>(CL_NV12_INTEL));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_YUYV, ZE_IMAGE_FORMAT_TYPE_UNORM}), static_cast<cl_channel_type>(CL_YUYV_INTEL));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_VYUY, ZE_IMAGE_FORMAT_TYPE_UNORM}), static_cast<cl_channel_type>(CL_VYUY_INTEL));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_YVYU, ZE_IMAGE_FORMAT_TYPE_UNORM}), static_cast<cl_channel_type>(CL_YVYU_INTEL));
|
||||
EXPECT_EQ(getClChannelDataType({ZE_IMAGE_FORMAT_LAYOUT_UYVY, ZE_IMAGE_FORMAT_TYPE_UNORM}), static_cast<cl_channel_type>(CL_UYVY_INTEL));
|
||||
}
|
||||
|
||||
TEST(ImageFormatDescHelperTest, givenSwizzlesThenEqualityIsProperlyDetermined) {
|
||||
swizzles ref{ZE_IMAGE_FORMAT_SWIZZLE_R, ZE_IMAGE_FORMAT_SWIZZLE_G, ZE_IMAGE_FORMAT_SWIZZLE_B, ZE_IMAGE_FORMAT_SWIZZLE_A};
|
||||
EXPECT_FALSE((ref == swizzles{ZE_IMAGE_FORMAT_SWIZZLE_0, ZE_IMAGE_FORMAT_SWIZZLE_0, ZE_IMAGE_FORMAT_SWIZZLE_0, ZE_IMAGE_FORMAT_SWIZZLE_0}));
|
||||
EXPECT_FALSE((ref == swizzles{ZE_IMAGE_FORMAT_SWIZZLE_R, ZE_IMAGE_FORMAT_SWIZZLE_0, ZE_IMAGE_FORMAT_SWIZZLE_0, ZE_IMAGE_FORMAT_SWIZZLE_0}));
|
||||
EXPECT_FALSE((ref == swizzles{ZE_IMAGE_FORMAT_SWIZZLE_R, ZE_IMAGE_FORMAT_SWIZZLE_G, ZE_IMAGE_FORMAT_SWIZZLE_0, ZE_IMAGE_FORMAT_SWIZZLE_0}));
|
||||
EXPECT_FALSE((ref == swizzles{ZE_IMAGE_FORMAT_SWIZZLE_R, ZE_IMAGE_FORMAT_SWIZZLE_G, ZE_IMAGE_FORMAT_SWIZZLE_B, ZE_IMAGE_FORMAT_SWIZZLE_0}));
|
||||
EXPECT_TRUE((ref == swizzles{ZE_IMAGE_FORMAT_SWIZZLE_R, ZE_IMAGE_FORMAT_SWIZZLE_G, ZE_IMAGE_FORMAT_SWIZZLE_B, ZE_IMAGE_FORMAT_SWIZZLE_A}));
|
||||
}
|
||||
|
||||
TEST(ImageFormatDescHelperTest, givenSupportedSwizzlesThenProperClEnumIsReturned) {
|
||||
ze_image_format_desc_t format{};
|
||||
|
||||
format.x = ZE_IMAGE_FORMAT_SWIZZLE_R;
|
||||
format.y = ZE_IMAGE_FORMAT_SWIZZLE_0;
|
||||
format.z = ZE_IMAGE_FORMAT_SWIZZLE_0;
|
||||
format.w = ZE_IMAGE_FORMAT_SWIZZLE_1;
|
||||
EXPECT_EQ(getClChannelOrder(format), static_cast<cl_channel_order>(CL_R));
|
||||
|
||||
format.x = ZE_IMAGE_FORMAT_SWIZZLE_0;
|
||||
format.y = ZE_IMAGE_FORMAT_SWIZZLE_0;
|
||||
format.z = ZE_IMAGE_FORMAT_SWIZZLE_0;
|
||||
format.w = ZE_IMAGE_FORMAT_SWIZZLE_A;
|
||||
EXPECT_EQ(getClChannelOrder(format), static_cast<cl_channel_order>(CL_A));
|
||||
|
||||
format.x = ZE_IMAGE_FORMAT_SWIZZLE_R;
|
||||
format.y = ZE_IMAGE_FORMAT_SWIZZLE_G;
|
||||
format.z = ZE_IMAGE_FORMAT_SWIZZLE_0;
|
||||
format.w = ZE_IMAGE_FORMAT_SWIZZLE_1;
|
||||
EXPECT_EQ(getClChannelOrder(format), static_cast<cl_channel_order>(CL_RG));
|
||||
|
||||
format.x = ZE_IMAGE_FORMAT_SWIZZLE_R;
|
||||
format.y = ZE_IMAGE_FORMAT_SWIZZLE_0;
|
||||
format.z = ZE_IMAGE_FORMAT_SWIZZLE_0;
|
||||
format.w = ZE_IMAGE_FORMAT_SWIZZLE_A;
|
||||
EXPECT_EQ(getClChannelOrder(format), static_cast<cl_channel_order>(CL_RA));
|
||||
|
||||
format.x = ZE_IMAGE_FORMAT_SWIZZLE_R;
|
||||
format.y = ZE_IMAGE_FORMAT_SWIZZLE_G;
|
||||
format.z = ZE_IMAGE_FORMAT_SWIZZLE_B;
|
||||
format.w = ZE_IMAGE_FORMAT_SWIZZLE_1;
|
||||
EXPECT_EQ(getClChannelOrder(format), static_cast<cl_channel_order>(CL_RGB));
|
||||
|
||||
format.x = ZE_IMAGE_FORMAT_SWIZZLE_R;
|
||||
format.y = ZE_IMAGE_FORMAT_SWIZZLE_G;
|
||||
format.z = ZE_IMAGE_FORMAT_SWIZZLE_B;
|
||||
format.w = ZE_IMAGE_FORMAT_SWIZZLE_A;
|
||||
EXPECT_EQ(getClChannelOrder(format), static_cast<cl_channel_order>(CL_RGBA));
|
||||
|
||||
format.x = ZE_IMAGE_FORMAT_SWIZZLE_A;
|
||||
format.y = ZE_IMAGE_FORMAT_SWIZZLE_R;
|
||||
format.z = ZE_IMAGE_FORMAT_SWIZZLE_G;
|
||||
format.w = ZE_IMAGE_FORMAT_SWIZZLE_B;
|
||||
EXPECT_EQ(getClChannelOrder(format), static_cast<cl_channel_order>(CL_ARGB));
|
||||
|
||||
format.x = ZE_IMAGE_FORMAT_SWIZZLE_A;
|
||||
format.y = ZE_IMAGE_FORMAT_SWIZZLE_B;
|
||||
format.z = ZE_IMAGE_FORMAT_SWIZZLE_G;
|
||||
format.w = ZE_IMAGE_FORMAT_SWIZZLE_R;
|
||||
EXPECT_EQ(getClChannelOrder(format), static_cast<cl_channel_order>(CL_ABGR));
|
||||
|
||||
format.x = ZE_IMAGE_FORMAT_SWIZZLE_B;
|
||||
format.y = ZE_IMAGE_FORMAT_SWIZZLE_G;
|
||||
format.z = ZE_IMAGE_FORMAT_SWIZZLE_R;
|
||||
format.w = ZE_IMAGE_FORMAT_SWIZZLE_A;
|
||||
EXPECT_EQ(getClChannelOrder(format), static_cast<cl_channel_order>(CL_BGRA));
|
||||
}
|
||||
|
||||
} // namespace ult
|
||||
} // namespace L0
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
|
||||
#include "test.h"
|
||||
|
||||
#include "level_zero/core/source/image/image_format_desc_helper.h"
|
||||
#include "level_zero/core/source/image/image_hw.h"
|
||||
#include "level_zero/core/source/sampler/sampler_hw.h"
|
||||
#include "level_zero/core/test/unit_tests/fixtures/device_fixture.h"
|
||||
@@ -80,12 +81,14 @@ HWTEST2_F(SetKernelArg, givenImageAndKernelWhenSetArgImageThenCrossThreadDataIsS
|
||||
|
||||
imageArg.metadataPayload.arraySize = 0x18;
|
||||
imageArg.metadataPayload.numSamples = 0x1c;
|
||||
imageArg.metadataPayload.numMipLevels = 0x20;
|
||||
imageArg.metadataPayload.channelDataType = 0x20;
|
||||
imageArg.metadataPayload.channelOrder = 0x24;
|
||||
imageArg.metadataPayload.numMipLevels = 0x28;
|
||||
|
||||
imageArg.metadataPayload.flatWidth = 0x28;
|
||||
imageArg.metadataPayload.flatHeight = 0x30;
|
||||
imageArg.metadataPayload.flatPitch = 0x38;
|
||||
imageArg.metadataPayload.flatBaseOffset = 0x40;
|
||||
imageArg.metadataPayload.flatWidth = 0x30;
|
||||
imageArg.metadataPayload.flatHeight = 0x38;
|
||||
imageArg.metadataPayload.flatPitch = 0x40;
|
||||
imageArg.metadataPayload.flatBaseOffset = 0x48;
|
||||
|
||||
ze_image_desc_t desc = {};
|
||||
|
||||
@@ -142,6 +145,12 @@ HWTEST2_F(SetKernelArg, givenImageAndKernelWhenSetArgImageThenCrossThreadDataIsS
|
||||
|
||||
auto pFlatPitch = ptrOffset(crossThreadData, imageArg.metadataPayload.flatPitch);
|
||||
EXPECT_EQ(imgInfo.imgDesc.imageRowPitch - 1u, *pFlatPitch);
|
||||
|
||||
auto pChannelDataType = ptrOffset(crossThreadData, imageArg.metadataPayload.channelDataType);
|
||||
EXPECT_EQ(getClChannelDataType(desc.format), *reinterpret_cast<const cl_channel_type *>(pChannelDataType));
|
||||
|
||||
auto pChannelOrder = ptrOffset(crossThreadData, imageArg.metadataPayload.channelOrder);
|
||||
EXPECT_EQ(getClChannelOrder(desc.format), *reinterpret_cast<const cl_channel_order *>(pChannelOrder));
|
||||
}
|
||||
|
||||
HWTEST2_F(SetKernelArg, givenSamplerAndKernelWhenSetArgSamplerThenCrossThreadDataIsSet, ImageSupport) {
|
||||
|
||||
Reference in New Issue
Block a user