mirror of
https://github.com/moonlight-stream/moonlight-qt.git
synced 2026-06-18 14:40:56 +00:00
Use av_vk_get_optional_device_extensions() on FFmpeg 8.1
This commit is contained in:
@@ -9,7 +9,9 @@
|
|||||||
|
|
||||||
#include <SDL_vulkan.h>
|
#include <SDL_vulkan.h>
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
#include <libavutil/hwcontext_vulkan.h>
|
#include <libavutil/hwcontext_vulkan.h>
|
||||||
|
}
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <set>
|
#include <set>
|
||||||
@@ -19,7 +21,7 @@
|
|||||||
#define VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR ((VkVideoCodecOperationFlagBitsKHR)0x00000004)
|
#define VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR ((VkVideoCodecOperationFlagBitsKHR)0x00000004)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Keep these in sync with hwcontext_vulkan.c
|
#if LIBAVUTIL_VERSION_INT < AV_VERSION_INT(60, 26, 100)
|
||||||
static const char *k_OptionalDeviceExtensions[] = {
|
static const char *k_OptionalDeviceExtensions[] = {
|
||||||
/* Misc or required by other extensions */
|
/* Misc or required by other extensions */
|
||||||
//VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME,
|
//VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME,
|
||||||
@@ -52,6 +54,7 @@ static const char *k_OptionalDeviceExtensions[] = {
|
|||||||
"VK_MESA_video_decode_av1", // FFmpeg 6.1 uses the Mesa AV1 extension
|
"VK_MESA_video_decode_av1", // FFmpeg 6.1 uses the Mesa AV1 extension
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
static void pl_log_cb(void*, enum pl_log_level level, const char *msg)
|
static void pl_log_cb(void*, enum pl_log_level level, const char *msg)
|
||||||
{
|
{
|
||||||
@@ -318,10 +321,17 @@ bool PlVkRenderer::tryInitializeDevice(VkPhysicalDevice device, VkPhysicalDevice
|
|||||||
vkParams.get_proc_addr = m_PlVkInstance->get_proc_addr;
|
vkParams.get_proc_addr = m_PlVkInstance->get_proc_addr;
|
||||||
vkParams.surface = m_VkSurface;
|
vkParams.surface = m_VkSurface;
|
||||||
vkParams.device = device;
|
vkParams.device = device;
|
||||||
|
#if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(60, 26, 100)
|
||||||
|
vkParams.opt_extensions = av_vk_get_optional_device_extensions(&vkParams.num_opt_extensions);
|
||||||
|
#else
|
||||||
vkParams.opt_extensions = k_OptionalDeviceExtensions;
|
vkParams.opt_extensions = k_OptionalDeviceExtensions;
|
||||||
vkParams.num_opt_extensions = SDL_arraysize(k_OptionalDeviceExtensions);
|
vkParams.num_opt_extensions = SDL_arraysize(k_OptionalDeviceExtensions);
|
||||||
|
#endif
|
||||||
vkParams.extra_queues = m_HwAccelBackend ? VK_QUEUE_FLAG_BITS_MAX_ENUM : 0;
|
vkParams.extra_queues = m_HwAccelBackend ? VK_QUEUE_FLAG_BITS_MAX_ENUM : 0;
|
||||||
m_Vulkan = pl_vulkan_create(m_Log, &vkParams);
|
m_Vulkan = pl_vulkan_create(m_Log, &vkParams);
|
||||||
|
#if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(60, 26, 100)
|
||||||
|
av_free((void*)vkParams.opt_extensions);
|
||||||
|
#endif
|
||||||
if (m_Vulkan == nullptr) {
|
if (m_Vulkan == nullptr) {
|
||||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,
|
||||||
"pl_vulkan_create() failed for '%s'",
|
"pl_vulkan_create() failed for '%s'",
|
||||||
|
|||||||
Reference in New Issue
Block a user