فهرست منبع

LibVirtGPU: Create and initialize device from file descriptor

Stephan Unverwerth 2 سال پیش
والد
کامیت
086c7c4c88
2فایلهای تغییر یافته به همراه16 افزوده شده و 1 حذف شده
  1. 8 1
      Userland/Libraries/LibVirtGPU/Device.cpp
  2. 8 0
      Userland/Libraries/LibVirtGPU/Device.h

+ 8 - 1
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

+ 8 - 0
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;
 };
 
 }