Force linear storage for images

Related-To: NEO-3114

Change-Id: I20dd6c7fdf4a223d45f1c3587d8a1327268742d8
Signed-off-by: Jobczyk, Lukasz <lukasz.jobczyk@intel.com>
This commit is contained in:
Jobczyk, Lukasz
2019-04-29 07:58:14 +02:00
parent ddcd3fbbed
commit e871852601
5 changed files with 56 additions and 1 deletions

View File

@ -1113,6 +1113,35 @@ TEST(ImageTest, givenNullHostPtrWhenIsCopyRequiredIsCalledThenFalseIsReturned) {
EXPECT_FALSE(Image::isCopyRequired(imgInfo, nullptr));
}
TEST(ImageTest, givenClMemForceLinearStorageSetWhenCreateImageThenDisallowTiling) {
cl_int retVal = CL_SUCCESS;
MockContext context;
cl_image_desc imageDesc = {};
imageDesc.image_width = 4096;
imageDesc.image_height = 1;
imageDesc.image_depth = 1;
imageDesc.image_type = CL_MEM_OBJECT_IMAGE3D;
cl_image_format imageFormat = {};
imageFormat.image_channel_data_type = CL_UNSIGNED_INT8;
imageFormat.image_channel_order = CL_R;
cl_mem_flags flags = CL_MEM_READ_WRITE | CL_MEM_FORCE_LINEAR_STORAGE_INTEL;
auto surfaceFormat = Image::getSurfaceFormatFromTable(flags, &imageFormat);
auto image = std::unique_ptr<Image>(Image::create(
&context,
flags,
surfaceFormat,
&imageDesc,
nullptr,
retVal));
EXPECT_FALSE(image->isTiledImage);
EXPECT_NE(nullptr, image);
EXPECT_EQ(CL_SUCCESS, retVal);
}
TEST(ImageTest, givenAllowedTilingWhenIsCopyRequiredIsCalledThenTrueIsReturned) {
ImageInfo imgInfo{};
cl_image_desc imageDesc{};

View File

@ -31,6 +31,26 @@ TEST(MemObjHelper, givenNullPropertiesWhenParsingMemoryPropertiesThenTrueIsRetur
EXPECT_TRUE(MemObjHelper::parseMemoryProperties(nullptr, propertiesStruct));
}
TEST(MemObjHelper, givenClMemForceLinearStorageFlagWhenCheckForLinearStorageForceThenReturnProperValue) {
MemoryProperties properties;
properties.flags |= CL_MEM_FORCE_LINEAR_STORAGE_INTEL;
properties.flags_intel = 0;
EXPECT_TRUE(MemObjHelper::isLinearStorageForced(properties));
properties.flags = 0;
properties.flags_intel |= CL_MEM_FORCE_LINEAR_STORAGE_INTEL;
EXPECT_TRUE(MemObjHelper::isLinearStorageForced(properties));
properties.flags |= CL_MEM_FORCE_LINEAR_STORAGE_INTEL;
properties.flags_intel |= CL_MEM_FORCE_LINEAR_STORAGE_INTEL;
EXPECT_TRUE(MemObjHelper::isLinearStorageForced(properties));
properties.flags = 0;
properties.flags_intel = 0;
EXPECT_FALSE(MemObjHelper::isLinearStorageForced(properties));
}
TEST(MemObjHelper, givenEmptyPropertiesWhenParsingMemoryPropertiesThenTrueIsReturned) {
cl_mem_properties_intel properties[] = {0};