mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-01-08 20:32:56 +03:00
Kernel+Userland: Provide bytes count for a DisplayConnector framebuffer
This value will be used later on by WindowServer to reject resolutions that will request a mapping that will overflow the hardware framebuffer max length.
This commit is contained in:
parent
50ed50752f
commit
d5b97eb41e
Notes:
sideshowbarker
2024-07-17 06:40:21 +09:00
Author: https://github.com/supercomputer7 Commit: https://github.com/SerenityOS/serenity/commit/d5b97eb41e Pull-request: https://github.com/SerenityOS/serenity/pull/15342
@ -301,12 +301,14 @@ ErrorOr<void> DisplayConnector::ioctl(OpenFileDescription&, unsigned request, Us
|
||||
return {};
|
||||
}
|
||||
case GRAPHICS_IOCTL_GET_PROPERTIES: {
|
||||
VERIFY(m_shared_framebuffer_vmobject);
|
||||
auto user_properties = static_ptr_cast<GraphicsConnectorProperties*>(arg);
|
||||
GraphicsConnectorProperties properties {};
|
||||
properties.flushing_support = flush_support();
|
||||
properties.doublebuffer_support = double_framebuffering_capable();
|
||||
properties.partial_flushing_support = partial_flush_support();
|
||||
properties.refresh_rate_support = refresh_rate_support();
|
||||
properties.max_buffer_bytes = m_shared_framebuffer_vmobject->size();
|
||||
|
||||
return copy_to_user(user_properties, &properties);
|
||||
}
|
||||
|
@ -24,6 +24,7 @@ struct GraphicsConnectorProperties {
|
||||
unsigned char flushing_support;
|
||||
unsigned char partial_flushing_support;
|
||||
unsigned char refresh_rate_support;
|
||||
unsigned max_buffer_bytes;
|
||||
};
|
||||
|
||||
struct GraphicsHeadModeSetting {
|
||||
|
@ -33,6 +33,7 @@ ErrorOr<void> HardwareScreenBackend::open()
|
||||
m_can_device_flush_buffers = (properties.partial_flushing_support != 0);
|
||||
m_can_device_flush_entire_framebuffer = (properties.flushing_support != 0);
|
||||
m_can_set_head_buffer = (properties.doublebuffer_support != 0);
|
||||
m_max_size_in_bytes = properties.max_buffer_bytes;
|
||||
return {};
|
||||
}
|
||||
|
||||
|
@ -43,6 +43,7 @@ public:
|
||||
|
||||
Gfx::ARGB32* m_framebuffer { nullptr };
|
||||
size_t m_size_in_bytes { 0 };
|
||||
size_t m_max_size_in_bytes { 0 };
|
||||
size_t m_back_buffer_offset { 0 };
|
||||
|
||||
int m_pitch { 0 };
|
||||
|
Loading…
Reference in New Issue
Block a user