summaryrefslogtreecommitdiff
path: root/src/render/renderer_libplacebo.h
blob: 532963f43a288e9e7adfb32858344bbb942259bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#pragma once

#include "renderer.h"

#include <libplacebo/renderer.h>
#if defined STELA_API_VULKAN
#include <libplacebo/vulkan.h>
#elif defined STELA_API_DX11
#include <nnwt/windows.h>
#define COBJMACROS
#include <libplacebo/d3d11.h>
#elif defined STELA_API_OPENGL
#include <libplacebo/opengl.h>
#endif
#ifdef CAMU_HAVE_SUBTITLES
#include <ass/ass.h>
#endif

struct camu_renderer_lp {
    struct camu_renderer r;
#if defined STELA_API_VULKAN
    VkSurfaceKHR surface;
    pl_vulkan vk;
    pl_vk_inst vk_inst;
    VkResult (*vk_destroy_surface)(VkInstance, VkSurfaceKHR);
#elif defined STELA_API_DX11
    pl_d3d11 d3d11;
#elif defined STELA_API_OPENGL
    pl_opengl gl;
#endif
    pl_gpu gpu;
    pl_log logger;
    pl_swapchain swapchain;
    struct pl_frame target;
    bool have_frame;
    bool frame_cleared;
    pl_renderer renderer;
    f64 last_swap_tick;
    struct pl_render_params params;
    const struct pl_hook *vr_emulation_hook[1];
#ifdef CAMU_HAVE_SUBTITLES
    ASS_Library *ass;
#endif
};

struct camu_renderer *camu_renderer_libplacebo_create(void);