|
8 | 8 | #include "shared/source/gmm_helper/gmm.h" |
9 | 9 | #include "shared/source/gmm_helper/resource_info.h" |
10 | 10 | #include "shared/source/helpers/surface_format_info.h" |
| 11 | +#include "shared/test/common/helpers/debug_manager_state_restore.h" |
11 | 12 | #include "shared/test/common/helpers/default_hw_info.h" |
12 | 13 | #include "shared/test/common/mocks/mock_device.h" |
13 | 14 | #include "shared/test/common/mocks/mock_gmm_client_context.h" |
14 | 15 | #include "shared/test/common/mocks/mock_sip.h" |
15 | 16 |
|
16 | 17 | #include "test.h" |
17 | 18 |
|
| 19 | +#include "level_zero/core/source/hw_helpers/l0_hw_helper.h" |
18 | 20 | #include "level_zero/core/source/image/image_format_desc_helper.h" |
19 | 21 | #include "level_zero/core/source/image/image_formats.h" |
20 | 22 | #include "level_zero/core/source/image/image_hw.h" |
@@ -828,5 +830,93 @@ HWTEST2_F(ImageGetMemoryProperties, givenImageMemoryPropertiesExpStructureWhenGe |
828 | 830 | EXPECT_EQ(imageInfo.rowPitch, imageMemoryPropertiesExp.rowPitch); |
829 | 831 | } |
830 | 832 |
|
| 833 | +HWTEST2_F(ImageGetMemoryProperties, givenDebugFlagSetWhenCreatingImageThenEnableCompression, ImageSupport) { |
| 834 | + DebugManagerStateRestore restore; |
| 835 | + |
| 836 | + device->getNEODevice()->getRootDeviceEnvironment().getMutableHardwareInfo()->capabilityTable.ftrRenderCompressedImages = true; |
| 837 | + |
| 838 | + ze_image_desc_t zeDesc = {}; |
| 839 | + zeDesc.stype = ZE_STRUCTURE_TYPE_IMAGE_DESC; |
| 840 | + zeDesc.arraylevels = 1u; |
| 841 | + zeDesc.depth = 1u; |
| 842 | + zeDesc.height = 1u; |
| 843 | + zeDesc.width = 1u; |
| 844 | + zeDesc.miplevels = 1u; |
| 845 | + zeDesc.type = ZE_IMAGE_TYPE_2DARRAY; |
| 846 | + zeDesc.flags = ZE_IMAGE_FLAG_BIAS_UNCACHED; |
| 847 | + |
| 848 | + zeDesc.format = {ZE_IMAGE_FORMAT_LAYOUT_32, |
| 849 | + ZE_IMAGE_FORMAT_TYPE_UINT, |
| 850 | + ZE_IMAGE_FORMAT_SWIZZLE_R, |
| 851 | + ZE_IMAGE_FORMAT_SWIZZLE_G, |
| 852 | + ZE_IMAGE_FORMAT_SWIZZLE_B, |
| 853 | + ZE_IMAGE_FORMAT_SWIZZLE_A}; |
| 854 | + |
| 855 | + { |
| 856 | + Image *image_ptr = nullptr; |
| 857 | + auto result = Image::create(productFamily, device, &zeDesc, &image_ptr); |
| 858 | + EXPECT_EQ(result, ZE_RESULT_SUCCESS); |
| 859 | + EXPECT_NE(nullptr, image_ptr); |
| 860 | + std::unique_ptr<L0::Image> image(image_ptr); |
| 861 | + |
| 862 | + EXPECT_EQ(L0HwHelperHw<FamilyType>::get().imageCompressionSupported(device->getHwInfo()), image->getAllocation()->isCompressionEnabled()); |
| 863 | + } |
| 864 | + |
| 865 | + { |
| 866 | + NEO::DebugManager.flags.RenderCompressedImagesEnabled.set(1); |
| 867 | + |
| 868 | + Image *image_ptr = nullptr; |
| 869 | + auto result = Image::create(productFamily, device, &zeDesc, &image_ptr); |
| 870 | + EXPECT_EQ(result, ZE_RESULT_SUCCESS); |
| 871 | + EXPECT_NE(nullptr, image_ptr); |
| 872 | + std::unique_ptr<L0::Image> image(image_ptr); |
| 873 | + |
| 874 | + EXPECT_TRUE(image->getAllocation()->isCompressionEnabled()); |
| 875 | + } |
| 876 | + |
| 877 | + { |
| 878 | + NEO::DebugManager.flags.RenderCompressedImagesEnabled.set(0); |
| 879 | + |
| 880 | + Image *image_ptr = nullptr; |
| 881 | + auto result = Image::create(productFamily, device, &zeDesc, &image_ptr); |
| 882 | + EXPECT_EQ(result, ZE_RESULT_SUCCESS); |
| 883 | + EXPECT_NE(nullptr, image_ptr); |
| 884 | + std::unique_ptr<L0::Image> image(image_ptr); |
| 885 | + |
| 886 | + EXPECT_FALSE(image->getAllocation()->isCompressionEnabled()); |
| 887 | + } |
| 888 | +} |
| 889 | + |
| 890 | +HWTEST2_F(ImageGetMemoryProperties, givenDebugFlagSetWhenCreatingLinearImageThenDontEnableCompression, ImageSupport) { |
| 891 | + DebugManagerStateRestore restore; |
| 892 | + |
| 893 | + device->getNEODevice()->getRootDeviceEnvironment().getMutableHardwareInfo()->capabilityTable.ftrRenderCompressedImages = true; |
| 894 | + |
| 895 | + ze_image_desc_t zeDesc = {}; |
| 896 | + zeDesc.stype = ZE_STRUCTURE_TYPE_IMAGE_DESC; |
| 897 | + zeDesc.arraylevels = 1u; |
| 898 | + zeDesc.depth = 1u; |
| 899 | + zeDesc.height = 1u; |
| 900 | + zeDesc.width = 1u; |
| 901 | + zeDesc.miplevels = 1u; |
| 902 | + zeDesc.type = ZE_IMAGE_TYPE_1D; |
| 903 | + zeDesc.flags = ZE_IMAGE_FLAG_BIAS_UNCACHED; |
| 904 | + |
| 905 | + zeDesc.format = {ZE_IMAGE_FORMAT_LAYOUT_32, |
| 906 | + ZE_IMAGE_FORMAT_TYPE_UINT, |
| 907 | + ZE_IMAGE_FORMAT_SWIZZLE_R, |
| 908 | + ZE_IMAGE_FORMAT_SWIZZLE_G, |
| 909 | + ZE_IMAGE_FORMAT_SWIZZLE_B, |
| 910 | + ZE_IMAGE_FORMAT_SWIZZLE_A}; |
| 911 | + |
| 912 | + Image *image_ptr = nullptr; |
| 913 | + auto result = Image::create(productFamily, device, &zeDesc, &image_ptr); |
| 914 | + EXPECT_EQ(result, ZE_RESULT_SUCCESS); |
| 915 | + EXPECT_NE(nullptr, image_ptr); |
| 916 | + std::unique_ptr<L0::Image> image(image_ptr); |
| 917 | + |
| 918 | + EXPECT_FALSE(image->getAllocation()->isCompressionEnabled()); |
| 919 | +} |
| 920 | + |
831 | 921 | } // namespace ult |
832 | 922 | } // namespace L0 |
0 commit comments