mirror of
https://github.com/mpv-player/mpv
synced 2025-01-10 00:49:32 +00:00
7006d6752d
This commit rips out the entire mpv vulkan implementation in favor of exposing lightweight wrappers on top of libplacebo instead, which provides much of the same except in a more up-to-date and polished form. This (finally) unifies the code base between mpv and libplacebo, which is something I've been hoping to do for a long time. Note: The ra_pl wrappers are abstract enough from the actual libplacebo device type that we can in theory re-use them for other devices like d3d11 or even opengl in the future, so I moved them to a separate directory for the time being. However, the rest of the code is still vulkan-specific, so I've kept the "vulkan" naming and file paths, rather than introducing a new `--gpu-api` type. (Which would have been ended up with significantly more code duplicaiton) Plus, the code and functionality is similar enough that for most users this should just be a straight-up drop-in replacement. Note: This commit excludes some changes; specifically, the updates to context_win and hwdec_cuda are deferred to separate commits for authorship reasons.
37 lines
841 B
C
37 lines
841 B
C
#pragma once
|
|
|
|
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
#include <stdint.h>
|
|
#include <stdbool.h>
|
|
#include <assert.h>
|
|
|
|
#include "config.h"
|
|
|
|
#include "common/common.h"
|
|
#include "common/msg.h"
|
|
|
|
// We need to define all platforms we want to support. Since we have
|
|
// our own mechanism for checking this, we re-define the right symbols
|
|
#if HAVE_WAYLAND
|
|
#define VK_USE_PLATFORM_WAYLAND_KHR
|
|
#endif
|
|
#if HAVE_X11
|
|
#define VK_USE_PLATFORM_XLIB_KHR
|
|
#endif
|
|
#if HAVE_WIN32_DESKTOP
|
|
#define VK_USE_PLATFORM_WIN32_KHR
|
|
#endif
|
|
|
|
#include <libplacebo/vulkan.h>
|
|
|
|
// Shared struct used to hold vulkan context information
|
|
struct mpvk_ctx {
|
|
struct mp_log *pl_log;
|
|
struct pl_context *ctx;
|
|
const struct pl_vk_inst *vkinst;
|
|
const struct pl_vulkan *vulkan;
|
|
const struct pl_gpu *gpu; // points to vulkan->gpu for convenience
|
|
VkSurfaceKHR surface;
|
|
};
|