radv/video: Only use write_memory for encode feedback with full support
write_memory is used after encoding every frame to mark the feedback buffer as ready. Only use it when write_memory can work without PCIe atomics support. Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38184>
This commit is contained in:
@@ -2379,8 +2379,9 @@ radv_GetQueryPoolResults(VkDevice _device, VkQueryPool queryPool, uint32_t first
|
||||
break;
|
||||
}
|
||||
case VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR: {
|
||||
const bool write_memory = radv_video_write_memory_supported(pdev) == RADV_VIDEO_WRITE_MEMORY_SUPPORT_FULL;
|
||||
uint32_t *src32 = (uint32_t *)src;
|
||||
uint32_t ready_idx = radv_video_write_memory_supported(pdev) ? RADV_ENC_FEEDBACK_STATUS_IDX : 1;
|
||||
uint32_t ready_idx = write_memory ? RADV_ENC_FEEDBACK_STATUS_IDX : 1;
|
||||
uint32_t value;
|
||||
do {
|
||||
value = p_atomic_read(&src32[ready_idx]);
|
||||
|
||||
@@ -2858,7 +2858,8 @@ radv_vcn_encode_video(struct radv_cmd_buffer *cmd_buffer, const VkVideoEncodeInf
|
||||
|
||||
if (pdev->enc_hw_ver >= RADV_VIDEO_ENC_HW_2) {
|
||||
radv_vcn_sq_tail(cs, &cmd_buffer->video.sq);
|
||||
radv_vcn_write_memory(cmd_buffer, feedback_query_va + RADV_ENC_FEEDBACK_STATUS_IDX * sizeof(uint32_t), 1);
|
||||
if (radv_video_write_memory_supported(pdev) == RADV_VIDEO_WRITE_MEMORY_SUPPORT_FULL)
|
||||
radv_vcn_write_memory(cmd_buffer, feedback_query_va + RADV_ENC_FEEDBACK_STATUS_IDX * sizeof(uint32_t), 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user