Fix for number of used planes in libVA extended formats

Change-Id: I640b5f4d40e41363c793e2995cbf4a8594d655e9
This commit is contained in:
Kamil Diedrich
2020-08-27 09:43:41 +02:00
parent a199ae4d8b
commit 7c32681481
2 changed files with 23 additions and 1 deletions

View File

@ -165,7 +165,7 @@ bool VASurface::validate(cl_mem_flags flags, cl_uint plane) {
default:
return false;
}
if (plane > 1) {
if (plane > 1 && !DebugManager.flags.EnableExtendedVaFormats.get()) {
return false;
}
return true;

View File

@ -288,6 +288,28 @@ TEST_F(VaSharingTests, givenInvalidPlaneInputWhenVaSurfaceIsCreatedThenInvalidVa
EXPECT_EQ(CL_INVALID_VALUE, errCode);
}
TEST_F(VaSharingTests, givenValidPlaneInputWhenVaSurfaceIsCreatedAndDebugFlagEnabledThenCLSuccessIsReturned) {
DebugManagerStateRestore restore;
DebugManager.flags.EnableExtendedVaFormats.set(true);
vaSharing->sharingFunctions.mockVaSurfaceDesc.fourcc = VA_FOURCC_RGBP;
vaSharing->sharingFunctions.mockVaSurfaceDesc.objects[1] = {8, 98304, I915_FORMAT_MOD_Y_TILED};
vaSharing->sharingFunctions.mockVaSurfaceDesc.objects[2] = {8, 98304, I915_FORMAT_MOD_Y_TILED};
vaSharing->sharingFunctions.mockVaSurfaceDesc.num_layers = 3;
vaSharing->sharingFunctions.mockVaSurfaceDesc.layers[1] = {DRM_FORMAT_R8, 1, {}, {0, 0, 0, 0}, {256, 0, 0, 0}};
vaSharing->sharingFunctions.mockVaSurfaceDesc.layers[2] = {DRM_FORMAT_R8, 1, {}, {0, 0, 0, 0}, {256, 0, 0, 0}};
vaSharing->sharingFunctions.derivedImageFormatBpp = 8;
vaSharing->sharingFunctions.derivedImageFormatFourCC = VA_FOURCC_RGBP;
sharedClMem = clCreateFromVA_APIMediaSurfaceINTEL(&context, CL_MEM_READ_WRITE, &vaSurfaceId, 2, &errCode);
EXPECT_NE(nullptr, sharedClMem);
EXPECT_EQ(CL_SUCCESS, errCode);
errCode = clReleaseMemObject(sharedClMem);
EXPECT_EQ(CL_SUCCESS, errCode);
}
TEST_F(VaSharingTests, givenMockVaWhenVaSurfaceIsCreatedWithNotAlignedWidthAndHeightThenSurfaceOffsetsUseAlignedValues) {
vaSharing->sharingFunctions.derivedImageWidth = 256 + 16;
vaSharing->sharingFunctions.derivedImageHeight = 512 + 16;