radv: Output requested encode query results only

Video encode feedback queries have a configurable set of feedback bits,
specified in VkQueryPoolVideoEncodeFeedbackCreateInfoKHR::encodeFeedbackFlags.
Only the bits specified should be output when retrieving results.

Fixes: 1d74661dfd ("radv: add encoder queue support pieces and encoder queries.")
Reviewed-by: David Rosca <david.rosca@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37774>
This commit is contained in:
Benjamin Cheng 2025-10-08 13:25:23 -04:00 committed by Marge Bot
parent c17dfcd745
commit c8093e6cb1

View file

@ -2408,23 +2408,29 @@ radv_GetQueryPoolResults(VkDevice _device, VkQueryPool queryPool, uint32_t first
if (flags & VK_QUERY_RESULT_64_BIT) {
uint64_t *dest64 = (uint64_t *)dest;
if (available || (flags & VK_QUERY_RESULT_PARTIAL_BIT)) {
dest64[0] = src32[5];
dest64[1] = src32[6] - src32[8];
if (pool->vk.encode_feedback_flags & VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR)
*dest64++ = src32[5];
if (pool->vk.encode_feedback_flags & VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR)
*dest64++ = src32[6] - src32[8];
}
dest += 16;
dest += util_bitcount(pool->vk.encode_feedback_flags) * sizeof(uint64_t);
if (flags & VK_QUERY_RESULT_WITH_STATUS_BIT_KHR) {
dest64[2] = 1;
dest += 8;
*dest64++ = 1;
dest += 4;
}
} else {
uint32_t *dest32 = (uint32_t *)dest;
if (available || (flags & VK_QUERY_RESULT_PARTIAL_BIT)) {
dest32[0] = src32[5];
dest32[1] = src32[6] - src32[8];
if (pool->vk.encode_feedback_flags & VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR)
*dest32++ = src32[5];
if (pool->vk.encode_feedback_flags & VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR)
*dest32++ = src32[6] - src32[8];
}
dest += 8;
dest += util_bitcount(pool->vk.encode_feedback_flags) * sizeof(uint32_t);
if (flags & VK_QUERY_RESULT_WITH_STATUS_BIT_KHR) {
dest32[2] = 1;
*dest32++ = 1;
dest += 4;
}
}