mirror of
https://github.com/intel/compute-runtime.git
synced 2025-09-15 13:01:45 +08:00
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:
@ -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{};
|
||||
|
@ -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};
|
||||
|
||||
|
Reference in New Issue
Block a user