mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 21:47:46 +00:00
Kernel/Graphics: Move Bochs graphics related code into a separate folder
This commit is contained in:
parent
3fee1cbe66
commit
2a1bf53435
4 changed files with 3 additions and 3 deletions
70
Kernel/Graphics/Bochs/GraphicsAdapter.h
Normal file
70
Kernel/Graphics/Bochs/GraphicsAdapter.h
Normal file
|
@ -0,0 +1,70 @@
|
|||
/*
|
||||
* Copyright (c) 2021, Liav A. <liavalb@hotmail.co.il>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AK/String.h>
|
||||
#include <AK/Types.h>
|
||||
#include <Kernel/Bus/PCI/DeviceController.h>
|
||||
#include <Kernel/Graphics/Console/GenericFramebufferConsole.h>
|
||||
#include <Kernel/Graphics/FramebufferDevice.h>
|
||||
#include <Kernel/Graphics/GraphicsDevice.h>
|
||||
#include <Kernel/PhysicalAddress.h>
|
||||
#include <Kernel/VM/TypedMapping.h>
|
||||
|
||||
namespace Kernel {
|
||||
|
||||
class BochsFramebufferDevice;
|
||||
class GraphicsManagement;
|
||||
struct BochsDisplayMMIORegisters;
|
||||
|
||||
class BochsGraphicsAdapter final : public GraphicsDevice
|
||||
, public PCI::DeviceController {
|
||||
AK_MAKE_ETERNAL
|
||||
friend class BochsFramebufferDevice;
|
||||
friend class GraphicsManagement;
|
||||
|
||||
public:
|
||||
static NonnullRefPtr<BochsGraphicsAdapter> initialize(PCI::Address);
|
||||
virtual ~BochsGraphicsAdapter() = default;
|
||||
virtual bool framebuffer_devices_initialized() const override { return !m_framebuffer_device.is_null(); }
|
||||
|
||||
virtual bool modesetting_capable() const override { return true; }
|
||||
virtual bool double_framebuffering_capable() const override { return true; }
|
||||
|
||||
private:
|
||||
// ^GraphicsDevice
|
||||
virtual bool try_to_set_resolution(size_t output_port_index, size_t width, size_t height) override;
|
||||
virtual bool set_y_offset(size_t output_port_index, size_t y) override;
|
||||
|
||||
virtual void initialize_framebuffer_devices() override;
|
||||
virtual Type type() const override;
|
||||
|
||||
virtual void enable_consoles() override;
|
||||
virtual void disable_consoles() override;
|
||||
|
||||
explicit BochsGraphicsAdapter(PCI::Address);
|
||||
|
||||
void set_safe_resolution();
|
||||
void unblank();
|
||||
|
||||
bool validate_setup_resolution(size_t width, size_t height);
|
||||
u32 find_framebuffer_address();
|
||||
void set_resolution_registers(size_t width, size_t height);
|
||||
void set_resolution_registers_via_io(size_t width, size_t height);
|
||||
bool validate_setup_resolution_with_io(size_t width, size_t height);
|
||||
void set_y_offset(size_t);
|
||||
|
||||
PhysicalAddress m_mmio_registers;
|
||||
TypedMapping<BochsDisplayMMIORegisters volatile> m_registers;
|
||||
RefPtr<FramebufferDevice> m_framebuffer_device;
|
||||
RefPtr<Graphics::GenericFramebufferConsole> m_framebuffer_console;
|
||||
SpinLock<u8> m_console_mode_switch_lock;
|
||||
bool m_console_enabled { false };
|
||||
bool m_io_required { false };
|
||||
};
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue