fix: don't query vm bind support on i915 prelim for pre-Xe platforms
Related-To: HSD-18036843571 Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
parent
71457b7f08
commit
bb5f6d9660
|
@ -138,6 +138,10 @@ bool IoctlHelperPrelim20::getTopologyDataAndMap(const HardwareInfo &hwInfo, DrmQ
|
|||
}
|
||||
|
||||
bool IoctlHelperPrelim20::isVmBindAvailable() {
|
||||
const auto &productHelper = drm.getRootDeviceEnvironment().getHelper<ProductHelper>();
|
||||
if (!productHelper.isNewResidencyModelSupported()) {
|
||||
return false;
|
||||
}
|
||||
int vmBindSupported = 0;
|
||||
GetParam getParam{};
|
||||
getParam.param = PRELIM_I915_PARAM_HAS_VM_BIND;
|
||||
|
|
|
@ -108,6 +108,7 @@ class ProductHelper {
|
|||
virtual bool allowCompression(const HardwareInfo &hwInfo) const = 0;
|
||||
virtual LocalMemoryAccessMode getLocalMemoryAccessMode(const HardwareInfo &hwInfo) const = 0;
|
||||
virtual bool isAllocationSizeAdjustmentRequired(const HardwareInfo &hwInfo) const = 0;
|
||||
virtual bool isNewResidencyModelSupported() const = 0;
|
||||
virtual bool isDirectSubmissionSupported(ReleaseHelper *releaseHelper) const = 0;
|
||||
virtual bool isDirectSubmissionConstantCacheInvalidationNeeded(const HardwareInfo &hwInfo) const = 0;
|
||||
virtual std::pair<bool, bool> isPipeControlPriorToNonPipelinedStateCommandsWARequired(const HardwareInfo &hwInfo, bool isRcs, const ReleaseHelper *releaseHelper) const = 0;
|
||||
|
|
|
@ -40,6 +40,11 @@ bool ProductHelperHw<gfxProduct>::isBlitterFullySupported(const HardwareInfo &hw
|
|||
return false;
|
||||
}
|
||||
|
||||
template <PRODUCT_FAMILY gfxProduct>
|
||||
bool ProductHelperHw<gfxProduct>::isNewResidencyModelSupported() const {
|
||||
return false;
|
||||
}
|
||||
|
||||
template <PRODUCT_FAMILY gfxProduct>
|
||||
bool ProductHelperHw<gfxProduct>::heapInLocalMem(const HardwareInfo &hwInfo) const {
|
||||
return false;
|
||||
|
|
|
@ -55,6 +55,7 @@ class ProductHelperHw : public ProductHelper {
|
|||
bool allowCompression(const HardwareInfo &hwInfo) const override;
|
||||
LocalMemoryAccessMode getLocalMemoryAccessMode(const HardwareInfo &hwInfo) const override;
|
||||
bool isAllocationSizeAdjustmentRequired(const HardwareInfo &hwInfo) const override;
|
||||
bool isNewResidencyModelSupported() const override;
|
||||
bool isDirectSubmissionSupported(ReleaseHelper *releaseHelper) const override;
|
||||
bool isDirectSubmissionConstantCacheInvalidationNeeded(const HardwareInfo &hwInfo) const override;
|
||||
std::pair<bool, bool> isPipeControlPriorToNonPipelinedStateCommandsWARequired(const HardwareInfo &hwInfo, bool isRcs, const ReleaseHelper *releaseHelper) const override;
|
||||
|
|
|
@ -49,6 +49,11 @@ bool ProductHelperHw<gfxProduct>::isBlitterFullySupported(const HardwareInfo &hw
|
|||
return hwInfo.capabilityTable.blitterOperationsSupported;
|
||||
}
|
||||
|
||||
template <PRODUCT_FAMILY gfxProduct>
|
||||
bool ProductHelperHw<gfxProduct>::isNewResidencyModelSupported() const {
|
||||
return true;
|
||||
}
|
||||
|
||||
template <PRODUCT_FAMILY gfxProduct>
|
||||
void ProductHelperHw<gfxProduct>::setCapabilityCoherencyFlag(const HardwareInfo &hwInfo, bool &coherencyFlag) {
|
||||
coherencyFlag = false;
|
||||
|
|
|
@ -203,6 +203,11 @@ bool ProductHelperHw<IGFX_UNKNOWN>::isAllocationSizeAdjustmentRequired(const Har
|
|||
return false;
|
||||
}
|
||||
|
||||
template <>
|
||||
bool ProductHelperHw<IGFX_UNKNOWN>::isNewResidencyModelSupported() const {
|
||||
return false;
|
||||
}
|
||||
|
||||
template <>
|
||||
std::pair<bool, bool> ProductHelperHw<IGFX_UNKNOWN>::isPipeControlPriorToNonPipelinedStateCommandsWARequired(const HardwareInfo &hwInfo, bool isRcs, const ReleaseHelper *releaseHelper) const {
|
||||
return {false, false};
|
||||
|
|
|
@ -1324,7 +1324,9 @@ TEST_F(DrmMemoryOperationsHandlerBindTest, givenClosEnabledAndAllocationToBeCach
|
|||
memoryManager->freeGraphicsMemory(allocation);
|
||||
}
|
||||
|
||||
TEST(DrmResidencyHandlerTests, givenClosIndexAndMemoryTypeWhenAskingForPatIndexThenReturnCorrectValue) {
|
||||
using DrmResidencyHandlerTests = ::testing::Test;
|
||||
|
||||
HWTEST2_F(DrmResidencyHandlerTests, givenClosIndexAndMemoryTypeWhenAskingForPatIndexThenReturnCorrectValue, IsWithinXeGfxFamily) {
|
||||
MockExecutionEnvironment mockExecutionEnvironment{};
|
||||
auto &gfxCoreHelper = mockExecutionEnvironment.rootDeviceEnvironments[0]->getHelper<GfxCoreHelper>();
|
||||
|
||||
|
@ -1349,7 +1351,7 @@ TEST(DrmResidencyHandlerTests, givenClosIndexAndMemoryTypeWhenAskingForPatIndexT
|
|||
}
|
||||
}
|
||||
|
||||
TEST(DrmResidencyHandlerTests, givenForceAllResourcesUnchashedSetAskingForPatIndexThenReturnCorrectValue) {
|
||||
HWTEST2_F(DrmResidencyHandlerTests, givenForceAllResourcesUnchashedSetAskingForPatIndexThenReturnCorrectValue, IsWithinXeGfxFamily) {
|
||||
DebugManagerStateRestore restorer;
|
||||
debugManager.flags.ForceAllResourcesUncached.set(1);
|
||||
|
||||
|
@ -1377,7 +1379,7 @@ TEST(DrmResidencyHandlerTests, givenForceAllResourcesUnchashedSetAskingForPatInd
|
|||
}
|
||||
}
|
||||
|
||||
TEST(DrmResidencyHandlerTests, givenSupportedVmBindAndDebugFlagUseVmBindWhenQueryingIsVmBindAvailableThenBindAvailableIsInitializedOnce) {
|
||||
HWTEST2_F(DrmResidencyHandlerTests, givenSupportedVmBindAndDebugFlagUseVmBindWhenQueryingIsVmBindAvailableThenBindAvailableIsInitializedOnce, IsWithinXeGfxFamily) {
|
||||
DebugManagerStateRestore restorer;
|
||||
debugManager.flags.UseVmBind.set(1);
|
||||
|
||||
|
@ -1395,7 +1397,7 @@ TEST(DrmResidencyHandlerTests, givenSupportedVmBindAndDebugFlagUseVmBindWhenQuer
|
|||
EXPECT_EQ(1u, drm.context.vmBindQueryCalled);
|
||||
}
|
||||
|
||||
TEST(DrmResidencyHandlerTests, givenDebugFlagUseVmBindWhenQueryingIsVmBindAvailableThenSupportIsOverriden) {
|
||||
HWTEST2_F(DrmResidencyHandlerTests, givenDebugFlagUseVmBindWhenQueryingIsVmBindAvailableThenSupportIsOverriden, IsWithinXeGfxFamily) {
|
||||
DebugManagerStateRestore restorer;
|
||||
debugManager.flags.UseVmBind.set(1);
|
||||
|
||||
|
@ -1417,7 +1419,7 @@ namespace NEO {
|
|||
extern bool disableBindDefaultInTests;
|
||||
}
|
||||
|
||||
TEST(DrmResidencyHandlerTests, givenDebugFlagUseVmBindSetDefaultAndBindAvailableInDrmWhenQueryingIsVmBindAvailableThenBindIsAvailable) {
|
||||
HWTEST2_F(DrmResidencyHandlerTests, givenDebugFlagUseVmBindSetDefaultAndBindAvailableInDrmWhenQueryingIsVmBindAvailableThenBindIsAvailableWhenSupported, IsWithinXeGfxFamily) {
|
||||
DebugManagerStateRestore restorer;
|
||||
debugManager.flags.UseVmBind.set(-1);
|
||||
VariableBackup<bool> disableBindBackup(&disableBindDefaultInTests, false);
|
||||
|
@ -1427,13 +1429,15 @@ TEST(DrmResidencyHandlerTests, givenDebugFlagUseVmBindSetDefaultAndBindAvailable
|
|||
drm.context.vmBindQueryValue = 1;
|
||||
drm.context.vmBindQueryReturn = 0;
|
||||
EXPECT_FALSE(drm.bindAvailable);
|
||||
auto &productHelper = drm.getRootDeviceEnvironment().getHelper<ProductHelper>();
|
||||
|
||||
EXPECT_EQ(0u, drm.context.vmBindQueryCalled);
|
||||
EXPECT_TRUE(drm.isVmBindAvailable());
|
||||
EXPECT_EQ(drm.isVmBindAvailable(), productHelper.isNewResidencyModelSupported());
|
||||
EXPECT_EQ(drm.bindAvailable, productHelper.isNewResidencyModelSupported());
|
||||
EXPECT_EQ(1u, drm.context.vmBindQueryCalled);
|
||||
}
|
||||
|
||||
TEST(DrmResidencyHandlerTests, givenDebugFlagUseVmBindSetDefaultWhenQueryingIsVmBindAvailableFailedThenBindIsNot) {
|
||||
HWTEST2_F(DrmResidencyHandlerTests, givenDebugFlagUseVmBindSetDefaultWhenQueryingIsVmBindAvailableFailedThenBindIsNot, IsWithinXeGfxFamily) {
|
||||
DebugManagerStateRestore restorer;
|
||||
debugManager.flags.UseVmBind.set(-1);
|
||||
VariableBackup<bool> disableBindBackup(&disableBindDefaultInTests, false);
|
||||
|
@ -1450,7 +1454,7 @@ TEST(DrmResidencyHandlerTests, givenDebugFlagUseVmBindSetDefaultWhenQueryingIsVm
|
|||
EXPECT_EQ(1u, drm.context.vmBindQueryCalled);
|
||||
}
|
||||
|
||||
TEST(DrmResidencyHandlerTests, givenDebugFlagUseVmBindSetDefaultWhenQueryingIsVmBindAvailableSuccedAndReportNoBindAvailableInDrmThenBindIsNotAvailable) {
|
||||
HWTEST2_F(DrmResidencyHandlerTests, givenDebugFlagUseVmBindSetDefaultWhenQueryingIsVmBindAvailableSuccedAndReportNoBindAvailableInDrmThenBindIsNotAvailable, IsWithinXeGfxFamily) {
|
||||
DebugManagerStateRestore restorer;
|
||||
debugManager.flags.UseVmBind.set(-1);
|
||||
VariableBackup<bool> disableBindBackup(&disableBindDefaultInTests, false);
|
||||
|
@ -1553,7 +1557,7 @@ TEST(DrmSetPairTests, whenQueryingForSetPairAvailableAndDebugKeyNotSetThenNoSupp
|
|||
EXPECT_EQ(0u, drm.context.setPairQueryCalled);
|
||||
}
|
||||
|
||||
TEST(DrmResidencyHandlerTests, whenQueryingForSetPairAvailableAndVmBindAvailableThenBothExpectedValueIsReturned) {
|
||||
HWTEST2_F(DrmResidencyHandlerTests, whenQueryingForSetPairAvailableAndVmBindAvailableThenBothExpectedValueIsReturned, IsWithinXeGfxFamily) {
|
||||
DebugManagerStateRestore restorer;
|
||||
debugManager.flags.UseVmBind.set(-1);
|
||||
debugManager.flags.EnableSetPair.set(1);
|
||||
|
@ -1561,6 +1565,7 @@ TEST(DrmResidencyHandlerTests, whenQueryingForSetPairAvailableAndVmBindAvailable
|
|||
|
||||
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
|
||||
DrmQueryMock drm{*executionEnvironment->rootDeviceEnvironments[0]};
|
||||
auto &productHelper = drm.getRootDeviceEnvironment().getHelper<ProductHelper>();
|
||||
|
||||
drm.context.setPairQueryValue = 1;
|
||||
drm.context.setPairQueryReturn = 0;
|
||||
|
@ -1578,7 +1583,8 @@ TEST(DrmResidencyHandlerTests, whenQueryingForSetPairAvailableAndVmBindAvailable
|
|||
EXPECT_EQ(1u, drm.context.setPairQueryCalled);
|
||||
|
||||
EXPECT_EQ(0u, drm.context.vmBindQueryCalled);
|
||||
EXPECT_TRUE(drm.isVmBindAvailable());
|
||||
EXPECT_EQ(drm.isVmBindAvailable(), productHelper.isNewResidencyModelSupported());
|
||||
EXPECT_EQ(drm.bindAvailable, productHelper.isNewResidencyModelSupported());
|
||||
EXPECT_EQ(1u, drm.context.vmBindQueryCalled);
|
||||
}
|
||||
|
||||
|
|
|
@ -83,6 +83,7 @@ TEST(IoctlHelperPrelimTest, whenGettingVmBindAvailabilityThenProperValueIsReturn
|
|||
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
|
||||
DrmQueryMock drm{*executionEnvironment->rootDeviceEnvironments[0]};
|
||||
|
||||
const auto &productHelper = executionEnvironment->rootDeviceEnvironments[0]->getProductHelper();
|
||||
IoctlHelperPrelim20 ioctlHelper{drm};
|
||||
|
||||
for (auto &ioctlValue : {0, EINVAL}) {
|
||||
|
@ -91,12 +92,17 @@ TEST(IoctlHelperPrelimTest, whenGettingVmBindAvailabilityThenProperValueIsReturn
|
|||
drm.context.vmBindQueryValue = hasVmBind;
|
||||
drm.context.vmBindQueryCalled = 0u;
|
||||
|
||||
if (ioctlValue == 0) {
|
||||
EXPECT_EQ(hasVmBind, ioctlHelper.isVmBindAvailable());
|
||||
if (productHelper.isNewResidencyModelSupported()) {
|
||||
if (ioctlValue == 0) {
|
||||
EXPECT_EQ(hasVmBind, ioctlHelper.isVmBindAvailable());
|
||||
} else {
|
||||
EXPECT_FALSE(ioctlHelper.isVmBindAvailable());
|
||||
}
|
||||
EXPECT_EQ(1u, drm.context.vmBindQueryCalled);
|
||||
} else {
|
||||
EXPECT_FALSE(ioctlHelper.isVmBindAvailable());
|
||||
EXPECT_EQ(0u, drm.context.vmBindQueryCalled);
|
||||
}
|
||||
EXPECT_EQ(1u, drm.context.vmBindQueryCalled);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue