mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-01 04:23:00 +08:00
Correct src/dst size for 1D,2D images
Signed-off-by: Kamil Kopryk <kamil.kopryk@intel.com> Related-To: NEO-4692
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
e9a43f1f66
commit
b81ef7a5c6
@@ -131,7 +131,7 @@ struct ClBlitProperties {
|
||||
|
||||
if (BlitterConstants::BlitDirection::HostPtrToImage == blitDirection ||
|
||||
BlitterConstants::BlitDirection::ImageToHostPtr == blitDirection) {
|
||||
adjustBlitPropertiesForImage(blitProperties, builtinOpParams);
|
||||
setBlitPropertiesForImage(blitProperties, builtinOpParams);
|
||||
}
|
||||
|
||||
return blitProperties;
|
||||
@@ -159,21 +159,23 @@ struct ClBlitProperties {
|
||||
}
|
||||
}
|
||||
|
||||
static void adjustBlitPropertiesForImage(BlitProperties &blitProperties, const BuiltinOpParams &builtinOpParams) {
|
||||
static void adjustBlitPropertiesForImage(MemObj *memObj, Vec3<size_t> &size, size_t &bytesPerPixel) {
|
||||
auto image = castToObject<Image>(memObj);
|
||||
auto image_width = image->getImageDesc().image_width;
|
||||
auto image_height = image->getImageDesc().image_height;
|
||||
auto image_depth = image->getImageDesc().image_depth;
|
||||
|
||||
size.x = image_width;
|
||||
size.y = image_height ? image_height : 1;
|
||||
size.z = image_depth ? image_depth : 1;
|
||||
bytesPerPixel = image->getSurfaceFormatInfo().surfaceFormat.ImageElementSizeInBytes;
|
||||
}
|
||||
|
||||
static void setBlitPropertiesForImage(BlitProperties &blitProperties, const BuiltinOpParams &builtinOpParams) {
|
||||
if (blitProperties.blitDirection == BlitterConstants::BlitDirection::ImageToHostPtr) {
|
||||
auto srcImage = castToObject<Image>(builtinOpParams.srcMemObj);
|
||||
blitProperties.bytesPerPixel = srcImage->getSurfaceFormatInfo().surfaceFormat.ImageElementSizeInBytes;
|
||||
blitProperties.srcSize.x = srcImage->getImageDesc().image_width;
|
||||
blitProperties.srcSize.y = srcImage->getImageDesc().image_height;
|
||||
blitProperties.srcSize.z = srcImage->getImageDesc().image_depth;
|
||||
|
||||
adjustBlitPropertiesForImage(builtinOpParams.srcMemObj, blitProperties.srcSize, blitProperties.bytesPerPixel);
|
||||
} else {
|
||||
auto dstImage = castToObject<Image>(builtinOpParams.dstMemObj);
|
||||
blitProperties.bytesPerPixel = dstImage->getSurfaceFormatInfo().surfaceFormat.ImageElementSizeInBytes;
|
||||
blitProperties.dstSize.x = dstImage->getImageDesc().image_width;
|
||||
blitProperties.dstSize.y = dstImage->getImageDesc().image_height;
|
||||
blitProperties.dstSize.z = dstImage->getImageDesc().image_depth;
|
||||
adjustBlitPropertiesForImage(builtinOpParams.dstMemObj, blitProperties.dstSize, blitProperties.bytesPerPixel);
|
||||
}
|
||||
|
||||
blitProperties.srcRowPitch = builtinOpParams.dstRowPitch ? builtinOpParams.dstRowPitch : blitProperties.srcSize.x * blitProperties.bytesPerPixel;
|
||||
|
||||
@@ -1288,6 +1288,24 @@ HWTEST_F(BcsTests, givenBlitterDirectSubmissionEnabledWhenProgrammingBlitterThen
|
||||
EXPECT_EQ(0ull, bbStart->getBatchBufferStartAddressGraphicsaddress472());
|
||||
}
|
||||
|
||||
HWTEST_F(BcsTests, givenImage1DWhenAdjustBlitPropertiesForImageIsCalledThenValuesAreSetCorrectly) {
|
||||
cl_image_desc imgDesc = Image1dDefaults::imageDesc;
|
||||
imgDesc.image_width = 10u;
|
||||
imgDesc.image_height = 0u;
|
||||
imgDesc.image_depth = 0u;
|
||||
std::unique_ptr<Image> image(Image1dHelper<>::create(context.get(), &imgDesc));
|
||||
Vec3<size_t> size{0, 0, 0};
|
||||
size_t bytesPerPixel = 0u;
|
||||
size_t expectedBytesPerPixel = image->getSurfaceFormatInfo().surfaceFormat.ImageElementSizeInBytes;
|
||||
|
||||
ClBlitProperties::adjustBlitPropertiesForImage(image.get(), size, bytesPerPixel);
|
||||
|
||||
EXPECT_EQ(imgDesc.image_width, size.x);
|
||||
EXPECT_EQ(1u, size.y);
|
||||
EXPECT_EQ(1u, size.z);
|
||||
EXPECT_EQ(expectedBytesPerPixel, bytesPerPixel);
|
||||
}
|
||||
|
||||
HWTEST_F(BcsTests, givenHostPtrToImageWhenConstructPropertiesIsCalledThenValuesAreSetCorrectly) {
|
||||
void *hostPtr = reinterpret_cast<void *>(0x12340000);
|
||||
cl_image_desc imgDesc = Image2dDefaults::imageDesc;
|
||||
|
||||
Reference in New Issue
Block a user