fix: Set compression parameter when resource imported

Related-To: NEO-12375

Signed-off-by: Aravind Gopalakrishnan <aravind.gopalakrishnan@intel.com>
This commit is contained in:
Aravind Gopalakrishnan
2025-07-08 16:03:20 +00:00
committed by Compute-Runtime-Automation
parent ec0e493ca8
commit ed04190d77
7 changed files with 104 additions and 0 deletions

View File

@@ -170,6 +170,18 @@ HWTEST2_F(GmmAdditionalCompressionSettingsTests, givenEnabledAndPreferredE2ECWhe
EXPECT_TRUE(gmm->isCompressionEnabled());
}
HWTEST2_F(GmmAdditionalCompressionSettingsTests, givenGmmCreatedFromExistingGmmWithCompressionThenCompressionTrueForSecondResource, IsAtLeastXe2HpgCore) {
auto gmm = std::make_unique<MockGmm>(getGmmHelper());
gmm->resourceParams.Flags.Info.NotCompressed = 0;
auto &gfxCoreHelper = this->executionEnvironment->rootDeviceEnvironments[0]->getHelper<GfxCoreHelper>();
gfxCoreHelper.applyAdditionalCompressionSettings(*gmm, false);
EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.NotCompressed);
auto gmmRes2 = std::make_unique<Gmm>(getGmmHelper(), gmm->gmmResourceInfo->peekGmmResourceInfo(), false);
EXPECT_TRUE(gmmRes2->isCompressionEnabled());
}
HWTEST2_F(GmmAdditionalCompressionSettingsTests, givenDisabledE2ECAndEnabledDebugFlagWhenApplyingForBuffersThenSetValidFlags, IsAtLeastXe2HpgCore) {
DebugManagerStateRestore restore;
GmmRequirements gmmRequirements{};

View File

@@ -1446,6 +1446,42 @@ TEST_F(GmmCompressionTests, givenMediaCompressedImageApplyAuxFlagsForImageThenSe
EXPECT_TRUE(gmm.isCompressionEnabled());
}
HWTEST2_F(GmmCompressionTests, givenGmmCreatedFromExistingGmmWithRenderCompressionThenCompressionTrueForSecondResource, IsAtMostXeCore) {
GmmRequirements gmmRequirements{};
gmmRequirements.allowLargePages = true;
gmmRequirements.preferCompressed = false;
MockGmm gmm(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements);
auto flags = gmm.gmmResourceInfo->getResourceFlags();
flags->Gpu.CCS = true;
flags->Gpu.UnifiedAuxSurface = true;
flags->Info.MediaCompressed = true;
flags->Info.RenderCompressed = false;
gmm.resourceParams.Flags.Info.MediaCompressed = false;
gmm.resourceParams.Flags.Info.RenderCompressed = true;
gmm.setupImageResourceParams(imgInfo, true);
EXPECT_TRUE(gmm.isCompressionEnabled());
auto gmmRes2 = std::make_unique<Gmm>(getGmmHelper(), gmm.gmmResourceInfo->peekGmmResourceInfo(), false);
EXPECT_TRUE(gmmRes2->isCompressionEnabled());
}
HWTEST2_F(GmmCompressionTests, givenGmmCreatedFromExistingGmmWithCompressionDisabledThenCompressionFalseForSecondResource, IsAtMostXeCore) {
localPlatformDevice->capabilityTable.ftrRenderCompressedImages = false;
GmmRequirements gmmRequirements{};
gmmRequirements.allowLargePages = true;
gmmRequirements.preferCompressed = false;
MockGmm gmm(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements);
gmm.resourceParams.Flags.Info.MediaCompressed = false;
gmm.resourceParams.Flags.Info.RenderCompressed = false;
gmm.setupImageResourceParams(imgInfo, false);
EXPECT_FALSE(gmm.isCompressionEnabled());
auto gmmRes2 = std::make_unique<Gmm>(getGmmHelper(), gmm.gmmResourceInfo->peekGmmResourceInfo(), false);
EXPECT_FALSE(gmmRes2->isCompressionEnabled());
}
TEST_F(GmmCompressionTests, givenRenderCompressedImageApplyAuxFlagsForImageThenSetFlagsToCompressed) {
GmmRequirements gmmRequirements{};
gmmRequirements.allowLargePages = true;

View File

@@ -11,6 +11,7 @@
#include "shared/source/command_container/command_encoder.h"
#include "shared/source/command_container/encode_surface_state.h"
#include "shared/source/gmm_helper/gmm_helper.h"
#include "shared/source/gmm_helper/resource_info.h"
#include "shared/source/helpers/aligned_memory.h"
#include "shared/source/helpers/gfx_core_helper.h"
#include "shared/source/helpers/pipe_control_args.h"
@@ -1258,6 +1259,32 @@ HWTEST_F(GfxCoreHelperTest, whenSetCompressedFlagThenProperFlagSet) {
EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.RenderCompressed);
}
HWTEST2_F(GfxCoreHelperTest, whenSetNotCompressedFlagThenProperValueReturned, IsAtLeastXe2HpgCore) {
auto &gfxCoreHelper = getHelper<GfxCoreHelper>();
auto gmm = std::make_unique<MockGmm>(pDevice->getGmmHelper());
auto gmmFlags = gmm->gmmResourceInfo->getResourceFlags();
gmmFlags->Info.NotCompressed = 0;
EXPECT_TRUE(gfxCoreHelper.isCompressionAppliedForImportedResource(*gmm));
}
HWTEST2_F(GfxCoreHelperTest, whenSetRenderCompressedFlagThenProperValueReturned, IsAtMostDg2) {
auto &gfxCoreHelper = getHelper<GfxCoreHelper>();
auto gmm = std::make_unique<MockGmm>(pDevice->getGmmHelper());
auto gmmFlags = gmm->gmmResourceInfo->getResourceFlags();
gmmFlags->Info.RenderCompressed = 1;
gmmFlags->Info.MediaCompressed = 0;
EXPECT_TRUE(gfxCoreHelper.isCompressionAppliedForImportedResource(*gmm));
}
HWTEST2_F(GfxCoreHelperTest, whenSetMediaCompressedFlagThenProperValueReturned, IsAtMostDg2) {
auto &gfxCoreHelper = getHelper<GfxCoreHelper>();
auto gmm = std::make_unique<MockGmm>(pDevice->getGmmHelper());
auto gmmFlags = gmm->gmmResourceInfo->getResourceFlags();
gmmFlags->Info.RenderCompressed = 0;
gmmFlags->Info.MediaCompressed = 1;
EXPECT_TRUE(gfxCoreHelper.isCompressionAppliedForImportedResource(*gmm));
}
HWTEST_F(GfxCoreHelperTest, whenAdjustPreemptionSurfaceSizeIsCalledThenCsrSizeDoesntChange) {
auto &gfxCoreHelper = getHelper<GfxCoreHelper>();
size_t csrSize = 1024;