summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibVirtGPU
diff options
context:
space:
mode:
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;
};
}