mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-09-04 08:36:12 +00:00
Kernel: Add ioctl to get the EDID from a framebuffer
This commit is contained in:
parent
8184870f93
commit
03c45b1865
Notes:
sideshowbarker
2024-07-17 20:21:28 +09:00
Author: https://github.com/tomuta
Commit: 03c45b1865
Pull-request: https://github.com/SerenityOS/serenity/pull/11439
Reviewed-by: https://github.com/kleinesfilmroellchen
Reviewed-by: https://github.com/linusg ✅
20 changed files with 265 additions and 84 deletions
|
@ -15,6 +15,7 @@
|
|||
#include <Kernel/Graphics/VirtIOGPU/Console.h>
|
||||
#include <Kernel/Graphics/VirtIOGPU/FramebufferDevice.h>
|
||||
#include <Kernel/Graphics/VirtIOGPU/Protocol.h>
|
||||
#include <LibEDID/EDID.h>
|
||||
|
||||
namespace Kernel::Graphics::VirtIOGPU {
|
||||
|
||||
|
@ -47,6 +48,8 @@ public:
|
|||
|
||||
virtual void initialize() override;
|
||||
|
||||
ErrorOr<ByteBuffer> get_edid(size_t output_port_index) const override;
|
||||
|
||||
private:
|
||||
void flush_dirty_rectangle(ScanoutID, ResourceID, Protocol::Rect const& dirty_rect);
|
||||
|
||||
|
@ -98,6 +101,7 @@ private:
|
|||
RefPtr<Graphics::VirtIOGPU::FramebufferDevice> framebuffer;
|
||||
RefPtr<Console> console;
|
||||
Protocol::DisplayInfoResponse::Display display_info {};
|
||||
Optional<EDID::Parser> edid;
|
||||
};
|
||||
|
||||
virtual bool handle_device_config_change() override;
|
||||
|
@ -117,6 +121,7 @@ private:
|
|||
void populate_virtio_gpu_request_header(Protocol::ControlHeader& header, Protocol::CommandType ctrl_type, u32 flags = 0);
|
||||
|
||||
void query_display_information();
|
||||
void query_display_edid(Optional<ScanoutID>);
|
||||
ResourceID create_2d_resource(Protocol::Rect rect);
|
||||
void delete_resource(ResourceID resource_id);
|
||||
void ensure_backing_storage(ResourceID resource_id, Memory::Region const& region, size_t buffer_offset, size_t buffer_length);
|
||||
|
@ -124,6 +129,7 @@ private:
|
|||
void set_scanout_resource(ScanoutID scanout, ResourceID resource_id, Protocol::Rect rect);
|
||||
void transfer_framebuffer_data_to_host(ScanoutID scanout, ResourceID resource_id, Protocol::Rect const& rect);
|
||||
void flush_displayed_image(ResourceID resource_id, Protocol::Rect const& dirty_rect);
|
||||
ErrorOr<Optional<EDID::Parser>> query_edid(u32 scanout_id);
|
||||
|
||||
bool m_created_framebuffer_devices { false };
|
||||
Optional<ScanoutID> m_default_scanout;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue