Convert images on the GPU on Linux for NVidia cards

This commit is contained in:
loki-47-6F-64
2021-09-14 11:58:21 +02:00
parent 1a7ed53559
commit 9982ae4675
13 changed files with 372 additions and 28 deletions

View File

@@ -6,6 +6,9 @@
#include "sunshine/platform/common.h"
#include "sunshine/utility.h"
// X11 Display
extern "C" struct _XDisplay;
namespace egl {
class cursor_t;
}
@@ -15,8 +18,10 @@ namespace platf::x11 {
#ifdef SUNSHINE_BUILD_X11
struct cursor_ctx_raw_t;
void freeCursorCtx(cursor_ctx_raw_t *ctx);
void freeDisplay(_XDisplay *xdisplay);
using cursor_ctx_t = util::safe_ptr<cursor_ctx_raw_t, freeCursorCtx>;
using xdisplay_t = util::safe_ptr<_XDisplay, freeDisplay>;
class cursor_t {
public:
@@ -34,7 +39,12 @@ public:
cursor_ctx_t ctx;
};
xdisplay_t make_display();
#else
// It's never something different from nullptr
util::safe_ptr<_XDisplay, std::default_delete<_XDisplay>>;
class cursor_t {
public:
static std::optional<cursor_t> make() { return std::nullopt; }
@@ -42,6 +52,8 @@ public:
void capture(egl::cursor_t &) {}
void blend(img_t &, int, int) {}
};
xdisplay_t make_display() { return nullptr; }
#endif
} // namespace platf::x11