summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2024-01-16 15:16:22 +1000
committerDave Airlie <airlied@redhat.com>2024-04-11 12:57:13 +1000
commit800c03ffbd4241ca25959af441025cda2666e998 (patch)
treea61c7511d2aece90f0dfee7684aa7851c12b2aa6
parent1d74661dfd6f6f99c76d00f7f8608995978f88e2 (diff)
radv/video: add parameter patching calls.
This is just infrastucture for encoding to plug into to patch session parameters at create time. Acked-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25900>
-rw-r--r--src/amd/vulkan/radv_video.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/amd/vulkan/radv_video.c b/src/amd/vulkan/radv_video.c
index 05be0ac77db..1f4162b0e69 100644
--- a/src/amd/vulkan/radv_video.c
+++ b/src/amd/vulkan/radv_video.c
@@ -329,6 +329,17 @@ calc_ctx_size_av1(struct radv_device *device, struct radv_video_session *vid)
return ctx_size;
}
+static void
+radv_video_patch_session_parameters(struct vk_video_session_parameters *params)
+{
+ switch (params->op) {
+ case VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR:
+ case VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR:
+ default:
+ return;
+ }
+}
+
VKAPI_ATTR VkResult VKAPI_CALL
radv_CreateVideoSessionKHR(VkDevice _device, const VkVideoSessionCreateInfoKHR *pCreateInfo,
const VkAllocationCallbacks *pAllocator, VkVideoSessionKHR *pVideoSession)
@@ -417,6 +428,8 @@ radv_CreateVideoSessionParametersKHR(VkDevice _device, const VkVideoSessionParam
return result;
}
+ radv_video_patch_session_parameters(&params->vk);
+
*pVideoSessionParameters = radv_video_session_params_to_handle(params);
return VK_SUCCESS;
}
@@ -710,7 +723,11 @@ radv_UpdateVideoSessionParametersKHR(VkDevice _device, VkVideoSessionParametersK
{
VK_FROM_HANDLE(radv_video_session_params, params, videoSessionParameters);
- return vk_video_session_parameters_update(&params->vk, pUpdateInfo);
+ VkResult result = vk_video_session_parameters_update(&params->vk, pUpdateInfo);
+ if (result != VK_SUCCESS)
+ return result;
+ radv_video_patch_session_parameters(&params->vk);
+ return result;
}
static void