mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-05 09:09:04 +08:00
D3D sharable 2D texture: Map Aux GpuVa and set renderCompressed if possible
Change-Id: I508965d07f456af74ecef6e980337f42f5967b43
This commit is contained in:
committed by
sys_ocldev
parent
4ad96b75f5
commit
3532c6373f
@@ -81,8 +81,14 @@ class D3DTests : public PlatformFixture, public ::testing::Test {
|
||||
gmmOwnershipPassed = true;
|
||||
return alloc;
|
||||
}
|
||||
bool mapAuxGpuVA(GraphicsAllocation *graphicsAllocation) override {
|
||||
mapAuxGpuVACalled++;
|
||||
return mapAuxGpuVaRetValue;
|
||||
}
|
||||
Gmm *forceGmm = nullptr;
|
||||
bool gmmOwnershipPassed = false;
|
||||
uint32_t mapAuxGpuVACalled = 0u;
|
||||
bool mapAuxGpuVaRetValue = true;
|
||||
};
|
||||
|
||||
void setupMockGmm() {
|
||||
@@ -1280,4 +1286,76 @@ REGISTER_TYPED_TEST_CASE_P(D3DTests,
|
||||
|
||||
typedef ::testing::Types<D3DTypesHelper::D3D10, D3DTypesHelper::D3D11> D3DTypes;
|
||||
INSTANTIATE_TYPED_TEST_CASE_P(D3DSharingTests, D3DTests, D3DTypes);
|
||||
|
||||
template <typename T>
|
||||
class D3DAuxTests : public D3DTests<T> {};
|
||||
TYPED_TEST_CASE_P(D3DAuxTests);
|
||||
|
||||
TYPED_TEST_P(D3DAuxTests, given2dSharableTextureWithUnifiedAuxFlagsWhenCreatingThenMapAuxTableAndSetAsRenderCompressed) {
|
||||
this->mockSharingFcns->mockTexture2dDesc.MiscFlags = D3DResourceFlags::MISC_SHARED;
|
||||
this->mockSharingFcns->mockTexture2dDesc.ArraySize = 4;
|
||||
this->mockSharingFcns->mockTexture2dDesc.MipLevels = 4;
|
||||
|
||||
mockGmmResInfo->setUnifiedAuxTranslationCapable();
|
||||
EXPECT_CALL(*this->mockSharingFcns, getTexture2dDesc(_, _)).Times(1).WillOnce(SetArgPointee<0>(this->mockSharingFcns->mockTexture2dDesc));
|
||||
|
||||
auto image = std::unique_ptr<Image>(D3DTexture<TypeParam>::create2d(this->context, (D3DTexture2d *)&this->dummyD3DTexture, CL_MEM_READ_WRITE, 4, nullptr));
|
||||
ASSERT_NE(nullptr, image.get());
|
||||
|
||||
EXPECT_EQ(1u, mockMM.mapAuxGpuVACalled);
|
||||
EXPECT_TRUE(gmm->isRenderCompressed);
|
||||
}
|
||||
|
||||
TYPED_TEST_P(D3DAuxTests, given2dSharableTextureWithUnifiedAuxFlagsWhenFailOnAuxMappingThenDontSetAsRenderCompressed) {
|
||||
this->mockSharingFcns->mockTexture2dDesc.MiscFlags = D3DResourceFlags::MISC_SHARED;
|
||||
this->mockSharingFcns->mockTexture2dDesc.ArraySize = 4;
|
||||
this->mockSharingFcns->mockTexture2dDesc.MipLevels = 4;
|
||||
|
||||
mockGmmResInfo->setUnifiedAuxTranslationCapable();
|
||||
EXPECT_CALL(*this->mockSharingFcns, getTexture2dDesc(_, _)).Times(1).WillOnce(SetArgPointee<0>(this->mockSharingFcns->mockTexture2dDesc));
|
||||
|
||||
mockMM.mapAuxGpuVaRetValue = false;
|
||||
auto image = std::unique_ptr<Image>(D3DTexture<TypeParam>::create2d(this->context, (D3DTexture2d *)&this->dummyD3DTexture, CL_MEM_READ_WRITE, 4, nullptr));
|
||||
ASSERT_NE(nullptr, image.get());
|
||||
|
||||
EXPECT_EQ(1u, mockMM.mapAuxGpuVACalled);
|
||||
EXPECT_FALSE(gmm->isRenderCompressed);
|
||||
}
|
||||
|
||||
TYPED_TEST_P(D3DAuxTests, given2dSharableTextureWithoutUnifiedAuxFlagsWhenCreatingThenDontMapAuxTable) {
|
||||
this->mockSharingFcns->mockTexture2dDesc.MiscFlags = D3DResourceFlags::MISC_SHARED;
|
||||
this->mockSharingFcns->mockTexture2dDesc.ArraySize = 4;
|
||||
this->mockSharingFcns->mockTexture2dDesc.MipLevels = 4;
|
||||
|
||||
EXPECT_FALSE(gmm->unifiedAuxTranslationCapable());
|
||||
|
||||
EXPECT_CALL(*this->mockSharingFcns, getTexture2dDesc(_, _)).Times(1).WillOnce(SetArgPointee<0>(this->mockSharingFcns->mockTexture2dDesc));
|
||||
|
||||
auto image = std::unique_ptr<Image>(D3DTexture<TypeParam>::create2d(this->context, (D3DTexture2d *)&this->dummyD3DTexture, CL_MEM_READ_WRITE, 4, nullptr));
|
||||
ASSERT_NE(nullptr, image.get());
|
||||
|
||||
EXPECT_EQ(0u, mockMM.mapAuxGpuVACalled);
|
||||
EXPECT_FALSE(gmm->isRenderCompressed);
|
||||
}
|
||||
|
||||
TYPED_TEST_P(D3DAuxTests, given2dNonSharableTextureWithUnifiedAuxFlagsWhenCreatingThenDontMapAuxTable) {
|
||||
mockGmmResInfo->setUnifiedAuxTranslationCapable();
|
||||
EXPECT_CALL(*this->mockSharingFcns, getTexture2dDesc(_, _)).Times(1).WillOnce(SetArgPointee<0>(this->mockSharingFcns->mockTexture2dDesc));
|
||||
|
||||
mockGmmResInfo->setUnifiedAuxTranslationCapable();
|
||||
auto image = std::unique_ptr<Image>(D3DTexture<TypeParam>::create2d(this->context, (D3DTexture2d *)&this->dummyD3DTexture, CL_MEM_READ_WRITE, 1, nullptr));
|
||||
ASSERT_NE(nullptr, image.get());
|
||||
|
||||
EXPECT_EQ(0u, mockMM.mapAuxGpuVACalled);
|
||||
EXPECT_FALSE(gmm->isRenderCompressed);
|
||||
}
|
||||
|
||||
REGISTER_TYPED_TEST_CASE_P(D3DAuxTests,
|
||||
given2dSharableTextureWithUnifiedAuxFlagsWhenCreatingThenMapAuxTableAndSetAsRenderCompressed,
|
||||
given2dSharableTextureWithUnifiedAuxFlagsWhenFailOnAuxMappingThenDontSetAsRenderCompressed,
|
||||
given2dSharableTextureWithoutUnifiedAuxFlagsWhenCreatingThenDontMapAuxTable,
|
||||
given2dNonSharableTextureWithUnifiedAuxFlagsWhenCreatingThenDontMapAuxTable);
|
||||
|
||||
INSTANTIATE_TYPED_TEST_CASE_P(D3DSharingTests, D3DAuxTests, D3DTypes);
|
||||
|
||||
} // namespace OCLRT
|
||||
|
||||
Reference in New Issue
Block a user