BootFramebufferConsole.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /*
  2. * Copyright (c) 2022, the SerenityOS developers.
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <Kernel/Forward.h>
  8. #include <Kernel/Graphics/Console/GenericFramebufferConsole.h>
  9. namespace Kernel::Graphics {
  10. class BootFramebufferConsole : public GenericFramebufferConsoleImpl {
  11. public:
  12. virtual void clear(size_t x, size_t y, size_t length) override;
  13. virtual void write(size_t x, size_t y, char ch, Color background, Color foreground, bool critical = false) override;
  14. using GenericFramebufferConsoleImpl::write;
  15. virtual void enable() override;
  16. virtual void disable() override;
  17. virtual void flush(size_t, size_t, size_t, size_t) override { }
  18. virtual void set_resolution(size_t, size_t, size_t) override { }
  19. // FIXME: Port MemoryManager to aarch64
  20. #if ARCH(AARCH64)
  21. BootFramebufferConsole(u8* framebuffer_addr, size_t width, size_t height, size_t pitch);
  22. #else
  23. BootFramebufferConsole(PhysicalAddress framebuffer_addr, size_t width, size_t height, size_t pitch);
  24. #endif
  25. protected:
  26. virtual void clear_glyph(size_t x, size_t y) override;
  27. virtual u8* framebuffer_data() override;
  28. // FIXME: Port MemoryManager to aarch64
  29. #if ARCH(AARCH64)
  30. u8* m_framebuffer;
  31. #else
  32. OwnPtr<Memory::Region> m_framebuffer;
  33. #endif
  34. u8* m_framebuffer_data {};
  35. mutable Spinlock m_lock { LockRank::None };
  36. };
  37. }