mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-10 15:12:56 +08:00
Fix reported row/slicePitch for mip-maps
- use information from gmm correctly - modify computation on gen8 Change-Id: Iaefcc20ce9436ef70cd2f4bc36654932c4b5af49
This commit is contained in:
committed by
sys_ocldev
parent
08faa004aa
commit
8a488ad52f
@@ -1082,6 +1082,67 @@ TEST(ImageTest, givenImageWhenAskedForPtrLengthForCpuMappingThenReturnCorrectVal
|
||||
EXPECT_EQ(expectedLength, retLength);
|
||||
}
|
||||
|
||||
TEST(ImageTest, givenMipMapImage3DWhenAskedForPtrOffsetForGpuMappingThenReturnOffsetWithoutSlicePitch) {
|
||||
MockContext ctx;
|
||||
cl_image_desc imageDesc{};
|
||||
imageDesc.image_type = CL_MEM_OBJECT_IMAGE3D;
|
||||
imageDesc.image_width = 5;
|
||||
imageDesc.image_height = 5;
|
||||
imageDesc.image_depth = 5;
|
||||
imageDesc.num_mip_levels = 2;
|
||||
|
||||
std::unique_ptr<Image> image(ImageHelper<Image3dDefaults>::create(&ctx, &imageDesc));
|
||||
EXPECT_FALSE(image->mappingOnCpuAllowed());
|
||||
|
||||
MemObjOffsetArray origin = {{}};
|
||||
|
||||
auto retOffset = image->calculateOffsetForMapping(origin);
|
||||
size_t expectedOffset = image->getSurfaceFormatInfo().ImageElementSizeInBytes * origin[0] +
|
||||
image->getHostPtrRowPitch() * origin[1];
|
||||
|
||||
EXPECT_EQ(expectedOffset, retOffset);
|
||||
}
|
||||
|
||||
TEST(ImageTest, givenMipMapImage2DArrayWhenAskedForPtrOffsetForGpuMappingThenReturnOffsetWithoutSlicePitch) {
|
||||
MockContext ctx;
|
||||
cl_image_desc imageDesc{};
|
||||
imageDesc.image_type = CL_MEM_OBJECT_IMAGE2D_ARRAY;
|
||||
imageDesc.image_width = 5;
|
||||
imageDesc.image_height = 5;
|
||||
imageDesc.image_array_size = 5;
|
||||
imageDesc.num_mip_levels = 2;
|
||||
|
||||
std::unique_ptr<Image> image(ImageHelper<Image2dArrayDefaults>::create(&ctx, &imageDesc));
|
||||
EXPECT_FALSE(image->mappingOnCpuAllowed());
|
||||
|
||||
MemObjOffsetArray origin = {{}};
|
||||
|
||||
auto retOffset = image->calculateOffsetForMapping(origin);
|
||||
size_t expectedOffset = image->getSurfaceFormatInfo().ImageElementSizeInBytes * origin[0] +
|
||||
image->getHostPtrRowPitch() * origin[1];
|
||||
|
||||
EXPECT_EQ(expectedOffset, retOffset);
|
||||
}
|
||||
|
||||
TEST(ImageTest, givenMipMapImage1DArrayWhenAskedForPtrOffsetForGpuMappingThenReturnOffsetWithoutSlicePitch) {
|
||||
MockContext ctx;
|
||||
cl_image_desc imageDesc{};
|
||||
imageDesc.image_type = CL_MEM_OBJECT_IMAGE1D_ARRAY;
|
||||
imageDesc.image_width = 5;
|
||||
imageDesc.image_array_size = 5;
|
||||
imageDesc.num_mip_levels = 2;
|
||||
|
||||
std::unique_ptr<Image> image(ImageHelper<Image1dArrayDefaults>::create(&ctx, &imageDesc));
|
||||
EXPECT_FALSE(image->mappingOnCpuAllowed());
|
||||
|
||||
MemObjOffsetArray origin = {{}};
|
||||
|
||||
auto retOffset = image->calculateOffsetForMapping(origin);
|
||||
size_t expectedOffset = image->getSurfaceFormatInfo().ImageElementSizeInBytes * origin[0];
|
||||
|
||||
EXPECT_EQ(expectedOffset, retOffset);
|
||||
}
|
||||
|
||||
typedef ::testing::TestWithParam<uint32_t> MipLevelCoordinateTest;
|
||||
|
||||
TEST_P(MipLevelCoordinateTest, givenMipmappedImageWhenValidateRegionAndOriginIsCalledThenAdditionalOriginCoordinateIsAnalyzed) {
|
||||
|
||||
@@ -794,6 +794,8 @@ struct NullImage : public Image {
|
||||
void setSurfaceMemoryObjectControlStateIndexToMocsTable(void *memory, uint32_t value) override {}
|
||||
void transformImage2dArrayTo3d(void *memory) override {}
|
||||
void transformImage3dTo2dArray(void *memory) override {}
|
||||
size_t getHostPtrRowPitchForMap(uint32_t mipLevel) override { return getHostPtrRowPitch(); }
|
||||
size_t getHostPtrSlicePitchForMap(uint32_t mipLevel) override { return getHostPtrSlicePitch(); }
|
||||
};
|
||||
|
||||
TEST_P(ValidParentImageFormatTest, givenParentChannelOrderWhenTestWithAllChannelOrdersThenReturnTrueForValidChannelOrder) {
|
||||
|
||||
Reference in New Issue
Block a user