From ff1e101adb509ebdf22feb9ab322eee937883b88 Mon Sep 17 00:00:00 2001 From: "Bernhard C. Schrenk" Date: Thu, 12 Sep 2024 23:10:31 +0200 Subject: [PATCH 1/2] video: Fix missing flag in VkVideoEncodeCapabilityFlagsKHR Tests dEQP-VK.video.capabilities.*_encode_capabilities_query failed if the implementation supports VK_VIDEO_ENCODE_CAPABILITY_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION_BIT_KHR. This adds this as a valid flag. Affects: dEQP-VK.video.capabilities.h264_encode_capabilities_query dEQP-VK.video.capabilities.h265_encode_capabilities_query --- .../modules/vulkan/video/vktVideoCapabilitiesTests.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/external/vulkancts/modules/vulkan/video/vktVideoCapabilitiesTests.cpp b/external/vulkancts/modules/vulkan/video/vktVideoCapabilitiesTests.cpp index d10bbbb891..b41d219352 100644 --- a/external/vulkancts/modules/vulkan/video/vktVideoCapabilitiesTests.cpp +++ b/external/vulkancts/modules/vulkan/video/vktVideoCapabilitiesTests.cpp @@ -540,7 +540,8 @@ void VideoCapabilitiesQueryTestInstance::validateVideoEncodeCapabilities( VALIDATE_FIELD_EQUAL(videoEncodeCapabilitiesKHR, videoEncodeCapabilitiesKHRSecond, supportedEncodeFeedbackFlags); const VkVideoEncodeCapabilityFlagsKHR videoEncodeCapabilityFlags = - VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR; + VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR | + VK_VIDEO_ENCODE_CAPABILITY_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION_BIT_KHR; if ((videoEncodeCapabilitiesKHR.flags & ~videoEncodeCapabilityFlags) != 0) TCU_FAIL("Undeclared VkVideoEncodeCapabilitiesKHR.flags returned"); From 03b76c582c935de893566fa4790bf8813f707020 Mon Sep 17 00:00:00 2001 From: "Bernhard C. Schrenk" Date: Thu, 12 Sep 2024 23:36:28 +0200 Subject: [PATCH 2/2] video: correctly set dstBufferRange in VkVideoEncodeInfoKHR According spec: "dstBufferRange is the maximum bitstream size in bytes that can be written to dstBuffer, starting from dstBufferOffset." This member was set to 0 and so no bitstream could be written. Affects: dEQP-VK.video.encode.* --- .../vulkancts/modules/vulkan/video/vktVideoEncodeTests.cpp | 7 ++++--- .../vulkancts/modules/vulkan/video/vktVideoTestUtils.cpp | 3 ++- .../vulkancts/modules/vulkan/video/vktVideoTestUtils.hpp | 1 + 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/external/vulkancts/modules/vulkan/video/vktVideoEncodeTests.cpp b/external/vulkancts/modules/vulkan/video/vktVideoEncodeTests.cpp index 909eb9e697..9ddf9b68ab 100644 --- a/external/vulkancts/modules/vulkan/video/vktVideoEncodeTests.cpp +++ b/external/vulkancts/modules/vulkan/video/vktVideoEncodeTests.cpp @@ -2258,9 +2258,10 @@ tcu::TestStatus VideoEncodeTestInstance::iterate(void) pNext = videoEncodePictureInfoPtr; } - videoEncodeFrameInfos.push_back(getVideoEncodeInfo( - pNext, *encodeBuffer, dstBufferOffset, (*imagePictureResourceVector[srcPictureResourceIdx]), - setupReferenceSlotPtr, refsCount, (refsPool == 0) ? nullptr : referenceSlots)); + videoEncodeFrameInfos.push_back( + getVideoEncodeInfo(pNext, *encodeBuffer, dstBufferOffset, encodeBufferSize - dstBufferOffset, + (*imagePictureResourceVector[srcPictureResourceIdx]), setupReferenceSlotPtr, + refsCount, (refsPool == 0) ? nullptr : referenceSlots)); if (!useInlineQueries) videoDeviceDriver.cmdBeginQuery(encodeCmdBuffer, encodeQueryPool.get(), 1, 0); diff --git a/external/vulkancts/modules/vulkan/video/vktVideoTestUtils.cpp b/external/vulkancts/modules/vulkan/video/vktVideoTestUtils.cpp index 4271950b18..a5a7029de3 100644 --- a/external/vulkancts/modules/vulkan/video/vktVideoTestUtils.cpp +++ b/external/vulkancts/modules/vulkan/video/vktVideoTestUtils.cpp @@ -1967,6 +1967,7 @@ de::MovePtr getStdVideoH264DecodePictureParamet de::MovePtr getVideoEncodeInfo(const void *pNext, const VkBuffer &dstBuffer, const VkDeviceSize &dstBufferOffset, + const VkDeviceSize &dstBufferRange, const VkVideoPictureResourceInfoKHR &srcPictureResource, const VkVideoReferenceSlotInfoKHR *pSetupReferenceSlot, const uint32_t &referenceSlotCount, @@ -1978,7 +1979,7 @@ de::MovePtr getVideoEncodeInfo(const void *pNext, const Vk static_cast(0), // VkVideoEncodeFlagsKHR flags; dstBuffer, // VkBuffer dstBuffer; dstBufferOffset, // VkDeviceSize dstBufferOffset; - 0u, // VkDeviceSize dstBufferRange; + dstBufferRange, // VkDeviceSize dstBufferRange; srcPictureResource, // VkVideoPictureResourceInfoKHR srcPictureResource; pSetupReferenceSlot, // const VkVideoReferenceSlotInfoKHR* pSetupReferenceSlot; referenceSlotCount, // uint32_t referenceSlotCount; diff --git a/external/vulkancts/modules/vulkan/video/vktVideoTestUtils.hpp b/external/vulkancts/modules/vulkan/video/vktVideoTestUtils.hpp index 9461394cb6..dc2d1c920a 100644 --- a/external/vulkancts/modules/vulkan/video/vktVideoTestUtils.hpp +++ b/external/vulkancts/modules/vulkan/video/vktVideoTestUtils.hpp @@ -337,6 +337,7 @@ de::MovePtr getVideoCodingControlInfo(VkVideoCoding de::MovePtr getVideoEncodeInfo(const void *pNext, const VkBuffer &dstBuffer, const VkDeviceSize &dstBufferOffset, + const VkDeviceSize &dstBufferRange, const VkVideoPictureResourceInfoKHR &srcPictureResource, const VkVideoReferenceSlotInfoKHR *pSetupReferenceSlot, const uint32_t &referenceSlotCount,