diff --git a/level_zero/core/test/unit_tests/sources/driver/test_driver.cpp b/level_zero/core/test/unit_tests/sources/driver/test_driver.cpp index b43af7ce32..74c53891b4 100644 --- a/level_zero/core/test/unit_tests/sources/driver/test_driver.cpp +++ b/level_zero/core/test/unit_tests/sources/driver/test_driver.cpp @@ -5,18 +5,14 @@ * */ -#include "shared/source/built_ins/built_ins.h" -#include "shared/source/built_ins/sip.h" #include "shared/source/gmm_helper/gmm.h" -#include "shared/source/helpers/driver_model_type.h" -#include "shared/source/helpers/gfx_core_helper.h" -#include "shared/source/helpers/string.h" +#include "shared/source/gmm_helper/gmm_resource_usage_ocl_buffer.h" #include "shared/source/memory_manager/allocation_properties.h" #include "shared/source/memory_manager/memory_allocation.h" #include "shared/source/memory_manager/os_agnostic_memory_manager.h" -#include "shared/source/os_interface/device_factory.h" #include "shared/source/os_interface/os_inc_base.h" #include "shared/source/os_interface/product_helper.h" +#include "shared/source/utilities/stackvec.h" #include "shared/test/common/helpers/debug_manager_state_restore.h" #include "shared/test/common/helpers/memory_management.h" #include "shared/test/common/helpers/ult_hw_config.h" @@ -34,11 +30,10 @@ #include "level_zero/api/core/preview_api_entrypoints.h" #include "level_zero/core/source/builtin/builtin_functions_lib_impl.h" +#include "level_zero/core/source/device/device.h" #include "level_zero/core/source/driver/driver_handle_imp.h" #include "level_zero/core/source/driver/driver_imp.h" -#include "level_zero/core/source/driver/extension_injector.h" #include "level_zero/core/source/gfx_core_helpers/l0_gfx_core_helper.h" -#include "level_zero/core/test/common/ult_helpers_l0.h" #include "level_zero/core/test/unit_tests/fixtures/device_fixture.h" #include "level_zero/core/test/unit_tests/fixtures/host_pointer_manager_fixture.h" #include "level_zero/core/test/unit_tests/mocks/mock_builtin_functions_lib_impl.h" @@ -46,14 +41,27 @@ #include "level_zero/core/test/unit_tests/mocks/mock_driver.h" #include "level_zero/core/test/unit_tests/mocks/mock_driver_handle.h" #include "level_zero/driver_experimental/mcl_ext/zex_mutable_cmdlist_ext.h" -#include "level_zero/driver_experimental/zex_api.h" +#include "level_zero/driver_experimental/zex_cmdlist.h" #include "level_zero/driver_experimental/zex_context.h" #include "level_zero/driver_experimental/zex_driver.h" +#include "level_zero/driver_experimental/zex_event.h" +#include "level_zero/driver_experimental/zex_module.h" #include "level_zero/ze_intel_gpu.h" #include "driver_version.h" +#include "neo_igfxfmid.h" -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include namespace L0 { namespace ult { @@ -395,7 +403,7 @@ class MemoryManagerNTHandleMock : public NEO::OsAgnosticMemoryManager { GmmRequirements gmmRequirements{}; gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; - graphicsAllocation->setDefaultGmm(new Gmm(executionEnvironment.rootDeviceEnvironments[0]->getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements)); + graphicsAllocation->setDefaultGmm(new Gmm(executionEnvironment.rootDeviceEnvironments[0]->getGmmHelper(), nullptr, 1, 0, gmmResourceUsageOclBuffer, {}, gmmRequirements)); return graphicsAllocation; } }; diff --git a/opencl/source/sharings/d3d/d3d_surface.cpp b/opencl/source/sharings/d3d/d3d_surface.cpp index 1f3014e915..c31c9bd59f 100644 --- a/opencl/source/sharings/d3d/d3d_surface.cpp +++ b/opencl/source/sharings/d3d/d3d_surface.cpp @@ -122,7 +122,7 @@ Image *D3DSurface::create(Context *context, cl_dx9_surface_info_khr *surfaceInfo auto multiGraphicsAllocation = MultiGraphicsAllocation(rootDeviceIndex); multiGraphicsAllocation.addAllocation(alloc); - return Image::createSharedImage(context, surface, mcsSurfaceInfo, std::move(multiGraphicsAllocation), nullptr, flags, 0, clSurfaceFormat, imgInfo, __GMM_NO_CUBE_MAP, 0, 0, false); + return Image::createSharedImage(context, surface, mcsSurfaceInfo, std::move(multiGraphicsAllocation), nullptr, flags, 0, clSurfaceFormat, imgInfo, gmmNoCubeMap, 0, 0, false); } void D3DSurface::synchronizeObject(UpdateData &updateData) { diff --git a/opencl/source/sharings/d3d/d3d_texture.cpp b/opencl/source/sharings/d3d/d3d_texture.cpp index 9de4ff370a..c2580ed7db 100644 --- a/opencl/source/sharings/d3d/d3d_texture.cpp +++ b/opencl/source/sharings/d3d/d3d_texture.cpp @@ -192,7 +192,7 @@ Image *D3DTexture::create3d(Context *context, D3DTexture3d *d3dTexture, cl_ auto &gfxCoreHelper = rootDeviceEnvironment.getHelper(); auto d3dTextureObj = new D3DTexture(context, d3dTexture, subresource, textureStaging, sharedResource); auto *clSurfaceFormat = D3DSharing::findSurfaceFormatInfo(alloc->getDefaultGmm()->gmmResourceInfo->getResourceFormat(), flags, gfxCoreHelper.packedFormatsSupported()); - imgInfo.qPitch = alloc->getDefaultGmm()->queryQPitch(GMM_RESOURCE_TYPE::RESOURCE_3D); + imgInfo.qPitch = alloc->getDefaultGmm()->queryQPitch(); imgInfo.surfaceFormat = &clSurfaceFormat->surfaceFormat; diff --git a/opencl/source/sharings/gl/linux/gl_buffer_linux.cpp b/opencl/source/sharings/gl/linux/gl_buffer_linux.cpp index 85e407bb35..c3b19ac870 100644 --- a/opencl/source/sharings/gl/linux/gl_buffer_linux.cpp +++ b/opencl/source/sharings/gl/linux/gl_buffer_linux.cpp @@ -7,6 +7,8 @@ #include "shared/source/execution_environment/root_device_environment.h" #include "shared/source/gmm_helper/gmm.h" +#include "shared/source/gmm_helper/gmm_helper.h" +#include "shared/source/gmm_helper/resource_info.h" #include "shared/source/helpers/get_info.h" #include "shared/source/memory_manager/allocation_properties.h" #include "shared/source/memory_manager/memory_manager.h" @@ -226,7 +228,8 @@ GraphicsAllocation *GlBuffer::createGraphicsAllocation(Context *context, unsigne if (bufferInfo.pGmmResInfo) { DEBUG_BREAK_IF(graphicsAllocation->getDefaultGmm() != nullptr); auto helper = context->getDevice(0)->getRootDeviceEnvironment().getGmmHelper(); - graphicsAllocation->setDefaultGmm(new Gmm(helper, bufferInfo.pGmmResInfo)); + auto gmmResourceInfo = std::unique_ptr(GmmResourceInfo::create(helper->getClientContext(), bufferInfo.pGmmResInfo)); + graphicsAllocation->setDefaultGmm(new Gmm(helper, gmmResourceInfo.get())); } else { auto helper = context->getDevice(0)->getRootDeviceEnvironment().getGmmHelper(); StorageInfo storageInfo = {}; diff --git a/opencl/source/sharings/gl/linux/gl_texture_linux.cpp b/opencl/source/sharings/gl/linux/gl_texture_linux.cpp index b2bb7d6125..08466fd3a1 100644 --- a/opencl/source/sharings/gl/linux/gl_texture_linux.cpp +++ b/opencl/source/sharings/gl/linux/gl_texture_linux.cpp @@ -219,7 +219,7 @@ Image *GlTexture::createSharedGlTexture(Context *context, cl_mem_flags flags, cl uint32_t cubeFaceIndex = GmmTypesConverter::getCubeFaceIndex(target); - uint32_t qPitch = gmm->queryQPitch(gmm->gmmResourceInfo->getResourceType()); + uint32_t qPitch = gmm->queryQPitch(); GraphicsAllocation *mcsAlloc = nullptr; diff --git a/opencl/source/sharings/gl/windows/gl_buffer_windows.cpp b/opencl/source/sharings/gl/windows/gl_buffer_windows.cpp index 87cc849a0a..6c396cff66 100644 --- a/opencl/source/sharings/gl/windows/gl_buffer_windows.cpp +++ b/opencl/source/sharings/gl/windows/gl_buffer_windows.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2024 Intel Corporation + * Copyright (C) 2020-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -7,6 +7,8 @@ #include "shared/source/execution_environment/root_device_environment.h" #include "shared/source/gmm_helper/gmm.h" +#include "shared/source/gmm_helper/gmm_helper.h" +#include "shared/source/gmm_helper/resource_info.h" #include "shared/source/helpers/get_info.h" #include "shared/source/memory_manager/allocation_properties.h" #include "shared/source/memory_manager/memory_manager.h" @@ -168,7 +170,8 @@ GraphicsAllocation *GlBuffer::createGraphicsAllocation(Context *context, unsigne if (bufferInfo.pGmmResInfo) { DEBUG_BREAK_IF(graphicsAllocation->getDefaultGmm() != nullptr); auto gmmHelper = context->getDevice(0)->getRootDeviceEnvironment().getGmmHelper(); - graphicsAllocation->setDefaultGmm(new Gmm(gmmHelper, bufferInfo.pGmmResInfo)); + auto gmmResourceInfo = std::unique_ptr(GmmResourceInfo::create(gmmHelper->getClientContext(), bufferInfo.pGmmResInfo)); + graphicsAllocation->setDefaultGmm(new Gmm(gmmHelper, gmmResourceInfo.get())); } } diff --git a/opencl/source/sharings/gl/windows/gl_texture_windows.cpp b/opencl/source/sharings/gl/windows/gl_texture_windows.cpp index 731321129c..0dd73eb5b7 100644 --- a/opencl/source/sharings/gl/windows/gl_texture_windows.cpp +++ b/opencl/source/sharings/gl/windows/gl_texture_windows.cpp @@ -68,7 +68,9 @@ Image *GlTexture::createSharedGlTexture(Context *context, cl_mem_flags flags, cl } if (texInfo.pGmmResInfo) { DEBUG_BREAK_IF(alloc->getDefaultGmm() != nullptr); - alloc->setDefaultGmm(new Gmm(gmmHelper, texInfo.pGmmResInfo)); + + auto gmmResourceInfo = std::unique_ptr(GmmResourceInfo::create(gmmHelper->getClientContext(), texInfo.pGmmResInfo)); + alloc->setDefaultGmm(new Gmm(gmmHelper, gmmResourceInfo.get())); } auto gmm = alloc->getDefaultGmm(); @@ -108,7 +110,7 @@ Image *GlTexture::createSharedGlTexture(Context *context, cl_mem_flags flags, cl uint32_t cubeFaceIndex = GmmTypesConverter::getCubeFaceIndex(target); - auto qPitch = gmm->queryQPitch(gmm->gmmResourceInfo->getResourceType()); + auto qPitch = gmm->queryQPitch(); if (setClImageFormat(texInfo.glInternalFormat, imgFormat) == false) { memoryManager->freeGraphicsMemory(alloc); @@ -134,7 +136,8 @@ Image *GlTexture::createSharedGlTexture(Context *context, cl_mem_flags flags, cl mcsAlloc = memoryManager->createGraphicsAllocationFromSharedHandle(osHandleData, allocProperties, false, false, true, nullptr); if (texInfo.pGmmResInfoMCS) { DEBUG_BREAK_IF(mcsAlloc->getDefaultGmm() != nullptr); - mcsAlloc->setDefaultGmm(new Gmm(gmmHelper, texInfo.pGmmResInfoMCS)); + auto gmmResourceInfo = std::unique_ptr(GmmResourceInfo::create(gmmHelper->getClientContext(), texInfo.pGmmResInfoMCS)); + mcsAlloc->setDefaultGmm(new Gmm(gmmHelper, gmmResourceInfo.get())); } mcsSurfaceInfo.pitch = getValidParam(static_cast(mcsAlloc->getDefaultGmm()->gmmResourceInfo->getRenderPitch() / 128)); mcsSurfaceInfo.qPitch = mcsAlloc->getDefaultGmm()->gmmResourceInfo->getQPitch(); diff --git a/opencl/source/sharings/unified/unified_image.cpp b/opencl/source/sharings/unified/unified_image.cpp index 1cd7cde573..45831a681c 100644 --- a/opencl/source/sharings/unified/unified_image.cpp +++ b/opencl/source/sharings/unified/unified_image.cpp @@ -47,7 +47,7 @@ Image *UnifiedImage::createSharedUnifiedImage(Context *context, cl_mem_flags fla auto sharingHandler = new UnifiedImage(context->getSharing(), description.type); return Image::createSharedImage(context, sharingHandler, McsSurfaceInfo{}, std::move(*multiGraphicsAllocation), nullptr, - flags, 0, clSurfaceFormat, imgInfo, __GMM_NO_CUBE_MAP, 0u, imageDesc->num_mip_levels, false); + flags, 0, clSurfaceFormat, imgInfo, gmmNoCubeMap, 0u, imageDesc->num_mip_levels, false); } } // namespace NEO diff --git a/opencl/test/unit_test/built_ins/built_in_tests.cpp b/opencl/test/unit_test/built_ins/built_in_tests.cpp index 985baa00b5..eb2d324355 100644 --- a/opencl/test/unit_test/built_ins/built_in_tests.cpp +++ b/opencl/test/unit_test/built_ins/built_in_tests.cpp @@ -12,6 +12,7 @@ #include "shared/source/execution_environment/root_device_environment.h" #include "shared/source/gmm_helper/gmm.h" #include "shared/source/gmm_helper/gmm_helper.h" +#include "shared/source/gmm_helper/gmm_resource_usage_ocl_buffer.h" #include "shared/source/helpers/append_operations.h" #include "shared/source/helpers/compiler_product_helper.h" #include "shared/source/helpers/file_io.h" @@ -742,7 +743,7 @@ HWTEST2_P(AuxBuiltInTests, givenAuxToNonAuxTranslationWhenSettingSurfaceStateThe GmmRequirements gmmRequirements{}; gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; - auto gmm = std::unique_ptr(new Gmm(pDevice->getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements)); + auto gmm = std::unique_ptr(new Gmm(pDevice->getGmmHelper(), nullptr, 1, 0, gmmResourceUsageOclBuffer, {}, gmmRequirements)); gmm->setCompressionEnabled(true); auto kernelObjsForAuxTranslation = std::make_unique(); @@ -800,7 +801,7 @@ HWTEST2_P(AuxBuiltInTests, givenNonAuxToAuxTranslationWhenSettingSurfaceStateThe GmmRequirements gmmRequirements{}; gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; - auto gmm = std::make_unique(pDevice->getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, StorageInfo{}, gmmRequirements); + auto gmm = std::make_unique(pDevice->getGmmHelper(), nullptr, 1, 0, gmmResourceUsageOclBuffer, StorageInfo{}, gmmRequirements); gmm->setCompressionEnabled(true); if (kernelObjType == MockKernelObjForAuxTranslation::Type::memObj) { mockKernelObjForAuxTranslation.mockBuffer->getGraphicsAllocation(pClDevice->getRootDeviceIndex())->setDefaultGmm(gmm.release()); diff --git a/opencl/test/unit_test/command_queue/blit_enqueue_fixture.h b/opencl/test/unit_test/command_queue/blit_enqueue_fixture.h index deac0d0abb..1d5be48149 100644 --- a/opencl/test/unit_test/command_queue/blit_enqueue_fixture.h +++ b/opencl/test/unit_test/command_queue/blit_enqueue_fixture.h @@ -9,6 +9,7 @@ #include "shared/source/debug_settings/debug_settings_manager.h" #include "shared/source/gmm_helper/gmm.h" +#include "shared/source/gmm_helper/gmm_resource_usage_ocl_buffer.h" #include "shared/source/helpers/aux_translation.h" #include "shared/source/helpers/vec.h" #include "shared/test/common/cmd_parse/hw_parse.h" @@ -167,7 +168,7 @@ struct BlitEnqueueTests : public ::testing::Test { GmmRequirements gmmRequirements{}; gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; - graphicsAllocation->setDefaultGmm(new Gmm(gmmHelper, nullptr, 0, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements)); + graphicsAllocation->setDefaultGmm(new Gmm(gmmHelper, nullptr, 0, 0, gmmResourceUsageOclBuffer, {}, gmmRequirements)); } if (graphicsAllocation->getDefaultGmm()) { diff --git a/opencl/test/unit_test/command_queue/read_write_buffer_cpu_copy.cpp b/opencl/test/unit_test/command_queue/read_write_buffer_cpu_copy.cpp index 41a8c221a1..41f3053a59 100644 --- a/opencl/test/unit_test/command_queue/read_write_buffer_cpu_copy.cpp +++ b/opencl/test/unit_test/command_queue/read_write_buffer_cpu_copy.cpp @@ -6,6 +6,7 @@ */ #include "shared/source/gmm_helper/gmm.h" +#include "shared/source/gmm_helper/gmm_resource_usage_ocl_buffer.h" #include "shared/source/helpers/local_memory_access_modes.h" #include "shared/source/memory_manager/memory_allocation.h" #include "shared/test/common/helpers/debug_manager_state_restore.h" @@ -27,7 +28,7 @@ HWTEST_F(ReadWriteBufferCpuCopyTest, givenCompressedGmmWhenAskingForCpuOperation GmmRequirements gmmRequirements{}; gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; - auto gmm = new Gmm(pDevice->getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements); + auto gmm = new Gmm(pDevice->getGmmHelper(), nullptr, 1, 0, gmmResourceUsageOclBuffer, {}, gmmRequirements); gmm->setCompressionEnabled(false); auto allocation = buffer->getGraphicsAllocation(rootDeviceIndex); allocation->setDefaultGmm(gmm); diff --git a/opencl/test/unit_test/context/driver_diagnostics_tests.cpp b/opencl/test/unit_test/context/driver_diagnostics_tests.cpp index 59d8fb89ac..5da43458dc 100644 --- a/opencl/test/unit_test/context/driver_diagnostics_tests.cpp +++ b/opencl/test/unit_test/context/driver_diagnostics_tests.cpp @@ -8,6 +8,7 @@ #include "driver_diagnostics_tests.h" #include "shared/source/gmm_helper/gmm.h" +#include "shared/source/gmm_helper/gmm_resource_usage_ocl_buffer.h" #include "shared/source/helpers/gfx_core_helper.h" #include "shared/source/memory_manager/os_agnostic_memory_manager.h" #include "shared/test/common/helpers/debug_manager_state_restore.h" @@ -770,7 +771,7 @@ HWTEST_F(PerformanceHintTest, givenCompressedImageWhenItsCreatedThenProperPerfor GmmRequirements gmmRequirements{}; gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = true; - auto gmm = new Gmm(device->getGmmHelper(), static_cast(nullptr), t, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, info, gmmRequirements); + auto gmm = new Gmm(device->getGmmHelper(), static_cast(nullptr), t, 0, gmmResourceUsageOclBuffer, info, gmmRequirements); gmm->setCompressionEnabled(true); auto graphicsAllocation = mockBuffer->getGraphicsAllocation(device->getRootDeviceIndex()); @@ -843,7 +844,7 @@ TEST_F(PerformanceHintTest, givenUncompressedImageWhenItsCreatedThenProperPerfor GmmRequirements gmmRequirements{}; gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = true; - auto gmm = new Gmm(device->getGmmHelper(), (const void *)nullptr, t, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, info, gmmRequirements); + auto gmm = new Gmm(device->getGmmHelper(), (const void *)nullptr, t, 0, gmmResourceUsageOclBuffer, info, gmmRequirements); gmm->setCompressionEnabled(false); mockBuffer->getGraphicsAllocation(device->getRootDeviceIndex())->setDefaultGmm(gmm); diff --git a/opencl/test/unit_test/gmm_helper/gmm_helper_tests_ocl.cpp b/opencl/test/unit_test/gmm_helper/gmm_helper_tests_ocl.cpp index f13e74523d..f88eb119d2 100644 --- a/opencl/test/unit_test/gmm_helper/gmm_helper_tests_ocl.cpp +++ b/opencl/test/unit_test/gmm_helper/gmm_helper_tests_ocl.cpp @@ -203,7 +203,8 @@ TEST_P(GmmImgTest, WhenUpdatingImgInfoAndDescThenInformationIsCorrect) { auto imgInfo = MockGmm::initImgInfo(imgDesc, 0, nullptr); auto queryGmm = MockGmm::queryImgParams(getGmmHelper(), imgInfo, false); - auto mockResInfo = new MyMockGmmResourceInfo(&queryGmm->resourceParams); + auto *queryGmmResourceParams = reinterpret_cast(queryGmm->resourceParamsData.data()); + auto mockResInfo = new MyMockGmmResourceInfo(queryGmmResourceParams); queryGmm->gmmResourceInfo.reset(mockResInfo); queryGmm->updateImgInfoAndDesc(updateImgInfo, arrayIndex, yuvPlane); @@ -280,7 +281,8 @@ TEST_F(GmmImgTest, givenImgInfoWhenUpdatingOffsetsThenGmmIsCalledToGetOffsets) { ImageInfo imgInfo = MockGmm::initImgInfo(imgDesc, 0, nullptr); std::unique_ptr gmm = MockGmm::queryImgParams(getGmmHelper(), imgInfo, false); - MyMockGmmResourceInfo *mockGmmResourceInfo = new MyMockGmmResourceInfo(&gmm->resourceParams); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + MyMockGmmResourceInfo *mockGmmResourceInfo = new MyMockGmmResourceInfo(gmmResourceParams); gmm->gmmResourceInfo.reset(mockGmmResourceInfo); mockGmmResourceInfo->expectedArrayIndex = 7; @@ -448,9 +450,11 @@ TEST_F(GmmLocalMemoryTests, givenUseLocalMemoryInImageInfoTrueWhenGmmIsCreatedTh storageInfo.memoryBanks.set(1); auto gmm = std::make_unique(getGmmHelper(), imgInfo, storageInfo, false); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.NonLocalOnly); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.LocalOnly); - EXPECT_EQ(1u, gmm->resourceParams.Flags.Info.NotLockable); + auto *gmmResourceFlags = gmm->gmmResourceInfo->getResourceFlags(); + + EXPECT_EQ(0u, gmmResourceFlags->Info.NonLocalOnly); + EXPECT_EQ(0u, gmmResourceFlags->Info.LocalOnly); + EXPECT_EQ(1u, gmmResourceFlags->Info.NotLockable); } TEST_F(GmmLocalMemoryTests, givenUseCompressionAndLocalMemoryInImageInfoTrueWhenGmmIsCreatedThenNonLocalOnlyFlagIsNotSetAndNotLockableAndLocalOnlyIsSet) { @@ -477,9 +481,10 @@ TEST_F(GmmLocalMemoryTests, givenUseCompressionAndLocalMemoryInImageInfoTrueWhen auto gmm = std::make_unique(getGmmHelper(), imgInfo, storageInfo, true); EXPECT_TRUE(gmm->isCompressionEnabled()); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.NonLocalOnly); - EXPECT_EQ(1u, gmm->resourceParams.Flags.Info.LocalOnly); - EXPECT_EQ(1u, gmm->resourceParams.Flags.Info.NotLockable); + auto *gmmResourceFlags = gmm->gmmResourceInfo->getResourceFlags(); + EXPECT_EQ(0u, gmmResourceFlags->Info.NonLocalOnly); + EXPECT_EQ(1u, gmmResourceFlags->Info.LocalOnly); + EXPECT_EQ(1u, gmmResourceFlags->Info.NotLockable); } TEST_F(GmmLocalMemoryTests, givenUseLocalMemoryInImageInfoFalseWhenGmmIsCreatedThenLocalOnlyNotSet) { @@ -498,8 +503,9 @@ TEST_F(GmmLocalMemoryTests, givenUseLocalMemoryInImageInfoFalseWhenGmmIsCreatedT imgInfo.useLocalMemory = false; auto gmm = std::make_unique(getGmmHelper(), imgInfo, StorageInfo{}, false); - EXPECT_EQ(1u, gmm->resourceParams.Flags.Info.NonLocalOnly); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.LocalOnly); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(1u, gmmResourceParams->Flags.Info.NonLocalOnly); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.LocalOnly); } TEST_F(MultiTileGmmTests, whenCreateGmmWithImageInfoThenEnableMultiTileArch) { @@ -517,12 +523,14 @@ TEST_F(MultiTileGmmTests, whenCreateGmmWithImageInfoThenEnableMultiTileArch) { imgInfo.useLocalMemory = false; auto gmm = std::make_unique(getGmmHelper(), imgInfo, StorageInfo{}, false); - EXPECT_EQ(1u, gmm->resourceParams.Flags.Info.NonLocalOnly); - EXPECT_EQ(1u, gmm->resourceParams.MultiTileArch.Enable); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(1u, gmmResourceParams->Flags.Info.NonLocalOnly); + EXPECT_EQ(1u, gmmResourceParams->MultiTileArch.Enable); imgInfo.useLocalMemory = true; gmm = std::make_unique(getGmmHelper(), imgInfo, StorageInfo{}, false); - EXPECT_EQ(1u, gmm->resourceParams.Flags.Info.NonLocalOnly); - EXPECT_EQ(1u, gmm->resourceParams.MultiTileArch.Enable); + gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(1u, gmmResourceParams->Flags.Info.NonLocalOnly); + EXPECT_EQ(1u, gmmResourceParams->MultiTileArch.Enable); } } // namespace NEO diff --git a/opencl/test/unit_test/kernel/kernel_arg_buffer_tests.cpp b/opencl/test/unit_test/kernel/kernel_arg_buffer_tests.cpp index 93fe583be6..459650f672 100644 --- a/opencl/test/unit_test/kernel/kernel_arg_buffer_tests.cpp +++ b/opencl/test/unit_test/kernel/kernel_arg_buffer_tests.cpp @@ -6,6 +6,7 @@ */ #include "shared/source/gmm_helper/gmm.h" +#include "shared/source/gmm_helper/gmm_resource_usage_ocl_buffer.h" #include "shared/source/helpers/gfx_core_helper.h" #include "shared/source/memory_manager/unified_memory_manager.h" #include "shared/source/unified_memory/unified_memory.h" @@ -563,7 +564,7 @@ TEST_F(KernelArgBufferTest, givenSetUnifiedMemoryExecInfoOnKernelWithIndirectSta GmmRequirements gmmRequirements{}; gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; - auto gmm = std::make_unique(pDevice->getRootDeviceEnvironment().getGmmHelper(), nullptr, 0, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, StorageInfo{}, gmmRequirements); + auto gmm = std::make_unique(pDevice->getRootDeviceEnvironment().getGmmHelper(), nullptr, 0, 0, gmmResourceUsageOclBuffer, StorageInfo{}, gmmRequirements); MockGraphicsAllocation gfxAllocation; gfxAllocation.setDefaultGmm(gmm.get()); @@ -605,7 +606,7 @@ TEST_F(KernelArgBufferTest, givenSVMAllocsManagerWithCompressedSVMAllocationsWhe GmmRequirements gmmRequirements{}; gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; - auto gmm = std::make_unique(pDevice->getRootDeviceEnvironment().getGmmHelper(), nullptr, 0, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, StorageInfo{}, gmmRequirements); + auto gmm = std::make_unique(pDevice->getRootDeviceEnvironment().getGmmHelper(), nullptr, 0, 0, gmmResourceUsageOclBuffer, StorageInfo{}, gmmRequirements); MockGraphicsAllocation gfxAllocation; gfxAllocation.setDefaultGmm(gmm.get()); diff --git a/opencl/test/unit_test/mem_obj/buffer_set_arg_tests.cpp b/opencl/test/unit_test/mem_obj/buffer_set_arg_tests.cpp index fb6c7b30ce..ed21cefa6c 100644 --- a/opencl/test/unit_test/mem_obj/buffer_set_arg_tests.cpp +++ b/opencl/test/unit_test/mem_obj/buffer_set_arg_tests.cpp @@ -8,6 +8,7 @@ #include "shared/source/command_container/encode_surface_state.h" #include "shared/source/gmm_helper/gmm.h" #include "shared/source/gmm_helper/gmm_helper.h" +#include "shared/source/gmm_helper/gmm_resource_usage_ocl_buffer.h" #include "shared/source/helpers/address_patch.h" #include "shared/source/helpers/ptr_math.h" #include "shared/source/memory_manager/surface.h" @@ -22,7 +23,6 @@ #include "opencl/test/unit_test/mocks/mock_cl_device.h" #include "opencl/test/unit_test/mocks/mock_kernel.h" #include "opencl/test/unit_test/mocks/mock_program.h" -#include "opencl/test/unit_test/test_macros/test_checks_ocl.h" #include "gtest/gtest.h" @@ -168,7 +168,7 @@ HWTEST_F(BufferSetArgTest, givenNonPureStatefulArgWhenCompressedBufferIsSetThenS GmmRequirements gmmRequirements{}; gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; - graphicsAllocation->setDefaultGmm(new Gmm(pDevice->getGmmHelper(), graphicsAllocation->getUnderlyingBuffer(), buffer->getSize(), 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements)); + graphicsAllocation->setDefaultGmm(new Gmm(pDevice->getGmmHelper(), graphicsAllocation->getUnderlyingBuffer(), buffer->getSize(), 0, gmmResourceUsageOclBuffer, {}, gmmRequirements)); graphicsAllocation->getDefaultGmm()->setCompressionEnabled(true); cl_mem clMem = buffer; diff --git a/opencl/test/unit_test/mem_obj/create_image_in_local_memory_tests.cpp b/opencl/test/unit_test/mem_obj/create_image_in_local_memory_tests.cpp index fce758e577..fcbfb281d5 100644 --- a/opencl/test/unit_test/mem_obj/create_image_in_local_memory_tests.cpp +++ b/opencl/test/unit_test/mem_obj/create_image_in_local_memory_tests.cpp @@ -7,6 +7,7 @@ #include "shared/source/gmm_helper/gmm.h" #include "shared/source/gmm_helper/gmm_helper.h" +#include "shared/source/gmm_helper/gmm_lib.h" #include "shared/source/helpers/hw_info.h" #include "shared/source/memory_manager/gfx_partition.h" #include "shared/source/memory_manager/memory_pool.h" @@ -82,7 +83,8 @@ TEST_F(ImageInLocalMemoryTest, givenImageWithoutHostPtrWhenLocalMemoryIsEnabledT EXPECT_EQ(MemoryPool::localMemory, imgGfxAlloc->getMemoryPool()); EXPECT_LE(imageDesc.image_width * surfaceFormat->surfaceFormat.imageElementSizeInBytes, imgGfxAlloc->getUnderlyingBufferSize()); EXPECT_EQ(AllocationType::image, imgGfxAlloc->getAllocationType()); - EXPECT_EQ(0u, imgGfxAlloc->getDefaultGmm()->resourceParams.Flags.Info.NonLocalOnly); + auto *gmmResourceParams = reinterpret_cast(imgGfxAlloc->getDefaultGmm()->resourceParamsData.data()); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.NonLocalOnly); auto gmmHelper = context->getDevice(0)->getGmmHelper(); EXPECT_LT(gmmHelper->canonize(mockMemoryManager->getGfxPartition(imgGfxAlloc->getRootDeviceIndex())->getHeapBase(HeapIndex::heapStandard64KB)), imgGfxAlloc->getGpuAddress()); diff --git a/opencl/test/unit_test/mem_obj/image_set_arg_tests.cpp b/opencl/test/unit_test/mem_obj/image_set_arg_tests.cpp index dd6c6fcea0..2bdd6ca841 100644 --- a/opencl/test/unit_test/mem_obj/image_set_arg_tests.cpp +++ b/opencl/test/unit_test/mem_obj/image_set_arg_tests.cpp @@ -487,7 +487,7 @@ HWTEST_F(ImageSetArgTest, Given1dArrayWhenSettingKernelArgThenPropertiesAreSetCo EXPECT_EQ(image1Darray->getImageDesc().image_array_size, surfaceState->getRenderTargetViewExtent()); EXPECT_EQ(image1Darray->getImageDesc().image_row_pitch, surfaceState->getSurfacePitch()); EXPECT_EQ(0u, surfaceState->getSurfaceQPitch() % 4); - EXPECT_EQ(graphicsAllocation->getDefaultGmm()->queryQPitch(GMM_RESOURCE_TYPE::RESOURCE_1D), surfaceState->getSurfaceQPitch()); + EXPECT_EQ(graphicsAllocation->getDefaultGmm()->queryQPitch(), surfaceState->getSurfaceQPitch()); EXPECT_EQ(image1Darray->getSurfaceFormatInfo().surfaceFormat.genxSurfaceFormat, (SurfaceFormat)surfaceState->getSurfaceFormat()); EXPECT_EQ(RENDER_SURFACE_STATE::SURFACE_TYPE_SURFTYPE_1D, surfaceState->getSurfaceType()); diff --git a/opencl/test/unit_test/mem_obj/mem_obj_tests.cpp b/opencl/test/unit_test/mem_obj/mem_obj_tests.cpp index ee28ffee91..39731ac367 100644 --- a/opencl/test/unit_test/mem_obj/mem_obj_tests.cpp +++ b/opencl/test/unit_test/mem_obj/mem_obj_tests.cpp @@ -7,6 +7,7 @@ #include "shared/source/command_stream/command_stream_receiver.h" #include "shared/source/gmm_helper/gmm.h" +#include "shared/source/gmm_helper/gmm_resource_usage_ocl_buffer.h" #include "shared/source/helpers/aligned_memory.h" #include "shared/source/memory_manager/allocations_list.h" #include "shared/source/os_interface/os_context.h" @@ -322,7 +323,7 @@ TEST(MemObj, givenCompressedGmmWhenAskingForMappingOnCpuThenDisallow) { GmmRequirements gmmRequirements{}; gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; - allocation->setDefaultGmm(new Gmm(context.getDevice(0)->getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements)); + allocation->setDefaultGmm(new Gmm(context.getDevice(0)->getGmmHelper(), nullptr, 1, 0, gmmResourceUsageOclBuffer, {}, gmmRequirements)); auto memoryProperties = ClMemoryPropertiesHelper::createMemoryProperties(CL_MEM_READ_WRITE, 0, 0, &context.getDevice(0)->getDevice()); MemObj memObj(&context, CL_MEM_OBJECT_BUFFER, memoryProperties, CL_MEM_READ_WRITE, 0, 1, allocation->getUnderlyingBuffer(), nullptr, GraphicsAllocationHelper::toMultiGraphicsAllocation(allocation), false, false, false); @@ -372,7 +373,7 @@ TEST(MemObj, givenCpuAccessNotAllowedWhenAskedForCpuMappingThenReturnFalse) { GmmRequirements gmmRequirements{}; gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; - allocation->setDefaultGmm(new MyMockGmm(context.getDevice(0)->getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements)); + allocation->setDefaultGmm(new MyMockGmm(context.getDevice(0)->getGmmHelper(), nullptr, 1, 0, gmmResourceUsageOclBuffer, {}, gmmRequirements)); EXPECT_TRUE(memObj.mappingOnCpuAllowed()); static_cast(memObj.getGraphicsAllocation(0)->getDefaultGmm())->preferNoCpuAccess = true; @@ -392,7 +393,7 @@ TEST(MemObj, givenNonCpuAccessibleMemoryWhenAskingForMappingOnCpuThenDisallow) { GmmRequirements gmmRequirements{}; gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; - allocation->setDefaultGmm(new Gmm(context.getDevice(0)->getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements)); + allocation->setDefaultGmm(new Gmm(context.getDevice(0)->getGmmHelper(), nullptr, 1, 0, gmmResourceUsageOclBuffer, {}, gmmRequirements)); auto memoryProperties = ClMemoryPropertiesHelper::createMemoryProperties(CL_MEM_READ_WRITE, 0, 0, &context.getDevice(0)->getDevice()); MemObj memObj(&context, CL_MEM_OBJECT_BUFFER, memoryProperties, CL_MEM_READ_WRITE, 0, 1, allocation->getUnderlyingBuffer(), nullptr, GraphicsAllocationHelper::toMultiGraphicsAllocation(allocation), false, false, false); diff --git a/opencl/test/unit_test/memory_manager/cl_memory_manager_allocate_in_preferred_pool_tests.cpp b/opencl/test/unit_test/memory_manager/cl_memory_manager_allocate_in_preferred_pool_tests.cpp index e09e47490e..0032bd3e3b 100644 --- a/opencl/test/unit_test/memory_manager/cl_memory_manager_allocate_in_preferred_pool_tests.cpp +++ b/opencl/test/unit_test/memory_manager/cl_memory_manager_allocate_in_preferred_pool_tests.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2023 Intel Corporation + * Copyright (C) 2018-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -45,7 +45,8 @@ TEST(MemoryManagerTest, givenEnabledLocalMemoryWhenAllocatingSharedResourceCopyT auto allocation = memoryManager.allocateGraphicsMemoryInPreferredPool(allocProperties, nullptr); ASSERT_NE(nullptr, allocation); EXPECT_EQ(MemoryPool::localMemory, allocation->getMemoryPool()); - EXPECT_EQ(0u, allocation->getDefaultGmm()->resourceParams.Flags.Info.NonLocalOnly); + auto *gmmResourceParams = reinterpret_cast(allocation->getDefaultGmm()->resourceParamsData.data()); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.NonLocalOnly); auto gmmHelper = memoryManager.getGmmHelper(allocation->getRootDeviceIndex()); EXPECT_LT(gmmHelper->canonize(memoryManager.getGfxPartition(allocation->getRootDeviceIndex())->getHeapBase(HeapIndex::heapStandard64KB)), allocation->getGpuAddress()); diff --git a/opencl/test/unit_test/memory_manager/migraton_controller_tests.cpp b/opencl/test/unit_test/memory_manager/migraton_controller_tests.cpp index ca6fe26011..3fbea50ea0 100644 --- a/opencl/test/unit_test/memory_manager/migraton_controller_tests.cpp +++ b/opencl/test/unit_test/memory_manager/migraton_controller_tests.cpp @@ -7,6 +7,7 @@ #include "shared/source/command_stream/command_stream_receiver.h" #include "shared/source/gmm_helper/gmm.h" +#include "shared/source/gmm_helper/gmm_lib.h" #include "shared/source/helpers/compiler_product_helper.h" #include "shared/source/memory_manager/migration_sync_data.h" #include "shared/test/common/helpers/debug_manager_state_restore.h" @@ -78,8 +79,10 @@ HWTEST_F(MigrationControllerTests, givenNotLockableImageAllocationWithDefinedLoc auto srcAllocation = pImage->getMultiGraphicsAllocation().getGraphicsAllocation(0); auto dstAllocation = pImage->getMultiGraphicsAllocation().getGraphicsAllocation(1); - srcAllocation->getDefaultGmm()->resourceParams.Flags.Info.NotLockable = 1; - dstAllocation->getDefaultGmm()->resourceParams.Flags.Info.NotLockable = 1; + auto *srcAllocationGmmResourceParams = reinterpret_cast(srcAllocation->getDefaultGmm()->resourceParamsData.data()); + srcAllocationGmmResourceParams->Flags.Info.NotLockable = 1; + auto *dstAllocationGmmResourceParams = reinterpret_cast(dstAllocation->getDefaultGmm()->resourceParamsData.data()); + dstAllocationGmmResourceParams->Flags.Info.NotLockable = 1; EXPECT_FALSE(srcAllocation->isAllocationLockable()); EXPECT_FALSE(dstAllocation->isAllocationLockable()); @@ -118,8 +121,10 @@ HWTEST_F(MigrationControllerTests, givenNotLockableBufferAllocationWithDefinedLo srcAllocation->setDefaultGmm(gmm0); dstAllocation->setDefaultGmm(gmm1); - srcAllocation->getDefaultGmm()->resourceParams.Flags.Info.NotLockable = 1; - dstAllocation->getDefaultGmm()->resourceParams.Flags.Info.NotLockable = 1; + auto *srcAllocationGmmResourceParams = reinterpret_cast(srcAllocation->getDefaultGmm()->resourceParamsData.data()); + srcAllocationGmmResourceParams->Flags.Info.NotLockable = 1; + auto *dstAllocationGmmResourceParams = reinterpret_cast(dstAllocation->getDefaultGmm()->resourceParamsData.data()); + dstAllocationGmmResourceParams->Flags.Info.NotLockable = 1; EXPECT_FALSE(srcAllocation->isAllocationLockable()); EXPECT_FALSE(dstAllocation->isAllocationLockable()); @@ -193,8 +198,10 @@ HWTEST_F(MigrationControllerTests, givenMultiGraphicsAllocationUsedInOneCsrWhenH ASSERT_TRUE(pImage->getMultiGraphicsAllocation().requiresMigrations()); - pImage->getMultiGraphicsAllocation().getGraphicsAllocation(0)->getDefaultGmm()->resourceParams.Flags.Info.NotLockable = false; - pImage->getMultiGraphicsAllocation().getGraphicsAllocation(1)->getDefaultGmm()->resourceParams.Flags.Info.NotLockable = false; + for (auto rootDeviceIndex = 0; rootDeviceIndex <= 1; ++rootDeviceIndex) { + auto *gmmResourceParams = reinterpret_cast(pImage->getMultiGraphicsAllocation().getGraphicsAllocation(rootDeviceIndex)->getDefaultGmm()->resourceParamsData.data()); + gmmResourceParams->Flags.Info.NotLockable = false; + } auto migrationSyncData = static_cast(pImage->getMultiGraphicsAllocation().getMigrationSyncData()); diff --git a/opencl/test/unit_test/mocks/mock_buffer.cpp b/opencl/test/unit_test/mocks/mock_buffer.cpp index 9a53e795ae..1d5e3f7816 100644 --- a/opencl/test/unit_test/mocks/mock_buffer.cpp +++ b/opencl/test/unit_test/mocks/mock_buffer.cpp @@ -8,6 +8,7 @@ #include "opencl/test/unit_test/mocks/mock_buffer.h" #include "shared/source/gmm_helper/gmm.h" +#include "shared/source/gmm_helper/gmm_resource_usage_ocl_buffer.h" #include "shared/source/helpers/aligned_memory.h" #include "shared/test/common/mocks/mock_device.h" @@ -44,7 +45,7 @@ void MockBuffer::setAllocationType(GraphicsAllocation *graphicsAllocation, GmmHe GmmRequirements gmmRequirements{}; gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = compressed; - graphicsAllocation->setDefaultGmm(new Gmm(gmmHelper, nullptr, 0, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements)); + graphicsAllocation->setDefaultGmm(new Gmm(gmmHelper, nullptr, 0, 0, gmmResourceUsageOclBuffer, {}, gmmRequirements)); } if (graphicsAllocation->getDefaultGmm()) { diff --git a/opencl/test/unit_test/os_interface/linux/cl_drm_memory_manager_tests.cpp b/opencl/test/unit_test/os_interface/linux/cl_drm_memory_manager_tests.cpp index ff9d8112c3..0a709fc1f9 100644 --- a/opencl/test/unit_test/os_interface/linux/cl_drm_memory_manager_tests.cpp +++ b/opencl/test/unit_test/os_interface/linux/cl_drm_memory_manager_tests.cpp @@ -108,7 +108,7 @@ HWTEST_TEMPLATED_F(ClDrmMemoryManagerTest, givenDrmMemoryManagerWhenTiledImageWi ASSERT_NE(nullptr, dstImage); auto imageGraphicsAllocation = dstImage->getGraphicsAllocation(rootDeviceIndex); ASSERT_NE(nullptr, imageGraphicsAllocation); - EXPECT_TRUE(imageGraphicsAllocation->getDefaultGmm()->resourceParams.Usage == + EXPECT_TRUE(imageGraphicsAllocation->getDefaultGmm()->getResourceUsageType() == GMM_RESOURCE_USAGE_TYPE::GMM_RESOURCE_USAGE_OCL_IMAGE); DrmAllocation *drmAllocation = static_cast(imageGraphicsAllocation); @@ -158,8 +158,7 @@ HWTEST_TEMPLATED_F(ClDrmMemoryManagerTest, givenDrmMemoryManagerWhenTiledImageWi EXPECT_EQ(static_cast(imageDesc.num_mip_levels), dstImage->peekMipCount()); auto imageGraphicsAllocation = dstImage->getGraphicsAllocation(rootDeviceIndex); ASSERT_NE(nullptr, imageGraphicsAllocation); - EXPECT_TRUE(imageGraphicsAllocation->getDefaultGmm()->resourceParams.Usage == - GMM_RESOURCE_USAGE_TYPE::GMM_RESOURCE_USAGE_OCL_IMAGE); + EXPECT_TRUE(imageGraphicsAllocation->getDefaultGmm()->getResourceUsageType() == GMM_RESOURCE_USAGE_TYPE::GMM_RESOURCE_USAGE_OCL_IMAGE); DrmAllocation *drmAllocation = static_cast(imageGraphicsAllocation); auto imageSize = drmAllocation->getUnderlyingBufferSize(); @@ -275,7 +274,7 @@ HWTEST2_TEMPLATED_F(ClDrmMemoryManagerTest, givenDrmMemoryManagerWhenTiledImageI ASSERT_NE(nullptr, dstImage); auto imageGraphicsAllocation = dstImage->getGraphicsAllocation(rootDeviceIndex); ASSERT_NE(nullptr, imageGraphicsAllocation); - EXPECT_TRUE(imageGraphicsAllocation->getDefaultGmm()->resourceParams.Usage == + EXPECT_TRUE(imageGraphicsAllocation->getDefaultGmm()->getResourceUsageType() == GMM_RESOURCE_USAGE_TYPE::GMM_RESOURCE_USAGE_OCL_IMAGE); DrmAllocation *drmAllocation = static_cast(imageGraphicsAllocation); @@ -357,7 +356,7 @@ HWTEST_TEMPLATED_F(ClDrmMemoryManagerTest, givenDrmMemoryManagerWhenNonTiledImgW ASSERT_NE(nullptr, dstImage); auto imageGraphicsAllocation = dstImage->getGraphicsAllocation(rootDeviceIndex); ASSERT_NE(nullptr, imageGraphicsAllocation); - EXPECT_TRUE(imageGraphicsAllocation->getDefaultGmm()->resourceParams.Usage == + EXPECT_TRUE(imageGraphicsAllocation->getDefaultGmm()->getResourceUsageType() == GMM_RESOURCE_USAGE_TYPE::GMM_RESOURCE_USAGE_OCL_IMAGE); EXPECT_EQ(0u, this->mock->createParamsHandle); @@ -407,7 +406,7 @@ HWTEST_TEMPLATED_F(ClDrmMemoryManagerTest, givenDrmMemoryManagerWhenNonTiledImgW EXPECT_EQ(static_cast(imageDesc.num_mip_levels), dstImage->peekMipCount()); auto imageGraphicsAllocation = dstImage->getGraphicsAllocation(rootDeviceIndex); ASSERT_NE(nullptr, imageGraphicsAllocation); - EXPECT_TRUE(imageGraphicsAllocation->getDefaultGmm()->resourceParams.Usage == + EXPECT_TRUE(imageGraphicsAllocation->getDefaultGmm()->getResourceUsageType() == GMM_RESOURCE_USAGE_TYPE::GMM_RESOURCE_USAGE_OCL_IMAGE); EXPECT_EQ(0u, this->mock->createParamsHandle); @@ -544,8 +543,9 @@ HWTEST_TEMPLATED_F(ClDrmMemoryManagerTest, givenOsHandleWithNonTiledObjectWhenCr auto gmm = graphicsAllocation->getDefaultGmm(); ASSERT_NE(nullptr, gmm); - EXPECT_EQ(1u, gmm->resourceParams.Flags.Info.Linear); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.TiledY); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(1u, gmmResourceParams->Flags.Info.Linear); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.TiledY); memoryManager->freeGraphicsMemory(graphicsAllocation); } @@ -587,7 +587,8 @@ HWTEST_TEMPLATED_F(ClDrmMemoryManagerTest, givenOsHandleWithTileYObjectWhenCreat auto gmm = graphicsAllocation->getDefaultGmm(); ASSERT_NE(nullptr, gmm); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.Linear); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.Linear); memoryManager->freeGraphicsMemory(graphicsAllocation); } @@ -629,7 +630,8 @@ HWTEST_TEMPLATED_F(ClDrmMemoryManagerTest, givenDrmMemoryManagerWhenCreateFromSh auto gmm = graphicsAllocation->getDefaultGmm(); ASSERT_NE(nullptr, gmm); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.Linear); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.Linear); memoryManager->freeGraphicsMemory(graphicsAllocation); } diff --git a/opencl/test/unit_test/os_interface/windows/cl_wddm_memory_manager_tests.cpp b/opencl/test/unit_test/os_interface/windows/cl_wddm_memory_manager_tests.cpp index b0e0b37547..83d01983b4 100644 --- a/opencl/test/unit_test/os_interface/windows/cl_wddm_memory_manager_tests.cpp +++ b/opencl/test/unit_test/os_interface/windows/cl_wddm_memory_manager_tests.cpp @@ -95,7 +95,7 @@ HWTEST_F(ClWddmMemoryManagerTest, givenWddmMemoryManagerWhenTiledImageWithMipCou auto imageGraphicsAllocation = dstImage->getGraphicsAllocation(context.getDevice(0)->getRootDeviceIndex()); ASSERT_NE(nullptr, imageGraphicsAllocation); - EXPECT_EQ(GMM_RESOURCE_USAGE_TYPE::GMM_RESOURCE_USAGE_OCL_IMAGE, imageGraphicsAllocation->getDefaultGmm()->resourceParams.Usage); + EXPECT_EQ(GMM_RESOURCE_USAGE_TYPE::GMM_RESOURCE_USAGE_OCL_IMAGE, imageGraphicsAllocation->getDefaultGmm()->getResourceUsageType()); } TEST_F(ClWddmMemoryManagerTest, givenWddmMemoryManagerWhenTiledImageWithMipCountNonZeroIsBeingCreatedThenallocateGraphicsMemoryForImageIsUsed) { @@ -126,7 +126,7 @@ TEST_F(ClWddmMemoryManagerTest, givenWddmMemoryManagerWhenTiledImageWithMipCount auto imageGraphicsAllocation = dstImage->getGraphicsAllocation(context.getDevice(0)->getRootDeviceIndex()); ASSERT_NE(nullptr, imageGraphicsAllocation); - EXPECT_EQ(GMM_RESOURCE_USAGE_TYPE::GMM_RESOURCE_USAGE_OCL_IMAGE, imageGraphicsAllocation->getDefaultGmm()->resourceParams.Usage); + EXPECT_EQ(GMM_RESOURCE_USAGE_TYPE::GMM_RESOURCE_USAGE_OCL_IMAGE, imageGraphicsAllocation->getDefaultGmm()->getResourceUsageType()); } HWTEST_F(ClWddmMemoryManagerTest, givenWddmMemoryManagerWhenTiledImageIsBeingCreatedFromHostPtrThenallocateGraphicsMemoryForImageIsUsed) { @@ -162,7 +162,7 @@ HWTEST_F(ClWddmMemoryManagerTest, givenWddmMemoryManagerWhenTiledImageIsBeingCre auto imageGraphicsAllocation = dstImage->getGraphicsAllocation(context.getDevice(0)->getRootDeviceIndex()); ASSERT_NE(nullptr, imageGraphicsAllocation); - EXPECT_EQ(GMM_RESOURCE_USAGE_TYPE::GMM_RESOURCE_USAGE_OCL_IMAGE, imageGraphicsAllocation->getDefaultGmm()->resourceParams.Usage); + EXPECT_EQ(GMM_RESOURCE_USAGE_TYPE::GMM_RESOURCE_USAGE_OCL_IMAGE, imageGraphicsAllocation->getDefaultGmm()->getResourceUsageType()); } TEST_F(ClWddmMemoryManagerTest, givenWddmMemoryManagerWhenNonTiledImgWithMipCountNonZeroisBeingCreatedThenAllocateGraphicsMemoryForImageIsUsed) { @@ -192,7 +192,7 @@ TEST_F(ClWddmMemoryManagerTest, givenWddmMemoryManagerWhenNonTiledImgWithMipCoun auto imageGraphicsAllocation = dstImage->getGraphicsAllocation(context.getDevice(0)->getRootDeviceIndex()); ASSERT_NE(nullptr, imageGraphicsAllocation); - EXPECT_EQ(GMM_RESOURCE_USAGE_TYPE::GMM_RESOURCE_USAGE_OCL_IMAGE, imageGraphicsAllocation->getDefaultGmm()->resourceParams.Usage); + EXPECT_EQ(GMM_RESOURCE_USAGE_TYPE::GMM_RESOURCE_USAGE_OCL_IMAGE, imageGraphicsAllocation->getDefaultGmm()->getResourceUsageType()); } TEST_F(BufferWithWddmMemory, WhenCreatingBufferThenBufferIsCreatedCorrectly) { @@ -255,10 +255,11 @@ TEST_F(BufferWithWddmMemory, GivenMisalignedHostPtrAndMultiplePagesSizeWhenAsked EXPECT_NE(0u, osHandle->handle); EXPECT_NE(nullptr, osHandle->gmm); + auto *gmmResourceParams = reinterpret_cast(osHandle->gmm->resourceParamsData.data()); EXPECT_EQ(reqs.allocationFragments[i].allocationPtr, - reinterpret_cast(osHandle->gmm->resourceParams.pExistingSysMem)); + reinterpret_cast(gmmResourceParams->pExistingSysMem)); EXPECT_EQ(reqs.allocationFragments[i].allocationSize, - osHandle->gmm->resourceParams.BaseWidth); + gmmResourceParams->BaseWidth); } memoryManager->freeGraphicsMemory(graphicsAllocation); EXPECT_EQ(0u, hostPtrManager->getFragmentCount()); diff --git a/opencl/test/unit_test/sharings/gl/windows/gl_create_from_texture_tests.cpp b/opencl/test/unit_test/sharings/gl/windows/gl_create_from_texture_tests.cpp index bda10a40cd..7b817c5847 100644 --- a/opencl/test/unit_test/sharings/gl/windows/gl_create_from_texture_tests.cpp +++ b/opencl/test/unit_test/sharings/gl/windows/gl_create_from_texture_tests.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2024 Intel Corporation + * Copyright (C) 2018-2025 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -204,7 +204,7 @@ TEST_P(CreateFromGlTextureTestsWithParams, givenAllTextureSpecificParamsWhenCrea EXPECT_EQ(glImage->getImageDesc().image_slice_pitch, imgInfo.size); } - EXPECT_EQ(glImage->getQPitch(), gmm->queryQPitch(gmm->gmmResourceInfo->getResourceType())); + EXPECT_EQ(glImage->getQPitch(), gmm->queryQPitch()); // gmm returns 1 by default - OCL requires 0 uint32_t numSamples = static_cast(gmm->gmmResourceInfo->getNumSamples()); diff --git a/opencl/test/unit_test/sharings/va/va_sharing_tests.cpp b/opencl/test/unit_test/sharings/va/va_sharing_tests.cpp index cf926e971b..bd85cb3e23 100644 --- a/opencl/test/unit_test/sharings/va/va_sharing_tests.cpp +++ b/opencl/test/unit_test/sharings/va/va_sharing_tests.cpp @@ -8,6 +8,7 @@ #include "shared/source/device/device.h" #include "shared/source/execution_environment/root_device_environment.h" #include "shared/source/gmm_helper/gmm.h" +#include "shared/source/gmm_helper/gmm_lib.h" #include "shared/source/helpers/array_count.h" #include "shared/source/memory_manager/graphics_allocation.h" #include "shared/source/os_interface/linux/drm_neo.h" @@ -951,7 +952,8 @@ TEST_F(VaSharingTests, givenP010FormatWhenCreatingSharedVaSurfaceForPlane0ThenCo EXPECT_EQ(static_cast(CL_UNORM_INT16), vaSurface->getImageFormat().image_channel_data_type); EXPECT_EQ(static_cast(CL_R), vaSurface->getImageFormat().image_channel_order); EXPECT_EQ(GMM_RESOURCE_FORMAT::GMM_FORMAT_R16_UNORM, vaSurface->getSurfaceFormatInfo().surfaceFormat.gmmSurfaceFormat); - EXPECT_EQ(GMM_RESOURCE_FORMAT::GMM_FORMAT_P010, graphicsAllocation->getDefaultGmm()->resourceParams.Format); + auto *gmmResourceParams = reinterpret_cast(graphicsAllocation->getDefaultGmm()->resourceParamsData.data()); + EXPECT_EQ(GMM_RESOURCE_FORMAT::GMM_FORMAT_P010, gmmResourceParams->Format); EXPECT_EQ(CL_SUCCESS, errCode); } @@ -965,7 +967,8 @@ TEST_F(VaSharingTests, givenP010FormatWhenCreatingSharedVaSurfaceForPlane1ThenCo EXPECT_EQ(static_cast(CL_UNORM_INT16), vaSurface->getImageFormat().image_channel_data_type); EXPECT_EQ(static_cast(CL_RG), vaSurface->getImageFormat().image_channel_order); EXPECT_EQ(GMM_RESOURCE_FORMAT::GMM_FORMAT_R16G16_UNORM, vaSurface->getSurfaceFormatInfo().surfaceFormat.gmmSurfaceFormat); - EXPECT_EQ(GMM_RESOURCE_FORMAT::GMM_FORMAT_P010, graphicsAllocation->getDefaultGmm()->resourceParams.Format); + auto *gmmResourceParams = reinterpret_cast(graphicsAllocation->getDefaultGmm()->resourceParamsData.data()); + EXPECT_EQ(GMM_RESOURCE_FORMAT::GMM_FORMAT_P010, gmmResourceParams->Format); EXPECT_EQ(CL_SUCCESS, errCode); } @@ -979,7 +982,8 @@ TEST_F(VaSharingTests, givenP016FormatWhenCreatingSharedVaSurfaceForPlane0ThenCo EXPECT_EQ(static_cast(CL_UNORM_INT16), vaSurface->getImageFormat().image_channel_data_type); EXPECT_EQ(static_cast(CL_R), vaSurface->getImageFormat().image_channel_order); EXPECT_EQ(GMM_RESOURCE_FORMAT::GMM_FORMAT_R16_UNORM, vaSurface->getSurfaceFormatInfo().surfaceFormat.gmmSurfaceFormat); - EXPECT_EQ(GMM_RESOURCE_FORMAT::GMM_FORMAT_P016, graphicsAllocation->getDefaultGmm()->resourceParams.Format); + auto *gmmResourceParams = reinterpret_cast(graphicsAllocation->getDefaultGmm()->resourceParamsData.data()); + EXPECT_EQ(GMM_RESOURCE_FORMAT::GMM_FORMAT_P016, gmmResourceParams->Format); EXPECT_EQ(CL_SUCCESS, errCode); } @@ -993,7 +997,8 @@ TEST_F(VaSharingTests, givenP016FormatWhenCreatingSharedVaSurfaceForPlane1ThenCo EXPECT_EQ(static_cast(CL_UNORM_INT16), vaSurface->getImageFormat().image_channel_data_type); EXPECT_EQ(static_cast(CL_RG), vaSurface->getImageFormat().image_channel_order); EXPECT_EQ(GMM_RESOURCE_FORMAT::GMM_FORMAT_R16G16_UNORM, vaSurface->getSurfaceFormatInfo().surfaceFormat.gmmSurfaceFormat); - EXPECT_EQ(GMM_RESOURCE_FORMAT::GMM_FORMAT_P016, graphicsAllocation->getDefaultGmm()->resourceParams.Format); + auto *gmmResourceParams = reinterpret_cast(graphicsAllocation->getDefaultGmm()->resourceParamsData.data()); + EXPECT_EQ(GMM_RESOURCE_FORMAT::GMM_FORMAT_P016, gmmResourceParams->Format); EXPECT_EQ(CL_SUCCESS, errCode); } @@ -1007,7 +1012,8 @@ TEST_F(VaSharingTests, givenRGBAFormatWhenCreatingSharedVaSurfaceForPlane0ThenCo EXPECT_EQ(static_cast(CL_UNORM_INT8), vaSurface->getImageFormat().image_channel_data_type); EXPECT_EQ(static_cast(CL_RGBA), vaSurface->getImageFormat().image_channel_order); EXPECT_EQ(GMM_RESOURCE_FORMAT::GMM_FORMAT_R8G8B8A8_UNORM_TYPE, vaSurface->getSurfaceFormatInfo().surfaceFormat.gmmSurfaceFormat); - EXPECT_EQ(GMM_RESOURCE_FORMAT::GMM_FORMAT_R8G8B8A8_UNORM_TYPE, graphicsAllocation->getDefaultGmm()->resourceParams.Format); + auto *gmmResourceParams = reinterpret_cast(graphicsAllocation->getDefaultGmm()->resourceParamsData.data()); + EXPECT_EQ(GMM_RESOURCE_FORMAT::GMM_FORMAT_R8G8B8A8_UNORM_TYPE, gmmResourceParams->Format); EXPECT_EQ(CL_SUCCESS, errCode); } @@ -1038,7 +1044,8 @@ TEST_F(VaSharingTests, givenYUY2FormatWhenCreatingSharedVaSurfaceThenCorrectForm EXPECT_EQ(static_cast(CL_UNORM_INT8), vaSurface->getImageFormat().image_channel_data_type); EXPECT_EQ(static_cast(CL_YUYV_INTEL), vaSurface->getImageFormat().image_channel_order); EXPECT_EQ(GMM_RESOURCE_FORMAT::GMM_FORMAT_YCRCB_NORMAL, vaSurface->getSurfaceFormatInfo().surfaceFormat.gmmSurfaceFormat); - EXPECT_EQ(GMM_RESOURCE_FORMAT::GMM_FORMAT_YCRCB_NORMAL, graphicsAllocation->getDefaultGmm()->resourceParams.Format); + auto *gmmResourceParams = reinterpret_cast(graphicsAllocation->getDefaultGmm()->resourceParamsData.data()); + EXPECT_EQ(GMM_RESOURCE_FORMAT::GMM_FORMAT_YCRCB_NORMAL, gmmResourceParams->Format); EXPECT_EQ(CL_SUCCESS, errCode); } @@ -1074,7 +1081,8 @@ TEST_F(VaSharingTests, givenEnabledExtendedVaFormatsAndRGBPFormatWhenCreatingSha EXPECT_EQ(static_cast(CL_UNORM_INT8), vaSurface->getImageFormat().image_channel_data_type); EXPECT_EQ(static_cast(CL_R), vaSurface->getImageFormat().image_channel_order); EXPECT_EQ(GMM_RESOURCE_FORMAT::GMM_FORMAT_R8_UNORM, vaSurface->getSurfaceFormatInfo().surfaceFormat.gmmSurfaceFormat); - EXPECT_EQ(GMM_RESOURCE_FORMAT::GMM_FORMAT_RGBP, graphicsAllocation->getDefaultGmm()->resourceParams.Format); + auto *gmmResourceParams = reinterpret_cast(graphicsAllocation->getDefaultGmm()->resourceParamsData.data()); + EXPECT_EQ(GMM_RESOURCE_FORMAT::GMM_FORMAT_RGBP, gmmResourceParams->Format); EXPECT_EQ(CL_SUCCESS, errCode); } @@ -1098,7 +1106,8 @@ TEST_F(VaSharingTests, givenEnabledExtendedVaFormatsAndRGBPFormatWhenCreatingSha EXPECT_EQ(static_cast(CL_UNORM_INT8), vaSurface->getImageFormat().image_channel_data_type); EXPECT_EQ(static_cast(CL_R), vaSurface->getImageFormat().image_channel_order); EXPECT_EQ(GMM_RESOURCE_FORMAT::GMM_FORMAT_R8_UNORM, vaSurface->getSurfaceFormatInfo().surfaceFormat.gmmSurfaceFormat); - EXPECT_EQ(GMM_RESOURCE_FORMAT::GMM_FORMAT_RGBP, graphicsAllocation->getDefaultGmm()->resourceParams.Format); + auto *gmmResourceParams = reinterpret_cast(graphicsAllocation->getDefaultGmm()->resourceParamsData.data()); + EXPECT_EQ(GMM_RESOURCE_FORMAT::GMM_FORMAT_RGBP, gmmResourceParams->Format); EXPECT_EQ(CL_SUCCESS, errCode); } @@ -1122,7 +1131,8 @@ TEST_F(VaSharingTests, givenEnabledExtendedVaFormatsAndRGBPFormatWhenCreatingSha EXPECT_EQ(static_cast(CL_UNORM_INT8), vaSurface->getImageFormat().image_channel_data_type); EXPECT_EQ(static_cast(CL_R), vaSurface->getImageFormat().image_channel_order); EXPECT_EQ(GMM_RESOURCE_FORMAT::GMM_FORMAT_R8_UNORM, vaSurface->getSurfaceFormatInfo().surfaceFormat.gmmSurfaceFormat); - EXPECT_EQ(GMM_RESOURCE_FORMAT::GMM_FORMAT_RGBP, graphicsAllocation->getDefaultGmm()->resourceParams.Format); + auto *gmmResourceParams = reinterpret_cast(graphicsAllocation->getDefaultGmm()->resourceParamsData.data()); + EXPECT_EQ(GMM_RESOURCE_FORMAT::GMM_FORMAT_RGBP, gmmResourceParams->Format); EXPECT_EQ(CL_SUCCESS, errCode); } @@ -1192,7 +1202,8 @@ TEST_F(VaSharingTests, givenEnabledExtendedVaFormatsAndNV12FormatWhenCreatingSha EXPECT_EQ(static_cast(CL_UNORM_INT8), vaSurface->getImageFormat().image_channel_data_type); EXPECT_EQ(static_cast(CL_R), vaSurface->getImageFormat().image_channel_order); EXPECT_EQ(GMM_RESOURCE_FORMAT::GMM_FORMAT_R8_UNORM, vaSurface->getSurfaceFormatInfo().surfaceFormat.gmmSurfaceFormat); - EXPECT_EQ(GMM_RESOURCE_FORMAT::GMM_FORMAT_NV12, graphicsAllocation->getDefaultGmm()->resourceParams.Format); + auto *gmmResourceParams = reinterpret_cast(graphicsAllocation->getDefaultGmm()->resourceParamsData.data()); + EXPECT_EQ(GMM_RESOURCE_FORMAT::GMM_FORMAT_NV12, gmmResourceParams->Format); EXPECT_EQ(CL_SUCCESS, errCode); } diff --git a/shared/source/command_stream/command_stream_receiver_simulated_hw.h b/shared/source/command_stream/command_stream_receiver_simulated_hw.h index 4d3a74db0b..3352e66884 100644 --- a/shared/source/command_stream/command_stream_receiver_simulated_hw.h +++ b/shared/source/command_stream/command_stream_receiver_simulated_hw.h @@ -101,7 +101,7 @@ class CommandStreamReceiverSimulatedHw : public CommandStreamReceiverSimulatedCo if (gmm) { allocationParams.additionalParams.compressionEnabled = gmm->isCompressionEnabled(); - allocationParams.additionalParams.uncached = CacheSettingsHelper::isUncachedType(gmm->resourceParams.Usage); + allocationParams.additionalParams.uncached = CacheSettingsHelper::isUncachedType(gmm->getResourceUsageType()); } if (graphicsAllocation.storageInfo.cloningOfPageTables || !graphicsAllocation.isAllocatedInLocalMemoryPool()) { diff --git a/shared/source/debug_settings/debug_variables_base.inl b/shared/source/debug_settings/debug_variables_base.inl index 927182aa77..84450eb582 100644 --- a/shared/source/debug_settings/debug_variables_base.inl +++ b/shared/source/debug_settings/debug_variables_base.inl @@ -184,7 +184,7 @@ DECLARE_DEBUG_VARIABLE(int32_t, OverrideMaxWorkGroupCount, -1, "-1: default, >0: DECLARE_DEBUG_VARIABLE(int32_t, OverrideCmdQueueSynchronousMode, -1, "Overrides all command queues synchronous mode: -1: do not override, 0: implicit driver behavior, 1: synchronous, 2: asynchronous") DECLARE_DEBUG_VARIABLE(int32_t, OverrideImmediateCmdListSynchronousMode, -1, "Overrides all immediate command lists synchronous mode: -1: do not override, 0: implicit driver behavior, 1: synchronous, 2: asynchronous") DECLARE_DEBUG_VARIABLE(int32_t, EnableStatelessCompression, -1, "-1: default, 0: disable, 1: Enable E2EC in SBA for all stateless accesses") -DECLARE_DEBUG_VARIABLE(int32_t, OverrideGmmResourceUsageField, -1, "-1: default, >=0: gmm.resourceParams.Usage is set to this value") +DECLARE_DEBUG_VARIABLE(int32_t, OverrideGmmResourceUsageField, -1, "-1: default, >=0: gmmResourceParams->Usage is set to this value") DECLARE_DEBUG_VARIABLE(int32_t, OverrideGmmCacheableField, -1, "-1: default, >=0: gmm Flags.Info.Cacheable is set to this value") DECLARE_DEBUG_VARIABLE(int32_t, OverrideBufferSuitableForRenderCompression, -1, "-1: default, 0: Disable, 1: Enable") DECLARE_DEBUG_VARIABLE(int32_t, OverrideL1CacheControlInSurfaceState, -1, "-1: feature inactive, >=0 : following L1 cache control value will be programmed in render surface state (for regular buffers)") diff --git a/shared/source/gmm_helper/CMakeLists.txt b/shared/source/gmm_helper/CMakeLists.txt index 09f6bc9b47..890b1adaf8 100644 --- a/shared/source/gmm_helper/CMakeLists.txt +++ b/shared/source/gmm_helper/CMakeLists.txt @@ -21,6 +21,8 @@ set(NEO_CORE_GMM_HELPER ${CMAKE_CURRENT_SOURCE_DIR}/gmm_interface.h ${CMAKE_CURRENT_SOURCE_DIR}/gmm_lib.h ${CMAKE_CURRENT_SOURCE_DIR}/gmm_resource_usage_type.h + ${CMAKE_CURRENT_SOURCE_DIR}/gmm_resource_usage_ocl_buffer.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/gmm_resource_usage_ocl_buffer.h ${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}gmm_utils.cpp ${CMAKE_CURRENT_SOURCE_DIR}/gmm_wrappers.cpp ${CMAKE_CURRENT_SOURCE_DIR}/page_table_mngr.h diff --git a/shared/source/gmm_helper/gmm.cpp b/shared/source/gmm_helper/gmm.cpp index ce06fc9314..b9d19f777a 100644 --- a/shared/source/gmm_helper/gmm.cpp +++ b/shared/source/gmm_helper/gmm.cpp @@ -24,21 +24,23 @@ namespace NEO { Gmm::Gmm(GmmHelper *gmmHelper, const void *alignedPtr, size_t alignedSize, size_t alignment, GmmResourceUsageType gmmResourceUsage, const StorageInfo &storageInfo, const GmmRequirements &gmmRequirements) : gmmHelper(gmmHelper) { - resourceParams.Type = RESOURCE_BUFFER; - resourceParams.Format = GMM_FORMAT_GENERIC_8BIT; - resourceParams.BaseWidth64 = static_cast(alignedSize); - resourceParams.BaseHeight = 1; - resourceParams.Depth = 1; - resourceParams.BaseAlignment = static_cast(alignment); + this->resourceParamsData.resize(sizeof(GMM_RESCREATE_PARAMS)); + auto *resourceParams = reinterpret_cast(this->resourceParamsData.data()); + resourceParams->Type = RESOURCE_BUFFER; + resourceParams->Format = GMM_FORMAT_GENERIC_8BIT; + resourceParams->BaseWidth64 = static_cast(alignedSize); + resourceParams->BaseHeight = 1; + resourceParams->Depth = 1; + resourceParams->BaseAlignment = static_cast(alignment); if ((nullptr == alignedPtr) && (false == gmmRequirements.allowLargePages)) { - resourceParams.Flags.Info.NoOptimizationPadding = true; - if ((resourceParams.BaseWidth64 & MemoryConstants::page64kMask) == 0) { - resourceParams.BaseWidth64 += MemoryConstants::pageSize; + resourceParams->Flags.Info.NoOptimizationPadding = true; + if ((resourceParams->BaseWidth64 & MemoryConstants::page64kMask) == 0) { + resourceParams->BaseWidth64 += MemoryConstants::pageSize; } } - resourceParams.Usage = static_cast(gmmResourceUsage); - resourceParams.Flags.Info.Linear = 1; + resourceParams->Usage = static_cast(gmmResourceUsage); + resourceParams->Flags.Info.Linear = 1; this->preferNoCpuAccess = CacheSettingsHelper::preferNoCpuAccess(gmmResourceUsage, gmmHelper->getRootDeviceEnvironment()); bool cacheable = !this->preferNoCpuAccess && !CacheSettingsHelper::isUncachedType(gmmResourceUsage); @@ -50,20 +52,20 @@ Gmm::Gmm(GmmHelper *gmmHelper, const void *alignedPtr, size_t alignedSize, size_ cacheable = !!NEO::debugManager.flags.OverrideGmmCacheableField.get(); } - resourceParams.Flags.Info.Cacheable = cacheable; + resourceParams->Flags.Info.Cacheable = cacheable; - resourceParams.Flags.Gpu.Texture = 1; + resourceParams->Flags.Gpu.Texture = 1; if (alignedPtr) { - resourceParams.Flags.Info.ExistingSysMem = 1; - resourceParams.pExistingSysMem = castToUint64(alignedPtr); - resourceParams.ExistingSysMemSize = alignedSize; + resourceParams->Flags.Info.ExistingSysMem = 1; + resourceParams->pExistingSysMem = castToUint64(alignedPtr); + resourceParams->ExistingSysMemSize = alignedSize; } else { - resourceParams.NoGfxMemory = 1u; + resourceParams->NoGfxMemory = 1u; } - if (resourceParams.BaseWidth64 >= GmmHelper::maxPossiblePitch) { - resourceParams.Flags.Gpu.NoRestriction = 1; + if (resourceParams->BaseWidth64 >= GmmHelper::maxPossiblePitch) { + resourceParams->Flags.Gpu.NoRestriction = 1; } applyAuxFlagsForBuffer(gmmRequirements.preferCompressed && !storageInfo.isLockable); @@ -71,15 +73,16 @@ Gmm::Gmm(GmmHelper *gmmHelper, const void *alignedPtr, size_t alignedSize, size_ applyAppResource(storageInfo); applyDebugOverrides(); - gmmResourceInfo.reset(GmmResourceInfo::create(gmmHelper->getClientContext(), &resourceParams)); + gmmResourceInfo.reset(GmmResourceInfo::create(gmmHelper->getClientContext(), resourceParams)); } -Gmm::Gmm(GmmHelper *gmmHelper, GMM_RESOURCE_INFO *inputGmm) : Gmm(gmmHelper, inputGmm, false) {} +Gmm::Gmm(GmmHelper *gmmHelper, GmmResourceInfo *inputGmm) : Gmm(gmmHelper, inputGmm, false) {} -Gmm::Gmm(GmmHelper *gmmHelper, GMM_RESOURCE_INFO *inputGmm, bool openingHandle) : gmmHelper(gmmHelper) { +Gmm::Gmm(GmmHelper *gmmHelper, GmmResourceInfo *inputGmm, bool openingHandle) : gmmHelper(gmmHelper) { + this->resourceParamsData.resize(sizeof(GMM_RESCREATE_PARAMS)); auto &rootDeviceEnvironment = gmmHelper->getRootDeviceEnvironment(); auto &gfxCoreHelper = rootDeviceEnvironment.getHelper(); - gmmResourceInfo.reset(GmmResourceInfo::create(gmmHelper->getClientContext(), inputGmm, openingHandle)); + gmmResourceInfo.reset(GmmResourceInfo::create(gmmHelper->getClientContext(), inputGmm->peekGmmResourceInfo(), openingHandle)); if (!gfxCoreHelper.isCompressionAppliedForImportedResource(*this)) { compressionEnabled = false; } @@ -89,14 +92,15 @@ Gmm::Gmm(GmmHelper *gmmHelper, GMM_RESOURCE_INFO *inputGmm, bool openingHandle) Gmm::~Gmm() = default; Gmm::Gmm(GmmHelper *gmmHelper, ImageInfo &inputOutputImgInfo, const StorageInfo &storageInfo, bool preferCompressed) : gmmHelper(gmmHelper) { - this->resourceParams = {}; + this->resourceParamsData.resize(sizeof(GMM_RESCREATE_PARAMS)); + auto *resourceParams = reinterpret_cast(this->resourceParamsData.data()); preferCompressed &= !storageInfo.isLockable; setupImageResourceParams(inputOutputImgInfo, preferCompressed); applyMemoryFlags(storageInfo); applyAppResource(storageInfo); applyDebugOverrides(); - this->gmmResourceInfo.reset(GmmResourceInfo::create(gmmHelper->getClientContext(), &this->resourceParams)); + this->gmmResourceInfo.reset(GmmResourceInfo::create(gmmHelper->getClientContext(), resourceParams)); UNRECOVERABLE_IF(this->gmmResourceInfo == nullptr); queryImageParams(inputOutputImgInfo); @@ -108,19 +112,21 @@ void Gmm::setupImageResourceParams(ImageInfo &imgInfo, bool preferCompressed) { uint32_t imageDepth = 1; uint32_t imageCount = 1; + auto *resourceParams = reinterpret_cast(this->resourceParamsData.data()); + switch (imgInfo.imgDesc.imageType) { case ImageType::image1D: case ImageType::image1DArray: case ImageType::image1DBuffer: - resourceParams.Type = GMM_RESOURCE_TYPE::RESOURCE_1D; + resourceParams->Type = GMM_RESOURCE_TYPE::RESOURCE_1D; break; case ImageType::image2D: case ImageType::image2DArray: - resourceParams.Type = GMM_RESOURCE_TYPE::RESOURCE_2D; + resourceParams->Type = GMM_RESOURCE_TYPE::RESOURCE_2D; imageHeight = static_cast(imgInfo.imgDesc.imageHeight); break; case ImageType::image3D: - resourceParams.Type = GMM_RESOURCE_TYPE::RESOURCE_3D; + resourceParams->Type = GMM_RESOURCE_TYPE::RESOURCE_3D; imageHeight = static_cast(imgInfo.imgDesc.imageHeight); imageDepth = static_cast(imgInfo.imgDesc.imageDepth); break; @@ -133,29 +139,29 @@ void Gmm::setupImageResourceParams(ImageInfo &imgInfo, bool preferCompressed) { imageCount = static_cast(imgInfo.imgDesc.imageArraySize); } - resourceParams.Flags.Info.Linear = imgInfo.linearStorage; + resourceParams->Flags.Info.Linear = imgInfo.linearStorage; switch (imgInfo.forceTiling) { case ImageTilingMode::tiledW: - resourceParams.Flags.Info.TiledW = true; + resourceParams->Flags.Info.TiledW = true; break; case ImageTilingMode::tiledX: - resourceParams.Flags.Info.TiledX = true; + resourceParams->Flags.Info.TiledX = true; break; case ImageTilingMode::tiledY: - resourceParams.Flags.Info.TiledY = true; + resourceParams->Flags.Info.TiledY = true; break; case ImageTilingMode::tiledYf: - resourceParams.Flags.Info.TiledYf = true; + resourceParams->Flags.Info.TiledYf = true; break; case ImageTilingMode::tiledYs: - resourceParams.Flags.Info.TiledYs = true; + resourceParams->Flags.Info.TiledYs = true; break; case ImageTilingMode::tiled4: - resourceParams.Flags.Info.Tile4 = true; + resourceParams->Flags.Info.Tile4 = true; break; case ImageTilingMode::tiled64: - resourceParams.Flags.Info.Tile64 = true; + resourceParams->Flags.Info.Tile64 = true; break; default: break; @@ -163,18 +169,18 @@ void Gmm::setupImageResourceParams(ImageInfo &imgInfo, bool preferCompressed) { auto &gfxCoreHelper = gmmHelper->getRootDeviceEnvironment().getHelper(); auto &productHelper = gmmHelper->getRootDeviceEnvironment().getHelper(); - resourceParams.NoGfxMemory = 1; // dont allocate, only query for params + resourceParams->NoGfxMemory = 1; // dont allocate, only query for params - resourceParams.Usage = static_cast(CacheSettingsHelper::getGmmUsageType(AllocationType::image, false, productHelper, gmmHelper->getHardwareInfo())); + resourceParams->Usage = static_cast(CacheSettingsHelper::getGmmUsageType(AllocationType::image, false, productHelper, gmmHelper->getHardwareInfo())); - resourceParams.Format = static_cast(imgInfo.surfaceFormat->gmmSurfaceFormat); - resourceParams.Flags.Gpu.Texture = 1; - resourceParams.BaseWidth64 = imageWidth; - resourceParams.BaseHeight = imageHeight; - resourceParams.Depth = imageDepth; - resourceParams.ArraySize = imageCount; - resourceParams.Flags.Wa.__ForceOtherHVALIGN4 = gfxCoreHelper.hvAlign4Required(); - resourceParams.MaxLod = imgInfo.baseMipLevel + imgInfo.mipCount; + resourceParams->Format = static_cast(imgInfo.surfaceFormat->gmmSurfaceFormat); + resourceParams->Flags.Gpu.Texture = 1; + resourceParams->BaseWidth64 = imageWidth; + resourceParams->BaseHeight = imageHeight; + resourceParams->Depth = imageDepth; + resourceParams->ArraySize = imageCount; + resourceParams->Flags.Wa.__ForceOtherHVALIGN4 = gfxCoreHelper.hvAlign4Required(); + resourceParams->MaxLod = imgInfo.baseMipLevel + imgInfo.mipCount; applyAuxFlagsForImage(imgInfo, preferCompressed); } @@ -186,16 +192,18 @@ void Gmm::applyAuxFlagsForBuffer(bool preferCompression) { bool allowCompression = GfxCoreHelper::compressedBuffersSupported(*hardwareInfo) && preferCompression; + auto *resourceParams = reinterpret_cast(this->resourceParamsData.data()); + if (allowCompression) { gfxCoreHelper.applyRenderCompressionFlag(*this, 1); - resourceParams.Flags.Gpu.CCS = 1; - resourceParams.Flags.Gpu.UnifiedAuxSurface = 1; + resourceParams->Flags.Gpu.CCS = 1; + resourceParams->Flags.Gpu.UnifiedAuxSurface = 1; compressionEnabled = true; } PRINT_STRING(debugManager.flags.PrintGmmCompressionParams.get(), stdout, "\nGmm Resource compression params: \n\tFlags.Gpu.CCS: %u\n\tFlags.Gpu.UnifiedAuxSurface: %u\n\tFlags.Info.RenderCompressed: %u", - resourceParams.Flags.Gpu.CCS, resourceParams.Flags.Gpu.UnifiedAuxSurface, resourceParams.Flags.Info.RenderCompressed); + resourceParams->Flags.Gpu.CCS, resourceParams->Flags.Gpu.UnifiedAuxSurface, resourceParams->Flags.Info.RenderCompressed); gfxCoreHelper.applyAdditionalCompressionSettings(*this, !compressionEnabled); } @@ -206,7 +214,9 @@ void Gmm::applyAuxFlagsForImage(ImageInfo &imgInfo, bool preferCompressed) { auto &gfxCoreHelper = rootDeviceEnvironment.getHelper(); auto hardwareInfo = rootDeviceEnvironment.getHardwareInfo(); auto gmmResourceFormat = static_cast(imgInfo.surfaceFormat->gmmSurfaceFormat); - if (this->resourceParams.Flags.Info.MediaCompressed) { + auto *resourceParams = reinterpret_cast(this->resourceParamsData.data()); + + if (resourceParams->Flags.Info.MediaCompressed) { compressionFormat = gmmHelper->getClientContext()->getMediaSurfaceStateCompressionFormat(gmmResourceFormat); } else { compressionFormat = gmmHelper->getClientContext()->getSurfaceStateCompressionFormat(gmmResourceFormat); @@ -236,16 +246,16 @@ void Gmm::applyAuxFlagsForImage(ImageInfo &imgInfo, bool preferCompressed) { if (imgInfo.useLocalMemory || !hardwareInfo->featureTable.flags.ftrLocalMemory) { if (allowCompression) { gfxCoreHelper.applyRenderCompressionFlag(*this, 1); - this->resourceParams.Flags.Gpu.CCS = 1; - this->resourceParams.Flags.Gpu.UnifiedAuxSurface = 1; - this->resourceParams.Flags.Gpu.IndirectClearColor = 1; + resourceParams->Flags.Gpu.CCS = 1; + resourceParams->Flags.Gpu.UnifiedAuxSurface = 1; + resourceParams->Flags.Gpu.IndirectClearColor = 1; this->compressionEnabled = true; } } PRINT_STRING(debugManager.flags.PrintGmmCompressionParams.get(), stdout, "\nGmm Resource compression params: \n\tFlags.Gpu.CCS: %u\n\tFlags.Gpu.UnifiedAuxSurface: %u\n\tFlags.Info.RenderCompressed: %u", - resourceParams.Flags.Gpu.CCS, resourceParams.Flags.Gpu.UnifiedAuxSurface, resourceParams.Flags.Info.RenderCompressed); + resourceParams->Flags.Gpu.CCS, resourceParams->Flags.Gpu.UnifiedAuxSurface, resourceParams->Flags.Info.RenderCompressed); gfxCoreHelper.applyAdditionalCompressionSettings(*this, !compressionEnabled); } @@ -260,9 +270,11 @@ void Gmm::queryImageParams(ImageInfo &imgInfo) { imgInfo.rowPitch = imgInfo.rowPitch * (this->gmmResourceInfo->getBitsPerPixel() >> 3); } + auto *resourceParams = reinterpret_cast(this->resourceParamsData.data()); + // calculate slice pitch - if ((this->resourceParams.Type == GMM_RESOURCE_TYPE::RESOURCE_2D || - this->resourceParams.Type == GMM_RESOURCE_TYPE::RESOURCE_1D) && + if ((resourceParams->Type == GMM_RESOURCE_TYPE::RESOURCE_2D || + resourceParams->Type == GMM_RESOURCE_TYPE::RESOURCE_1D) && imageCount == 1) { // 2D or 1D or 1Darray with array_size=1 imgInfo.slicePitch = imgInfo.size; @@ -302,10 +314,10 @@ void Gmm::queryImageParams(ImageInfo &imgInfo) { imgInfo.yOffsetForUVPlane = reqOffsetInfo.Lock.Offset / reqOffsetInfo.Lock.Pitch; } - imgInfo.qPitch = queryQPitch(this->resourceParams.Type); + imgInfo.qPitch = queryQPitch(); } -uint32_t Gmm::queryQPitch(GMM_RESOURCE_TYPE resType) { +uint32_t Gmm::queryQPitch() { return gmmResourceInfo->getQPitch(); } @@ -400,9 +412,11 @@ uint32_t Gmm::getAuxQPitch() { void Gmm::applyMemoryFlags(const StorageInfo &storageInfo) { auto hardwareInfo = gmmHelper->getHardwareInfo(); + auto *resourceParams = reinterpret_cast(this->resourceParamsData.data()); + if (hardwareInfo->featureTable.flags.ftrLocalMemory) { if (storageInfo.systemMemoryPlacement) { - resourceParams.Flags.Info.NonLocalOnly = 1; + resourceParams->Flags.Info.NonLocalOnly = 1; } else { // `extraMemoryFlagsRequired()` is only virtual in tests where it is overridden by a mock for no better alternative const bool extraFlagsRequired{extraMemoryFlagsRequired()}; // NOLINT(clang-analyzer-optin.cplusplus.VirtualCall) @@ -412,51 +426,52 @@ void Gmm::applyMemoryFlags(const StorageInfo &storageInfo) { if (!extraFlagsRequired || gmmHelper->isLocalOnlyAllocationMode()) { if (!storageInfo.isLockable) { if (storageInfo.localOnlyRequired) { - resourceParams.Flags.Info.LocalOnly = 1; + resourceParams->Flags.Info.LocalOnly = 1; } } } } } if (!storageInfo.isLockable) { - resourceParams.Flags.Info.NotLockable = 1; + resourceParams->Flags.Info.NotLockable = 1; } if (hardwareInfo->featureTable.flags.ftrMultiTileArch) { - resourceParams.MultiTileArch.Enable = 1; + resourceParams->MultiTileArch.Enable = 1; if (storageInfo.systemMemoryPlacement) { - resourceParams.MultiTileArch.GpuVaMappingSet = hardwareInfo->gtSystemInfo.MultiTileArchInfo.TileMask; - resourceParams.MultiTileArch.LocalMemPreferredSet = 0; - resourceParams.MultiTileArch.LocalMemEligibilitySet = 0; + resourceParams->MultiTileArch.GpuVaMappingSet = hardwareInfo->gtSystemInfo.MultiTileArchInfo.TileMask; + resourceParams->MultiTileArch.LocalMemPreferredSet = 0; + resourceParams->MultiTileArch.LocalMemEligibilitySet = 0; } else { auto tileSelected = std::max(storageInfo.memoryBanks.to_ulong(), 1lu); if (storageInfo.cloningOfPageTables) { - resourceParams.MultiTileArch.GpuVaMappingSet = static_cast(storageInfo.pageTablesVisibility.to_ulong()); + resourceParams->MultiTileArch.GpuVaMappingSet = static_cast(storageInfo.pageTablesVisibility.to_ulong()); } else { - resourceParams.MultiTileArch.TileInstanced = storageInfo.tileInstanced; - resourceParams.MultiTileArch.GpuVaMappingSet = static_cast(tileSelected); + resourceParams->MultiTileArch.TileInstanced = storageInfo.tileInstanced; + resourceParams->MultiTileArch.GpuVaMappingSet = static_cast(tileSelected); } - resourceParams.MultiTileArch.LocalMemPreferredSet = static_cast(tileSelected); - resourceParams.MultiTileArch.LocalMemEligibilitySet = static_cast(tileSelected); + resourceParams->MultiTileArch.LocalMemPreferredSet = static_cast(tileSelected); + resourceParams->MultiTileArch.LocalMemEligibilitySet = static_cast(tileSelected); } } } void Gmm::applyDebugOverrides() { + auto *resourceParams = reinterpret_cast(this->resourceParamsData.data()); if (-1 != debugManager.flags.OverrideGmmResourceUsageField.get()) { - resourceParams.Usage = static_cast(debugManager.flags.OverrideGmmResourceUsageField.get()); + resourceParams->Usage = static_cast(debugManager.flags.OverrideGmmResourceUsageField.get()); } if (true == (debugManager.flags.ForceAllResourcesUncached.get())) { - resourceParams.Usage = GMM_RESOURCE_USAGE_SURFACE_UNCACHED; + resourceParams->Usage = GMM_RESOURCE_USAGE_SURFACE_UNCACHED; } } std::string Gmm::getUsageTypeString() { - switch (resourceParams.Usage) { + switch (this->getResourceUsageType()) { case GMM_RESOURCE_USAGE_TYPE_ENUM::GMM_RESOURCE_USAGE_OCL_SYSTEM_MEMORY_BUFFER_CACHELINE_MISALIGNED: return "GMM_RESOURCE_USAGE_OCL_SYSTEM_MEMORY_BUFFER_CACHELINE_MISALIGNED"; case GMM_RESOURCE_USAGE_TYPE_ENUM::GMM_RESOURCE_USAGE_OCL_BUFFER_CACHELINE_MISALIGNED: @@ -477,4 +492,10 @@ std::string Gmm::getUsageTypeString() { return "UNKNOWN GMM USAGE TYPE " + std::to_string(gmmResourceInfo->getCachePolicyUsage()); } } + +GmmResourceUsageType Gmm::getResourceUsageType() { + auto *resourceParams = reinterpret_cast(this->resourceParamsData.data()); + return static_cast(resourceParams->Usage); +} + } // namespace NEO diff --git a/shared/source/gmm_helper/gmm.h b/shared/source/gmm_helper/gmm.h index 1228c9e45d..411c5ebdf3 100644 --- a/shared/source/gmm_helper/gmm.h +++ b/shared/source/gmm_helper/gmm.h @@ -6,12 +6,12 @@ */ #pragma once -#include "shared/source/gmm_helper/gmm_lib.h" #include "shared/source/gmm_helper/gmm_resource_usage_type.h" #include #include #include +#include namespace NEO { enum class ImagePlane; @@ -47,8 +47,8 @@ class Gmm { Gmm(GmmHelper *gmmHelper, ImageInfo &inputOutputImgInfo, const StorageInfo &storageInfo, bool preferCompressed); Gmm(GmmHelper *gmmHelper, const void *alignedPtr, size_t alignedSize, size_t alignment, GmmResourceUsageType gmmResourceUsage, const StorageInfo &storageInfo, const GmmRequirements &gmmRequirements); - Gmm(GmmHelper *gmmHelper, GMM_RESOURCE_INFO *inputGmm); - Gmm(GmmHelper *gmmHelper, GMM_RESOURCE_INFO *inputGmm, bool openingHandle); + Gmm(GmmHelper *gmmHelper, GmmResourceInfo *inputGmm); + Gmm(GmmHelper *gmmHelper, GmmResourceInfo *inputGmm, bool openingHandle); void queryImageParams(ImageInfo &inputOutputImgInfo); @@ -62,7 +62,7 @@ class Gmm { GmmHelper *getGmmHelper() const; - uint32_t queryQPitch(GMM_RESOURCE_TYPE resType); + uint32_t queryQPitch(); void updateImgInfoAndDesc(ImageInfo &imgInfo, uint32_t arrayIndex, ImagePlane yuvPlaneType); void updateOffsetsInImgInfo(ImageInfo &imgInfo, uint32_t arrayIndex); uint8_t resourceCopyBlt(void *sys, void *gpu, uint32_t pitch, uint32_t height, unsigned char upload, ImagePlane plane); @@ -71,12 +71,13 @@ class Gmm { uint32_t getAuxQPitch(); bool getPreferNoCpuAccess() const { return preferNoCpuAccess; } - GMM_RESCREATE_PARAMS resourceParams = {}; + std::vector resourceParamsData; std::unique_ptr gmmResourceInfo; std::string getUsageTypeString(); void setCompressionEnabled(bool compresionEnabled) { this->compressionEnabled = compresionEnabled; } bool isCompressionEnabled() const { return compressionEnabled; } + GmmResourceUsageType getResourceUsageType(); protected: void applyAuxFlagsForImage(ImageInfo &imgInfo, bool preferCompressed); diff --git a/shared/source/gmm_helper/gmm_resource_usage_ocl_buffer.cpp b/shared/source/gmm_helper/gmm_resource_usage_ocl_buffer.cpp new file mode 100644 index 0000000000..04f522bd09 --- /dev/null +++ b/shared/source/gmm_helper/gmm_resource_usage_ocl_buffer.cpp @@ -0,0 +1,17 @@ +/* + * Copyright (C) 2025 Intel Corporation + * + * SPDX-License-Identifier: MIT + * + */ + +#include "shared/source/gmm_helper/gmm_resource_usage_ocl_buffer.h" + +#include "shared/source/gmm_helper/gmm_lib.h" +#include "shared/source/gmm_helper/gmm_resource_usage_type.h" + +namespace NEO { +constexpr GmmResourceUsageType gmmResourceUsageOclBuffer = GMM_RESOURCE_USAGE_OCL_BUFFER; + +static_assert(static_cast(gmmResourceUsageOclBuffer) == GMM_RESOURCE_USAGE_OCL_BUFFER); +} // namespace NEO diff --git a/shared/source/gmm_helper/gmm_resource_usage_ocl_buffer.h b/shared/source/gmm_helper/gmm_resource_usage_ocl_buffer.h new file mode 100644 index 0000000000..9d419f342f --- /dev/null +++ b/shared/source/gmm_helper/gmm_resource_usage_ocl_buffer.h @@ -0,0 +1,13 @@ +/* + * Copyright (C) 2025 Intel Corporation + * + * SPDX-License-Identifier: MIT + * + */ + +#pragma once +#include "shared/source/gmm_helper/gmm_resource_usage_type.h" + +namespace NEO { +extern const GmmResourceUsageType gmmResourceUsageOclBuffer; +} // namespace NEO diff --git a/shared/source/helpers/gfx_core_helper_base.inl b/shared/source/helpers/gfx_core_helper_base.inl index e4685b3eaf..1874c8609c 100644 --- a/shared/source/helpers/gfx_core_helper_base.inl +++ b/shared/source/helpers/gfx_core_helper_base.inl @@ -640,7 +640,8 @@ bool GfxCoreHelperHw::isCompressionAppliedForImportedResource(Gmm &gm template void GfxCoreHelperHw::applyRenderCompressionFlag(Gmm &gmm, uint32_t isCompressed) const { - gmm.resourceParams.Flags.Info.RenderCompressed = isCompressed; + auto *gmmResourceParams = reinterpret_cast(gmm.resourceParamsData.data()); + gmmResourceParams->Flags.Info.RenderCompressed = isCompressed; } template diff --git a/shared/source/helpers/gfx_core_helper_xe2_and_later.inl b/shared/source/helpers/gfx_core_helper_xe2_and_later.inl index e5758e225e..7f6fabfc85 100644 --- a/shared/source/helpers/gfx_core_helper_xe2_and_later.inl +++ b/shared/source/helpers/gfx_core_helper_xe2_and_later.inl @@ -13,14 +13,15 @@ namespace NEO { template <> void GfxCoreHelperHw::applyAdditionalCompressionSettings(Gmm &gmm, bool isNotCompressed) const { - gmm.resourceParams.Flags.Info.NotCompressed = isNotCompressed; + auto *gmmResourceParams = reinterpret_cast(gmm.resourceParamsData.data()); + gmmResourceParams->Flags.Info.NotCompressed = isNotCompressed; if (!isNotCompressed) { - gmm.resourceParams.Flags.Info.Cacheable = 0; + gmmResourceParams->Flags.Info.Cacheable = 0; gmm.applyExtraAuxInitFlag(); } PRINT_STRING(debugManager.flags.PrintGmmCompressionParams.get(), stdout, - "\n\tFlags.Info.NotCompressed: %u", gmm.resourceParams.Flags.Info.NotCompressed); + "\n\tFlags.Info.NotCompressed: %u", gmmResourceParams->Flags.Info.NotCompressed); } template <> diff --git a/shared/source/memory_manager/graphics_allocation.cpp b/shared/source/memory_manager/graphics_allocation.cpp index 030771d67d..82a1d923f1 100644 --- a/shared/source/memory_manager/graphics_allocation.cpp +++ b/shared/source/memory_manager/graphics_allocation.cpp @@ -10,6 +10,7 @@ #include "shared/source/command_stream/command_stream_receiver.h" #include "shared/source/gmm_helper/gmm.h" #include "shared/source/gmm_helper/gmm_helper.h" +#include "shared/source/gmm_helper/gmm_lib.h" #include "shared/source/helpers/aligned_memory.h" #include "shared/source/helpers/bit_helpers.h" #include "shared/source/memory_manager/allocation_properties.h" @@ -91,7 +92,8 @@ bool GraphicsAllocation::isAllocationLockable() const { if (!gmm) { return true; } - return 0 == gmm->resourceParams.Flags.Info.NotLockable; + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + return 0 == gmmResourceParams->Flags.Info.NotLockable; } void GraphicsAllocation::setAubWritable(bool writable, uint32_t banks) { diff --git a/shared/source/os_interface/aub_memory_operations_handler.cpp b/shared/source/os_interface/aub_memory_operations_handler.cpp index 909c3fee27..598421c6d8 100644 --- a/shared/source/os_interface/aub_memory_operations_handler.cpp +++ b/shared/source/os_interface/aub_memory_operations_handler.cpp @@ -13,6 +13,7 @@ #include "shared/source/gmm_helper/cache_settings_helper.h" #include "shared/source/gmm_helper/gmm.h" #include "shared/source/gmm_helper/gmm_helper.h" +#include "shared/source/gmm_helper/gmm_lib.h" #include "shared/source/memory_manager/graphics_allocation.h" #include "aubstream/allocation_params.h" @@ -55,7 +56,7 @@ MemoryOperationsStatus AubMemoryOperationsHandler::makeResident(Device *device, if (gmm) { params.additionalParams.compressionEnabled = gmm->isCompressionEnabled(); - params.additionalParams.uncached = CacheSettingsHelper::isUncachedType(gmm->resourceParams.Usage); + params.additionalParams.uncached = CacheSettingsHelper::isUncachedType(gmm->getResourceUsageType()); } if (allocation->storageInfo.cloningOfPageTables || !allocation->isAllocatedInLocalMemoryPool()) { diff --git a/shared/source/os_interface/linux/drm_allocation.cpp b/shared/source/os_interface/linux/drm_allocation.cpp index 7a07f98b1a..2aa5bc74f6 100644 --- a/shared/source/os_interface/linux/drm_allocation.cpp +++ b/shared/source/os_interface/linux/drm_allocation.cpp @@ -10,6 +10,7 @@ #include "shared/source/debug_settings/debug_settings_manager.h" #include "shared/source/execution_environment/root_device_environment.h" #include "shared/source/gmm_helper/gmm.h" +#include "shared/source/gmm_helper/gmm_lib.h" #include "shared/source/helpers/basic_math.h" #include "shared/source/helpers/hw_info.h" #include "shared/source/memory_manager/residency.h" @@ -57,8 +58,9 @@ std::string DrmAllocation::getPatIndexInfoString(const ProductHelper &productHel if (gmm) { ss << " Gmm resource usage: " << "[ " << gmm->getUsageTypeString() << " ],"; - ss << " Cacheable: " << gmm->resourceParams.Flags.Info.Cacheable; - ss << " NotLockable: " << gmm->resourceParams.Flags.Info.NotLockable; + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + ss << " Cacheable: " << gmmResourceParams->Flags.Info.Cacheable; + ss << " NotLockable: " << gmmResourceParams->Flags.Info.NotLockable; } return ss.str(); } diff --git a/shared/source/os_interface/linux/drm_neo.cpp b/shared/source/os_interface/linux/drm_neo.cpp index 35aa027324..af9f15e9fb 100644 --- a/shared/source/os_interface/linux/drm_neo.cpp +++ b/shared/source/os_interface/linux/drm_neo.cpp @@ -1506,7 +1506,7 @@ uint64_t Drm::getPatIndex(Gmm *gmm, AllocationType allocationType, CacheRegion c if (gmm) { resourceInfo = gmm->gmmResourceInfo->peekGmmResourceInfo(); - usageType = gmm->resourceParams.Usage; + usageType = gmm->getResourceUsageType(); compressed = gmm->isCompressionEnabled(); cacheable = gmm->gmmResourceInfo->getResourceFlags()->Info.Cacheable; } diff --git a/shared/source/os_interface/windows/wddm/wddm.cpp b/shared/source/os_interface/windows/wddm/wddm.cpp index 475c1241e4..52253ca9a6 100644 --- a/shared/source/os_interface/windows/wddm/wddm.cpp +++ b/shared/source/os_interface/windows/wddm/wddm.cpp @@ -911,7 +911,9 @@ bool Wddm::openSharedHandle(const MemoryManager::OsHandleData &osHandleData, Wdd alloc->setResourceHandle(openResource.hResource); auto resourceInfo = const_cast(allocationInfo[allocationInfoIndex].pPrivateDriverData); - alloc->setDefaultGmm(new Gmm(rootDeviceEnvironment.getGmmHelper(), static_cast(resourceInfo))); + auto gmmHelper = rootDeviceEnvironment.getGmmHelper(); + auto gmmResourceInfo = std::unique_ptr(GmmResourceInfo::create(gmmHelper->getClientContext(), static_cast(resourceInfo))); + alloc->setDefaultGmm(new Gmm(gmmHelper, gmmResourceInfo.get())); return true; } @@ -960,7 +962,9 @@ bool Wddm::openNTHandle(const MemoryManager::OsHandleData &osHandleData, WddmAll auto allocationInfoIndex = osHandleData.arrayIndex < queryResourceInfoFromNtHandle.NumAllocations ? osHandleData.arrayIndex : 0; auto resourceInfo = const_cast(allocationInfo2[allocationInfoIndex].pPrivateDriverData); - alloc->setDefaultGmm(new Gmm(rootDeviceEnvironment.getGmmHelper(), static_cast(resourceInfo), hwDeviceId->getUmKmDataTranslator()->enabled())); + auto gmmHelper = rootDeviceEnvironment.getGmmHelper(); + auto gmmResourceInfo = std::unique_ptr(GmmResourceInfo::create(gmmHelper->getClientContext(), static_cast(resourceInfo))); + alloc->setDefaultGmm(new Gmm(gmmHelper, gmmResourceInfo.get(), hwDeviceId->getUmKmDataTranslator()->enabled())); alloc->setDefaultHandle(allocationInfo2[allocationInfoIndex].hAllocation); alloc->setResourceHandle(openResourceFromNtHandle.hResource); diff --git a/shared/test/common/mocks/mock_gmm.h b/shared/test/common/mocks/mock_gmm.h index c8c54eb95d..a58fe70fe0 100644 --- a/shared/test/common/mocks/mock_gmm.h +++ b/shared/test/common/mocks/mock_gmm.h @@ -7,6 +7,8 @@ #pragma once #include "shared/source/gmm_helper/gmm.h" +#include "shared/source/gmm_helper/gmm_lib.h" +#include "shared/source/gmm_helper/gmm_resource_usage_ocl_buffer.h" #include "shared/source/helpers/surface_format_info.h" #include "shared/source/memory_manager/allocation_properties.h" #include "shared/source/memory_manager/memory_manager.h" @@ -24,7 +26,7 @@ class MockGmm : public Gmm { using Gmm::Gmm; using Gmm::setupImageResourceParams; - MockGmm(GmmHelper *gmmHelper) : Gmm(gmmHelper, nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, GmmRequirements{true, false}){}; + MockGmm(GmmHelper *gmmHelper) : Gmm(gmmHelper, nullptr, 1, 0, gmmResourceUsageOclBuffer, {}, GmmRequirements{true, false}){}; ADDMETHOD_NOBASE(extraMemoryFlagsRequired, bool, false, ()); diff --git a/shared/test/common/mocks/mock_wddm.cpp b/shared/test/common/mocks/mock_wddm.cpp index ca214049e7..35e39ca420 100644 --- a/shared/test/common/mocks/mock_wddm.cpp +++ b/shared/test/common/mocks/mock_wddm.cpp @@ -104,7 +104,9 @@ bool WddmMock::mapGpuVirtualAddress(Gmm *gmm, D3DKMT_HANDLE handle, D3DGPU_VIRTU mapGpuVirtualAddressResult.called++; mapGpuVirtualAddressResult.cpuPtrPassed = reinterpret_cast(preferredAddress); mapGpuVirtualAddressResult.uint64ParamPassed = preferredAddress; - mapGpuVirtualAddressResult.alignment = gmm->resourceParams.BaseAlignment; + + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + mapGpuVirtualAddressResult.alignment = gmmResourceParams->BaseAlignment; if (callBaseMapGpuVa) { return mapGpuVirtualAddressResult.success = Wddm::mapGpuVirtualAddress(gmm, handle, minimumAddress, maximumAddress, preferredAddress, gpuPtr, type, memoryFlags); } else { diff --git a/shared/test/unit_test/command_stream/aub_command_stream_receiver_2_tests.cpp b/shared/test/unit_test/command_stream/aub_command_stream_receiver_2_tests.cpp index 45f9176444..078b5f2ce2 100644 --- a/shared/test/unit_test/command_stream/aub_command_stream_receiver_2_tests.cpp +++ b/shared/test/unit_test/command_stream/aub_command_stream_receiver_2_tests.cpp @@ -274,7 +274,8 @@ HWTEST_F(AubCommandStreamReceiverTests, givenNoCpuPtrAndNotLockableAllocationWhe gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; MockGmm mockGmm(aubExecutionEnvironment->executionEnvironment->rootDeviceEnvironments[0]->getGmmHelper(), nullptr, initSize, initSize, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements); - mockGmm.resourceParams.Flags.Info.NotLockable = true; + auto *mockGmmResourceParams = reinterpret_cast(mockGmm.resourceParamsData.data()); + mockGmmResourceParams->Flags.Info.NotLockable = true; allocation.setDefaultGmm(&mockGmm); uint64_t gpuAddress{}; @@ -312,7 +313,8 @@ HWTEST_F(AubCommandStreamReceiverTests, givenNoCpuPtrAndLockableAllocationWhenGe gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; MockGmm mockGmm(aubExecutionEnvironment->executionEnvironment->rootDeviceEnvironments[0]->getGmmHelper(), nullptr, initSize, initSize, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements); - mockGmm.resourceParams.Flags.Info.NotLockable = false; + auto *mockGmmResourceParams = reinterpret_cast(mockGmm.resourceParamsData.data()); + mockGmmResourceParams->Flags.Info.NotLockable = false; allocation.setDefaultGmm(&mockGmm); uint64_t gpuAddress{}; @@ -574,7 +576,8 @@ HWTEST_F(AubCommandStreamReceiverNoHostPtrTests, givenAubCommandStreamReceiverWh AllocationProperties allocProperties{0u /* rootDeviceIndex */, true /* allocateMemory */, &imgInfo, AllocationType::image, deviceBitfield}; auto imageAllocation = memoryManager->allocateGraphicsMemoryInPreferredPool(allocProperties, nullptr); ASSERT_NE(nullptr, imageAllocation); - imageAllocation->getDefaultGmm()->resourceParams.Flags.Info.NotLockable = false; + auto *gmmResourceParams = reinterpret_cast(imageAllocation->getDefaultGmm()->resourceParamsData.data()); + gmmResourceParams->Flags.Info.NotLockable = false; EXPECT_TRUE(aubCsr->writeMemory(*imageAllocation)); diff --git a/shared/test/unit_test/command_stream/aub_command_stream_receiver_3_tests.cpp b/shared/test/unit_test/command_stream/aub_command_stream_receiver_3_tests.cpp index 5aaf58b8b5..5ee1a9b855 100644 --- a/shared/test/unit_test/command_stream/aub_command_stream_receiver_3_tests.cpp +++ b/shared/test/unit_test/command_stream/aub_command_stream_receiver_3_tests.cpp @@ -6,6 +6,7 @@ */ #include "shared/source/aub_mem_dump/aub_alloc_dump.h" +#include "shared/source/gmm_helper/gmm_resource_usage_ocl_buffer.h" #include "shared/source/helpers/hardware_context_controller.h" #include "shared/test/common/fixtures/aub_command_stream_receiver_fixture.h" #include "shared/test/common/helpers/debug_manager_state_restore.h" @@ -264,7 +265,7 @@ HWTEST_F(AubCommandStreamReceiverTests, givenGraphicsAllocationWritableWhenDumpA GmmRequirements gmmRequirements{}; gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; - gfxAllocation->setDefaultGmm(new Gmm(pDevice->executionEnvironment->rootDeviceEnvironments[0]->getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements)); + gfxAllocation->setDefaultGmm(new Gmm(pDevice->executionEnvironment->rootDeviceEnvironments[0]->getGmmHelper(), nullptr, 1, 0, gmmResourceUsageOclBuffer, {}, gmmRequirements)); EXPECT_TRUE(AubAllocDump::isWritableBuffer(*gfxAllocation)); @@ -322,7 +323,7 @@ HWTEST_F(AubCommandStreamReceiverTests, givenCompressedGraphicsAllocationWritabl GmmRequirements gmmRequirements{}; gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; - gfxAllocation->setDefaultGmm(new Gmm(gmmHelper, nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements)); + gfxAllocation->setDefaultGmm(new Gmm(gmmHelper, nullptr, 1, 0, gmmResourceUsageOclBuffer, {}, gmmRequirements)); EXPECT_TRUE(AubAllocDump::isWritableBuffer(*gfxAllocation)); @@ -421,7 +422,7 @@ HWTEST_F(AubCommandStreamReceiverTests, givenGraphicsAllocationDumpableWhenDumpA GmmRequirements gmmRequirements{}; gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; - gfxAllocation->setDefaultGmm(new Gmm(pDevice->executionEnvironment->rootDeviceEnvironments[0]->getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements)); + gfxAllocation->setDefaultGmm(new Gmm(pDevice->executionEnvironment->rootDeviceEnvironments[0]->getGmmHelper(), nullptr, 1, 0, gmmResourceUsageOclBuffer, {}, gmmRequirements)); auto &csrOsContext = static_cast(aubCsr.getOsContext()); @@ -494,7 +495,7 @@ HWTEST_F(AubCommandStreamReceiverTests, givenGraphicsAllocationWhenDumpAllocatio GmmRequirements gmmRequirements{}; gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; - gfxAllocation->setDefaultGmm(new Gmm(pDevice->executionEnvironment->rootDeviceEnvironments[0]->getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements)); + gfxAllocation->setDefaultGmm(new Gmm(pDevice->executionEnvironment->rootDeviceEnvironments[0]->getGmmHelper(), nullptr, 1, 0, gmmResourceUsageOclBuffer, {}, gmmRequirements)); aubCsr.dumpAllocation(*gfxAllocation); EXPECT_FALSE(mockHardwareContext->dumpSurfaceCalled); @@ -526,7 +527,7 @@ HWTEST_F(AubCommandStreamReceiverTests, givenGraphicsAllocationWritableWhenDumpA GmmRequirements gmmRequirements{}; gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; - gfxAllocation->setDefaultGmm(new Gmm(pDevice->executionEnvironment->rootDeviceEnvironments[0]->getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements)); + gfxAllocation->setDefaultGmm(new Gmm(pDevice->executionEnvironment->rootDeviceEnvironments[0]->getGmmHelper(), nullptr, 1, 0, gmmResourceUsageOclBuffer, {}, gmmRequirements)); EXPECT_TRUE(AubAllocDump::isWritableBuffer(*gfxAllocation)); @@ -562,7 +563,7 @@ HWTEST_F(AubCommandStreamReceiverTests, givenUsmAllocationWhenDumpAllocationIsCa GmmRequirements gmmRequirements{}; gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; - gfxAllocation->setDefaultGmm(new Gmm(pDevice->executionEnvironment->rootDeviceEnvironments[0]->getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements)); + gfxAllocation->setDefaultGmm(new Gmm(pDevice->executionEnvironment->rootDeviceEnvironments[0]->getGmmHelper(), nullptr, 1, 0, gmmResourceUsageOclBuffer, {}, gmmRequirements)); ASSERT_NE(nullptr, gfxAllocation); diff --git a/shared/test/unit_test/command_stream/tbx_command_stream_tests.cpp b/shared/test/unit_test/command_stream/tbx_command_stream_tests.cpp index cef589ff0c..09cacd150c 100644 --- a/shared/test/unit_test/command_stream/tbx_command_stream_tests.cpp +++ b/shared/test/unit_test/command_stream/tbx_command_stream_tests.cpp @@ -11,6 +11,7 @@ #include "shared/source/command_stream/tbx_command_stream_receiver_hw.h" #include "shared/source/debug_settings/debug_settings_manager.h" #include "shared/source/gmm_helper/gmm_helper.h" +#include "shared/source/gmm_helper/gmm_resource_usage_ocl_buffer.h" #include "shared/source/helpers/engine_node_helper.h" #include "shared/source/helpers/gfx_core_helper.h" #include "shared/source/helpers/hardware_context_controller.h" @@ -1105,7 +1106,7 @@ HWTEST_F(TbxCommandStreamTests, givenGraphicsAllocationWritableWhenDumpAllocatio GmmRequirements gmmRequirements{}; gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; - gfxAllocation->setDefaultGmm(new Gmm(pDevice->executionEnvironment->rootDeviceEnvironments[0]->getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements)); + gfxAllocation->setDefaultGmm(new Gmm(pDevice->executionEnvironment->rootDeviceEnvironments[0]->getGmmHelper(), nullptr, 1, 0, gmmResourceUsageOclBuffer, {}, gmmRequirements)); EXPECT_TRUE(AubAllocDump::isWritableBuffer(*gfxAllocation)); @@ -1134,7 +1135,7 @@ HWTEST_F(TbxCommandStreamTests, givenGraphicsAllocationWhenDumpAllocationIsCalle GmmRequirements gmmRequirements{}; gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; - gfxAllocation->setDefaultGmm(new Gmm(pDevice->executionEnvironment->rootDeviceEnvironments[0]->getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements)); + gfxAllocation->setDefaultGmm(new Gmm(pDevice->executionEnvironment->rootDeviceEnvironments[0]->getGmmHelper(), nullptr, 1, 0, gmmResourceUsageOclBuffer, {}, gmmRequirements)); tbxCsr.dumpAllocation(*gfxAllocation); EXPECT_FALSE(mockHardwareContext->dumpSurfaceCalled); @@ -1210,7 +1211,7 @@ HWTEST_F(TbxCommandStreamTests, givenGraphicsAllocationWhenDumpAllocationIsCalle GmmRequirements gmmRequirements{}; gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; - gfxAllocation->setDefaultGmm(new Gmm(pDevice->executionEnvironment->rootDeviceEnvironments[0]->getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements)); + gfxAllocation->setDefaultGmm(new Gmm(pDevice->executionEnvironment->rootDeviceEnvironments[0]->getGmmHelper(), nullptr, 1, 0, gmmResourceUsageOclBuffer, {}, gmmRequirements)); tbxCsr.dumpAllocation(*gfxAllocation); EXPECT_FALSE(mockHardwareContext->dumpSurfaceCalled); diff --git a/shared/test/unit_test/device/neo_device_tests.cpp b/shared/test/unit_test/device/neo_device_tests.cpp index e22cf9de0b..1dce0a0123 100644 --- a/shared/test/unit_test/device/neo_device_tests.cpp +++ b/shared/test/unit_test/device/neo_device_tests.cpp @@ -7,6 +7,7 @@ #include "shared/source/device/device.h" #include "shared/source/gmm_helper/gmm.h" +#include "shared/source/gmm_helper/gmm_lib.h" #include "shared/source/helpers/api_specific_config.h" #include "shared/source/helpers/array_count.h" #include "shared/source/helpers/compiler_product_helper.h" @@ -218,7 +219,8 @@ TEST_F(DeviceTest, whenInitializeRayTracingIsCalledWithMockAllocatorThenDispatch EXPECT_NE(nullptr, rtDispatchGlobals); auto dispatchGlobalsArray = rtDispatchGlobals->rtDispatchGlobalsArray; EXPECT_NE(nullptr, dispatchGlobalsArray); - EXPECT_FALSE(dispatchGlobalsArray->getDefaultGmm()->resourceParams.Flags.Info.NotLockable); + auto *gmmResourceParams = reinterpret_cast(dispatchGlobalsArray->getDefaultGmm()->resourceParamsData.data()); + EXPECT_FALSE(gmmResourceParams->Flags.Info.NotLockable); } } diff --git a/shared/test/unit_test/gmm_helper/compression_tests_xe2_and_later.cpp b/shared/test/unit_test/gmm_helper/compression_tests_xe2_and_later.cpp index b44957ed26..c95509a823 100644 --- a/shared/test/unit_test/gmm_helper/compression_tests_xe2_and_later.cpp +++ b/shared/test/unit_test/gmm_helper/compression_tests_xe2_and_later.cpp @@ -61,14 +61,15 @@ using ProductHelperAtLeastXe2Tests = ::Test; HWTEST2_F(GmmAdditionalCompressionSettingsTests, whenApplyAdditionalCompressionSettingsThenSetNotCompressed, IsAtLeastXe2HpgCore) { auto gmm = std::make_unique(getGmmHelper()); - gmm->resourceParams.Flags.Info.NotCompressed = 0; + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + gmmResourceParams->Flags.Info.NotCompressed = 0; auto &gfxCoreHelper = this->executionEnvironment->rootDeviceEnvironments[0]->getHelper(); gfxCoreHelper.applyAdditionalCompressionSettings(*gmm, true); - EXPECT_EQ(1u, gmm->resourceParams.Flags.Info.NotCompressed); + EXPECT_EQ(1u, gmmResourceParams->Flags.Info.NotCompressed); gfxCoreHelper.applyAdditionalCompressionSettings(*gmm, false); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.NotCompressed); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.NotCompressed); } HWTEST2_F(GmmAdditionalCompressionSettingsTests, givenDebugFlagSetWhenCreatingGmmResourceThenPrintCompressionSettings, IsAtLeastXe2HpgCore) { @@ -79,7 +80,8 @@ HWTEST2_F(GmmAdditionalCompressionSettingsTests, givenDebugFlagSetWhenCreatingGm capture.captureStdout(); auto gmm = std::make_unique(getGmmHelper()); - auto &flags = gmm->resourceParams.Flags; + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + auto &flags = gmmResourceParams->Flags; std::string output = capture.getCapturedStdout(); ASSERT_NE(0u, output.size()); @@ -95,9 +97,10 @@ HWTEST2_F(GmmAdditionalCompressionSettingsTests, givenCompressionIsFalseAndCache gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; auto gmm = std::make_unique(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, StorageInfo{}, gmmRequirements); - EXPECT_EQ(1u, gmm->resourceParams.Flags.Info.NotCompressed); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(1u, gmmResourceParams->Flags.Info.NotCompressed); auto &productHelper = executionEnvironment->rootDeviceEnvironments[0]->getProductHelper(); - EXPECT_EQ(productHelper.isCachingOnCpuAvailable(), gmm->resourceParams.Flags.Info.Cacheable); + EXPECT_EQ(productHelper.isCachingOnCpuAvailable(), gmmResourceParams->Flags.Info.Cacheable); } HWTEST2_F(GmmAdditionalCompressionSettingsTests, givenCompressionIsTrueAndCacheableTypeThenClearNotCompressedAndClearCacheable, IsAtLeastXe2HpgCore) { @@ -105,8 +108,9 @@ HWTEST2_F(GmmAdditionalCompressionSettingsTests, givenCompressionIsTrueAndCachea gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = true; auto gmm = std::make_unique(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, StorageInfo{}, gmmRequirements); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.NotCompressed); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.Cacheable); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.NotCompressed); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.Cacheable); } HWTEST2_F(GmmAdditionalCompressionSettingsTests, givenCompressionIsFalseAndNotCacheableTypeThenSetNotCompressedAndClearCacheable, IsAtLeastXe2HpgCore) { @@ -114,8 +118,9 @@ HWTEST2_F(GmmAdditionalCompressionSettingsTests, givenCompressionIsFalseAndNotCa gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; auto gmm = std::make_unique(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER_CACHELINE_MISALIGNED, StorageInfo{}, gmmRequirements); - EXPECT_EQ(1u, gmm->resourceParams.Flags.Info.NotCompressed); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.Cacheable); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(1u, gmmResourceParams->Flags.Info.NotCompressed); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.Cacheable); } HWTEST2_F(GmmAdditionalCompressionSettingsTests, givenCompressionIsTrueAndNotCacheableTypeThenClearNotCompressedAndClearCacheable, IsAtLeastXe2HpgCore) { @@ -123,8 +128,9 @@ HWTEST2_F(GmmAdditionalCompressionSettingsTests, givenCompressionIsTrueAndNotCac gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = true; auto gmm = std::make_unique(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER_CACHELINE_MISALIGNED, StorageInfo{}, gmmRequirements); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.NotCompressed); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.Cacheable); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.NotCompressed); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.Cacheable); } HWTEST2_F(GmmAdditionalCompressionSettingsTests, givenCompressionIsTrueAndImageLocalMemoryIsTrueWhenUseApplyAuxFlagsForImageThenClearNotCompressed, IsAtLeastXe2HpgCore) { @@ -134,25 +140,26 @@ HWTEST2_F(GmmAdditionalCompressionSettingsTests, givenCompressionIsTrueAndImageL gmmRequirements.preferCompressed = false; auto gmm = std::make_unique(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, StorageInfo{}, gmmRequirements); gmm->setupImageResourceParams(imgInfo, true); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.NotCompressed); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.NotCompressed); gmm->setCompressionEnabled(false); imgInfo.useLocalMemory = false; gmm->setupImageResourceParams(imgInfo, false); - EXPECT_EQ(1u, gmm->resourceParams.Flags.Info.NotCompressed); + EXPECT_EQ(1u, gmmResourceParams->Flags.Info.NotCompressed); imgInfo.useLocalMemory = true; gmm->setupImageResourceParams(imgInfo, false); - EXPECT_EQ(1u, gmm->resourceParams.Flags.Info.NotCompressed); + EXPECT_EQ(1u, gmmResourceParams->Flags.Info.NotCompressed); imgInfo.useLocalMemory = false; gmm->setupImageResourceParams(imgInfo, true); - EXPECT_EQ(1u, gmm->resourceParams.Flags.Info.NotCompressed); + EXPECT_EQ(1u, gmmResourceParams->Flags.Info.NotCompressed); imgInfo.useLocalMemory = true; gmm->setupImageResourceParams(imgInfo, true); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.NotCompressed); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.NotCompressed); } HWTEST2_F(GmmAdditionalCompressionSettingsTests, givenEnabledAndPreferredE2ECWhenApplyingForBuffersThenSetValidFlags, IsAtLeastXe2HpgCore) { @@ -160,13 +167,13 @@ HWTEST2_F(GmmAdditionalCompressionSettingsTests, givenEnabledAndPreferredE2ECWhe gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; std::unique_ptr gmm(new Gmm(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements)); - gmm->resourceParams = {}; localPlatformDevice.capabilityTable.ftrRenderCompressedBuffers = true; gmm->applyAuxFlagsForBuffer(true); - EXPECT_EQ(1u, gmm->resourceParams.Flags.Gpu.CCS); - EXPECT_EQ(1u, gmm->resourceParams.Flags.Gpu.UnifiedAuxSurface); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(1u, gmmResourceParams->Flags.Gpu.CCS); + EXPECT_EQ(1u, gmmResourceParams->Flags.Gpu.UnifiedAuxSurface); EXPECT_TRUE(gmm->isCompressionEnabled()); } @@ -176,24 +183,24 @@ HWTEST2_F(GmmAdditionalCompressionSettingsTests, givenDisabledE2ECAndEnabledDebu gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; Gmm gmm(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements); - gmm.resourceParams = {}; debugManager.flags.RenderCompressedBuffersEnabled.set(1); localPlatformDevice.capabilityTable.ftrRenderCompressedBuffers = false; gmm.applyAuxFlagsForBuffer(true); - EXPECT_EQ(1u, gmm.resourceParams.Flags.Gpu.CCS); - EXPECT_EQ(1u, gmm.resourceParams.Flags.Gpu.UnifiedAuxSurface); + auto *gmmResourceParams = reinterpret_cast(gmm.resourceParamsData.data()); + EXPECT_EQ(1u, gmmResourceParams->Flags.Gpu.CCS); + EXPECT_EQ(1u, gmmResourceParams->Flags.Gpu.UnifiedAuxSurface); EXPECT_TRUE(gmm.isCompressionEnabled()); - gmm.resourceParams = {}; + *gmmResourceParams = GMM_RESCREATE_PARAMS{}; gmm.setCompressionEnabled(false); debugManager.flags.RenderCompressedBuffersEnabled.set(0); localPlatformDevice.capabilityTable.ftrRenderCompressedBuffers = true; gmm.applyAuxFlagsForBuffer(true); - EXPECT_EQ(0u, gmm.resourceParams.Flags.Gpu.CCS); - EXPECT_EQ(0u, gmm.resourceParams.Flags.Gpu.UnifiedAuxSurface); + EXPECT_EQ(0u, gmmResourceParams->Flags.Gpu.CCS); + EXPECT_EQ(0u, gmmResourceParams->Flags.Gpu.UnifiedAuxSurface); EXPECT_FALSE(gmm.isCompressionEnabled()); } @@ -208,11 +215,12 @@ HWTEST2_F(GmmAdditionalCompressionSettingsTests, givenAllValidInputsWhenQuerying auto compressionFormat = getGmmClientContext()->getSurfaceStateCompressionFormat(resourceFormat); EXPECT_GT(compressionFormat, 0u); - EXPECT_EQ(0u, queryGmm->resourceParams.Flags.Info.TiledY); - EXPECT_EQ(0u, queryGmm->resourceParams.Flags.Info.Linear); - EXPECT_EQ(1u, queryGmm->resourceParams.Flags.Gpu.CCS); - EXPECT_EQ(1u, queryGmm->resourceParams.Flags.Gpu.UnifiedAuxSurface); - EXPECT_EQ(1u, queryGmm->resourceParams.Flags.Gpu.IndirectClearColor); + auto *queryGmmResourceParams = reinterpret_cast(queryGmm->resourceParamsData.data()); + EXPECT_EQ(0u, queryGmmResourceParams->Flags.Info.TiledY); + EXPECT_EQ(0u, queryGmmResourceParams->Flags.Info.Linear); + EXPECT_EQ(1u, queryGmmResourceParams->Flags.Gpu.CCS); + EXPECT_EQ(1u, queryGmmResourceParams->Flags.Gpu.UnifiedAuxSurface); + EXPECT_EQ(1u, queryGmmResourceParams->Flags.Gpu.IndirectClearColor); EXPECT_TRUE(queryGmm->isCompressionEnabled()); } @@ -222,18 +230,20 @@ HWTEST2_F(GmmAdditionalCompressionSettingsTests, givenNotAllowedCompressionAndEn debugManager.flags.RenderCompressedImagesEnabled.set(1); localPlatformDevice.capabilityTable.ftrRenderCompressedImages = false; auto queryGmm = MockGmm::queryImgParams(getGmmHelper(), imgInfo, true); + auto *queryGmmResourceParams = reinterpret_cast(queryGmm->resourceParamsData.data()); - EXPECT_EQ(0u, queryGmm->resourceParams.Flags.Info.Linear); - EXPECT_EQ(1u, queryGmm->resourceParams.Flags.Gpu.CCS); - EXPECT_EQ(1u, queryGmm->resourceParams.Flags.Gpu.UnifiedAuxSurface); - EXPECT_EQ(1u, queryGmm->resourceParams.Flags.Gpu.IndirectClearColor); + EXPECT_EQ(0u, queryGmmResourceParams->Flags.Info.Linear); + EXPECT_EQ(1u, queryGmmResourceParams->Flags.Gpu.CCS); + EXPECT_EQ(1u, queryGmmResourceParams->Flags.Gpu.UnifiedAuxSurface); + EXPECT_EQ(1u, queryGmmResourceParams->Flags.Gpu.IndirectClearColor); EXPECT_TRUE(queryGmm->isCompressionEnabled()); debugManager.flags.RenderCompressedImagesEnabled.set(0); queryGmm = MockGmm::queryImgParams(getGmmHelper(), imgInfo, true); + queryGmmResourceParams = reinterpret_cast(queryGmm->resourceParamsData.data()); - EXPECT_EQ(0u, queryGmm->resourceParams.Flags.Gpu.CCS); - EXPECT_EQ(0u, queryGmm->resourceParams.Flags.Gpu.UnifiedAuxSurface); - EXPECT_EQ(0u, queryGmm->resourceParams.Flags.Gpu.IndirectClearColor); + EXPECT_EQ(0u, queryGmmResourceParams->Flags.Gpu.CCS); + EXPECT_EQ(0u, queryGmmResourceParams->Flags.Gpu.UnifiedAuxSurface); + EXPECT_EQ(0u, queryGmmResourceParams->Flags.Gpu.IndirectClearColor); EXPECT_FALSE(queryGmm->isCompressionEnabled()); } diff --git a/shared/test/unit_test/gmm_helper/gmm_helper_tests.cpp b/shared/test/unit_test/gmm_helper/gmm_helper_tests.cpp index 2e525c2024..7185d52c8e 100644 --- a/shared/test/unit_test/gmm_helper/gmm_helper_tests.cpp +++ b/shared/test/unit_test/gmm_helper/gmm_helper_tests.cpp @@ -59,7 +59,8 @@ TEST_F(GmmHelperTests, WhenGmmIsCreatedThenAllResourceAreCreated) { ASSERT_TRUE(gmm->gmmResourceInfo.get() != nullptr); void *pGmmSysMem = gmm->gmmResourceInfo->getSystemMemPointer(); - EXPECT_EQ(gmm->resourceParams.Flags.Gpu.NoRestriction, 0u); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(gmmResourceParams->Flags.Gpu.NoRestriction, 0u); EXPECT_TRUE(pSysMem == pGmmSysMem); mm->freeSystemMemory(pSysMem); @@ -77,9 +78,10 @@ TEST_F(GmmHelperTests, GivenUncacheableWhenGmmIsCreatedThenAllResourceAreCreated ASSERT_TRUE(gmm->gmmResourceInfo.get() != nullptr); void *pGmmSysMem = gmm->gmmResourceInfo->getSystemMemPointer(); - EXPECT_EQ(gmm->resourceParams.Flags.Gpu.NoRestriction, 0u); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(gmmResourceParams->Flags.Gpu.NoRestriction, 0u); EXPECT_TRUE(pSysMem == pGmmSysMem); - EXPECT_EQ(GMM_RESOURCE_USAGE_OCL_BUFFER_CSR_UC, gmm->resourceParams.Usage); + EXPECT_EQ(GMM_RESOURCE_USAGE_OCL_BUFFER_CSR_UC, gmmResourceParams->Usage); mm->freeSystemMemory(pSysMem); } @@ -93,7 +95,8 @@ TEST_F(GmmHelperTests, givenHostPointerWithHighestBitSetWhenGmmIsCreatedThenItHa gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; std::unique_ptr gmm(new Gmm(getGmmHelper(), address, 4096, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements)); - EXPECT_EQ(gmm->resourceParams.pExistingSysMem, expectedAddress); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(gmmResourceParams->pExistingSysMem, expectedAddress); } TEST_F(GmmHelperTests, GivenBufferSizeLargerThenMaxPitchWhenAskedForGmmCreationThenGmmResourceIsCreatedWithNoRestrictionsFlag) { @@ -109,7 +112,8 @@ TEST_F(GmmHelperTests, GivenBufferSizeLargerThenMaxPitchWhenAskedForGmmCreationT ASSERT_TRUE(gmmRes->gmmResourceInfo.get() != nullptr); // NOLINT(clang-analyzer-cplusplus.NewDeleteLeaks) - EXPECT_EQ(gmmRes->resourceParams.Flags.Gpu.NoRestriction, 1u); + auto *gmmResourceParams = reinterpret_cast(gmmRes->resourceParamsData.data()); + EXPECT_EQ(gmmResourceParams->Flags.Gpu.NoRestriction, 1u); mm->freeSystemMemory(pSysMem); delete gmmRes; @@ -124,8 +128,8 @@ TEST_F(GmmHelperTests, givenGmmCreatedFromExistingGmmThenHelperDoesNotReleasePar gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; auto gmmRes = new Gmm(getGmmHelper(), incomingPtr, size, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements); - auto gmmRes2 = new Gmm(getGmmHelper(), gmmRes->gmmResourceInfo->peekGmmResourceInfo()); - auto gmmRes3 = new Gmm(getGmmHelper(), gmmRes2->gmmResourceInfo->peekGmmResourceInfo(), false); + auto gmmRes2 = new Gmm(getGmmHelper(), gmmRes->gmmResourceInfo.get()); + auto gmmRes3 = new Gmm(getGmmHelper(), gmmRes2->gmmResourceInfo.get(), false); // copy is being made EXPECT_NE(gmmRes2->gmmResourceInfo->peekHandle(), gmmRes->gmmResourceInfo->peekGmmResourceInfo()); @@ -185,18 +189,19 @@ TEST_F(GmmHelperTests, WhenQueryingImgParamsThenCorrectValuesAreReturned) { auto &gfxCoreHelper = this->rootDeviceEnvironment->getHelper(); - EXPECT_EQ(queryGmm->resourceParams.Type, GMM_RESOURCE_TYPE::RESOURCE_3D); - EXPECT_EQ(queryGmm->resourceParams.NoGfxMemory, 1u); + auto *queryGmmResourceParams = reinterpret_cast(queryGmm->resourceParamsData.data()); + EXPECT_EQ(queryGmmResourceParams->Type, GMM_RESOURCE_TYPE::RESOURCE_3D); + EXPECT_EQ(queryGmmResourceParams->NoGfxMemory, 1u); - EXPECT_EQ(queryGmm->resourceParams.Usage, GMM_RESOURCE_USAGE_TYPE::GMM_RESOURCE_USAGE_OCL_IMAGE); - EXPECT_EQ(static_cast(queryGmm->resourceParams.Format), + EXPECT_EQ(queryGmmResourceParams->Usage, GMM_RESOURCE_USAGE_TYPE::GMM_RESOURCE_USAGE_OCL_IMAGE); + EXPECT_EQ(static_cast(queryGmmResourceParams->Format), static_cast(GMM_RESOURCE_FORMAT::GMM_FORMAT_R8G8B8A8_UNORM)); - EXPECT_EQ(queryGmm->resourceParams.Flags.Gpu.Texture, 1u); - EXPECT_EQ(queryGmm->resourceParams.BaseWidth64, 17u); - EXPECT_EQ(queryGmm->resourceParams.BaseHeight, 17u); - EXPECT_EQ(queryGmm->resourceParams.Depth, 17u); - EXPECT_EQ(queryGmm->resourceParams.ArraySize, 1u); - EXPECT_EQ(!!queryGmm->resourceParams.Flags.Wa.__ForceOtherHVALIGN4, gfxCoreHelper.hvAlign4Required()); + EXPECT_EQ(queryGmmResourceParams->Flags.Gpu.Texture, 1u); + EXPECT_EQ(queryGmmResourceParams->BaseWidth64, 17u); + EXPECT_EQ(queryGmmResourceParams->BaseHeight, 17u); + EXPECT_EQ(queryGmmResourceParams->Depth, 17u); + EXPECT_EQ(queryGmmResourceParams->ArraySize, 1u); + EXPECT_EQ(!!queryGmmResourceParams->Flags.Wa.__ForceOtherHVALIGN4, gfxCoreHelper.hvAlign4Required()); } TEST_F(GmmHelperTests, givenWidthWhenCreatingResourceThenSetWidth64Field) { @@ -206,7 +211,8 @@ TEST_F(GmmHelperTests, givenWidthWhenCreatingResourceThenSetWidth64Field) { gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; Gmm gmm(getGmmHelper(), dummyPtr, allocationSize, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements); - EXPECT_EQ(static_cast(allocationSize), gmm.resourceParams.BaseWidth64); + auto *gmmResourceParams = reinterpret_cast(gmm.resourceParamsData.data()); + EXPECT_EQ(static_cast(allocationSize), gmmResourceParams->BaseWidth64); } TEST_F(GmmHelperTests, givenNullptrWhenGmmConstructorIsCalledThenNoGfxMemoryIsProperlySet) { @@ -216,7 +222,8 @@ TEST_F(GmmHelperTests, givenNullptrWhenGmmConstructorIsCalledThenNoGfxMemoryIsPr gmmRequirements.preferCompressed = false; std::unique_ptr gmm(new Gmm(getGmmHelper(), pSysMem, 4096, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements)); - EXPECT_EQ(gmm->resourceParams.NoGfxMemory, 1u); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(gmmResourceParams->NoGfxMemory, 1u); } HWTEST_F(GmmHelperTests, givenGmmWithForceLocalMemThenNonLocalIsSetToFalse) { @@ -226,7 +233,8 @@ HWTEST_F(GmmHelperTests, givenGmmWithForceLocalMemThenNonLocalIsSetToFalse) { gmmRequirements.preferCompressed = false; std::unique_ptr gmm(new Gmm(getGmmHelper(), pSysMem, 4096, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements)); - EXPECT_EQ(gmm->resourceParams.Flags.Info.NonLocalOnly, 0u); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(gmmResourceParams->Flags.Info.NonLocalOnly, 0u); } TEST_F(GmmHelperTests, givenPtrWhenGmmConstructorIsCalledThenNoGfxMemoryIsProperlySet) { @@ -236,7 +244,8 @@ TEST_F(GmmHelperTests, givenPtrWhenGmmConstructorIsCalledThenNoGfxMemoryIsProper gmmRequirements.preferCompressed = false; std::unique_ptr gmm(new Gmm(getGmmHelper(), pSysMem, 4096, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements)); - EXPECT_EQ(gmm->resourceParams.NoGfxMemory, 0u); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(gmmResourceParams->NoGfxMemory, 0u); } TEST_F(GmmHelperTests, givenPlanarFormatsWhenQueryingImageParamsThenUvOffsetIsQueried) { @@ -273,8 +282,9 @@ TEST_F(GmmHelperTests, givenTilingModeSetToTileYWhenHwSupportsTilingThenTileYFla imgInfo.linearStorage = false; auto gmm = std::make_unique(getGmmHelper(), imgInfo, StorageInfo{}, false); - EXPECT_EQ(gmm->resourceParams.Flags.Info.Linear, 0u); - EXPECT_EQ(gmm->resourceParams.Flags.Info.TiledY, 0u); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(gmmResourceParams->Flags.Info.Linear, 0u); + EXPECT_EQ(gmmResourceParams->Flags.Info.TiledY, 0u); } TEST_F(GmmHelperTests, givenTilingModeSetToNonTiledWhenCreatingGmmThenLinearFlagIsSet) { @@ -288,8 +298,9 @@ TEST_F(GmmHelperTests, givenTilingModeSetToNonTiledWhenCreatingGmmThenLinearFlag imgInfo.linearStorage = true; auto gmm = std::make_unique(getGmmHelper(), imgInfo, StorageInfo{}, false); - EXPECT_EQ(gmm->resourceParams.Flags.Info.Linear, 1u); - EXPECT_EQ(gmm->resourceParams.Flags.Info.TiledY, 0u); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(gmmResourceParams->Flags.Info.Linear, 1u); + EXPECT_EQ(gmmResourceParams->Flags.Info.TiledY, 0u); } using GmmCanonizeTests = GmmHelperTests; @@ -421,7 +432,8 @@ TEST_F(GmmHelperTests, givenMipmapedInputWhenAskedForHalingThenNonDefaultValueIs auto queryGmm = MockGmm::queryImgParams(getGmmHelper(), imgInfo, false); - EXPECT_EQ(static_cast(queryGmm->resourceParams.MaxLod), mipLevel); + auto *queryGmmResourceParams = reinterpret_cast(queryGmm->resourceParamsData.data()); + EXPECT_EQ(static_cast(queryGmmResourceParams->MaxLod), mipLevel); } struct GmmMediaCompressedTests : public GmmHelperTests { @@ -559,7 +571,8 @@ TEST_F(GmmHelperTests, givenDebugFlagSetWhenCreatingResourceThenPrintCompression gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = true; auto gmm = std::make_unique(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, storageInfo, gmmRequirements); - auto &flags = gmm->resourceParams.Flags; + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + auto &flags = gmmResourceParams->Flags; std::string output = capture.getCapturedStdout(); ASSERT_NE(0u, output.size()); @@ -587,7 +600,8 @@ TEST_F(GmmHelperTests, givenDebugFlagSetWhenCreatingImageResourceThenPrintCompre auto imgInfo = MockGmm::initImgInfo(imgDesc, 0, nullptr); auto gmm = MockGmm::queryImgParams(getGmmHelper(), imgInfo, true); - auto &flags = gmm->resourceParams.Flags; + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + auto &flags = gmmResourceParams->Flags; std::string output = capture.getCapturedStdout(); ASSERT_NE(0u, output.size()); @@ -605,7 +619,8 @@ TEST_F(GmmHelperTests, givenAlignmentValueWhenConstructingGmmThenSetAlignmentInR gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; Gmm gmm{getGmmHelper(), nullptr, 1, alignment, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements}; - EXPECT_EQ(alignment, gmm.resourceParams.BaseAlignment); + auto *gmmResourceParams = reinterpret_cast(gmm.resourceParamsData.data()); + EXPECT_EQ(alignment, gmmResourceParams->BaseAlignment); } TEST_F(GmmHelperTests, givenInvalidFlagsSetWhenAskedForUnifiedAuxTranslationCapabilityThenReturnFalse) { @@ -635,7 +650,8 @@ TEST_F(GmmHelperTests, whenLargePagesAreExplicitlyAllowedAndUserPtrIsNullThenAll gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; Gmm gmm(getGmmHelper(), nullptr, allocationSize, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements); - EXPECT_FALSE(gmm.resourceParams.Flags.Info.NoOptimizationPadding); + auto *gmmResourceParams = reinterpret_cast(gmm.resourceParamsData.data()); + EXPECT_FALSE(gmmResourceParams->Flags.Info.NoOptimizationPadding); } TEST_F(GmmHelperTests, whenLargePagesAreExplicitlyDisallowedButUserPtrIsNotNullThenAllowOptimizationPadding) { @@ -645,7 +661,8 @@ TEST_F(GmmHelperTests, whenLargePagesAreExplicitlyDisallowedButUserPtrIsNotNullT gmmRequirements.allowLargePages = false; gmmRequirements.preferCompressed = false; Gmm gmm(getGmmHelper(), dummyPtr, allocationSize, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements); - EXPECT_FALSE(gmm.resourceParams.Flags.Info.NoOptimizationPadding); + auto *gmmResourceParams = reinterpret_cast(gmm.resourceParamsData.data()); + EXPECT_FALSE(gmmResourceParams->Flags.Info.NoOptimizationPadding); } TEST_F(GmmHelperTests, whenLargePagesAreExplicitlyDisallowedAndUserPtrIsNullThenDisableOptimizationPadding) { @@ -654,7 +671,8 @@ TEST_F(GmmHelperTests, whenLargePagesAreExplicitlyDisallowedAndUserPtrIsNullThen gmmRequirements.allowLargePages = false; gmmRequirements.preferCompressed = false; Gmm gmm(getGmmHelper(), nullptr, allocationSize, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements); - EXPECT_TRUE(gmm.resourceParams.Flags.Info.NoOptimizationPadding); + auto *gmmResourceParams = reinterpret_cast(gmm.resourceParamsData.data()); + EXPECT_TRUE(gmmResourceParams->Flags.Info.NoOptimizationPadding); } TEST_F(GmmHelperTests, givenSizeIsMisallignedTo64kbWhenForceDisablingLargePagesThenSizeIsPreserved) { @@ -664,7 +682,8 @@ TEST_F(GmmHelperTests, givenSizeIsMisallignedTo64kbWhenForceDisablingLargePagesT gmmRequirements.allowLargePages = false; gmmRequirements.preferCompressed = false; Gmm gmm(getGmmHelper(), dummyPtr, allocationSize, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements); - EXPECT_EQ(allocationSize, gmm.resourceParams.BaseWidth64); + auto *gmmResourceParams = reinterpret_cast(gmm.resourceParamsData.data()); + EXPECT_EQ(allocationSize, gmmResourceParams->BaseWidth64); } TEST_F(GmmHelperTests, givenSizeIsAllignedTo64kbWhenForceDisablingLargePagesThenSizeIsAlteredToBreak64kbAlignment) { @@ -673,7 +692,8 @@ TEST_F(GmmHelperTests, givenSizeIsAllignedTo64kbWhenForceDisablingLargePagesThen gmmRequirements.allowLargePages = false; gmmRequirements.preferCompressed = false; Gmm gmm(getGmmHelper(), nullptr, allocationSize, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements); - EXPECT_EQ(allocationSize + MemoryConstants::pageSize, gmm.resourceParams.BaseWidth64); + auto *gmmResourceParams = reinterpret_cast(gmm.resourceParamsData.data()); + EXPECT_EQ(allocationSize + MemoryConstants::pageSize, gmmResourceParams->BaseWidth64); } TEST_F(GmmHelperTests, givenAdapterBdfWhenComparingMemoryLayoutThenDataMatchesOriginalStruct) { @@ -1092,16 +1112,16 @@ TEST_F(GmmHelperTests, whenGmmIsCreatedAndForceAllResourcesUncachedIsSetThenReso gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; auto gmm1 = std::make_unique(getGmmHelper(), incomingPtr, size, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, StorageInfo{}, gmmRequirements); - EXPECT_EQ(GMM_RESOURCE_USAGE_SURFACE_UNCACHED, gmm1->resourceParams.Usage); + EXPECT_EQ(GMM_RESOURCE_USAGE_SURFACE_UNCACHED, gmm1->getResourceUsageType()); ImageDescriptor imgDesc = {}; imgDesc.imageType = ImageType::image1D; auto imgInfo = MockGmm::initImgInfo(imgDesc, 0, nullptr); auto gmm2 = MockGmm::queryImgParams(getGmmHelper(), imgInfo, false); - EXPECT_EQ(GMM_RESOURCE_USAGE_SURFACE_UNCACHED, gmm2->resourceParams.Usage); + EXPECT_EQ(GMM_RESOURCE_USAGE_SURFACE_UNCACHED, gmm2->getResourceUsageType()); - auto gmm3 = std::make_unique(getGmmHelper(), gmm1->gmmResourceInfo->peekGmmResourceInfo()); - EXPECT_EQ(GMM_RESOURCE_USAGE_SURFACE_UNCACHED, gmm3->resourceParams.Usage); + auto gmm3 = std::make_unique(getGmmHelper(), gmm1->gmmResourceInfo.get()); + EXPECT_EQ(GMM_RESOURCE_USAGE_SURFACE_UNCACHED, gmm3->getResourceUsageType()); } TEST_F(GmmHelperTests, whenResourceIsCreatedThenHandleItsOwnership) { @@ -1284,14 +1304,14 @@ TEST_F(GmmCompressionTests, givenEnabledAndNotPreferredE2ECWhenApplyingForBuffer gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; std::unique_ptr gmm(new Gmm(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements)); - gmm->resourceParams = {}; localPlatformDevice->capabilityTable.ftrRenderCompressedBuffers = true; gmm->applyAuxFlagsForBuffer(false); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.RenderCompressed); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Gpu.CCS); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Gpu.UnifiedAuxSurface); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.RenderCompressed); + EXPECT_EQ(0u, gmmResourceParams->Flags.Gpu.CCS); + EXPECT_EQ(0u, gmmResourceParams->Flags.Gpu.UnifiedAuxSurface); EXPECT_FALSE(gmm->isCompressionEnabled()); } @@ -1300,14 +1320,14 @@ TEST_F(GmmCompressionTests, givenDisabledAndPreferredE2ECWhenApplyingForBuffersT gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; std::unique_ptr gmm(new Gmm(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements)); - gmm->resourceParams = {}; localPlatformDevice->capabilityTable.ftrRenderCompressedBuffers = false; gmm->applyAuxFlagsForBuffer(true); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.RenderCompressed); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Gpu.CCS); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Gpu.UnifiedAuxSurface); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.RenderCompressed); + EXPECT_EQ(0u, gmmResourceParams->Flags.Gpu.CCS); + EXPECT_EQ(0u, gmmResourceParams->Flags.Gpu.UnifiedAuxSurface); EXPECT_FALSE(gmm->isCompressionEnabled()); } @@ -1321,12 +1341,13 @@ HWTEST_F(GmmCompressionTests, givenAllValidInputsWhenQueryingThenSetAppropriateF auto compressionFormat = getGmmClientContext()->getSurfaceStateCompressionFormat(resourceFormat); EXPECT_GT(compressionFormat, 0u); - EXPECT_EQ(0u, queryGmm->resourceParams.Flags.Info.TiledY); - EXPECT_EQ(0u, queryGmm->resourceParams.Flags.Info.Linear); - EXPECT_EQ(1u, queryGmm->resourceParams.Flags.Info.RenderCompressed); - EXPECT_EQ(1u, queryGmm->resourceParams.Flags.Gpu.CCS); - EXPECT_EQ(1u, queryGmm->resourceParams.Flags.Gpu.UnifiedAuxSurface); - EXPECT_EQ(1u, queryGmm->resourceParams.Flags.Gpu.IndirectClearColor); + auto *queryGmmResourceParams = reinterpret_cast(queryGmm->resourceParamsData.data()); + EXPECT_EQ(0u, queryGmmResourceParams->Flags.Info.TiledY); + EXPECT_EQ(0u, queryGmmResourceParams->Flags.Info.Linear); + EXPECT_EQ(1u, queryGmmResourceParams->Flags.Info.RenderCompressed); + EXPECT_EQ(1u, queryGmmResourceParams->Flags.Gpu.CCS); + EXPECT_EQ(1u, queryGmmResourceParams->Flags.Gpu.UnifiedAuxSurface); + EXPECT_EQ(1u, queryGmmResourceParams->Flags.Gpu.IndirectClearColor); EXPECT_TRUE(queryGmm->isCompressionEnabled()); } @@ -1342,10 +1363,11 @@ TEST_F(GmmCompressionTests, givenAllValidInputsAndNoLocalMemoryRequestWhenQueryi auto compressionFormat = getGmmClientContext()->getSurfaceStateCompressionFormat(resourceFormat); EXPECT_GT(compressionFormat, 0u); - EXPECT_EQ(0u, queryGmm->resourceParams.Flags.Info.RenderCompressed); - EXPECT_EQ(0u, queryGmm->resourceParams.Flags.Gpu.CCS); - EXPECT_EQ(0u, queryGmm->resourceParams.Flags.Gpu.UnifiedAuxSurface); - EXPECT_EQ(0u, queryGmm->resourceParams.Flags.Gpu.IndirectClearColor); + auto *queryGmmResourceParams = reinterpret_cast(queryGmm->resourceParamsData.data()); + EXPECT_EQ(0u, queryGmmResourceParams->Flags.Info.RenderCompressed); + EXPECT_EQ(0u, queryGmmResourceParams->Flags.Gpu.CCS); + EXPECT_EQ(0u, queryGmmResourceParams->Flags.Gpu.UnifiedAuxSurface); + EXPECT_EQ(0u, queryGmmResourceParams->Flags.Gpu.IndirectClearColor); EXPECT_FALSE(queryGmm->isCompressionEnabled()); } @@ -1353,11 +1375,12 @@ TEST_F(GmmCompressionTests, givenNotAllowedRenderCompressionWhenQueryingThenSetA localPlatformDevice->capabilityTable.ftrRenderCompressedImages = false; auto queryGmm = MockGmm::queryImgParams(getGmmHelper(), imgInfo, true); - EXPECT_EQ(0u, queryGmm->resourceParams.Flags.Info.Linear); - EXPECT_EQ(0u, queryGmm->resourceParams.Flags.Info.RenderCompressed); - EXPECT_EQ(0u, queryGmm->resourceParams.Flags.Gpu.CCS); - EXPECT_EQ(0u, queryGmm->resourceParams.Flags.Gpu.UnifiedAuxSurface); - EXPECT_EQ(0u, queryGmm->resourceParams.Flags.Gpu.IndirectClearColor); + auto *queryGmmResourceParams = reinterpret_cast(queryGmm->resourceParamsData.data()); + EXPECT_EQ(0u, queryGmmResourceParams->Flags.Info.Linear); + EXPECT_EQ(0u, queryGmmResourceParams->Flags.Info.RenderCompressed); + EXPECT_EQ(0u, queryGmmResourceParams->Flags.Gpu.CCS); + EXPECT_EQ(0u, queryGmmResourceParams->Flags.Gpu.UnifiedAuxSurface); + EXPECT_EQ(0u, queryGmmResourceParams->Flags.Gpu.IndirectClearColor); EXPECT_FALSE(queryGmm->isCompressionEnabled()); } @@ -1367,21 +1390,23 @@ HWTEST_F(GmmCompressionTests, givenNotAllowedCompressionAndEnabledDebugFlagWhenQ localPlatformDevice->capabilityTable.ftrRenderCompressedImages = false; auto queryGmm = MockGmm::queryImgParams(getGmmHelper(), imgInfo, true); - EXPECT_EQ(0u, queryGmm->resourceParams.Flags.Info.Linear); - EXPECT_EQ(1u, queryGmm->resourceParams.Flags.Info.RenderCompressed); - EXPECT_EQ(1u, queryGmm->resourceParams.Flags.Gpu.CCS); - EXPECT_EQ(1u, queryGmm->resourceParams.Flags.Gpu.UnifiedAuxSurface); - EXPECT_EQ(1u, queryGmm->resourceParams.Flags.Gpu.IndirectClearColor); + auto *queryGmmResourceParams = reinterpret_cast(queryGmm->resourceParamsData.data()); + EXPECT_EQ(0u, queryGmmResourceParams->Flags.Info.Linear); + EXPECT_EQ(1u, queryGmmResourceParams->Flags.Info.RenderCompressed); + EXPECT_EQ(1u, queryGmmResourceParams->Flags.Gpu.CCS); + EXPECT_EQ(1u, queryGmmResourceParams->Flags.Gpu.UnifiedAuxSurface); + EXPECT_EQ(1u, queryGmmResourceParams->Flags.Gpu.IndirectClearColor); EXPECT_TRUE(queryGmm->isCompressionEnabled()); debugManager.flags.RenderCompressedImagesEnabled.set(0); localPlatformDevice->capabilityTable.ftrRenderCompressedImages = true; queryGmm = MockGmm::queryImgParams(getGmmHelper(), imgInfo, true); - EXPECT_EQ(0u, queryGmm->resourceParams.Flags.Info.RenderCompressed); - EXPECT_EQ(0u, queryGmm->resourceParams.Flags.Gpu.CCS); - EXPECT_EQ(0u, queryGmm->resourceParams.Flags.Gpu.UnifiedAuxSurface); - EXPECT_EQ(0u, queryGmm->resourceParams.Flags.Gpu.IndirectClearColor); + queryGmmResourceParams = reinterpret_cast(queryGmm->resourceParamsData.data()); + EXPECT_EQ(0u, queryGmmResourceParams->Flags.Info.RenderCompressed); + EXPECT_EQ(0u, queryGmmResourceParams->Flags.Gpu.CCS); + EXPECT_EQ(0u, queryGmmResourceParams->Flags.Gpu.UnifiedAuxSurface); + EXPECT_EQ(0u, queryGmmResourceParams->Flags.Gpu.IndirectClearColor); EXPECT_FALSE(queryGmm->isCompressionEnabled()); } @@ -1409,14 +1434,17 @@ HWTEST_F(GmmCompressionTests, whenConstructedWithPreferCompressionFlagThenApplyA gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; Gmm gmm1(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements); - EXPECT_EQ(0u, gmm1.resourceParams.Flags.Info.RenderCompressed); + auto *gmmResourceParams1 = reinterpret_cast(gmm1.resourceParamsData.data()); + EXPECT_EQ(0u, gmmResourceParams1->Flags.Info.RenderCompressed); Gmm gmm2(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements); - EXPECT_EQ(0u, gmm2.resourceParams.Flags.Info.RenderCompressed); + auto *gmmResourceParams2 = reinterpret_cast(gmm2.resourceParamsData.data()); + EXPECT_EQ(0u, gmmResourceParams2->Flags.Info.RenderCompressed); gmmRequirements.preferCompressed = true; Gmm gmm3(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements); - EXPECT_EQ(1u, gmm3.resourceParams.Flags.Info.RenderCompressed); + auto *gmmResourceParams3 = reinterpret_cast(gmm3.resourceParamsData.data()); + EXPECT_EQ(1u, gmmResourceParams3->Flags.Info.RenderCompressed); } TEST_F(GmmCompressionTests, givenMediaCompressedImageApplyAuxFlagsForImageThenSetFlagsToCompressed) { @@ -1424,8 +1452,9 @@ TEST_F(GmmCompressionTests, givenMediaCompressedImageApplyAuxFlagsForImageThenSe gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; MockGmm gmm(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements); - gmm.resourceParams.Flags.Info.MediaCompressed = true; - gmm.resourceParams.Flags.Info.RenderCompressed = false; + auto *gmmResourceParams = reinterpret_cast(gmm.resourceParamsData.data()); + gmmResourceParams->Flags.Info.MediaCompressed = true; + gmmResourceParams->Flags.Info.RenderCompressed = false; gmm.setupImageResourceParams(imgInfo, true); EXPECT_TRUE(gmm.isCompressionEnabled()); @@ -1441,13 +1470,14 @@ HWTEST2_F(GmmCompressionTests, givenGmmCreatedFromExistingGmmWithRenderCompressi flags->Gpu.UnifiedAuxSurface = true; flags->Info.MediaCompressed = true; flags->Info.RenderCompressed = false; - gmm.resourceParams.Flags.Info.MediaCompressed = false; - gmm.resourceParams.Flags.Info.RenderCompressed = true; + auto *gmmResourceParams = reinterpret_cast(gmm.resourceParamsData.data()); + gmmResourceParams->Flags.Info.MediaCompressed = false; + gmmResourceParams->Flags.Info.RenderCompressed = true; gmm.setupImageResourceParams(imgInfo, true); EXPECT_TRUE(gmm.isCompressionEnabled()); - auto gmmRes2 = std::make_unique(getGmmHelper(), gmm.gmmResourceInfo->peekGmmResourceInfo(), false); + auto gmmRes2 = std::make_unique(getGmmHelper(), gmm.gmmResourceInfo.get(), false); EXPECT_FALSE(gmmRes2->isCompressionEnabled()); } @@ -1457,13 +1487,14 @@ HWTEST2_F(GmmCompressionTests, givenGmmCreatedFromExistingGmmWithCompressionDisa 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; + auto *gmmResourceParams = reinterpret_cast(gmm.resourceParamsData.data()); + gmmResourceParams->Flags.Info.MediaCompressed = false; + gmmResourceParams->Flags.Info.RenderCompressed = false; gmm.setupImageResourceParams(imgInfo, false); EXPECT_FALSE(gmm.isCompressionEnabled()); - auto gmmRes2 = std::make_unique(getGmmHelper(), gmm.gmmResourceInfo->peekGmmResourceInfo(), false); + auto gmmRes2 = std::make_unique(getGmmHelper(), gmm.gmmResourceInfo.get(), false); EXPECT_FALSE(gmmRes2->isCompressionEnabled()); } @@ -1472,8 +1503,9 @@ TEST_F(GmmCompressionTests, givenRenderCompressedImageApplyAuxFlagsForImageThenS 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 = true; + auto *gmmResourceParams = reinterpret_cast(gmm.resourceParamsData.data()); + gmmResourceParams->Flags.Info.MediaCompressed = false; + gmmResourceParams->Flags.Info.RenderCompressed = true; gmm.setupImageResourceParams(imgInfo, true); EXPECT_TRUE(gmm.isCompressionEnabled()); @@ -1484,14 +1516,14 @@ HWTEST_F(GmmCompressionTests, givenEnabledAndPreferredE2ECWhenApplyingForBuffers gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; std::unique_ptr gmm(new Gmm(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements)); - gmm->resourceParams = {}; localPlatformDevice->capabilityTable.ftrRenderCompressedBuffers = true; gmm->applyAuxFlagsForBuffer(true); - EXPECT_EQ(1u, gmm->resourceParams.Flags.Info.RenderCompressed); - EXPECT_EQ(1u, gmm->resourceParams.Flags.Gpu.CCS); - EXPECT_EQ(1u, gmm->resourceParams.Flags.Gpu.UnifiedAuxSurface); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(1u, gmmResourceParams->Flags.Info.RenderCompressed); + EXPECT_EQ(1u, gmmResourceParams->Flags.Gpu.CCS); + EXPECT_EQ(1u, gmmResourceParams->Flags.Gpu.UnifiedAuxSurface); EXPECT_TRUE(gmm->isCompressionEnabled()); } @@ -1501,26 +1533,27 @@ HWTEST_F(GmmCompressionTests, givenDisabledE2ECAndEnabledDebugFlagWhenApplyingFo gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; Gmm gmm(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements); - gmm.resourceParams = {}; debugManager.flags.RenderCompressedBuffersEnabled.set(1); localPlatformDevice->capabilityTable.ftrRenderCompressedBuffers = false; gmm.applyAuxFlagsForBuffer(true); - EXPECT_EQ(1u, gmm.resourceParams.Flags.Info.RenderCompressed); - EXPECT_EQ(1u, gmm.resourceParams.Flags.Gpu.CCS); - EXPECT_EQ(1u, gmm.resourceParams.Flags.Gpu.UnifiedAuxSurface); + auto *gmmResourceParams = reinterpret_cast(gmm.resourceParamsData.data()); + EXPECT_EQ(1u, gmmResourceParams->Flags.Info.RenderCompressed); + EXPECT_EQ(1u, gmmResourceParams->Flags.Gpu.CCS); + EXPECT_EQ(1u, gmmResourceParams->Flags.Gpu.UnifiedAuxSurface); EXPECT_TRUE(gmm.isCompressionEnabled()); - gmm.resourceParams = {}; + *gmmResourceParams = GMM_RESCREATE_PARAMS{}; gmm.setCompressionEnabled(false); debugManager.flags.RenderCompressedBuffersEnabled.set(0); localPlatformDevice->capabilityTable.ftrRenderCompressedBuffers = true; gmm.applyAuxFlagsForBuffer(true); - EXPECT_EQ(0u, gmm.resourceParams.Flags.Info.RenderCompressed); - EXPECT_EQ(0u, gmm.resourceParams.Flags.Gpu.CCS); - EXPECT_EQ(0u, gmm.resourceParams.Flags.Gpu.UnifiedAuxSurface); + gmmResourceParams = reinterpret_cast(gmm.resourceParamsData.data()); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.RenderCompressed); + EXPECT_EQ(0u, gmmResourceParams->Flags.Gpu.CCS); + EXPECT_EQ(0u, gmmResourceParams->Flags.Gpu.UnifiedAuxSurface); EXPECT_FALSE(gmm.isCompressionEnabled()); } @@ -1551,8 +1584,9 @@ TEST_F(GmmLocalMemoryTests, givenFtrLocalMemoryWhenUseSystemMemoryIsTrueThenNonL gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; auto gmm = std::make_unique(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, StorageInfo{}, gmmRequirements); - EXPECT_EQ(1u, gmm->resourceParams.Flags.Info.NonLocalOnly); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.LocalOnly); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(1u, gmmResourceParams->Flags.Info.NonLocalOnly); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.LocalOnly); } TEST_F(GmmLocalMemoryTests, givenFtrLocalMemoryWhenUsingLocalMemoryAndAllocationIsLockableThenAllFlagsAreCleared) { @@ -1564,9 +1598,10 @@ TEST_F(GmmLocalMemoryTests, givenFtrLocalMemoryWhenUsingLocalMemoryAndAllocation gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; auto gmm = std::make_unique(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, storageInfo, gmmRequirements); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.NonLocalOnly); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.LocalOnly); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.NotLockable); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.NonLocalOnly); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.LocalOnly); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.NotLockable); } TEST_F(GmmHelperTests, givenNotLockableAllocationWhenCreatingGmmThenNotLockableFlagsIsSetAndLocalAndNonLocalOnlyAreNotSet) { @@ -1578,9 +1613,10 @@ TEST_F(GmmHelperTests, givenNotLockableAllocationWhenCreatingGmmThenNotLockableF gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; auto gmm = std::make_unique(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, storageInfo, gmmRequirements); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.NonLocalOnly); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.LocalOnly); - EXPECT_EQ(1u, gmm->resourceParams.Flags.Info.NotLockable); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.NonLocalOnly); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.LocalOnly); + EXPECT_EQ(1u, gmmResourceParams->Flags.Info.NotLockable); } TEST_F(GmmLocalMemoryTests, givenLocalMemoryAndNotLockableAllocationAndStorageInfoWithLocalOnlyRequiredWhenPreparingFlagsForGmmThenNotLockableAndLocalOnlyIsSet) { @@ -1594,8 +1630,9 @@ TEST_F(GmmLocalMemoryTests, givenLocalMemoryAndNotLockableAllocationAndStorageIn gmmRequirements.preferCompressed = false; auto gmm = std::make_unique(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, storageInfo, gmmRequirements); - EXPECT_EQ(1u, gmm->resourceParams.Flags.Info.LocalOnly); - EXPECT_EQ(1u, gmm->resourceParams.Flags.Info.NotLockable); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(1u, gmmResourceParams->Flags.Info.LocalOnly); + EXPECT_EQ(1u, gmmResourceParams->Flags.Info.NotLockable); } TEST_F(GmmLocalMemoryTests, givenLocalMemoryAndStorageInfoWithLocalOnlyRequiredWhenPreparingFlagsForGmmThenNotLockableAndLocalOnlyAreSet) { @@ -1612,8 +1649,9 @@ TEST_F(GmmLocalMemoryTests, givenLocalMemoryAndStorageInfoWithLocalOnlyRequiredW for (auto csrMode = static_cast(CommandStreamReceiverType::hardware); csrMode < static_cast(CommandStreamReceiverType::typesNum); csrMode++) { debugManager.flags.SetCommandStreamReceiver.set(csrMode); auto gmm = std::make_unique(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, storageInfo, gmmRequirements); - EXPECT_EQ(1u, gmm->resourceParams.Flags.Info.LocalOnly); - EXPECT_EQ(1u, gmm->resourceParams.Flags.Info.NotLockable); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(1u, gmmResourceParams->Flags.Info.LocalOnly); + EXPECT_EQ(1u, gmmResourceParams->Flags.Info.NotLockable); } } @@ -1624,8 +1662,9 @@ TEST_F(GmmLocalMemoryTests, givenSystemMemoryAndStorageInfoWithLocalOnlyRequired gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; auto gmm = std::make_unique(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, storageInfo, gmmRequirements); - EXPECT_EQ(1u, gmm->resourceParams.Flags.Info.NonLocalOnly); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.LocalOnly); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(1u, gmmResourceParams->Flags.Info.NonLocalOnly); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.LocalOnly); } TEST_F(GmmLocalMemoryTests, givenLocalMemoryAndStorageInfoWithoutLocalOnlyRequiredWhenPreparingFlagsForGmmThenLocalOnlyIsNotSet) { @@ -1635,8 +1674,9 @@ TEST_F(GmmLocalMemoryTests, givenLocalMemoryAndStorageInfoWithoutLocalOnlyRequir gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; auto gmm = std::make_unique(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, storageInfo, gmmRequirements); - EXPECT_EQ(1u, gmm->resourceParams.Flags.Info.NonLocalOnly); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.LocalOnly); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(1u, gmmResourceParams->Flags.Info.NonLocalOnly); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.LocalOnly); } TEST_F(GmmHelperTests, givenCompressionEnabledWhenUsingLocalMemoryAndAllocationIsNotLockableThenNotLockableAndLocalOnlyFlagsAreSetAndNonLocalOnlyIsNotSet) { @@ -1651,9 +1691,10 @@ TEST_F(GmmHelperTests, givenCompressionEnabledWhenUsingLocalMemoryAndAllocationI gmmRequirements.preferCompressed = true; auto gmm = std::make_unique(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, storageInfo, gmmRequirements); EXPECT_TRUE(gmm->isCompressionEnabled()); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.NonLocalOnly); - EXPECT_EQ(defaultHwInfo->featureTable.flags.ftrLocalMemory, gmm->resourceParams.Flags.Info.LocalOnly); - EXPECT_EQ(1u, gmm->resourceParams.Flags.Info.NotLockable); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.NonLocalOnly); + EXPECT_EQ(defaultHwInfo->featureTable.flags.ftrLocalMemory, gmmResourceParams->Flags.Info.LocalOnly); + EXPECT_EQ(1u, gmmResourceParams->Flags.Info.NotLockable); } TEST_F(GmmHelperTests, givenCompressionSupportedWhenAllocationIsLockableThenGmmHasNoCompression) { @@ -1668,7 +1709,8 @@ TEST_F(GmmHelperTests, givenCompressionSupportedWhenAllocationIsLockableThenGmmH gmmRequirements.preferCompressed = true; auto gmm = std::make_unique(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, storageInfo, gmmRequirements); EXPECT_FALSE(gmm->isCompressionEnabled()); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.NotLockable); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.NotLockable); } TEST_F(GmmLocalMemoryTests, givenFtrLocalMemoryWhenUseSystemMemoryIsFalseAndAllocationIsNotLockableThenLocalAndNonLocalOnlyAndNotLockableFlagsAreNotSet) { @@ -1683,9 +1725,10 @@ TEST_F(GmmLocalMemoryTests, givenFtrLocalMemoryWhenUseSystemMemoryIsFalseAndAllo storageInfo.systemMemoryPlacement = false; storageInfo.isLockable = false; auto gmm = std::make_unique(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, storageInfo, gmmRequirements); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.NonLocalOnly); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.LocalOnly); - EXPECT_EQ(1u, gmm->resourceParams.Flags.Info.NotLockable); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.NonLocalOnly); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.LocalOnly); + EXPECT_EQ(1u, gmmResourceParams->Flags.Info.NotLockable); } } @@ -1697,8 +1740,9 @@ TEST_F(MultiTileGmmTests, givenMultiTileAllocationWhenGmmIsCreatedWithEmptyMempo gmmRequirements.preferCompressed = false; Gmm gmm(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, storageInfo, gmmRequirements); - EXPECT_EQ(1u, gmm.resourceParams.MultiTileArch.Enable); - EXPECT_EQ(0u, gmm.resourceParams.MultiTileArch.TileInstanced); + auto *gmmResourceParams = reinterpret_cast(gmm.resourceParamsData.data()); + EXPECT_EQ(1u, gmmResourceParams->MultiTileArch.Enable); + EXPECT_EQ(0u, gmmResourceParams->MultiTileArch.TileInstanced); } TEST_F(MultiTileGmmTests, givenMultiTileAllocationWithoutCloningWhenGmmIsCreatedThenSetMinimumOneTile) { @@ -1711,11 +1755,12 @@ TEST_F(MultiTileGmmTests, givenMultiTileAllocationWithoutCloningWhenGmmIsCreated gmmRequirements.preferCompressed = false; Gmm gmm(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, storageInfo, gmmRequirements); - EXPECT_EQ(1u, gmm.resourceParams.MultiTileArch.Enable); - EXPECT_EQ(1u, gmm.resourceParams.MultiTileArch.GpuVaMappingSet); - EXPECT_EQ(1u, gmm.resourceParams.MultiTileArch.LocalMemPreferredSet); - EXPECT_EQ(1u, gmm.resourceParams.MultiTileArch.LocalMemEligibilitySet); - EXPECT_EQ(0u, gmm.resourceParams.MultiTileArch.TileInstanced); + auto *gmmResourceParams = reinterpret_cast(gmm.resourceParamsData.data()); + EXPECT_EQ(1u, gmmResourceParams->MultiTileArch.Enable); + EXPECT_EQ(1u, gmmResourceParams->MultiTileArch.GpuVaMappingSet); + EXPECT_EQ(1u, gmmResourceParams->MultiTileArch.LocalMemPreferredSet); + EXPECT_EQ(1u, gmmResourceParams->MultiTileArch.LocalMemEligibilitySet); + EXPECT_EQ(0u, gmmResourceParams->MultiTileArch.TileInstanced); } TEST_F(MultiTileGmmTests, givenMultiTileWhenGmmIsCreatedWithNonLocalMemoryThenMultitileArchIsPropertlyFilled) { @@ -1725,11 +1770,12 @@ TEST_F(MultiTileGmmTests, givenMultiTileWhenGmmIsCreatedWithNonLocalMemoryThenMu gmmRequirements.preferCompressed = false; Gmm gmm(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, storageInfo, gmmRequirements); - EXPECT_EQ(1u, gmm.resourceParams.MultiTileArch.Enable); - EXPECT_EQ(customTileMask, gmm.resourceParams.MultiTileArch.GpuVaMappingSet); - EXPECT_EQ(0u, gmm.resourceParams.MultiTileArch.LocalMemPreferredSet); - EXPECT_EQ(0u, gmm.resourceParams.MultiTileArch.LocalMemEligibilitySet); - EXPECT_EQ(0u, gmm.resourceParams.MultiTileArch.TileInstanced); + auto *gmmResourceParams = reinterpret_cast(gmm.resourceParamsData.data()); + EXPECT_EQ(1u, gmmResourceParams->MultiTileArch.Enable); + EXPECT_EQ(customTileMask, gmmResourceParams->MultiTileArch.GpuVaMappingSet); + EXPECT_EQ(0u, gmmResourceParams->MultiTileArch.LocalMemPreferredSet); + EXPECT_EQ(0u, gmmResourceParams->MultiTileArch.LocalMemEligibilitySet); + EXPECT_EQ(0u, gmmResourceParams->MultiTileArch.TileInstanced); } TEST_F(MultiTileGmmTests, givenMultiTileWhenGmmIsCreatedWithSpecificMemoryBanksThenMultitileArchIsEnabled) { @@ -1742,11 +1788,12 @@ TEST_F(MultiTileGmmTests, givenMultiTileWhenGmmIsCreatedWithSpecificMemoryBanksT gmmRequirements.preferCompressed = false; Gmm gmm(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, storageInfo, gmmRequirements); - EXPECT_EQ(1u, gmm.resourceParams.MultiTileArch.Enable); - EXPECT_EQ(storageInfo.memoryBanks, gmm.resourceParams.MultiTileArch.LocalMemPreferredSet); - EXPECT_EQ(storageInfo.memoryBanks, gmm.resourceParams.MultiTileArch.GpuVaMappingSet); - EXPECT_EQ(storageInfo.memoryBanks, gmm.resourceParams.MultiTileArch.LocalMemEligibilitySet); - EXPECT_EQ(0u, gmm.resourceParams.MultiTileArch.TileInstanced); + auto *gmmResourceParams = reinterpret_cast(gmm.resourceParamsData.data()); + EXPECT_EQ(1u, gmmResourceParams->MultiTileArch.Enable); + EXPECT_EQ(storageInfo.memoryBanks, gmmResourceParams->MultiTileArch.LocalMemPreferredSet); + EXPECT_EQ(storageInfo.memoryBanks, gmmResourceParams->MultiTileArch.GpuVaMappingSet); + EXPECT_EQ(storageInfo.memoryBanks, gmmResourceParams->MultiTileArch.LocalMemEligibilitySet); + EXPECT_EQ(0u, gmmResourceParams->MultiTileArch.TileInstanced); } TEST_F(MultiTileGmmTests, givenMultiTileWhenGmmIsCreatedWithCloningEnabledThenGpuVaMappingDependsOnPageTablesVisibityBitfield) { @@ -1760,11 +1807,12 @@ TEST_F(MultiTileGmmTests, givenMultiTileWhenGmmIsCreatedWithCloningEnabledThenGp gmmRequirements.preferCompressed = false; Gmm gmm(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, storageInfo, gmmRequirements); - EXPECT_EQ(1u, gmm.resourceParams.MultiTileArch.Enable); - EXPECT_EQ(storageInfo.memoryBanks, gmm.resourceParams.MultiTileArch.LocalMemPreferredSet); - EXPECT_EQ(storageInfo.pageTablesVisibility, gmm.resourceParams.MultiTileArch.GpuVaMappingSet); - EXPECT_EQ(storageInfo.memoryBanks, gmm.resourceParams.MultiTileArch.LocalMemEligibilitySet); - EXPECT_EQ(0u, gmm.resourceParams.MultiTileArch.TileInstanced); + auto *gmmResourceParams = reinterpret_cast(gmm.resourceParamsData.data()); + EXPECT_EQ(1u, gmmResourceParams->MultiTileArch.Enable); + EXPECT_EQ(storageInfo.memoryBanks, gmmResourceParams->MultiTileArch.LocalMemPreferredSet); + EXPECT_EQ(storageInfo.pageTablesVisibility, gmmResourceParams->MultiTileArch.GpuVaMappingSet); + EXPECT_EQ(storageInfo.memoryBanks, gmmResourceParams->MultiTileArch.LocalMemEligibilitySet); + EXPECT_EQ(0u, gmmResourceParams->MultiTileArch.TileInstanced); } TEST_F(MultiTileGmmTests, whenAllocationIsTileInstancedWithoutClonningPageTablesThenResourceParamsHaveTileInstancedEnabled) { @@ -1778,8 +1826,9 @@ TEST_F(MultiTileGmmTests, whenAllocationIsTileInstancedWithoutClonningPageTables gmmRequirements.preferCompressed = false; Gmm gmm(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, storageInfo, gmmRequirements); - EXPECT_EQ(1u, gmm.resourceParams.MultiTileArch.Enable); - EXPECT_EQ(1u, gmm.resourceParams.MultiTileArch.TileInstanced); + auto *gmmResourceParams = reinterpret_cast(gmm.resourceParamsData.data()); + EXPECT_EQ(1u, gmmResourceParams->MultiTileArch.Enable); + EXPECT_EQ(1u, gmmResourceParams->MultiTileArch.TileInstanced); } TEST_F(MultiTileGmmTests, whenAllocationIsTileInstancedWithClonningPageTablesThenResourceParamsHaveTileInstancedDisabled) { @@ -1791,6 +1840,7 @@ TEST_F(MultiTileGmmTests, whenAllocationIsTileInstancedWithClonningPageTablesThe gmmRequirements.preferCompressed = false; Gmm gmm(getGmmHelper(), nullptr, 1, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, storageInfo, gmmRequirements); - EXPECT_EQ(1u, gmm.resourceParams.MultiTileArch.Enable); - EXPECT_EQ(0u, gmm.resourceParams.MultiTileArch.TileInstanced); + auto *gmmResourceParams = reinterpret_cast(gmm.resourceParamsData.data()); + EXPECT_EQ(1u, gmmResourceParams->MultiTileArch.Enable); + EXPECT_EQ(0u, gmmResourceParams->MultiTileArch.TileInstanced); } diff --git a/shared/test/unit_test/gmm_helper/gmm_tests.cpp b/shared/test/unit_test/gmm_helper/gmm_tests.cpp index 3d967a161b..e5b571e794 100644 --- a/shared/test/unit_test/gmm_helper/gmm_tests.cpp +++ b/shared/test/unit_test/gmm_helper/gmm_tests.cpp @@ -30,7 +30,8 @@ TEST_F(GmmTests, givenResourceUsageTypesCacheableWhenCreateGmmAndFlagEnableCpuCa GMM_RESOURCE_USAGE_OCL_BUFFER}) { auto gmm = std::make_unique(getGmmHelper(), nullptr, 0, 0, resourceUsageType, storageInfo, gmmRequirements); EXPECT_FALSE(CacheSettingsHelper::preferNoCpuAccess(resourceUsageType, getGmmHelper()->getRootDeviceEnvironment())); - EXPECT_TRUE(gmm->resourceParams.Flags.Info.Cacheable); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_TRUE(gmmResourceParams->Flags.Info.Cacheable); } } @@ -62,7 +63,8 @@ TEST_F(GmmTests, givenResourceUsageTypesUnCachedWhenGreateGmmThenFlagCachcableIs GMM_RESOURCE_USAGE_OCL_SYSTEM_MEMORY_BUFFER_CACHELINE_MISALIGNED, GMM_RESOURCE_USAGE_OCL_BUFFER_CACHELINE_MISALIGNED}) { auto gmm = std::make_unique(getGmmHelper(), nullptr, 0, 0, resourceUsageType, storageInfo, gmmRequirements); - EXPECT_FALSE(gmm->resourceParams.Flags.Info.Cacheable); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_FALSE(gmmResourceParams->Flags.Info.Cacheable); } } @@ -79,12 +81,15 @@ HWTEST_F(GmmTests, givenIsResourceCacheableOnCpuWhenWslFlagThenReturnProperValue gmmRequirements.preferCompressed = false; auto gmm = std::make_unique(getGmmHelper(), nullptr, 0, 0, gmmResourceUsageType, storageInfo, gmmRequirements); EXPECT_FALSE(CacheSettingsHelper::preferNoCpuAccess(gmmResourceUsageType, *rootDeviceEnvironment)); - EXPECT_TRUE(gmm->resourceParams.Flags.Info.Cacheable); + + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_TRUE(gmmResourceParams->Flags.Info.Cacheable); gmmResourceUsageType = GMM_RESOURCE_USAGE_OCL_BUFFER_CACHELINE_MISALIGNED; gmm = std::make_unique(getGmmHelper(), nullptr, 0, 0, gmmResourceUsageType, storageInfo, gmmRequirements); + gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); EXPECT_FALSE(CacheSettingsHelper::preferNoCpuAccess(gmmResourceUsageType, *rootDeviceEnvironment)); - EXPECT_FALSE(gmm->resourceParams.Flags.Info.Cacheable); + EXPECT_FALSE(gmmResourceParams->Flags.Info.Cacheable); } HWTEST_F(GmmTests, givenVariousResourceUsageTypeWhenCreateGmmThenFlagCacheableIsSetProperly) { @@ -102,25 +107,29 @@ HWTEST_F(GmmTests, givenVariousResourceUsageTypeWhenCreateGmmThenFlagCacheableIs GMM_RESOURCE_USAGE_OCL_BUFFER}) { auto gmm = std::make_unique(getGmmHelper(), nullptr, 0, 0, regularResourceUsageType, storageInfo, gmmRequirements); - EXPECT_EQ(productHelper.isCachingOnCpuAvailable(), gmm->resourceParams.Flags.Info.Cacheable); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(productHelper.isCachingOnCpuAvailable(), gmmResourceParams->Flags.Info.Cacheable); } for (auto cpuAccessibleResourceUsageType : {GMM_RESOURCE_USAGE_OCL_SYSTEM_MEMORY_BUFFER}) { auto gmm = std::make_unique(getGmmHelper(), nullptr, 0, 0, cpuAccessibleResourceUsageType, storageInfo, gmmRequirements); - EXPECT_TRUE(gmm->resourceParams.Flags.Info.Cacheable); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_TRUE(gmmResourceParams->Flags.Info.Cacheable); } for (auto uncacheableResourceUsageType : {GMM_RESOURCE_USAGE_OCL_BUFFER_CSR_UC, GMM_RESOURCE_USAGE_OCL_SYSTEM_MEMORY_BUFFER_CACHELINE_MISALIGNED, GMM_RESOURCE_USAGE_OCL_BUFFER_CACHELINE_MISALIGNED}) { auto gmm = std::make_unique(getGmmHelper(), nullptr, 0, 0, uncacheableResourceUsageType, storageInfo, gmmRequirements); - EXPECT_FALSE(gmm->resourceParams.Flags.Info.Cacheable); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_FALSE(gmmResourceParams->Flags.Info.Cacheable); } { gmmRequirements.overriderCacheable.enableOverride = true; gmmRequirements.overriderCacheable.value = true; auto gmm = std::make_unique(getGmmHelper(), nullptr, 0, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, storageInfo, gmmRequirements); - EXPECT_TRUE(gmm->resourceParams.Flags.Info.Cacheable); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_TRUE(gmmResourceParams->Flags.Info.Cacheable); } { gmmRequirements.overriderPreferNoCpuAccess.enableOverride = true; @@ -143,12 +152,14 @@ HWTEST_F(GmmTests, givenVariousCacheableDebugSettingsTheCacheableFieldIsProgramm GmmRequirements gmmRequirements{}; auto gmm = std::make_unique(getGmmHelper(), nullptr, 0, 0, GMM_RESOURCE_USAGE_OCL_SYSTEM_MEMORY_BUFFER, storageInfo, gmmRequirements); - EXPECT_FALSE(gmm->resourceParams.Flags.Info.Cacheable); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_FALSE(gmmResourceParams->Flags.Info.Cacheable); debugManager.flags.OverrideGmmCacheableField.set(1); auto gmm2 = std::make_unique(getGmmHelper(), nullptr, 0, 0, GMM_RESOURCE_USAGE_OCL_SYSTEM_MEMORY_BUFFER, storageInfo, gmmRequirements); - EXPECT_TRUE(gmm2->resourceParams.Flags.Info.Cacheable); + auto *gmmResourceParams2 = reinterpret_cast(gmm2->resourceParamsData.data()); + EXPECT_TRUE(gmmResourceParams2->Flags.Info.Cacheable); } HWTEST_F(GmmTests, givenGmmHelperWhenLocalOnlyAllocationModeSetThenRespectiveFlagForGmmResourceIsSet) { @@ -162,15 +173,16 @@ HWTEST_F(GmmTests, givenGmmHelperWhenLocalOnlyAllocationModeSetThenRespectiveFla storageInfo.localOnlyRequired = true; auto gmm = std::make_unique(gmmHelper); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); - gmm->resourceParams.Flags.Info.LocalOnly = false; + gmmResourceParams->Flags.Info.LocalOnly = false; gmm->extraMemoryFlagsRequiredResult = false; gmm->applyMemoryFlags(storageInfo); - EXPECT_TRUE(gmm->resourceParams.Flags.Info.LocalOnly); + EXPECT_TRUE(gmmResourceParams->Flags.Info.LocalOnly); - gmm->resourceParams.Flags.Info.LocalOnly = false; + gmmResourceParams->Flags.Info.LocalOnly = false; gmm->extraMemoryFlagsRequiredResult = true; gmm->applyMemoryFlags(storageInfo); - EXPECT_TRUE(gmm->resourceParams.Flags.Info.LocalOnly); + EXPECT_TRUE(gmmResourceParams->Flags.Info.LocalOnly); } } // namespace NEO diff --git a/shared/test/unit_test/helpers/gfx_core_helper_tests.cpp b/shared/test/unit_test/helpers/gfx_core_helper_tests.cpp index 6db6addb11..a6caf1a6b1 100644 --- a/shared/test/unit_test/helpers/gfx_core_helper_tests.cpp +++ b/shared/test/unit_test/helpers/gfx_core_helper_tests.cpp @@ -1130,13 +1130,14 @@ TEST_F(GfxCoreHelperTest, WhenGettingIsCpuImageTransferPreferredThenFalseIsRetur HWTEST_F(GfxCoreHelperTest, whenSetCompressedFlagThenProperFlagSet) { auto &gfxCoreHelper = getHelper(); auto gmm = std::make_unique(pDevice->getGmmHelper()); - gmm->resourceParams.Flags.Info.RenderCompressed = 0; + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + gmmResourceParams->Flags.Info.RenderCompressed = 0; gfxCoreHelper.applyRenderCompressionFlag(*gmm, 1); - EXPECT_EQ(1u, gmm->resourceParams.Flags.Info.RenderCompressed); + EXPECT_EQ(1u, gmmResourceParams->Flags.Info.RenderCompressed); gfxCoreHelper.applyRenderCompressionFlag(*gmm, 0); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.RenderCompressed); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.RenderCompressed); } HWTEST2_F(GfxCoreHelperTest, whenSetNotCompressedFlagThenProperValueReturned, IsAtLeastXe2HpgCore) { diff --git a/shared/test/unit_test/memory_manager/memory_manager_tests.cpp b/shared/test/unit_test/memory_manager/memory_manager_tests.cpp index 42833bf391..13ed12d75e 100644 --- a/shared/test/unit_test/memory_manager/memory_manager_tests.cpp +++ b/shared/test/unit_test/memory_manager/memory_manager_tests.cpp @@ -1252,9 +1252,10 @@ TEST(OsAgnosticMemoryManager, givenDefaultMemoryManagerWhenAllocateGraphicsMemor auto imageAllocation = memoryManager.allocateGraphicsMemoryForImage(allocationData); ASSERT_NE(nullptr, imageAllocation); - EXPECT_TRUE(imageAllocation->getDefaultGmm()->resourceParams.Usage == GMM_RESOURCE_USAGE_TYPE::GMM_RESOURCE_USAGE_OCL_IMAGE); + auto *gmmResourceParams = reinterpret_cast(imageAllocation->getDefaultGmm()->resourceParamsData.data()); + EXPECT_TRUE(gmmResourceParams->Usage == GMM_RESOURCE_USAGE_TYPE::GMM_RESOURCE_USAGE_OCL_IMAGE); EXPECT_EQ(executionEnvironment.rootDeviceEnvironments[0]->getHardwareInfo()->featureTable.flags.ftrLocalMemory, - imageAllocation->getDefaultGmm()->resourceParams.Flags.Info.NonLocalOnly); + gmmResourceParams->Flags.Info.NonLocalOnly); memoryManager.freeGraphicsMemory(imageAllocation); } @@ -1342,7 +1343,8 @@ TEST(OsAgnosticMemoryManager, givenCompressionEnabledWhenAllocateGraphicsMemoryW EXPECT_EQ(MemoryPool::system4KBPages, allocation->getMemoryPool()); EXPECT_NE(nullptr, allocation->getDefaultGmm()); EXPECT_EQ(true, allocation->getDefaultGmm()->isCompressionEnabled()); - EXPECT_EQ(MemoryConstants::pageSize, allocation->getDefaultGmm()->resourceParams.BaseAlignment); + auto *gmmResourceParams = reinterpret_cast(allocation->getDefaultGmm()->resourceParamsData.data()); + EXPECT_EQ(MemoryConstants::pageSize, gmmResourceParams->BaseAlignment); memoryManager.freeGraphicsMemory(allocation); } @@ -1356,7 +1358,8 @@ TEST(OsAgnosticMemoryManager, givenMemoryManagerWith64KBPagesEnabledWhenAllocate auto allocation = memoryManager.allocateGraphicsMemory64kb(allocationData); EXPECT_NE(nullptr, allocation); EXPECT_EQ(MemoryPool::system64KBPages, allocation->getMemoryPool()); - EXPECT_EQ(MemoryConstants::pageSize64k, allocation->getDefaultGmm()->resourceParams.BaseAlignment); + auto *gmmResourceParams = reinterpret_cast(allocation->getDefaultGmm()->resourceParamsData.data()); + EXPECT_EQ(MemoryConstants::pageSize64k, gmmResourceParams->BaseAlignment); memoryManager.freeGraphicsMemory(allocation); } @@ -1373,7 +1376,8 @@ TEST(OsAgnosticMemoryManager, givenMemoryManagerWith64KBPagesEnabledAndCompressi auto allocation = memoryManager.allocateGraphicsMemory64kb(allocationData); EXPECT_NE(nullptr, allocation); EXPECT_EQ(MemoryPool::system64KBPages, allocation->getMemoryPool()); - EXPECT_GT(allocation->getDefaultGmm()->resourceParams.BaseAlignment, MemoryConstants::pageSize); + auto *gmmResourceParams = reinterpret_cast(allocation->getDefaultGmm()->resourceParamsData.data()); + EXPECT_GT(gmmResourceParams->BaseAlignment, MemoryConstants::pageSize); memoryManager.freeGraphicsMemory(allocation); } diff --git a/shared/test/unit_test/os_interface/linux/drm_memory_manager_localmem_prelim_tests.cpp b/shared/test/unit_test/os_interface/linux/drm_memory_manager_localmem_prelim_tests.cpp index 3f570a2711..6dc8df3955 100644 --- a/shared/test/unit_test/os_interface/linux/drm_memory_manager_localmem_prelim_tests.cpp +++ b/shared/test/unit_test/os_interface/linux/drm_memory_manager_localmem_prelim_tests.cpp @@ -1761,12 +1761,14 @@ HWTEST2_F(DrmMemoryManagerLocalMemoryPrelimTest, givenNotSetUseSystemMemoryWhenG allocData.flags.preferCompressed = CompressionSelector::preferCompressedAllocation(properties); auto buffer = memoryManager->allocateGraphicsMemoryInDevicePool(allocData, status); ASSERT_NE(nullptr, buffer); - EXPECT_EQ(0u, buffer->getDefaultGmm()->resourceParams.Flags.Info.RenderCompressed); + auto *gmmResourceParams = reinterpret_cast(buffer->getDefaultGmm()->resourceParamsData.data()); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.RenderCompressed); allocData.flags.preferCompressed = true; auto bufferCompressed = memoryManager->allocateGraphicsMemoryInDevicePool(allocData, status); ASSERT_NE(nullptr, bufferCompressed); - EXPECT_EQ(1u, bufferCompressed->getDefaultGmm()->resourceParams.Flags.Info.RenderCompressed); + gmmResourceParams = reinterpret_cast(bufferCompressed->getDefaultGmm()->resourceParamsData.data()); + EXPECT_EQ(1u, gmmResourceParams->Flags.Info.RenderCompressed); memoryManager->freeGraphicsMemory(buffer); memoryManager->freeGraphicsMemory(bufferCompressed); @@ -1791,7 +1793,8 @@ HWTEST2_F(DrmMemoryManagerLocalMemoryPrelimTest, givenEnableStatelessCompression allocData.flags.preferCompressed = true; auto buffer = memoryManager->allocateGraphicsMemoryInDevicePool(allocData, status); ASSERT_NE(nullptr, buffer); - EXPECT_EQ(1u, buffer->getDefaultGmm()->resourceParams.Flags.Info.RenderCompressed); + auto *gmmResourceParams = reinterpret_cast(buffer->getDefaultGmm()->resourceParamsData.data()); + EXPECT_EQ(1u, gmmResourceParams->Flags.Info.RenderCompressed); memoryManager->freeGraphicsMemory(buffer); } @@ -3227,7 +3230,8 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, givenGraphicsAllocationInDevicePoo auto gmm = allocation->getDefaultGmm(); EXPECT_NE(nullptr, gmm); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.NonLocalOnly); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.NonLocalOnly); auto gpuAddress = allocation->getGpuAddress(); auto sizeAlignedTo64KB = alignUp(allocData.imgInfo->size, MemoryConstants::pageSize64k); diff --git a/shared/test/unit_test/os_interface/linux/drm_memory_manager_localmem_upstream_tests.cpp b/shared/test/unit_test/os_interface/linux/drm_memory_manager_localmem_upstream_tests.cpp index d10cda42ba..6ed1c77fe5 100644 --- a/shared/test/unit_test/os_interface/linux/drm_memory_manager_localmem_upstream_tests.cpp +++ b/shared/test/unit_test/os_interface/linux/drm_memory_manager_localmem_upstream_tests.cpp @@ -960,7 +960,8 @@ HWTEST2_F(DrmMemoryManagerLocalMemoryTest, givenGraphicsAllocationInDevicePoolIs auto gmm = allocation->getDefaultGmm(); EXPECT_NE(nullptr, gmm); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.NonLocalOnly); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.NonLocalOnly); auto gpuAddress = allocation->getGpuAddress(); auto sizeAlignedTo64KB = alignUp(allocData.imgInfo->size, MemoryConstants::pageSize64k); diff --git a/shared/test/unit_test/os_interface/linux/drm_memory_manager_tests.cpp b/shared/test/unit_test/os_interface/linux/drm_memory_manager_tests.cpp index a9084ca620..1fa300127b 100644 --- a/shared/test/unit_test/os_interface/linux/drm_memory_manager_tests.cpp +++ b/shared/test/unit_test/os_interface/linux/drm_memory_manager_tests.cpp @@ -293,13 +293,14 @@ HWTEST_TEMPLATED_F(DrmMemoryManagerTest, GivenAllocatePhysicalHostMemoryThenSucc EXPECT_NE(nullptr, allocation); EXPECT_EQ(0u, allocation->getGpuAddress()); + auto *gmmResourceParams = reinterpret_cast(allocation->getDefaultGmm()->resourceParamsData.data()); if (productHelper.overrideAllocationCpuCacheable(allocationData)) { - EXPECT_TRUE(allocation->getDefaultGmm()->resourceParams.Flags.Info.Cacheable); + EXPECT_TRUE(gmmResourceParams->Flags.Info.Cacheable); } else { auto gmmResourceUsage = CacheSettingsHelper::getGmmUsageType(allocationData.type, allocationData.flags.uncacheable, productHelper, gmmHelper->getHardwareInfo()); auto preferNoCpuAccess = CacheSettingsHelper::preferNoCpuAccess(gmmResourceUsage, gmmHelper->getRootDeviceEnvironment()); bool cacheable = !preferNoCpuAccess && !CacheSettingsHelper::isUncachedType(gmmResourceUsage); - EXPECT_EQ(cacheable, allocation->getDefaultGmm()->resourceParams.Flags.Info.Cacheable); + EXPECT_EQ(cacheable, gmmResourceParams->Flags.Info.Cacheable); } memoryManager->freeGraphicsMemory(allocation); @@ -2243,7 +2244,8 @@ HWTEST_TEMPLATED_F(DrmMemoryManagerTest, GivenMemoryManagerWhenAllocateByKmdThen allocationData.alignment = 8388608; auto allocation = memoryManager->allocateMemoryByKMD(allocationData); auto gmm = allocation->getDefaultGmm(); - EXPECT_EQ(gmm->resourceParams.BaseAlignment, allocationData.alignment); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(gmmResourceParams->BaseAlignment, allocationData.alignment); memoryManager->freeGraphicsMemory(allocation); } @@ -2417,8 +2419,7 @@ HWTEST_TEMPLATED_F(DrmMemoryManagerTest, GivenMemoryManagerWhenAllocateGraphicsM EXPECT_NE(0u, imageGraphicsAllocation->getGpuAddress()); EXPECT_EQ(nullptr, imageGraphicsAllocation->getUnderlyingBuffer()); - EXPECT_TRUE(imageGraphicsAllocation->getDefaultGmm()->resourceParams.Usage == - GMM_RESOURCE_USAGE_TYPE::GMM_RESOURCE_USAGE_OCL_IMAGE); + EXPECT_TRUE(imageGraphicsAllocation->getDefaultGmm()->getResourceUsageType() == GMM_RESOURCE_USAGE_TYPE::GMM_RESOURCE_USAGE_OCL_IMAGE); EXPECT_EQ(1u, this->mock->createParamsHandle); EXPECT_EQ(imgInfo.size, this->mock->createParamsSize); @@ -7945,10 +7946,11 @@ TEST_F(DrmMemoryManagerWithLocalMemoryAndExplicitExpectationsTest, givenNotSetUs auto gmm = allocation->getDefaultGmm(); EXPECT_NE(nullptr, gmm); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.NonLocalOnly); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.NonLocalOnly); - EXPECT_EQ(RESOURCE_BUFFER, gmm->resourceParams.Type); - EXPECT_EQ(sizeAligned, gmm->resourceParams.BaseWidth64); + EXPECT_EQ(RESOURCE_BUFFER, gmmResourceParams->Type); + EXPECT_EQ(sizeAligned, gmmResourceParams->BaseWidth64); EXPECT_NE(nullptr, gmm->gmmResourceInfo->peekHandle()); EXPECT_NE(0u, gmm->gmmResourceInfo->getHAlign()); @@ -8085,7 +8087,8 @@ TEST_F(DrmMemoryManagerWithLocalMemoryAndExplicitExpectationsTest, givenNotSetUs auto gmm = allocation->getDefaultGmm(); EXPECT_NE(nullptr, gmm); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.NonLocalOnly); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.NonLocalOnly); auto gpuAddress = allocation->getGpuAddress(); auto sizeAligned = alignUp(allocData.imgInfo->size, MemoryConstants::pageSize64k); @@ -8277,7 +8280,8 @@ TEST_F(DrmMemoryManagerWithLocalMemoryAndExplicitExpectationsTest, givenEnabled2 auto gmm = allocation->getDefaultGmm(); EXPECT_NE(nullptr, gmm); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.NonLocalOnly); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.NonLocalOnly); auto gpuAddress = allocation->getGpuAddress(); auto sizeAligned = alignUp(allocData.imgInfo->size, MemoryConstants::pageSize2M); diff --git a/shared/test/unit_test/os_interface/linux/file_logger_linux_tests.cpp b/shared/test/unit_test/os_interface/linux/file_logger_linux_tests.cpp index 5b6d66940e..ccac0d86ab 100644 --- a/shared/test/unit_test/os_interface/linux/file_logger_linux_tests.cpp +++ b/shared/test/unit_test/os_interface/linux/file_logger_linux_tests.cpp @@ -36,8 +36,9 @@ TEST(FileLogger, GivenLogAllocationMemoryPoolFlagThenLogsCorrectInfo) { allocation.setGmm(new MockGmm(gmmHelper), 0); - allocation.getDefaultGmm()->resourceParams.Usage = GMM_RESOURCE_USAGE_TYPE_ENUM::GMM_RESOURCE_USAGE_OCL_BUFFER; - allocation.getDefaultGmm()->resourceParams.Flags.Info.Cacheable = true; + auto *gmmResourceParams = reinterpret_cast(allocation.getDefaultGmm()->resourceParamsData.data()); + gmmResourceParams->Usage = GMM_RESOURCE_USAGE_TYPE_ENUM::GMM_RESOURCE_USAGE_OCL_BUFFER; + gmmResourceParams->Flags.Info.Cacheable = true; auto canonizedGpuAddress = gmmHelper->canonize(0x12345); @@ -102,8 +103,9 @@ TEST(FileLogger, givenLogAllocationStdoutWhenLogAllocationThenLogToStdoutInstead allocation.setGmm(new MockGmm(gmmHelper), 0); - allocation.getDefaultGmm()->resourceParams.Usage = GMM_RESOURCE_USAGE_TYPE_ENUM::GMM_RESOURCE_USAGE_OCL_BUFFER; - allocation.getDefaultGmm()->resourceParams.Flags.Info.Cacheable = true; + auto *gmmResourceParams = reinterpret_cast(allocation.getDefaultGmm()->resourceParamsData.data()); + gmmResourceParams->Usage = GMM_RESOURCE_USAGE_TYPE_ENUM::GMM_RESOURCE_USAGE_OCL_BUFFER; + gmmResourceParams->Flags.Info.Cacheable = true; auto canonizedGpuAddress = gmmHelper->canonize(0x12345); @@ -162,8 +164,9 @@ TEST(FileLogger, GivenDrmAllocationWithoutBOThenNoHandleLogged) { allocation.setGmm(new MockGmm(gmmHelper), 0); - allocation.getDefaultGmm()->resourceParams.Usage = GMM_RESOURCE_USAGE_TYPE_ENUM::GMM_RESOURCE_USAGE_OCL_BUFFER; - allocation.getDefaultGmm()->resourceParams.Flags.Info.Cacheable = true; + auto *gmmResourceParams = reinterpret_cast(allocation.getDefaultGmm()->resourceParamsData.data()); + gmmResourceParams->Usage = GMM_RESOURCE_USAGE_TYPE_ENUM::GMM_RESOURCE_USAGE_OCL_BUFFER; + gmmResourceParams->Flags.Info.Cacheable = true; logAllocation(fileLogger, &allocation, nullptr); std::thread::id thisThread = std::this_thread::get_id(); diff --git a/shared/test/unit_test/os_interface/product_helper_tests.cpp b/shared/test/unit_test/os_interface/product_helper_tests.cpp index 6605bc3215..3afbf7bd7b 100644 --- a/shared/test/unit_test/os_interface/product_helper_tests.cpp +++ b/shared/test/unit_test/os_interface/product_helper_tests.cpp @@ -577,7 +577,8 @@ HWTEST_F(ProductHelperTest, givenNotLockableAllocationWhenGettingIsBlitCopyRequi gmmRequirements.allowLargePages = true; gmmRequirements.preferCompressed = false; MockGmm mockGmm(gmmHelper, nullptr, 100, 100, GMM_RESOURCE_USAGE_OCL_BUFFER, {}, gmmRequirements); - mockGmm.resourceParams.Flags.Info.NotLockable = true; + auto *mockGmmResourceParams = reinterpret_cast(mockGmm.resourceParamsData.data()); + mockGmmResourceParams->Flags.Info.NotLockable = true; graphicsAllocation.setDefaultGmm(&mockGmm); auto &rootDeviceEnvironment = *executionEnvironment.rootDeviceEnvironments[0]; diff --git a/shared/test/unit_test/os_interface/wddm_linux/configure_device_address_space_drm_or_wddm_test.cpp b/shared/test/unit_test/os_interface/wddm_linux/configure_device_address_space_drm_or_wddm_test.cpp index 908c711e24..f2220efe70 100644 --- a/shared/test/unit_test/os_interface/wddm_linux/configure_device_address_space_drm_or_wddm_test.cpp +++ b/shared/test/unit_test/os_interface/wddm_linux/configure_device_address_space_drm_or_wddm_test.cpp @@ -272,9 +272,10 @@ HWTEST2_F(GmmTestsDG2, givenGmmForImageWithForceLocalMemThenNonLocalIsSetToFalse storageInfo.systemMemoryPlacement = false; std::unique_ptr gmm(new NEO::Gmm(mockExecEnv.rootDeviceEnvironments[0]->getGmmHelper(), imgInfo, storageInfo, false)); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); - EXPECT_EQ(gmm->resourceParams.Flags.Info.NonLocalOnly, 0u); - EXPECT_EQ(gmm->resourceParams.Flags.Info.LocalOnly, 1u); + EXPECT_EQ(gmmResourceParams->Flags.Info.NonLocalOnly, 0u); + EXPECT_EQ(gmmResourceParams->Flags.Info.LocalOnly, 1u); } using WddmLinuxConfigureDeviceAddressSpaceTest = WddmLinuxTest; diff --git a/shared/test/unit_test/os_interface/windows/file_logger_win_tests.cpp b/shared/test/unit_test/os_interface/windows/file_logger_win_tests.cpp index 273e7ba05d..d2965a869f 100644 --- a/shared/test/unit_test/os_interface/windows/file_logger_win_tests.cpp +++ b/shared/test/unit_test/os_interface/windows/file_logger_win_tests.cpp @@ -35,8 +35,9 @@ TEST_F(FileLoggerTests, GivenLogAllocationMemoryPoolFlagThenLogsCorrectInfo) { allocation.handle = 4; allocation.setAllocationType(AllocationType::buffer); allocation.memoryPool = MemoryPool::system64KBPages; - allocation.getDefaultGmm()->resourceParams.Flags.Info.NonLocalOnly = 0; - allocation.getDefaultGmm()->resourceParams.Usage = GMM_RESOURCE_USAGE_HEAP_STATELESS_DATA_PORT_L1_CACHED; + auto *gmmResourceParams = reinterpret_cast(allocation.getDefaultGmm()->resourceParamsData.data()); + gmmResourceParams->Flags.Info.NonLocalOnly = 0; + gmmResourceParams->Usage = GMM_RESOURCE_USAGE_HEAP_STATELESS_DATA_PORT_L1_CACHED; allocation.setGpuAddress(0x12345); allocation.size = 777u; @@ -92,7 +93,8 @@ TEST_F(FileLoggerTests, GivenLogAllocationMemoryPoolFlagSetFalseThenAllocationIs allocation.handle = 4; allocation.setAllocationType(AllocationType::buffer); allocation.memoryPool = MemoryPool::system64KBPages; - allocation.getDefaultGmm()->resourceParams.Flags.Info.NonLocalOnly = 0; + auto *gmmResourceParams = reinterpret_cast(allocation.getDefaultGmm()->resourceParamsData.data()); + gmmResourceParams->Flags.Info.NonLocalOnly = 0; logAllocation(fileLogger, &allocation, nullptr); diff --git a/shared/test/unit_test/os_interface/windows/wddm_memory_manager_tests.cpp b/shared/test/unit_test/os_interface/windows/wddm_memory_manager_tests.cpp index 826959854d..7b1a1d9bc0 100644 --- a/shared/test/unit_test/os_interface/windows/wddm_memory_manager_tests.cpp +++ b/shared/test/unit_test/os_interface/windows/wddm_memory_manager_tests.cpp @@ -168,7 +168,8 @@ TEST_F(WddmMemoryManagerTests, GivenoverrideAllocationCpuCacheableWhenAllocateUs ASSERT_NE(nullptr, graphicsAllocation); - EXPECT_TRUE(graphicsAllocation->getDefaultGmm()->resourceParams.Flags.Info.Cacheable); + auto *gmmResourceParams = reinterpret_cast(graphicsAllocation->getDefaultGmm()->resourceParamsData.data()); + EXPECT_TRUE(gmmResourceParams->Flags.Info.Cacheable); memoryManager->freeGraphicsMemory(graphicsAllocation); } @@ -270,7 +271,8 @@ TEST_F(WddmMemoryManagerTests, givenMemoryManagerWith64KBPagesEnabledWhenAllocat allocationData.alignment = 2 * MemoryConstants::pageSize64k; auto allocation = memoryManager.allocateGraphicsMemory64kb(allocationData); - EXPECT_EQ(allocation->getDefaultGmm()->resourceParams.BaseAlignment, allocationData.alignment); + auto *gmmResourceParams = reinterpret_cast(allocation->getDefaultGmm()->resourceParamsData.data()); + EXPECT_EQ(gmmResourceParams->BaseAlignment, allocationData.alignment); memoryManager.freeGraphicsMemory(allocation); } class MockAllocateGraphicsMemoryUsingKmdAndMapItToCpuVAWddm : public MemoryManagerCreate { @@ -681,9 +683,10 @@ class WddmMemoryManagerSimpleTest : public ::testing::Test { EXPECT_NE(nullptr, allocation); EXPECT_EQ(MemoryManager::AllocationStatus::Success, status); EXPECT_EQ(MemoryPool::localMemory, allocation->getMemoryPool()); - EXPECT_EQ(0u, allocation->getDefaultGmm()->resourceParams.Flags.Info.NonLocalOnly); + auto *gmmResourceParams = reinterpret_cast(allocation->getDefaultGmm()->resourceParamsData.data()); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.NonLocalOnly); EXPECT_EQ(alignUp(allocationSize, expectedAlignment), allocation->getUnderlyingBufferSize()); - EXPECT_EQ(expectedAlignment, allocation->getDefaultGmm()->resourceParams.BaseAlignment); + EXPECT_EQ(expectedAlignment, gmmResourceParams->BaseAlignment); memoryManager->freeGraphicsMemory(allocation); } @@ -716,11 +719,12 @@ class WddmMemoryManagerSimpleTest : public ::testing::Test { uint64_t totalSizeFromGmms = 0u; for (uint32_t gmmId = 0u; gmmId < allocation->getNumGmms(); ++gmmId) { Gmm *gmm = allocation->getGmm(gmmId); - EXPECT_EQ(0u, gmm->resourceParams.Flags.Info.NonLocalOnly); - EXPECT_EQ(2 * MemoryConstants::megaByte, gmm->resourceParams.BaseAlignment); - EXPECT_TRUE(isAligned(gmm->resourceParams.BaseWidth64, gmm->resourceParams.BaseAlignment)); + auto *gmmResourceParams = reinterpret_cast(gmm->resourceParamsData.data()); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.NonLocalOnly); + EXPECT_EQ(2 * MemoryConstants::megaByte, gmmResourceParams->BaseAlignment); + EXPECT_TRUE(isAligned(gmmResourceParams->BaseWidth64, gmmResourceParams->BaseAlignment)); - totalSizeFromGmms += gmm->resourceParams.BaseWidth64; + totalSizeFromGmms += gmmResourceParams->BaseWidth64; } EXPECT_EQ(static_cast(allocData.size), totalSizeFromGmms); @@ -766,8 +770,9 @@ TEST_F(WddmMemoryManagerSimpleTest, givenMemoryManagerWhenAllocateGraphicsMemory auto allocation = memoryManager->allocateGraphicsMemoryWithProperties(MockAllocationProperties{csr->getRootDeviceIndex(), MemoryConstants::pageSize}); EXPECT_NE(nullptr, allocation); EXPECT_EQ(MemoryPool::system4KBPages, allocation->getMemoryPool()); + auto *gmmResourceParams = reinterpret_cast(allocation->getDefaultGmm()->resourceParamsData.data()); EXPECT_EQ(executionEnvironment.rootDeviceEnvironments[0]->getHardwareInfo()->featureTable.flags.ftrLocalMemory, - allocation->getDefaultGmm()->resourceParams.Flags.Info.NonLocalOnly); + gmmResourceParams->Flags.Info.NonLocalOnly); memoryManager->freeGraphicsMemory(allocation); } @@ -844,8 +849,9 @@ TEST_F(WddmMemoryManagerSimpleTest, givenMemoryManagerWith64KBPagesEnabledWhenAl EXPECT_NE(nullptr, allocation); EXPECT_EQ(MemoryPool::system64KBPages, allocation->getMemoryPool()); + auto *gmmResourceParams = reinterpret_cast(allocation->getDefaultGmm()->resourceParamsData.data()); EXPECT_EQ(executionEnvironment.rootDeviceEnvironments[0]->getHardwareInfo()->featureTable.flags.ftrLocalMemory, - allocation->getDefaultGmm()->resourceParams.Flags.Info.NonLocalOnly); + gmmResourceParams->Flags.Info.NonLocalOnly); memoryManager->freeGraphicsMemory(allocation); } @@ -926,7 +932,8 @@ TEST_F(WddmMemoryManagerSimpleTest, givenMemoryManagerWhenAllocateGraphicsMemory ASSERT_NE(nullptr, allocation); EXPECT_EQ(MemoryPool::system4KBPages, allocation->getMemoryPool()); for (size_t i = 0; i < allocation->fragmentsStorage.fragmentCount; i++) { - EXPECT_EQ(1u, static_cast(allocation->fragmentsStorage.fragmentStorageData[i].osHandleStorage)->gmm->resourceParams.Flags.Info.NonLocalOnly); + auto *gmmResourceParams = reinterpret_cast(static_cast(allocation->fragmentsStorage.fragmentStorageData[i].osHandleStorage)->gmm->resourceParamsData.data()); + EXPECT_EQ(1u, gmmResourceParams->Flags.Info.NonLocalOnly); } memoryManager->freeGraphicsMemory(allocation); } @@ -940,8 +947,9 @@ TEST_F(WddmMemoryManagerSimpleTest, givenMemoryManagerWhenAllocate32BitGraphicsM ASSERT_NE(nullptr, allocation); EXPECT_EQ(MemoryPool::system4KBPagesWith32BitGpuAddressing, allocation->getMemoryPool()); + auto *gmmResourceParams = reinterpret_cast(allocation->getDefaultGmm()->resourceParamsData.data()); EXPECT_EQ(executionEnvironment.rootDeviceEnvironments[0]->getHardwareInfo()->featureTable.flags.ftrLocalMemory, - allocation->getDefaultGmm()->resourceParams.Flags.Info.NonLocalOnly); + gmmResourceParams->Flags.Info.NonLocalOnly); memoryManager->freeGraphicsMemory(allocation); } @@ -958,8 +966,9 @@ TEST_F(WddmMemoryManagerSimpleTest, givenMemoryManagerWith64KBPagesDisabledWhenA auto svmAllocation = memoryManager->allocateGraphicsMemoryWithProperties({csr->getRootDeviceIndex(), size, AllocationType::svmZeroCopy, mockDeviceBitfield}); EXPECT_NE(nullptr, svmAllocation); EXPECT_EQ(MemoryPool::system4KBPages, svmAllocation->getMemoryPool()); + auto *gmmResourceParams = reinterpret_cast(svmAllocation->getDefaultGmm()->resourceParamsData.data()); EXPECT_EQ(executionEnvironment.rootDeviceEnvironments[0]->getHardwareInfo()->featureTable.flags.ftrLocalMemory, - svmAllocation->getDefaultGmm()->resourceParams.Flags.Info.NonLocalOnly); + gmmResourceParams->Flags.Info.NonLocalOnly); memoryManager->freeGraphicsMemory(svmAllocation); } @@ -1096,7 +1105,7 @@ TEST_F(WddmMemoryManagerSimpleTest, givenAllocateGraphicsMemoryForNonSvmHostPtrI if (productHelper.isMisalignedUserPtr2WayCoherent()) { expectedUsage = GMM_RESOURCE_USAGE_HW_CONTEXT; } - EXPECT_EQ(expectedUsage, allocation->getGmm(0)->resourceParams.Usage); + EXPECT_EQ(expectedUsage, allocation->getGmm(0)->getResourceUsageType()); memoryManager->freeGraphicsMemory(allocation); } @@ -1119,7 +1128,7 @@ TEST_F(WddmMemoryManagerSimpleTest, givenDebugFlagSetWhenNotAlignedPtrIsPassedAn EXPECT_EQ(1u, allocation->getAllocationOffset()); auto expectedUsage = GMM_RESOURCE_USAGE_OCL_SYSTEM_MEMORY_BUFFER; - EXPECT_EQ(expectedUsage, allocation->getGmm(0)->resourceParams.Usage); + EXPECT_EQ(expectedUsage, allocation->getGmm(0)->getResourceUsageType()); memoryManager->freeGraphicsMemory(allocation); } @@ -1136,7 +1145,7 @@ TEST_F(WddmMemoryManagerSimpleTest, givenAllocateGraphicsMemoryForNonSvmHostPtrI auto allocation = memoryManager->allocateGraphicsMemoryForNonSvmHostPtr(allocationData); EXPECT_NE(nullptr, allocation); - EXPECT_EQ(GMM_RESOURCE_USAGE_OCL_SYSTEM_MEMORY_BUFFER, allocation->getGmm(0)->resourceParams.Usage); + EXPECT_EQ(GMM_RESOURCE_USAGE_OCL_SYSTEM_MEMORY_BUFFER, allocation->getGmm(0)->getResourceUsageType()); memoryManager->freeGraphicsMemory(allocation); } @@ -2078,7 +2087,8 @@ TEST_F(WddmMemoryManagerSimpleTest, givenNotSetUseSystemMemoryWhenGraphicsAlloca EXPECT_NE(nullptr, allocation); EXPECT_EQ(MemoryManager::AllocationStatus::Success, status); EXPECT_EQ(MemoryPool::localMemory, allocation->getMemoryPool()); - EXPECT_EQ(0u, allocation->getDefaultGmm()->resourceParams.Flags.Info.NonLocalOnly); + auto *gmmResourceParams = reinterpret_cast(allocation->getDefaultGmm()->resourceParamsData.data()); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.NonLocalOnly); memoryManager->freeGraphicsMemory(allocation); } @@ -2108,14 +2118,15 @@ TEST_F(WddmMemoryManagerSimpleTest, givenShareableAllocationWhenAllocateInDevice EXPECT_NE(nullptr, allocation); EXPECT_EQ(MemoryManager::AllocationStatus::Success, status); EXPECT_EQ(MemoryPool::localMemory, allocation->getMemoryPool()); - EXPECT_EQ(0u, allocation->getDefaultGmm()->resourceParams.Flags.Info.NonLocalOnly); + auto *gmmResourceParams = reinterpret_cast(allocation->getDefaultGmm()->resourceParamsData.data()); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.NonLocalOnly); EXPECT_TRUE(isAligned(allocation->getUnderlyingBufferSize())); uint64_t handle = 0; allocation->peekInternalHandle(memoryManager.get(), handle); EXPECT_NE(handle, 0u); - EXPECT_EQ(1u, allocation->getDefaultGmm()->resourceParams.Flags.Info.LocalOnly); - EXPECT_EQ(1u, allocation->getDefaultGmm()->resourceParams.Flags.Info.NotLockable); + EXPECT_EQ(1u, gmmResourceParams->Flags.Info.LocalOnly); + EXPECT_EQ(1u, gmmResourceParams->Flags.Info.NotLockable); memoryManager->freeGraphicsMemory(allocation); } @@ -2143,13 +2154,14 @@ TEST_F(WddmMemoryManagerSimpleTest, givenShareableAllocationWhenAllocateGraphics auto allocation = memoryManager->allocateGraphicsMemoryInPreferredPool(properties, nullptr); EXPECT_NE(nullptr, allocation); EXPECT_EQ(MemoryPool::localMemory, allocation->getMemoryPool()); - EXPECT_EQ(0u, allocation->getDefaultGmm()->resourceParams.Flags.Info.NonLocalOnly); + auto *gmmResourceParams = reinterpret_cast(allocation->getDefaultGmm()->resourceParamsData.data()); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.NonLocalOnly); uint64_t handle = 0; allocation->peekInternalHandle(memoryManager.get(), handle); EXPECT_NE(handle, 0u); - EXPECT_EQ(!productHelper.useLocalPreferredForCacheableBuffers(), allocation->getDefaultGmm()->resourceParams.Flags.Info.LocalOnly); - EXPECT_EQ(1u, allocation->getDefaultGmm()->resourceParams.Flags.Info.NotLockable); + EXPECT_EQ(!productHelper.useLocalPreferredForCacheableBuffers(), gmmResourceParams->Flags.Info.LocalOnly); + EXPECT_EQ(1u, gmmResourceParams->Flags.Info.NotLockable); memoryManager->freeGraphicsMemory(allocation); } @@ -2346,7 +2358,8 @@ TEST_F(WddmMemoryManagerSimpleTest, givenEnabledLocalMemoryAndAllowed32BitWhen32 ASSERT_NE(nullptr, allocation); EXPECT_EQ(MemoryManager::AllocationStatus::Success, status); EXPECT_EQ(MemoryPool::localMemory, allocation->getMemoryPool()); - EXPECT_EQ(0u, allocation->getDefaultGmm()->resourceParams.Flags.Info.NonLocalOnly); + auto *gmmResourceParams = reinterpret_cast(allocation->getDefaultGmm()->resourceParamsData.data()); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.NonLocalOnly); memoryManager->freeGraphicsMemory(allocation); } @@ -2700,12 +2713,14 @@ HWTEST2_F(WddmMemoryManagerSimpleTest, givenPreferCompressionFlagWhenAllocating6 GTEST_SKIP(); } auto nonCompressedAllocation = memoryManager->allocateGraphicsMemoryWithProperties({mockRootDeviceIndex, 1u, AllocationType::buffer, mockDeviceBitfield}); - EXPECT_EQ(0u, nonCompressedAllocation->getDefaultGmm()->resourceParams.Flags.Info.RenderCompressed); + auto *gmmResourceParams = reinterpret_cast(nonCompressedAllocation->getDefaultGmm()->resourceParamsData.data()); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.RenderCompressed); AllocationProperties properties = {mockRootDeviceIndex, 1u, AllocationType::buffer, mockDeviceBitfield}; properties.flags.preferCompressed = true; auto compressedAllocation = memoryManager->allocateGraphicsMemoryWithProperties(properties); - EXPECT_EQ(1u, compressedAllocation->getDefaultGmm()->resourceParams.Flags.Info.RenderCompressed); + gmmResourceParams = reinterpret_cast(compressedAllocation->getDefaultGmm()->resourceParamsData.data()); + EXPECT_EQ(1u, gmmResourceParams->Flags.Info.RenderCompressed); memoryManager->freeGraphicsMemory(nonCompressedAllocation); memoryManager->freeGraphicsMemory(compressedAllocation); @@ -3237,7 +3252,7 @@ HWTEST_F(WddmMemoryManagerTest, givenInternalHeapOrLinearStreamTypeWhenAllocatin auto allocation = memoryManager->allocateGraphicsMemoryWithProperties(properties, nullptr); ASSERT_NE(nullptr, allocation); - EXPECT_TRUE(allocation->getDefaultGmm()->resourceParams.Usage == GMM_RESOURCE_USAGE_TYPE::GMM_RESOURCE_USAGE_OCL_STATE_HEAP_BUFFER); + EXPECT_TRUE(allocation->getDefaultGmm()->getResourceUsageType() == GMM_RESOURCE_USAGE_TYPE::GMM_RESOURCE_USAGE_OCL_STATE_HEAP_BUFFER); memoryManager->freeGraphicsMemory(allocation); } @@ -3248,7 +3263,7 @@ HWTEST_F(WddmMemoryManagerTest, givenInternalHeapOrLinearStreamTypeWhenAllocatin auto allocation = memoryManager->allocateGraphicsMemoryWithProperties(properties, nullptr); ASSERT_NE(nullptr, allocation); - EXPECT_TRUE(allocation->getDefaultGmm()->resourceParams.Usage == GMM_RESOURCE_USAGE_TYPE::GMM_RESOURCE_USAGE_OCL_STATE_HEAP_BUFFER); + EXPECT_TRUE(allocation->getDefaultGmm()->getResourceUsageType() == GMM_RESOURCE_USAGE_TYPE::GMM_RESOURCE_USAGE_OCL_STATE_HEAP_BUFFER); memoryManager->freeGraphicsMemory(allocation); } @@ -3380,8 +3395,9 @@ TEST_F(WddmMemoryManagerTest, GivenAlignedPointerWhenAllocate32BitMemoryThenGmmC uint32_t size = 4096; void *ptr = reinterpret_cast(4096); auto *gpuAllocation = memoryManager->allocate32BitGraphicsMemory(rootDeviceIndex, size, ptr, AllocationType::buffer); - EXPECT_EQ(ptr, reinterpret_cast(gpuAllocation->getDefaultGmm()->resourceParams.pExistingSysMem)); - EXPECT_EQ(size, gpuAllocation->getDefaultGmm()->resourceParams.ExistingSysMemSize); + auto *gmmResourceParams = reinterpret_cast(gpuAllocation->getDefaultGmm()->resourceParamsData.data()); + EXPECT_EQ(ptr, reinterpret_cast(gmmResourceParams->pExistingSysMem)); + EXPECT_EQ(size, gmmResourceParams->ExistingSysMemSize); memoryManager->freeGraphicsMemory(gpuAllocation); } @@ -3390,8 +3406,9 @@ TEST_F(WddmMemoryManagerTest, GivenUnAlignedPointerAndSizeWhenAllocate32BitMemor uint32_t size = 0x1001; void *ptr = reinterpret_cast(0x1001); auto *gpuAllocation = memoryManager->allocate32BitGraphicsMemory(rootDeviceIndex, size, ptr, AllocationType::buffer); - EXPECT_EQ(reinterpret_cast(0x1000), reinterpret_cast(gpuAllocation->getDefaultGmm()->resourceParams.pExistingSysMem)); - EXPECT_EQ(0x2000u, gpuAllocation->getDefaultGmm()->resourceParams.ExistingSysMemSize); + auto *gmmResourceParams = reinterpret_cast(gpuAllocation->getDefaultGmm()->resourceParamsData.data()); + EXPECT_EQ(reinterpret_cast(0x1000), reinterpret_cast(gmmResourceParams->pExistingSysMem)); + EXPECT_EQ(0x2000u, gmmResourceParams->ExistingSysMemSize); memoryManager->freeGraphicsMemory(gpuAllocation); } @@ -3786,7 +3803,8 @@ TEST_F(WddmMemoryManagerSimpleTestWithLocalMemory, givenLocalMemoryAndImageOrSha EXPECT_NE(nullptr, allocation); EXPECT_EQ(MemoryManager::AllocationStatus::Success, status); EXPECT_EQ(MemoryPool::localMemory, allocation->getMemoryPool()); - EXPECT_EQ(0u, allocation->getDefaultGmm()->resourceParams.Flags.Info.NonLocalOnly); + auto *gmmResourceParams = reinterpret_cast(allocation->getDefaultGmm()->resourceParamsData.data()); + EXPECT_EQ(0u, gmmResourceParams->Flags.Info.NonLocalOnly); EXPECT_TRUE(allocData.imgInfo->useLocalMemory); memoryManager->freeGraphicsMemory(allocation); } @@ -3905,7 +3923,8 @@ HWTEST_F(MockWddmMemoryManagerTest, givenEnabled64kbPagesWhenAllocationIsCreated EXPECT_NE(0llu, graphicsAllocation->getGpuAddress()); EXPECT_NE(nullptr, graphicsAllocation->getUnderlyingBuffer()); auto &productHelper = executionEnvironment.rootDeviceEnvironments[rootDeviceIndex]->getProductHelper(); - EXPECT_EQ(productHelper.isCachingOnCpuAvailable(), graphicsAllocation->getDefaultGmm()->resourceParams.Flags.Info.Cacheable); + auto *gmmResourceParams = reinterpret_cast(graphicsAllocation->getDefaultGmm()->resourceParamsData.data()); + EXPECT_EQ(productHelper.isCachingOnCpuAvailable(), gmmResourceParams->Flags.Info.Cacheable); memoryManager.freeGraphicsMemory(graphicsAllocation); } diff --git a/shared/test/unit_test/program/program_initialization_tests.cpp b/shared/test/unit_test/program/program_initialization_tests.cpp index ead75ae8e1..884e6865e6 100644 --- a/shared/test/unit_test/program/program_initialization_tests.cpp +++ b/shared/test/unit_test/program/program_initialization_tests.cpp @@ -7,6 +7,7 @@ #include "shared/source/compiler_interface/external_functions.h" #include "shared/source/gmm_helper/gmm.h" +#include "shared/source/gmm_helper/gmm_lib.h" #include "shared/source/helpers/aligned_memory.h" #include "shared/source/helpers/blit_helper.h" #include "shared/source/helpers/local_memory_access_modes.h" @@ -126,7 +127,8 @@ TEST_F(AllocateGlobalSurfacePoolingDisabledTest, GivenSvmAllocsManagerWhenGlobal EXPECT_EQ(InternalMemoryType::deviceUnifiedMemory, svmData->memoryType); EXPECT_TRUE(svmData->isInternalAllocation); EXPECT_EQ(AllocationType::constantSurface, alloc->getAllocationType()); - EXPECT_FALSE(alloc->getDefaultGmm()->resourceParams.Flags.Info.NotLockable); + auto *gmmResourceParams = reinterpret_cast(alloc->getDefaultGmm()->resourceParamsData.data()); + EXPECT_FALSE(gmmResourceParams->Flags.Info.NotLockable); EXPECT_TRUE(svmAllocsManager.requestedZeroedOutAllocation); svmAllocsManager.freeSVMAlloc(reinterpret_cast(static_cast(alloc->getGpuAddress()))); @@ -160,7 +162,8 @@ TEST_F(AllocateGlobalSurfacePoolingDisabledTest, GivenSvmAllocsManagerWhenGlobal EXPECT_TRUE(alloc->isMemObjectsAllocationWithWritableFlags()); EXPECT_EQ(InternalMemoryType::deviceUnifiedMemory, svmAllocsManager.getSVMAlloc(reinterpret_cast(alloc->getGpuAddress()))->memoryType); EXPECT_EQ(AllocationType::globalSurface, alloc->getAllocationType()); - EXPECT_FALSE(alloc->getDefaultGmm()->resourceParams.Flags.Info.NotLockable); + gmmResourceParams = reinterpret_cast(alloc->getDefaultGmm()->resourceParamsData.data()); + EXPECT_FALSE(gmmResourceParams->Flags.Info.NotLockable); svmAllocsManager.freeSVMAlloc(reinterpret_cast(static_cast(alloc->getGpuAddress()))); }