From 086c7c4c8879ce811a922cc6052ff4b5d39f8570 Mon Sep 17 00:00:00 2001 From: Stephan Unverwerth Date: Thu, 22 Dec 2022 15:08:40 +0100 Subject: [PATCH] LibVirtGPU: Create and initialize device from file descriptor --- Userland/Libraries/LibVirtGPU/Device.cpp | 9 ++++++++- Userland/Libraries/LibVirtGPU/Device.h | 8 ++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/Userland/Libraries/LibVirtGPU/Device.cpp b/Userland/Libraries/LibVirtGPU/Device.cpp index 68c25adda4..7709f1390d 100644 --- a/Userland/Libraries/LibVirtGPU/Device.cpp +++ b/Userland/Libraries/LibVirtGPU/Device.cpp @@ -11,9 +11,16 @@ namespace VirtGPU { +Device::Device(NonnullRefPtr gpu_file) + : m_gpu_file { gpu_file } +{ +} + ErrorOr> Device::create(Gfx::IntSize) { - return make(); + auto file = TRY(Core::File::open("/dev/gpu/render0", Core::OpenMode::ReadWrite)); + auto device = make(file); + return device; } GPU::DeviceInfo Device::info() const diff --git a/Userland/Libraries/LibVirtGPU/Device.h b/Userland/Libraries/LibVirtGPU/Device.h index 148d28ab8a..7084f6c126 100644 --- a/Userland/Libraries/LibVirtGPU/Device.h +++ b/Userland/Libraries/LibVirtGPU/Device.h @@ -6,12 +6,17 @@ #pragma once +#include +#include +#include #include namespace VirtGPU { class Device final : public GPU::Device { public: + Device(NonnullRefPtr); + static ErrorOr> create(Gfx::IntSize min_size); virtual GPU::DeviceInfo info() const override; @@ -48,6 +53,9 @@ public: virtual void set_raster_position(FloatVector4 const& position, FloatMatrix4x4 const& model_view_transform, FloatMatrix4x4 const& projection_transform) override; virtual void bind_fragment_shader(RefPtr) override; + +private: + NonnullRefPtr m_gpu_file; }; }