summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibVirtGPU
diff options
context:
space:
mode:
authorStephan Unverwerth <s.unverwerth@serenityos.org>2022-12-22 15:08:40 +0100
committerAndreas Kling <kling@serenityos.org>2022-12-26 09:39:20 +0100
commit086c7c4c8879ce811a922cc6052ff4b5d39f8570 (patch)
treeb01b0e60ded79664e97ccc631890ba748b80585a /Userland/Libraries/LibVirtGPU
parent4b792cb7be89bd946f52709a6db26f1783ba6dae (diff)
downloadserenity-086c7c4c8879ce811a922cc6052ff4b5d39f8570.zip
LibVirtGPU: Create and initialize device from file descriptor
Diffstat (limited to 'Userland/Libraries/LibVirtGPU')
-rw-r--r--Userland/Libraries/LibVirtGPU/Device.cpp9
-rw-r--r--Userland/Libraries/LibVirtGPU/Device.h8
2 files changed, 16 insertions, 1 deletions
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<Core::File> gpu_file)
+ : m_gpu_file { gpu_file }
+{
+}
+
ErrorOr<NonnullOwnPtr<Device>> Device::create(Gfx::IntSize)
{
- return make<Device>();
+ auto file = TRY(Core::File::open("/dev/gpu/render0", Core::OpenMode::ReadWrite));
+ auto device = make<Device>(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 <AK/NonnullOwnPtr.h>
+#include <AK/NonnullRefPtr.h>
+#include <LibCore/File.h>
#include <LibGPU/Device.h>
namespace VirtGPU {
class Device final : public GPU::Device {
public:
+ Device(NonnullRefPtr<Core::File>);
+
static ErrorOr<NonnullOwnPtr<Device>> 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<GPU::Shader>) override;
+
+private:
+ NonnullRefPtr<Core::File> m_gpu_file;
};
}