77
88#include " runtime/api/api.h"
99#include " runtime/device/device.h"
10+ #include " runtime/gmm_helper/gmm.h"
11+ #include " runtime/memory_manager/graphics_allocation.h"
1012#include " runtime/platform/platform.h"
1113#include " runtime/sharings/va/va_sharing.h"
1214#include " runtime/sharings/va/va_surface.h"
1315#include " unit_tests/fixtures/platform_fixture.h"
16+ #include " unit_tests/helpers/debug_manager_state_restore.h"
1417#include " unit_tests/libult/create_command_stream.h"
1518#include " unit_tests/libult/ult_command_stream_receiver.h"
1619#include " unit_tests/mocks/mock_context.h"
@@ -453,6 +456,54 @@ TEST_F(VaSharingTests, givenInValidPlatformWhenGetDeviceIdsFromVaApiMediaAdapter
453456 EXPECT_EQ (0u , devices);
454457}
455458
459+ TEST_F (VaSharingTests, givenEnabledExtendedVaFormatsAndP010FormatWhenCreatingSharedVaSurfaceForPlane0ThenCorrectFormatIsUsedByImageAndGMM) {
460+ DebugManagerStateRestore restore;
461+ DebugManager.flags .EnableExtendedVaFormats .set (true );
462+
463+ vaSharing->sharingFunctions .derivedImageFormatBpp = 16 ;
464+ vaSharing->sharingFunctions .derivedImageFormatFourCC = VA_FOURCC_P010;
465+
466+ auto vaSurface = std::unique_ptr<Image>(VASurface::createSharedVaSurface (&context, &vaSharing->sharingFunctions ,
467+ CL_MEM_READ_WRITE, &vaSurfaceId, 0 , &errCode));
468+ EXPECT_EQ (static_cast <cl_channel_type>(CL_UNORM_INT16), vaSurface->getImageFormat ().image_channel_data_type );
469+ EXPECT_EQ (static_cast <cl_channel_order>(CL_R), vaSurface->getImageFormat ().image_channel_order );
470+ EXPECT_EQ (GMM_RESOURCE_FORMAT::GMM_FORMAT_R16_UNORM, vaSurface->getSurfaceFormatInfo ().GMMSurfaceFormat );
471+ EXPECT_EQ (GMM_RESOURCE_FORMAT::GMM_FORMAT_P010, vaSurface->getGraphicsAllocation ()->getDefaultGmm ()->resourceParams .Format );
472+ EXPECT_EQ (CL_SUCCESS, errCode);
473+ }
474+
475+ TEST_F (VaSharingTests, givenEnabledExtendedVaFormatsAndP010FormatWhenCreatingSharedVaSurfaceForPlane1ThenCorrectFormatIsUsedByImageAndGMM) {
476+ DebugManagerStateRestore restore;
477+ DebugManager.flags .EnableExtendedVaFormats .set (true );
478+
479+ vaSharing->sharingFunctions .derivedImageFormatBpp = 16 ;
480+ vaSharing->sharingFunctions .derivedImageFormatFourCC = VA_FOURCC_P010;
481+
482+ auto vaSurface = std::unique_ptr<Image>(VASurface::createSharedVaSurface (&context, &vaSharing->sharingFunctions ,
483+ CL_MEM_READ_WRITE, &vaSurfaceId, 1 , &errCode));
484+ EXPECT_EQ (static_cast <cl_channel_type>(CL_UNORM_INT16), vaSurface->getImageFormat ().image_channel_data_type );
485+ EXPECT_EQ (static_cast <cl_channel_order>(CL_RG), vaSurface->getImageFormat ().image_channel_order );
486+ EXPECT_EQ (GMM_RESOURCE_FORMAT::GMM_FORMAT_R16G16_UNORM, vaSurface->getSurfaceFormatInfo ().GMMSurfaceFormat );
487+ EXPECT_EQ (GMM_RESOURCE_FORMAT::GMM_FORMAT_P010, vaSurface->getGraphicsAllocation ()->getDefaultGmm ()->resourceParams .Format );
488+ EXPECT_EQ (CL_SUCCESS, errCode);
489+ }
490+
491+ TEST_F (VaSharingTests, givenEnabledExtendedVaFormatsAndNV12FormatWhenCreatingSharedVaSurfaceForPlane0ThenCorrectFormatIsUsedByImageAndGMM) {
492+ DebugManagerStateRestore restore;
493+ DebugManager.flags .EnableExtendedVaFormats .set (true );
494+
495+ vaSharing->sharingFunctions .derivedImageFormatBpp = 12 ;
496+ vaSharing->sharingFunctions .derivedImageFormatFourCC = VA_FOURCC_NV12;
497+
498+ auto vaSurface = std::unique_ptr<Image>(VASurface::createSharedVaSurface (&context, &vaSharing->sharingFunctions ,
499+ CL_MEM_READ_WRITE, &vaSurfaceId, 0 , &errCode));
500+ EXPECT_EQ (static_cast <cl_channel_type>(CL_UNORM_INT8), vaSurface->getImageFormat ().image_channel_data_type );
501+ EXPECT_EQ (static_cast <cl_channel_order>(CL_R), vaSurface->getImageFormat ().image_channel_order );
502+ EXPECT_EQ (GMM_RESOURCE_FORMAT::GMM_FORMAT_R8_UNORM, vaSurface->getSurfaceFormatInfo ().GMMSurfaceFormat );
503+ EXPECT_EQ (GMM_RESOURCE_FORMAT::GMM_FORMAT_NV12, vaSurface->getGraphicsAllocation ()->getDefaultGmm ()->resourceParams .Format );
504+ EXPECT_EQ (CL_SUCCESS, errCode);
505+ }
506+
456507TEST (VaSurface, givenValidPlaneAndFlagsWhenValidatingInputsThenTrueIsReturned) {
457508 for (cl_uint plane = 0 ; plane <= 1 ; plane++) {
458509 EXPECT_TRUE (VASurface::validate (CL_MEM_READ_ONLY, plane));
@@ -466,3 +517,8 @@ TEST(VaSurface, givenInValidPlaneOrFlagsWhenValidatingInputsThenTrueIsReturned)
466517 EXPECT_FALSE (VASurface::validate (CL_MEM_READ_ONLY, plane));
467518 EXPECT_FALSE (VASurface::validate (CL_MEM_USE_HOST_PTR, 0 ));
468519}
520+
521+ TEST (VaSurface, givenEnabledExtendedVaFormatsWhenGettingUnsupportedSurfaceFormatInfoThenNullptrIsReturned) {
522+ auto formatInfo = VASurface::getExtendedSurfaceFormatInfo (VA_FOURCC_P016);
523+ EXPECT_EQ (nullptr , formatInfo);
524+ }
0 commit comments